硬件加密模块AT88SC0104C系列烧录器接触式IC.docx
- 文档编号:5146574
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:16
- 大小:373.89KB
硬件加密模块AT88SC0104C系列烧录器接触式IC.docx
《硬件加密模块AT88SC0104C系列烧录器接触式IC.docx》由会员分享,可在线阅读,更多相关《硬件加密模块AT88SC0104C系列烧录器接触式IC.docx(16页珍藏版)》请在冰豆网上搜索。
硬件加密模块AT88SC0104C系列烧录器接触式IC
硬件加密模块
(FPGA实现AT88SC0104C认证)
利用说明书
1简介
目的
防范电子装置被盗版的最有效手腕目前仍然是设置盗版障碍。
为此,Atmel公司于1999年推出了用于防范盗版的平安存储器件AT88SC153和AT88SC1608,又于2003年推出了具有双向认证且密文传送的新型平安存储器件AT88SC0104C系列,进一步提高了盗版的难度。
试图从I2C接口通信数据(即SDA)分析出密钥的可能性理论上存在,但在现实中并无心义。
这是因为器件的密钥为8字节,依照算法即利用最快的FPGA穷举搜索也要万年以上。
由于大多数单片机的程序易于被盗取且能够被反汇编,当盗版者取得了平安存储器件的详细资料后仍然有可能由盗取的单片机程序代码反汇编追踪平安存储器件的设置信息,使得电子产品被盗版的危险性仍然存在。
那个地址给出将AT88SC0104C的全数认证流程置于CPLD/FPGA器件的方案。
尽管CPLD/FPGA中的设置代码易于被盗取,但由于不能反汇编,因此无法追踪出AT88SC0104C的相关信息,从全然上杜绝了蒙受追踪解决的可能性。
资源占用
采纳EP2C8Q208型FPGA时资源占用情形如下:
引脚:
2个输出,别离用于时钟(SCL))和数据输出(SDA_OUT);1个输入(数据输入(SDA_IN);logicelements1139个,为总数(8256)的14%;registers732个。
采纳40MHz晶振的认证时刻约15ms。
而采纳单片机认证所需的时刻约180ms。
大体原理
FPGA设计部份要紧完成FPGA和0104C上电配置完成以后,FPGA利用I2C主机模式下单一从器件与0104C通信并执行认证进程。
认证成功后,FPGA内部给出认证成功标志,并使能FPGA内部其它功能模块开始正常工作。
系统结构框图
本设计要紧完成FPGA和0104C上电配置完成以后,FPGA利用I2C主机模式与0104C通信并执行认证进程,认证成功后,产生相应的使能信号使能FPGA内部其它功能模块开始正常工作。
在实际应历时,只需将本设计作为整体设计中的一个模块,把使能信号连接其它设计的使能端口。
该设计要紧包括主状态机的设计、时钟分频的设计、随机数产生的设计、I2C串口通信接口的设计。
结构框图如图1所示:
图1-1系统结构框图
AT88SC0104简介
AT88SC0104C是Atmel公司于2003年推出的高平安性能存储卡。
存储容量为128B。
协议认证卡在协议认证后,所有传送的数据均采纳密文传送方式,因此提高了存储数据的平安性。
AT88SC0104C协议认证卡的要紧特点:
通信协议符合ISO/IEC7816—3同步协议。
工作电压为~。
时钟频率最大为。
数据保留为100年。
重复擦写次数为100000次。
ESD(静电防护)不小于4000V。
利用环境温度:
商业级为0~70℃;工业级为-45~85℃。
该协议认证卡的大体组成如图1所示:
图1-2AT88SC0104C大体组成框图
采纳AT88SC0104C对FPGA进行加密的大体工作流程:
1.硬件连接
将AT88SC0104C与FPGA相连,只需将AT88SC0104C的SCL和SDA引脚别离与FPGA的任意两个I/O管脚连接即可。
为了避免可能显现的I2C总线第9个脉冲无应答信号,将SDA分成一进一出的独立线路。
同时为了确保I2C线路的SDA是OC或OD线路,I2C总线的时钟频率在以下。
电气原理如图2所示。
图1-3AT88SC0104C对FPGA加密的电气原理
2.AT88SC0104C的配置
依照加密功能的要求,对AT88SC0104C的配置区的各数据进行配置。
比如修改读写密码,修改密钥GC等等。
具体修改方式详见读写编程器利用手册。
3.AT88SC0104C的编程
将配置文件和部份保密数据事前按地址写入AT88SC0104C的配置区和用户区各单元。
具体操作方式详见读写编程器利用手册。
4.AT88SC0104C的熔断
在系统调试成功以后,才将AT88SC0104C中的熔丝熔断。
熔断以后,配置再也不更改,这一点需专门注意。
熔断的进程如下:
1)向熔丝标志寄放器写入06H;
2)向熔丝标志寄放器写入04H;
3)向熔丝标志寄放器写入00H。
晶体振荡器选用
建议采纳独立的40MHz有源晶体振荡器,以确保整机工作的稳固性。
FPGA引脚概念
必需在FPGA的设置中概念引脚见下表。
这些引脚必需与硬件连接相一致。
序号
Verilog/VHDL文件中的名称
输入/输出
用途
1
CLK
输入
40MHz晶体振荡器时钟输入
2
SDA_IN
输入
AT88SC0104C的SDA输出
3
SDA_OUT
输出
AT88SC0104C的SDA输入
4
SCL
输出
AT88SC0104C的SCL输入
5
RST
输入
全局复位信号输入
6
AGAIN_AUTHEN_KEY
输入
用于演示的重复启动认证输入
例如程序中,已将AGAIN_AUTHEN_KEY引至KEY4(按键),因此只要按下KEY4即可启动重复认证流程。
如不需要由外部引脚启动重复认证流程,能够不概念AGAIN_AUTHEN_KEY引脚。
2程序说明
VHDL/Verilog模块文件说明
main主控模块
I2C_transmitI2C数据总线接口与操纵模块
I2C_clkI2C总线时钟分频及SCL时钟产生模块
five_clk产生AT88SC0104C初始化所需的5个CLK模块
GPAGPA算法函数电路模块
delay延时3ms
RNG.随机数产生模块
非门(用于随机数生成)
编译时利用增量编译,以避免非门被综合掉。
:
Settings---CompilationProcessSettings---IncrementalCompilation---off(.)
主控模块设计
该模块要紧完成主状态机的状态切换、产生其它模块的操纵信号。
依照前面设计的FPGA的工作流程将主状态机设计为14个状态:
RESET、FIVE_CLK、GET_RANDOM、CI_FROM_GCX、READ_CI_A、GPA_A、GPA_B、TRANS_20BYTE、JUSTIFY_A、NEW_CIX、NEW_SK、READ_CI_B、JUSTIFY_B、SK_REPLACE_GC、ALL_RIGHT,一个状态对应工作流程中的一个流程。
主控模块的设计及其与其它模块之间的关系如图2-1:
图2-1主控模块的设计及其与其它模块之间的关系方框图
其中,状态GPA_A、状态GPA_B由gpa_state状态机和train_state状态机实现对GPA算法的操纵。
I2C模块说明
I2C总线由FPGA操纵,FPGA所发出的字节系列都是由命令开始,随后若是是写操作那么是数据字节,不然是读数据。
I2C总线备历时SDA和SCL都必需维持高电阻高电平状态,只有关闭I2C总线时才会将SCL钳位于低电平。
在I2C总线上传送数据时,在SCL高电平期间SDA上必需维持有稳固的逻辑电平状态,高电平为数据1,低电平为数据0。
I2C总线在传送数据进程中共有三种类型信号,即开始信号、终止信号和应答信号。
起始信号:
SCL为高电平常,SDA由高电平向低电平跳变,开始传送数据。
停止信号:
SCL为高电平常,SDA由低电平向高电平跳变,终止传送数据。
应答信号:
FPGA在接收到一个字节数据后,在下一个SCL高电平常向AT88SC0104C发出低电平脉冲。
FPGA在发送一个字节数据后,在下一个SCL高电平常读SDA_IN,检测应答位是不是为低电平,现在SDA_OUT应该钳位于高电平。
时序如图5所示:
图2-2I2C总线时序图
程序由主状态机和串并转换任务组成,其状态机采纳独热(one-hot)编码。
状态转移如图2-3所示:
图2-3读写状态转移
为了提高接口的稳固性,I2C总线在读取数据时持续采样三次,采纳三决二胜。
在写命令或写数据后若是0104C没有应答信号,那么终止本次数据传输。
2.3.1I2C模块接口说明
整个I2C系统用sda_in、sda_out、scl完成与AT88SC0104C的数据互换
指定至具体引脚:
sda_in:
串行数据输入(读取0104发送的数据)
sda_out:
串行数据输出(传送给0104的数据)
与FPGA内部的接口包括:
SIGNAL:
go:
I2C启动信号
shift_byte:
FPGA需要读(写)的字节数
ready:
I2C模块接收了一个字节的数据(多字节读时表示一个字节传输完成,FPGA读取该字节并贮存供后续利用)
send_ready:
表示需要传递一个字节数据给I2C(多字节写时表示FPGA应传输给I2C模块一个字节数据以供传输)
din:
FPGA写数据(传输给0104的数据)
dout:
FPGA读数据(从0104读取的数据)
I2C_stop:
I2C完成传输给定字节的数据
与FPGA外部的接口:
clk:
FPGA外部时钟
rst:
异步复位信号
该模块I2C数据传输进程:
1.起始信号产生
2.操纵信号传递(8字节)
3.0104应答(低电平为应答信号)
4.数据传输(读取数据时,持续采样三次,以提高工作靠得住性)
5.0104应答
6.停止信号
I2C为顶层文件,I2C_clk为时钟分频部份,I2C_transmit为I2C操纵部份。
该设计已用示波器验证。
随机数产生模块设计
本设计中利用这两个非门串联电路的时延的不确信性来实现振荡器的抖动,采纳振荡采样法生成随机数,系统原理如图7所示。
为了避免被综合掉,在设计时将非门设计为一个模块(inverse),并利用增量编译。
图2-4 随机数模型原理框图
单片机程序设计
当用户选择采纳单片机配置FPGA时,
主控MCU采纳51系列单片机,采纳C语言编写单片机程序,要紧编写FPGA的配置程序。
只需将用户放置于配置程序以后即可。
2.6.1配置FPGA流程设计
当电路板上FPGA配置方式设置成被动配置方式(PS)时,每次上电单片机都会自动对FPGA进行配置。
通过初始化FPGA后,单片机将接收到的数据包数据逐个写入,每写入1字节判定写入成功标志脚,有利于配置各类FPGA芯片,有更好的兼容性。
图2-5FPGA配置数据流程图
3.操作方式
对AT88SC0104C进行设置
具体操作步骤详见《SC-RWP2型AT88SCxx系列读写编程器利用说明书》。
专门注意:
那个地址设置的AT88SC0104C的密钥必需与中所设置的密钥完全相同。
AT88SC0104C只有在被设置后才能将其焊装到电路板上。
对EP2C8Q208(FPGA)进行配置
本项目为了兼容各类开发环境具有最经常使用的三类配置下载方式,以下别离说明各类方式的具体操作。
3.2.1(JTAG)配置方式
用于调试
硬件操作:
把ByteBlasterII下载线接到电路板中JTAG接口。
软件操作:
1.打开编程窗和配置文件。
第一将实验系统和并口通信线连接好,打开电源。
在菜单Tool当选择Programmer,于是弹出如图3-1所示的编程窗。
在Mode栏中有4
种编程模式能够选择:
JTAG、PassiveSerial、ActiveSerial和In-Socket。
为了直接对FPGA进行配置,在编程窗的编程模式Mode当选JTAG(默许),并选中打勾下载文件右边的第一小方框。
注意要认真查对下载文件途径与文件名。
若是此文件没有显现或有错,单击左侧“AddFile”按钮,手动选择配置文件。
图3-1选择编程下载文件
2.设置编程器。
假设是第一次安装的QuartusII,在编程前必需进行编程器选择操作。
那个地址预备选择ByteBlasterII[LPT1]。
单击HardwareSetup按钮可设置下载接口方式
(图3-1),在弹出的HardwareSetup对话框中(图3-2),选择Hardwaresettings页,在Currentlyselectedhardware框当选择ByteBlasterII[LPT1](图3-3)。
若是打开图3-2所示的窗口内“Currentlyselectedhardware”右边显示NoHardware,那么必需加入下载方式。
即点击AddHardware钮,在图4-27所示的窗口当选择ByteBlasterII,再在弹出的窗中点击OK,使“Currentlyselected”右边显示ByteBlasterII[LPT1]。
3.最后单击下载标符Start按钮,即进入对目标器件FPGA的配置下载操作。
当Progress显示出100%,和在底部的处置栏中显现“ConfigurationSucceeded”时,
表示编程成功。
注意,若是必要,可再次单击Start按钮,直至编程成功。
图3-2加入编程下载方式
图3-3双击选中的编程方式名
图3-4ByteBlasterII编程下载窗
3.2.2主动配置方式(AS)
用于将程序下载至EPCS器件
硬件操作:
将ByteBlasterII下载线与电路板上的AS_PS_J接口相连接,将AS_PS_SEL的AS一侧的3个套针连接,下载成功后须将下载线从电路板拔开,FPGA才会开动工作。
软件操作:
1.选择编程模式和编程目标文件
在如图3-5所示窗口的Mode栏,选择“ActiveSerialProgramming”编程模式,打开
编程文件,选中文件,并选中打勾3个编程操作项目,如图3-5所示。
图3-5ByteBlasterII接口AS模式编程窗口
2.AS模式编程下载
单击图3-5所示窗口的Start,编程成功后将显现如图3-6所示信息。
编程成功后FPGA
将自动被EPCS器件配置而进入工作状态。
尔后每次上电,FPGA都能被EPCS4自动配置,进入正常工作状态。
图3-6AS模式编程成功
3.2.3被动配置方式(PS)
用于由单片机下载配置程序
硬件操作:
将AS_PS_SEL的PS一侧的3个套针连接,将PS_J_SET套上(即连接)。
软件操作:
先由VHDL程序导出文件后写入存储器芯片AT29C040,上电后使单片机运行CPU_SET_FPGA子程序,单片机将读出AT29C040中的数据后,以PS方式对FPGA芯片进行配置。
HEXOUT文件的形成:
下装到AT29C040文件必需为后缀为hexout的文件,仿真软件QuartusII在版本不能默许产生hexout文件,必需人为设置产生格式文件步骤如下:
打开项目,点击File菜单,选择ConvertProgrammingFiles…如图一所示。
鼠标左键点击Programmingfiletype栏目的下拉箭头,选择Hexadecimal(Intel-Format)OutputFileforSRAM(.hexout)项。
在Filename框中输入导出Hexout文件名字如:
在中可选择导出文件存储途径。
然后选中Inputfilestoconvert栏目中的SOFData,左键点击AddFile按钮。
找到生成的相应的sof文件并打开,现在相应的sof下载文件出此刻相应的界面中。
最后左键点击Generate按钮,那么生成hexout的文件。
图3-7HEXOUT文件输出
在VHDL/Verilog程序中的设置
3.3.1密钥(Gc)设置
加密系统的密钥需要预先设置,别离贮存在FPGA和AT88SC0104C中。
如需修改,那么必需在FPGA和AT88SC0104C中同时修改并维持一致。
在VHDL/Verilog程序中修改密钥,只需修改主程序()或()中gc_mem的赋值并从头编译。
例如,当密钥为9ABDEFF时,相应的设置如下:
3.3.1.1VHDL程序中密钥(Gc)设置
3.3.1Verilog程序中密钥(Gc)设置
always@(posedgeclk)
begin
if(state==FIVE_CLK)
3.3.23.3.4lk(clk),.rst(rst),.sda_in(sda_in),.sda_out(sda_out),.scl(scl),
.ALL_RIGHT(ALL_RIGHT),.AGAIN_AUTHEN_KEY(AGAIN_AUTHEN));
SampleM2(.start(ALL_RIGHT),…);
只有当认证成功时,ALL_RIGHT信号为高电平,方可启动模块Sample,若是认证不成功,那么ALL_RIGHT信号为低电平,模块Sample不启动。
4.DEMO演示操作说明
采纳的文件为例如程序,AT88SC0104C采纳的文件为:
。
文件中,已将AT88SC0104C下装文件的密钥和EP2C8的下装文件的密钥均设置为0x9ABCDEFF。
进入QUARTUSII后,打开main项目,下装代码,程序自动运行。
按下KEY4按键能够重复执行认证流程一次。
只有在认证成功以后,5个LED全数一路点亮。
如要验证认证进程的正确性或有效性,能够按以下方式测试评估板:
A.取下AT88SC0104C,上电后重复按下KEY4按键。
现在5个LED都可不能点亮。
B.如将AT88SC0104C的密钥与VHDL/Verilig程序中的密钥设置成不一样。
现在5个LED都可不能点亮。
C.全数采纳例如程序,上电后5个LED会一路点亮。
5.光盘文件说明
1.单片机C语言源程序:
;
2.单片机目标代码程序:
;
3.AT88SC0104C程序:
0104C;
4.SC-RWP2型AT88SCxx系列读写编程器利用说明书;
5.FPGA的VHDL项目文件与下载文件包:
VHDL_program_files;
6.FPGA的Verilog项目文件与下载文件包:
Verilog_program_files;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硬件 加密 模块 AT88SC0104C 系列 烧录器 接触 IC