原创 Xilinx Virtex5 AES加密方法

2011-10-25 23:48 4766 10 10 分类: FPGA/CPLD

Virtex5 AES加密方法

 

 

1.ISE下设置选项... 1

2.下载nky文件... 3

3.注意... 3

4.实验... 3

5.硬件电路... 4

6.其它... 6

 

 


介绍一下xilinx V5 AES加密的方法;

 

1.ISE下设置选项

 

右键 Processes下面的Generate Programming File,

如下设置,

注意 AES Key需要设置256位长的字符串;

20111025234135001.jpg

 

然后直接编译;

生成两个下载文件 xx.nky xx.bit 文件;

nky文件, encryption key file,类似数字验证码,保存在FPGA;

此时生成的bit文件,与普通的bit文件不一样,其中包含了nky的信息;

 


2.下载nky文件

通过iMPACT,下载到FPGA;如图

20111025234135002.jpg

下载nky,FPGA的所有内存自动清除,下载完成后,nky的信息不能被读出,同时如果要重新下载一个nky文件,那么FPGA必须全部清除;

下载完nky,再下载含有nky信息的bit文件,配置完成后,将无法通过JTAG或其它方法从FPGA中读取配置信息,从而达到加密保护的作用;

 

3.注意

1>.FPGA内部含有一个encryption key,仍可以下载其它non-encrypted bitstream文件;

2>.NKY始终不能从FPGA中读出,但不含有NKYbit文件可以读回,如果在BitGen Security  Setting有设置的话;

3>.此加密方法,与下载方式无关,即不论是通过串行,JTAG,还是X8的并行方式,下载到FPGA中或是PROM,ACE和其它flash,都不影响加密保护;但这种方法不支持X16,X32总线的并行模式;

4>.NKY的信息是保存在FPGA,完全掉电会丢失,但只要V(BATT)或者是V(CCAUX)有电时,key的内容就不会丢失,所以加密的硬件,外部需要电池;

5>.key与含有加密信息的bit文件不匹配时,FPGA配置会失败,pin_INIT_Bpin_DONE会持续为低;

 

 

4.实验

1>.设置AES密码,编译产生led1.nkyled1.bit;

下载led1.nky,再下led1.bit,

程序运行正常;

led1.bit生成led1.mcs文件固化到XCF,断电再上电,同时有电池为V(BATT)管脚供电,

程序运行正常;

断电的同时,将电池取出,再上电,

程序不运行;

再将led1.nky下载到FPGA,

程序运行正常;

2>.重新设置AES密码,编译产生led2.nkyled2.bit;

下载led2.nky,再下载led2.bit,

程序运行正常;

下载led1.nky,再下载led2.bit,

下载失败;

3>.去掉encryption属性,重新编译,得到文件led.bit;

下载led1.nky,再下载led.bit,

程序运行正常;

led.bit生成led.mcs文件固化到XCF,断电再上电,或是断电取出电池再上电,

程序运行正常;

 

 

5.硬件电路

首先引用文档中的一段话:

The encryption key memory cells are volatile and must receive continuous power to retain

their contents.

At less than a 100 nA load, the endurance of the battery should be limited only by its shelf life.

VBATT does not draw any current and can be removed while VCCAUX is applied. VBATT cannot be used for any purpose other than retaining the encryption keys when VCCAUX is removed.

就是说管脚VbattVccaux上电后,将不再取电,那么电池这条路就断了,不再供电;

 

V5板卡中设计如下图,

20111025234135003.jpg

 

 

我想本意有两点,

1>.在断电的情况下,由电池来供电;板卡上电后,VCC3_3来供电;

2>.是为了给电池充电;

但我觉得存在下面的问题,

a.       关于供电切换的问题;

如果要实现切换,那么这个电路少一个二极管,会导致上面3V的电流回灌到电池中.

参考主板上RTC电路,如下图

20111025234135004.jpg

 

当主板上3VSB上来时,上面的二极管导通,那么下面的二极管就会截止,电池的通路就会截断,不会再给RTC供电,3VSB的电流也不会回灌到电池里;

3VSB断电后,下面的二极管会通,这时由电池供电,同时也上面的二极管也防止电流回灌;

另外,其实去掉D15,R206这些电路,保密电路仍正常工作;

因为上电后就,FPGA就不从Vbatt这个管脚取电了,所以不需要外部来接3.3V给这个脚供电,而断电后,自然由电池来供电;已做实验验证;

b.关于钮扣锂电池充电;

查了一下,一般的钮扣电池都不能充电,起码用在这个板卡上的电池是不能充电的,这样的电池要充电的话, 得根据电池的充放电曲线,设计相关的充放电电路,(引用一下,锂电池的充电一般需要一个充电电路和电池保护电路,充电电路按先恒流后恒压的步骤充电,保护电路防止电池过充过放,都有专门的芯片。常用的有Richteck的,Linear的,理光的,国内中芯微的等等).就算是能充电的电池,也不能这么直接接过去,会损害电池;

 

       本人对该电路也不是很懂理解有错的话,还望大家不吝赐教.

 

 

6.其它

1>.加密以及芯片配置的详细信息,请参考xilinx文档 ug191 p34;

2>.另附ISEencryption options说明;

 

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
10
关闭 站长推荐上一条 /3 下一条