易灵思钛金系列加密方案-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

易灵思钛金系列加密方案

 

易灵思的钛金系列支持加密特性,包括使用AES-GCM-256算法的比特流加密知识产权保护和使用RSA-4096算法的非对称比特流认证。这两种方式既可以单独使用,也可以同时使用,下面来详细了解下。

 

1)、对称比特流加密

使用256位的密钥和AES-CGM-256加密算法。

(1)生成密钥,

(2)用生成的密钥加密比特流(通过bin文件);

(3)把生成的密钥存储到FPGA的熔丝中,即下图中的Blow Fuses工具,密钥在svf文件中。

(4)在FPGA配置过程,FPGA通过内部的AES-GCM-256引擎和密钥解密加密的数据流。

需要补充的是FPGA通过Blow Fuses工具烧写了熔丝之后,也是可以配置不加密比特流的。

图片[1]-易灵思钛金系列加密方案-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

 

 

2)、比特流认证

对于比特流认证,需要使用公钥和私钥对及RSA-4096算法。

(1)生成公钥和私钥;

(2)用私钥对数据流签名,私钥存储在.pem文件中。

(3)将公钥的哈希值存储到FPGA内部的熔丝中,即下图中的Blow Fuses工具。,公钥在svf文件中。

(4)在配置过程中,FPGA通过公钥对比特流进行签名验证;如果签名有效,FPGA就知道位流来自可信的源,并且没有被第三方修改过则进入用户模式;否则停止配置;

(5)私钥要保存好。

需要补充的是FPGA通过Blow Fuses工具烧写了熔丝之后,必须要用.pem文件对比特流进行签名。

图片[2]-易灵思钛金系列加密方案-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

 

3)、JTAG阻断

 

钛金系列FPGA还支持通过烧断熔丝的方式阻断JTAG功能。阻断之后JTAG只能执行读取ID和器件状态和使能旁路模式;因为JTAG阻断之后就没有办法再操作JTAG,所以要确保在最后一步使用。

 

四、软件操作

 

在Efinity菜单Tool- >Open Key Generator打开密钥生成器。

(1)ASE-256 Key用于生成ASE 256位的密钥文件,可以随机生成,也支持手动输入,文件后缀为.bin。

(2)生成RSA-4096的私钥文件,后缀为.pem。支持手动添加文件也支持自动生成。

(3)指定是否阻断JTAG.

 (4)点击Generate生成相应的文档。会生成以.bin,.pem和.svf为后缀的三个文件。

数值要保存

图片[3]-易灵思钛金系列加密方案-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

 

烧写熔丝。

在Efinity菜单Tool- >Open JTAG SVF Player。

添加svf文件。svf文件中包含JTAG命令和密钥信息。

(1)读取JTAG IDCODE与.svf内的ID进行比对,确认是否为目标型号PFGA。

(2)对于AES加密,发送8个32位的key;

(3)对于RAS认证,发送12个32位的Key;

(4)发送熔断JTAG熔丝的指令;

 

(1)RAS密钥熔断熔丝后,FPGA只能接受通过正确的私钥签名的比特流文件。

(2)AES-256密钥熔丝后,FPGA只能接受未加密文件或者通过正确的密钥加密的比特流文件。

注意烧写后复位CRESET_N才会生效。

图片[4]-易灵思钛金系列加密方案-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

已经被熔断的熔丝再次熔断时,或者FPGA的型号与密钥生成器中的型号不对应时会发送TDO Mismatch。如下图。

 

 

图片[5]-易灵思钛金系列加密方案-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

 

 

在Project Editor中把上面生成的生成加密文件根据需要添加起来,重新生成比特流即可,不需要重新编译。

如果只用AES-256,则不需要勾选Bitstream Authentication.

 

图片[6]-易灵思钛金系列加密方案-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

 

5)熔丝的熔断顺序

对于AES-256、RSA和JTAG熔丝熔断顺序要求是:可以同时AES-256和RSA的熔丝和熔断JTAG熔丝;但在不同时熔断的情况下,只能把JTAG熔丝熔断操作放在最后。对于AES-256和RSA熔丝熔断顺序不做要求。

6)验证加密选项。

通过Programmer工具的Advanced Device Configuration Status中的RSA_ACTIVE和AES_ACTIVE可以判断是否使能了RSA和AES,当为1时表示使能。

图片[7]-易灵思钛金系列加密方案-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

 

补充说明:

(1)加密时不能使用数据流压缩功能。

(2)加密功能必须要接REF_RES_3A电阻

 

图片[8]-易灵思钛金系列加密方案-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

 

请登录后发表评论

    没有回复内容