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

2012-12-3 12:37 5998 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安全配置过程


第一步&第二步:


点击看大图


第三步:


点击看大图


 




 


 

文章评论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 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读出测试系统需要解...
coyoo 2024-11-16 13:54
不同ADC采样同一前端模拟信号时转换用时差异分析
概述 同一组前端模拟信号接入由不同型号ADC组成的模数转换电路时,采样后在FPGA中发现采样用时差异较大。本文主要分析这个时间差异形成的原因,并记录该差异产生对系统造成的影响。系统数字化简介 项目前端...
coyoo 2024-11-10 13:04
ALTERA Cyclone 10器件的使用-7:FPGA片内RAM资源利用率思考
概述 项目使用的FPGA目标器件为Cyclone 10 GX系列规模最大一颗料,由于功能升级增加了功能模块更多,发现器件片内RAM不够使用了。为了探索片内RAM使用的利用率问题,从代码RTL级与编译软...
coyoo 2024-11-10 12:30
转知乎:幽灵般的人体成像技术-PET
幽灵般的人体成像技术——PET - 知乎...
coyoo 2024-11-09 10:26
AD9633默认情况下调试记录(二)
概述 所谓默认情况,即如器件手册中图2所标示那样。对应AD9633的调试,除了涉及到ADC自身,还需要兼顾前端驱动器,系统中AD9633驱动器使用了差分运算放大器,这里不在赘述,笔者已有相关文章论述。...
我要评论
4
11
关闭 站长推荐上一条 /2 下一条