一种基于DS2432芯片的FPGA设备加密认证系统和方法与流程

文档序号:18106882发布日期:2019-07-06 11:43阅读:758来源:国知局
一种基于DS2432芯片的FPGA设备加密认证系统和方法与流程

本发明属于加密认证和安全技术领域,更具体的说,涉及一种基于ds2432芯片的fpga设备加密认证系统和方法。



背景技术:

fpga全称现场可编程门阵列(fieldprogrammablegatearray),最初作为专用集成电路领域中的一种半定制电路而出现的,具有灵活的可编程性,可同时进行数据并行和任务并行计算,在处理特定应用时有更加明显的效率,在通信、数字信号处理、工业等领域已经得到了大规模应用。随着fpga性能和密度的提高、功耗和成本的降低,其应用领域已经扩展到人工智能、数据中心、消费电子、汽车电子、工业控制、测试测量等广泛的领域,并且有加速渗透的趋势。

以fpga作为核心处理器件的设备,其主要的知识产权和技术壁垒为运行在fpga上的算法逻辑程序。而fpga程序为二进制格式的文件,采用flash等非易失性存储器来存放,掉电时仍能够保存。将flash中的数据读出然后烧写入克隆的硬件板存储器中就可以完整的复制整个产品,对原产品生产商造成巨大的经济损失,严重侵害原产品生产商利益和知识产权。所以一个真正安全的加密认证系统是保证设备不被非法克隆复制的必要保障。

目前,通过fpga与外置安全eeprom(电可擦除可编程只读存储器)配合,使用iff(identificationfriendsorfor,身份识别)技术保护fpga设计安全已成为一种广泛使用的加密认证解决方案。标准的iff认证流程如下:1)fpga通过随机数产生器(rng)产生一个随机数q,并将其送往安全eeprom中;2)安全eeprom利用其内部存储的密钥使用hash函数进行安全散列算法对q进行加密,产生一个信息a;3)fpga使用相同的密钥产生期望信息e,与来自安全eeprom的实际信息a进行比较;4)如果期望信息e和实际信息a相同,则认证通过,否则认证失败;5)如果认证失败,fpga停止运行。

ds2432是由maxim公司生产的实现低成本fpga安全认证功能的加密芯片,符合iso/iec110118-3安全散列算法(sha-1)的质询-响应安全认证机制。单个芯片内集成了1024位eeprom(分为4页,每页256位)、64位密钥和64位由工厂刻入、唯一识别和绝对可溯的光刻rom序列号和一个sha-1引擎。功能上,ds2432的sha-1引擎根据64位密钥、用户指定的eeprom某一页的256位数据、64位光刻rom序列号和接收的24位质询码来产生160位的mac(messageauthenticationcodes,消息认证码);物理连接上,ds2432通过1-wire总线与fpga通信,仅需一根数据线和一根返回地线,故ds2432非常适合fpga设备的加密认证系统。

而fpga又具有如下两个特点:1)fpga程序是用rtl(寄存器传输级硬件描述语言)描述的算法逻辑代码通过fpga工具综合实现得到的,对于大规模的fpga设计,其综合实现的时间会长达数小时或数十小时,故不同设备的fpga程序必须相同,换句话说用于期望mac计算的认证信息不能作为固定值写入到fpga程序中;2)fpga本身具有可编程性,所以整个质询-响应过程中对ds2432的激励产生、访问控制、结果比对等都可以在fpga中完成,不需要额外的控制和辅助芯片。

因此,基于ds2432的针对以fpga作为核心处理器件的设备的加密认证系统和方法如何与fpga上述的两个特点相匹配,并且做到使用方便、安全可靠、低成本和低功耗是本领域技术人员需要解决的问题。

中国专利201610721183.5“一种基于ds2432的嵌入式加密认证方法及系统”描述了基于ds2432的嵌入式加密认证方法及系统,该方法使用了一个ds2432加密芯片、一个ds2460协处理器芯片外加一个型号为stc12c5406的微控制器芯片,整体结构复杂,最为关键的是通过截取微控制器芯片和其他应用系统之间的数据交互,通过发送虚假的认证通过的消息就可以完全破解该系统。中国专利201610515361.9“基于硬件加密的防刷机系统及方法”中描述的加密防刷机系统,其最主要的是自定义和实现了一个加密芯片,首先是成本高,另外其整个系统没有唯一识别、绝对可溯的序列号,存在明显的安全漏洞。

文献“基于ds2432的fpga安全认证系统实现[j].电子器件,2012,35(4):470~473”和文献“基于ds2432和fpga的iff加密方法[j].微计算机信息(嵌入式与soc),2007,23(6-2):201~202”中描述了基于ds2432的fpga系统加密认证方法,但是都只简单介绍了iff认证过程和对ds2432的访问流程,没有提到fpga对ds2432配置和操作的具体实现方式,也没有说明用于期望mac计算的信息是如何存储的,故没有实际应用价值。



技术实现要素:

本发明的目的是提供一种基于ds2432芯片的fpga设备加密认证系统和方法,旨在为以fpga作为核心处理器件的设备提供一种使用方便、安全可靠、低成本和低功耗的加密认证系统和方法。

本发明的目的是通过以下技术方案实现的。

本发明的一种基于ds2432芯片的fpga设备加密认证系统和方法其硬件平台由fpga芯片100、ds2432芯片101、flash芯片102和pc上位机103构成。其中fpga芯片100为核心处理器件,除了实现设备本身算法逻辑功能之外,还实现了加密认证过程中的激励产生、访问控制、结果比对等功能;ds2432芯片101为maxim公司生产的实现低成本fpga安全认证功能的加密芯片,与fpga配合基于iff技术通过质询-响应的方式实现了fpga设备的加密认证;flash芯片102为与fpga芯片100配套的非易失性存储器,其内部存放fpga程序和加密信息文件;pc上位机103为x86或arm架构的个人计算机,可运行windows或linux程序。其连接方式为:fpga芯片100通过1-wire总线与ds2432芯片101相连,通过spi总线与flash芯片102相连,通过以太网或串口与pc上位机103相连。

本发明的一种基于ds2432芯片的fpga设备加密认证系统和方法其功能模块包括初始化配置程序200、上位机加密配置软件201、加密认证模块202。初始化配置程序200为完整的fpga程序,可独立运行于fpga芯片100上,与pc上位机103上运行的上位机加密配置软件201配合完成对ds2432芯片101和flash芯片102的初始化。加密认证模块202与设备本身算法逻辑功能集成在一起成为设备的主fpga程序,加密认证模块202在设备启动时从flash芯片102中读出加密信息文件,在整个运行过程中与ds2432芯片101交互完成认证操作。

本发明的一种基于ds2432芯片的fpga设备加密认证系统和方法,其中所述的初始化配置程序200由ds2432初始化模块1、加密信息解析模块2、flash控制器3构成,其中所述的加密认证模块202由加密信息解析模块2、flash控制器3和ds2432认证模块4构成。

本发明的一种基于ds2432芯片的fpga设备加密认证系统和方法,其中所述的ds2432初始化模块1和ds2432认证模块4物理上通过1-wire总线与ds2432芯片101相连,功能上通过ds2432定义的rom功能命令、存储器和sha命令完成对ds2432芯片101的访问交互。为降低设计难度、提高设计可重用性,ds2432初始化模块1和ds2432认证模块4在实现上采用了如下三种设计思想和技术:1)分层设计思想;2)模块化设计;3)标准化的控制和数据接口技术。其中所述的ds2432初始化模块1由四个物理层模块:比特写模块1a、比特读模块1b、复位脉冲发送模块1c、总线接口模块1d,两个链路层模块:多字节写模块2a、多字节读模块2b,七个命令层模块:读光刻rom模块3a、写缓冲区模块3b、读缓冲区模块3c、读存储器模块3d、复制缓冲区模块3e、密钥加载模块3f、读认证页模块3g,以及两个应用层模块:ds2432初始化主控状态机4a、mac验证模块4b构成。其中所述的ds2432认证模块4由四个物理层模块:比特写模块1a、比特读模块1b、复位脉冲发送模块1c、总线接口模块1d;两个链路层模块:多字节写模块2a、多字节读模块2b;三个命令层模块:写缓冲区模块3b、读缓冲区模块3c、读认证页模块3g;以及两个应用层模块:ds2432认证主控状态机4c、mac验证模块4b构成。其中所述的物理层、链路层、命令层和应用层模块之间通过自定义的标准化接口相连。

本发明的一种基于ds2432芯片的fpga设备加密认证系统和方法,其中所述的加密认证功能的实现是通过比较fpga芯片100计算出的期望mac和ds2432芯片101计算出的实际mac是否相等来判断的。实际mac计算所使用的认证信息(包括光刻rom、密钥、存储器数据)是存储在ds2432芯片101内部的,其密钥是不可读的,故安全性可以得到保障。为了fpga程序的通用性,本发明中的期望mac计算所使用的上述认证信息是存储在flash芯片102中的,故保障其安全性成了至关重要的因素。本发明中,对认证信息使用了三层加密保护以确保其安全性,具体包括:

1.第一层保护,aes128加密。首先认证信息不是以原始数据的方式存放在flash芯片102中的,存放之前使用aes128(advancedencryptionstandard,高级加密标准)对认证信息进行加密,flash芯片102中存放的是加密之后的密文,aes128解密需要密钥,如果没有密钥是解密不出原始数据的;

2.第二层保护,乱序存放。认证信息的密文在flash芯片102中存放位置每个设备都不同,每个设备有随机和独特的位置参数(包括存放起始位置、存放间隔),密文是交叉间隔着存放在flash芯片102中的;

3.第三层保护,位置参数变换加扰。对位置参数首先通过特定的规则作位置变换,然后使用扰码对其加扰。

本发明的一种基于ds2432芯片的fpga设备加密认证系统和方法,对一个全新的设备其初始化配置流程包括如下步骤:

1.通过jtag接口把初始化配置程序200烧写进fpga芯片100,通过以太网或串口连接设备到上位机,保证初始化配置程序200与上位机加密配置软件201正常的通信;

2.初始化配置程序200通过ds2432初始化模块1读出ds2432芯片101的64位光刻rom,通过以太网或串口上传至上位机加密配置软件201;

3.上位机加密配置软件201首先通过状态转移随机算法产生64位随机数据作为ds2432密钥、产生1024位随机数据作为ds2432存储器数据;其次把产生的64位密钥、1024位存储器数据和读出的64位光刻rom使用上述的认证信息加密保护方法处理,最终得到认证信息加密文件;

4.上位机加密配置软件201通过以太网或串口把生成的认证信息加密文件写入fpga,初始化配置程序200会并行的完成如下两个操作并产生两个对应的状态指示:1)通过flash控制器3把认证信息加密文件写入到flash芯片102的指定位置,写入后会读出比较,整个文件写入比较正确之后会产生flash配置成功标志;2)通过加密信息解析模块2对认证信息加密文件解密,得到的原始64位密钥、1024位存储器数据通过ds2432初始化模块1对ds2432芯片101做初始化,初始化完成之后ds2432初始化模块1会执行一次完整的认证过程,如果认证成功产生ds2432初始化成功标志;

5.flash配置标志和ds2432初始化标志会上传至上位机加密配置软件201,如果其中任意一个操作不成功,上位机加密配置软件201会重新启动完整的初始化配置流程。

本发明的一种基于ds2432芯片的fpga设备加密认证系统和方法,其认证流程包括如下步骤:

1.设备上电之后加密认证模块202通过flash控制器3从flash芯片102的指定位置读出认证信息加密文件;

2.读出的认证信息加密文件送入加密信息解析模块2解密,得到flash芯片102中存放的认证信息(包括光刻rom、密钥、存储器数据)送入ds2432认证模块4;

3.ds2432认证模块4和ds2432芯片101配合完成认证操作,其操作过程如下:1)ds2432认证模块4产生24位随机质询码通过1-wire接口发送给ds2432芯片101;2)ds2432芯片101根据该质询码和其内部存储的64位密钥、所选存储器页的数据以及光刻rom使用sha-1算法算出实际mac,并将实际mac回送给ds2432认证模块4;3)ds2432认证模块4使用flash芯片102中存放的认证信息算出期望mac;4)比较期望mac和实际mac,如果两者相同则本次认证过程通过;

4.在设备的整个运行过程中第三步的认证操作会持续进行,两次认证的时间间隔也是随机的,如果认证没有通过会产生相应的信号复位整个系统,并且只要有一次没有通过,会一直复位整个系统直到下一次重新上电,保证任何时候系统的合法性。

与现有技术相比,本发明的有益效果包括:

1.充分利用了设备现有资源,包括flash芯片和fpga功能,整个加密认证系统在硬件上只增加了一个ds2432芯片,占用一个fpga的io端口,在fpga实现上只需要在设备本身的fpga程序中加入一个独立的加密认证模块,具有结构简单、成本低等优点;

2.光刻rom、密钥和存储器数据不是以固定值写入到fpga程序中的,而是存在flash芯片中的,所以对不同设备的不同ds2432加密芯片不用重新综合实现fpga程序,具有通用性强、使用方便的优点;

3.对写入到flash芯片中的光刻rom、密钥和存储器数据做了三层加密保护,非法用户既是读出了flash芯片中的数据(包括fpga程序以及认证信息),也不能反向分析出上述的认证信息然后通过模拟ds2432芯片的应答拷贝出一套可用的系统,确保了加密认证系统的安全性;

4.加密认证系统使用iff技术通过质询-响应的方式实现,在设备的整个运行过程中会间隔随机时间使用随机的质询码运行认证过程,从而可以保证任何时候系统的合法性;

5.与ds2432交互操作的fpga模块的设计上采用了分层设计思想、模块化设计方法和标准化的控制和数据接口技术,有效降低设计难度、提高设计可重用性。

附图说明

图1为本发明硬件平台架构示意图

图2为本发明初始化配置程序实现框图

图3为本发明加密认证模块实现框图

图4为认证信息加密示意图

图5为认证信息存储示意图

图6为位置参数变换加扰示意图

图7为本发明ds2432初始化模块实现框图和模块间接口示意图

图8为本发明ds2432认证模块实现框图和模块间接口示意图

图9为总线接口模块实现框图和连接示意图

图10为读光刻rom控制状态机的状态转移示意图

图11为ds2432初始化主控状态机状态转移示意图

图12为ds2432认证主控状态机状态转移示意图

图中标号说明:

100fpga芯片、101ds2432芯片、102flash芯片、103pc上位机、200初始化配置程序、201上位机加密配置软件、202加密认证模块、1ds2432初始化模块、2加密信息解析模块、3flash控制器、4ds2432认证模块、1a比特写模块、1b比特读模块、1c复位脉冲发送模块、1d总线接口模块、2a多字节写模块、2b多字节读模块、3a读光刻rom模块、3b写缓冲区模块、3c读缓冲区模块、3d读存储器模块、3e复制缓冲区模块、3f密钥加载模块、3g读认证页模块、4ads2432初始化主控状态机、4bmac验证模块、4cds2432认证主控状态机。

具体实施方式

为了本发明的目的、技术方案及优点更加清楚明晰,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以理解本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的硬件平台架构如图1所示,由fpga芯片100、ds2432芯片101、flash芯片102和pc上位机103构成。其连接方式为:fpga芯片100通过1-wire总线与ds2432芯片101相连,通过spi总线与flash芯片102相连,通过以太网或串口与pc上位机103相连。

本发明的加密认证系统包括两个流程,第一是通过运行在fpga芯片101上的初始化配置程序200与pc上位机103上运行的上位机加密配置软件201配合完成对ds2432芯片101和flash芯片102的初始化;第二是加密认证模块202在设备运行过程中与ds2432芯片101交互完成认证操作。上述的初始化配置流程和认证流程已经在发明内容中详细描述了。

本发明的初始化配置程序200实现框图如图2所示,包括ds2432初始化模块1、加密信息解析模块2和flash控制器3;加密认证模块202实现框图如图3所示,包括加密信息解析模块2、flash控制器3和ds2432认证模块4。

为了使本发明通用性强、使用方便,用于期望mac计算的认证信息(包括64位光刻rom、64位密钥和1024位存储器数据)不是以固定值写入到fpga程序中的,而是存在flash芯片中的。因为mac是根据认证信息加上激励,使用公开的sha-1算法计算出来的,如果非法用户反向分析出flash中的认证信息,完全可以用单片机或者其他方式模拟ds2432的响应完成认证过程实现非法拷贝。本发明中,对认证信息使用了三层加密保护以确保其安全性,参考图4对认证信息加密文件的生成做进一步的说明。

第一层保护,对认证信息做aes128加密;

如图4所示,认证信息包括64位光刻rom、64位密钥和1024位存储器数据,首先以字为单位对信息分块,标记为d0~d35,其中d0~d1为光刻rom、d2~d3为密钥、d4~d35为存储器数据;然后使用aes128对数据加密,加密后的密文标记为c0~c35;

确保即使拿到了认证信息密文,如果不知道aes128加密密钥不可能解密出认证信息。

第二层保护,机密之后的密文乱序存放;

通常flash芯片的容量比较充足,除了存储fpga程序之外还有很多空间,所以把其中一块4096字(1字等于32位)大小的空间作为认证信息的存放空间,如图5所示,其地址标记为addr0~addr4095,指定一个固定的位置addr_param用来存放位置参数,该位置所有设备必须相同,在本实施例中使用addr998;随机选择两个不大于4096的数作为位置参数,包括存放起始位置addr_start和存放间隔addr_interval,那么密文c0~c35会被分别存放在逻辑地址addr_start、addr_start+addr_interval、addr_start+2*addr_interval~addr_start+35*addr_interval中,需要说明的是1)如果地址大于或者等于4096,需要对4096取模得到物理地址,标记为addr_c0~addr_c35;2)如果addr_c0~addr_c35、addr_param这37个地址其中有任意两个相同,那么这组位置参数无效,需要重新选择一组位置参数;

举例说明如下,选择的存放起始位置为3365,存放间隔为432,那么存放的逻辑地址为3366、3798、4230、4662、5094、5526…,对大于等于4096逻辑地址取模之后得到物理地址3366、3798、134、566、998、1430…,因为其中地址998和位置参数存放地址冲突,所以该组参数无效;另外密文存放完成之后对addr_c0~addr_c35、addr_param这37个地址之外的地址都填入随机数据;

上述存放方式共有4095的阶乘种可能性,如果不知道位置参数得不到认证信息密文。

第三层保护,对位置参数作变换加扰;

如图6所示,固定位置addr_param存放的位置参数是经过变换加扰的,存放起始位置addr_start和存放间隔addr_interval都不大于4096,可以用12位二进制数表示,从高到低分别标记为s11~s0和i11~i0,位置变换之后得到32位loc_param_temp,从高到低标记为b31~b0,本发明实施例中变换规则如下:1)s11~s4放入b7~b0;2)s3~s0按位取反之后放入b31~b28;3)i11~i4按位取反之后放入b25~b18;4)i3放入b10;5)i2放入b12;6)i1放入b14;7)i0取反之后放入b27,;8)loc_pram_temp其他位置赋0,rtl描述为:assignloc_pram_temp={~addr_start[3:0],~addr_interval[0],1’b0,~addr_interval[11:4],3’b0,addr_interval[1],1’b0,addr_interval[2],1’b0,addr_interval[3],2’b0,addr_start[11:4]};

使用32位扰码对变换之后的32位loc_pram_temp作加扰得到32位位置信息loc_param,存放在固定位置addr_param中。本实施例中的扰码用16进制表示为,rtl描述为:assignloc_param=loc_pram_temp^0x8e43aae6。

通过上述的机制,保证了存放在flash芯片中的认证信息的安全。同时,认证信息存放在flash芯片中为本发明带来了两个显著的有益效果:1)对不同设备的不同ds2432加密芯片不用重新综合实现fpga程序;2)可反复更新和烧写fpga程序而不用重新作初始化,使得使用本发明的设备可以实现远程固件更新等功能。

本发明的另一个创新点和重点在于通过1-wire总线对ds2432芯片交互访问,也就是ds2432初始化模块1和ds2432认证模块4的实现,参照附图7和附图8,对这两个模块的实现做了进一步的解释,其侧重点在于说明分层设计思想、模块化设计思想、标准化的控制和数据接口技术在设计中如何体现的,另外对一些关键的实现细节也进行了阐述。

一、本发明中的ds2432初始化模块1和ds2432认证模块4在设计上参考了tcp/ip协议栈分层设计思想,分为物理层、链路层、命令层和应用层,每一层执行不同抽象层次的对ds2432的交互访问,层次内部根据功能不同使用不同的模块实现。通过分层和模块化设计思想降低了功能之间的耦合度,使得各功能互相独立,提高了设计的灵活性和可重用性,减小了设计复杂度。

1.物理层包括比特写模块1a、比特读模块1b、复位脉冲发送模块1c、总线接口模块1d,实现对ds2432的比特读写和复位操作。ds2432具有一个严格的信号协议,该协议在1-wire总线上定义了四种类型的信号:包括复位脉冲和在线应答脉冲的复位序列、写0、写1和读数据,信号的时序要求在ds2432的数据手册中有详细描述;

比特写模块1a、比特读模块1b、复位脉冲发送模块1c通过计数器计时,在规定的时间段驱动1-wire总线为高电平或低电平,或者在规定的时间段释放总线采样总线电平实现四种类型的信号;

比特写模块1a、比特读模块1b、复位脉冲发送模块1c下表所示的信号连接到总线接口模块1d,总线接口模块通过多级选择、三态控制等操作合并到三态总线io_ds2432_wire上,三态总线io_ds2432_wire直接与ds2432芯片相连;

总线接口模块1d的实现结构和连接如图9所示,使用了3个2选1选择器,1个或门和1个三态门完成选择控制,另外需要说明的是在应用层上保证了比特写模块1a、比特读模块1b、复位脉冲发送模块1c不会同时输出,确保不会出现多驱动的情况。

2.链路层包括多字节写模块2a、多字节读模块2b,通过调用物理层模块实现对ds2432芯片多字节的读写操作,链路层模块会为每个命令层模块提供一个访问端口;

多字节写模块2a由写仲裁模块、写缓冲ram和写控制逻辑三部分构成,每部分的功能如下:1)写仲裁模块根据先请求先执行的优先级方式响应某个端口请求,同时记录本次写请求需要写入的字节数;2)把命令层模块送入的待写入到ds2432的数据缓存在写缓冲ram中;3)数据全部写入到写缓冲ram后,写控制逻辑首先从写缓冲ram中读出1字节的数据,然后连续启动8次比特写模块1a完成该字节的写入,读数据和写入过程会重复执行,直到把本次请求的数据全部写入到ds2432中后通知命令层模块本次写请求完成;

多字节读模块2b由读仲裁模块、读控制逻辑两部分构成,每部分的功能如下:1)读仲裁模块根据先请求先执行的优先级方式响应某个端口请求,同时记录本次读请求需要读出字节数;2)读控制逻辑会连续启动比特读模块1b,每读8次产生1个输出送入命令层模块,直到把本次请求的数据全部读出后通知命令层模块本次读请求完成。

3.命令层包括读光刻rom模块3a、写缓冲区模块3b、读缓冲区模块3c、读存储器模块3d、复制缓冲区模块3e、密钥加载模块3f、读认证页模块3g,通过调用物理层和链路层模块实现ds2432芯片定义的rom功能命令、存储器和sha命令完成对ds2432芯片的访问交互;

下面通过读光刻rom模块3a为例说明命令层模块的实现框架,其他模块根据相应的命令流程通过同样的实现框架很容易实现。读光刻rom命令流程包括:1)对ds2432写入读光刻rom命令33h;2)ds2432首先发出1字节的ds2432家族代码,然后发出6字节的序列号,最后发出1字节的crc。实现上读光刻rom模块3a由读光刻rom控制状态机,接收数据缓存和crc比较模块组成,其中读光刻rom控制状态机控制整个操作流程,ds2432发出的数据首先写入到接收数据缓存,crc比较模块根据收到的1字节的ds2432家族代码和6字节的序列号产生crc,和ds2432发送的crc比较,如果相同说明接收正确,把接收数据缓存中的数据作为光刻rom输出。读光刻rom控制状态机的状态转移图如图10所示,状态说明和跳转条件说明如下:

1)idle:空闲状态,设备复位之后默认处于该状态。应用层启动读光刻rom之后跳转到write_command状态开始执行读光刻rom操作;

2)write_command:写命令状态,在该状态启动链路层的多字节写模块2a写入读光刻rom命令(十六进制33),写入完成之后跳转到read_data状态;

3)read_data:读数据状态,在该状态启动链路层的多字节读模块2b读出8个字节的数据(包括1字节的ds2432家族代码、6字节的序列号和1字节的crc),读出的数据会被送入接收数据缓存,8个字节的数据读完成之后跳转到crc_verify状态;

4)crc_verify:crc验证状态,在该状态从接收数据缓存中读出1字节的ds2432家族代码、6字节的序列号产生crc,然后和read_data状态接收到的crc比较,如果相同说明接收正确跳转到bus_reset状态,如何不正确跳转到write_command状态重新启动读光刻rom操作;

5)bus_reset:总线复位状态,在该状态启动物理层的复位脉冲发送模块1c发送复位脉冲给ds2432芯片,复位ds2432芯片到等待下一个命令状态。

4.应用层包括ds2432初始化主控状态机4a、mac验证模块4b、ds2432认证主控状态机4c,通过调用命令层模块实现对ds2432芯片的初始化(包括读出光刻rom,写入密钥和存储器数据)和在运行过程中执行认证(包括生成质询码,写质询码到ds2432,读取mac,比较实际mac和期望mac);

ds2432芯片的初始化过程由ds2432初始化主控制状态机4a控制。状态机的状态转移图如图11所示,状态说明和跳转条件说明如下:

1)init_idle:初始化空闲状态,设备上电系统默认处于该状态,在运行过程中出现异常情况状态机会跳转到该状态。复位完成之后再等待一段时间进入rd_laserdrom状态开始执行初始化操作;

2)rd_laserdrom:读ds2432光刻rom状态,在该状态会启动读光刻rom模块3a从ds2432芯片101中读出64位光刻rom。读出完成之后跳转到init_wait_start状态;

3)init_wait_start:初始化等待状态,读出的光刻rom通过以太网或串口上传至上位机加密配置软件201,上位机加密配置软件201产生64位随机数据作为ds2432密钥、产生1024位随机数据作为ds2432存储器数据,然后写入到fpga。需要写入到ds2432的密钥和存储器数据准备好之后跳转到load_secret状态;

4)load_secret:写密钥状态,在该状态会启动密钥加载模块3f把密钥写入到ds2432芯片101中。密钥写入完成之后跳转到read_memory状态;

5)read_memory:读存储器数据状态,在该状态会启动读存储器模块3d读出存储器某一页数据。数据读出完成之后跳转到copy_scratchpad状态;

6)copy_scratchpad:复制缓冲器状态,在该状态会启动复制缓冲区模块3e完成数据从缓冲区到存储器的复制。在向存储器写入数据时,数据需要首先被存入缓冲区,然后根据read_memory状态读回来的当前存储器数据和load_secret状态写入的密钥计算160位mac,然后把mac传入ds2432,ds2432根据内部的密钥和当前存储器的数据计算一个mac,只有当两个mac相等才会真正把缓冲区的数据写入到存储器。另外copy_scratchpad一次只能写入64位数据,为了写入1024位存储器数据需要执行16次复制缓冲区操作。所以本状态的跳转条件为,缓冲区写完成之后判断是否已经执行了16次操作,如果没有则跳转到read_memory状态进行下一次复制缓冲区操作,否则表示ds2432的初始化已经完成跳转到read_mac状态验证初始化配置的密钥和数据是否成功;

7)read_mac:读mac状态,在该状态会产生24位随机质询码,然后启动读认证页模块3g读出mac。mac读出完成之后跳转到mac_verify状态;

8)mac_verify:验证mac状态,在该状态会根据上位机写入的密钥和存储器数据产生期望mac,和read_mac读回来的ds2432计算的实际mac比较,如果相等表明配置成功。比较完成之后跳转到init_idle状态;

认证过程由ds2432认证主控状态机4c控制,状态机的状态转移图如图12所示,状态说明和跳转条件说明如下:

1)verify_wait_start:认证等待开始状态,系统上电之后。flash控制器3从flash芯片102的指定位置读出认证信息加密文件,然后送入加密信息解析模块2解密,认证信息(包括光刻rom、密钥、存储器数据)准备好后跳转到verity_wait状态;

2)verify_wait:认证等待状态,进入该状态之后会等待一段随机时间间隔跳转到read_mac状态开始认证流程;

3)read_mac:读mac状态,在该状态会产生24位随机质询码,然后启动读认证页模块3g读出mac。mac读出完成之后跳转到mac_verify状态;

4)mac_verify:验证mac状态,在该状态会根据加密信息解析模块2解密出的认证信息产生期望mac,和read_mac读回来的ds2432计算的实际mac比较,如果相等表明认证流程通过,跳转到verify_wait状态等待一段时间开始下一次的认证流程,如果不相等跳转到system_lock状态;

5)system_lock:系统锁定状态,进入该状态表明检测到了非法复制,在该状态产生复位信号复位设备功能逻辑,并且状态机一旦进入该状态会一直停在该状态直到设备重新上电。

二、本发明中的ds2432初始化模块1和ds2432认证模块4不同层次的模块之间通过自定义的标准化接口相连。这种标准化的控制和数据接口技术极大的提高了设计的灵活性和模块的可重用性。

1.链路层与物理层接口

上表标示的接口方向是相对于链路层模块来标示的,物理层模块相应信号输入输出方向相反。

2.命令层与链路层接口

上表标示的接口方向是相对于命令层模块来标示的,链路层模块相应信号输入输出方向相反。

3.应用层与命令层接口

不同层次的模块之间通过自定义的标准化接口相连使各功能互相独立,提高了设计的灵活性,减小了设计复杂度。比如需要在设计中加入对读下一密钥命令(computenextsecret)的支持,只需要增加读下一密钥命令模块,然后通过应用层与命令层接口与应用层层模块连接,通过命令层与链路层接口与链路层模块连接就可以实现,而不用改动设计中其他部分。。

本实施方式试运行中,使用xilinx公司型号为xa7a100t的fpga,初始化配置程序200资源占用如下,lut:5%;lutram:4%;ff:6%;bram:10%;加密认证模块202资源占用如下,lut:1%;lutram:1%;ff:2%;bram:2%。可见本发明只占用了极少的fpga资源,对所有系列的fpga都适用。

以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1