原创 FPGA安全性设计 - Altera方案

2012-12-3 12:37 6014 11 15 分类: FPGA/CPLD 文集: ALTERA FPGA

        器件生产、现场更新和固件远程重构的工作外包可能会导致FPGA被复制、克隆或盗版。这是不可回避的问题,很多企业产品器件焊接、固化等都需要外包,这时候就会存在上述风险。即便生产所有流程都不外包,FPGA中的配置bit流也有被“盗取”的风险。


 


        我们知道FPGA一般分两种,一种是基于SRAM结构;另外一种是基于反熔丝(Antifuse)或者FLASH结构。两种FPGA各有优劣势,对于安全性来说第二种是最安全的,但是目前技术无法将这种FPGA做的很大和无法满足足够复杂设计需求。第一种FPGA不安全甚至非常脆弱,是因为一旦系统上电,盗版者就能轻而易举地获取FPGA的位流。


 



我们这里讨论的FPGA安全性就是针对基于SRAM结构FPGA来进行的。


 


对于FPGA的攻击一般分为三种:


  •  

    • 复制(copy),有时候叫克隆(clone)
    • 反向工程(reverse engineering)
    • 篡改(tampering)

 


               


       


       Altera从StratixII开始在高端器件中对于配置比特流提供了128bit AES密钥保护,可以参考ALTERA的an341了解相关详细情况。2009年Altera又推出了CycloneIII LS系列,该系列也可以提供AES密钥保护,而且是256bit,同时该系列可以采用“划分FPGA设计,实现冗余和信息安全”。详细内容可以参考ALTERA的application note an589。这里我想要介绍的是如何给我们的FPGA配置比特流添加128或者256bit密钥保护。


 


实现安全配置流程


 


       安全配置流程分三步:



1、生成密钥可编程文件和加密配置数据;


2、将可编程密钥文件写入FPGA;


3、用加密配置数据配置FPGA。


         



下面分步骤介绍


Step1:


 


        第一步,完成设计生成配置需要的sof文件。


       


        第二步,向ALTERA或者其代理申请可以使能安全性设计的license。


 


        第三步,生成密钥文件(key file)和加密配置文件,分为以下几步


 


                1、从file菜单选择Convert Programming Files打开Convert Programming Files对话框,如下图所示


点击看大图




2、在上述打开的对话框中做如下选择设置



a、从programming file type下拉菜单中选择生成的配置文件类型;


b、若使用配置器件,从configuration device下拉项选择对应器件;


c、从Mode下拉项中选择模式;


d、在File name中指定生成的配置文件的文件名以及保存地址;


e、Input file to convert框中选中SOF data;(注:当需要转换多个sof文件的时候点右边Add sof data来增加) 


f、点Add file添加要被转换加密的sof文件;


g、高亮选中加入的sof文件;


h、点属性按钮Properties,弹出SOF file Properties:Bitstream Encryption对话框,如下图所示


点击看大图




注:假如之前没有获得使能加密设计的license,则该SOF file属性对话框如下图所示


    点击看大图




i、属性对话框中选中Generate Encrypt Bitstream;


j、选中Generate Key Programming File,并指定生成的epk文件的路径以及文件名;


k、输入key,key输入有两种方式,一种是通过键盘(又可分为PC键盘和系统小键盘两种,如下图所示),一种是通过导入key文件来实现;


点击看大图




如上图所示,点Add进入手动输入key对话框,点Edit也可进入该对话框,而key enty method则选择使用大键盘还是对话框中的小键盘输入。


l、设置好key1和key2以后,阅读加密设计声明,选择同意后即可点ok完成ekp文件和加密配置文件的生成。


 


3、说明一下key文件,即通过文件的形式导入密钥,.key文件其实就是符合文本格式的文件,文件的格式如下



下图是一个key文件例子


点击看大图



 


Step2、将可编程密钥写入FPGA


        在给FPGA写入密钥之前,先确保FPGA可以被编程,另外硬件设计上必须提供保持密钥的电池。FPGA获得密钥后,可以接受加密和非加密的配置数据流,但是当任何密码错误时候都会导致nstatus引脚上产生一个低电平,也即FPGA持续地自我复位。


        写密钥ekp文件的方法跟jtag模式下载基本相似,模式也是jtag模式,添加ekp文件即可开始编写,CIII LS跟StratixIII以及StratixIV和Arria IIGX不同点是在编写的时候少了Configure Volatile Design Security Key选项。


点击看大图





 


 


Step3、用加密配置数据配置FPGA



 


 


 


例:StratixIV安全配置过程


第一步&第二步:


点击看大图


第三步:


点击看大图


 




 


 

PARTNER CONTENT

文章评论4条评论)

登录后参与讨论

用户1110361 2010-9-13 14:40

很好!可惜我没有使能加密设计的license,查寻中……

用户235210 2009-11-12 16:12

很好很好,收藏了,备用

用户534970 2009-11-11 15:12

学习了!!

ilove314_323192455 2009-11-11 13:42

呵呵,图文并茂,不错
相关推荐阅读
coyoo 2025-01-16 13:07
PET探测器
记录下PET探测器的知识点。所谓探测器,即探测出核医学里的核辐射。人体代谢等反应发生的湮没产生了伽马光子,该伽马光子的能量很强,当前很难直接探测(尽管还存在直接探测的探测器)。所以,更多的时候是间接探...
coyoo 2024-12-25 14:13
ALTERA Cyclone 10器件的使用-8:特定的上电顺序
概述 Intel 要求用户为其10代FPGA器件使用特定的上电和掉电顺序,这就要求用户在进行FPGA硬件设计的时候必须选择恰当的FPGA供电方案,并合理控制完整的供电上电顺序。经过在Cyclone 1...
coyoo 2024-12-22 11:46
AD9218子板在新处理板上表现的问题
概述 新的数据处理板融合了数字和数据处理功能模块,计划采用ADI的4通道串行ADC芯片代替之前的并行ADC。由于初次使用,所以初次设计时预留了AD9218的子板的插槽。 在调试AD9633功能的同时并...
coyoo 2024-12-14 17:15
在Cyclone 10 GX器件上实现高精度TDC探索
概述 Cyclone 10 GX器件的ALM结构与Cyclone V类似,所以在Cyclone 10 GX器件上实现TDC功能理论上是可以完全参考甚至移植自Cyclone V系列的成功案例。但是,现实...
coyoo 2024-12-10 13:28
Cyclone V GX FPGA设计TDC的优化问题
概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些...
coyoo 2024-12-03 12:20
比较器检测模拟脉冲说明(四)
概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解...
我要评论
4
11
关闭 站长推荐上一条 /3 下一条