FPGA加密

FPGA加密(转)

 

FPGA的加密问题其实是一个加密成本和加密级别的折中,总的说来只要FPGA内部带非挥发的
Memory块,就可以实现加密功能, 不带非挥发Memory块的FPGA,可以在系统级来解决加密
问题:
1.高端FPGA如Altera StratixII/III, Xilinx Virtex5,内部集成128-bit/256-bit Fuse和
加解密模块,可以实现加密功能;

2.对加密要求高和成本要求适中:可以采用Actel的Flash FPGA如ProASIC3;

3.对成本要求高和加密要求适中:可以采用从系统级来实现加密功能,如普通FPGA+带加密功能MCU(FPGA的数据通过加密功能MCU配置,FPGA的配置模式可以是从串方式);普通FPGA+带加密功能的ROM(如Dallas Semiconductor 的DS28E01-100,需要在FPGA设计中加入加密逻辑);普通FPGA+CPLD/Auti-fuse FPGA(把设计的小部分逻辑放到CPLD或者Anti-fuse的FPGA中,如Altera MAX3032或者Actel eX64);

4.对成本要求高和对加密要求高:可以采用Xilinx Spartan3A。Spartan3A芯片带DNA功能,也就是每个芯片内部有不同的序列号,需要在设计中加入加密逻辑。

 

 

设计安全性也是人们关注的一个问题,特别在消费和汽车电子市场。在FPGA使用的设计和配置数据代表了整个系统中知识产权的重要部分。或许是太 过优柔寡断或其它原因,设计人员一直都没有认真考虑设计盗窃的问题。但事实上,竞争对手的反向工程是一个真实的商业危机,且已存在好一段时间。

  如果能够在可编程器件中存取IP核,用户就有可能得到额外的价值。制造商利用单个器件来实现产品多元化会有风险,因为最终用户可能会被诱惑进行廉价的非法升级,只需对其现有产品的部份元件进行重编程便可。

  例如,在汽车电子市场,非法复制产品的情况越来越多;这些低质、低成本元件通常针对售后和非厂家授权服务的市场。而未经授权元件的销售渠道非常 难以控制 (尽管并非不可能)。这些复制的板上系统元件往往都没有最新或经重新校准的设定、测定燃油传输、点火时间及其它控制功能,有可能导致引擎失效和损坏。

  FPGA也越来越多地用于能够固有地抵抗外界篡改能力的应用中。为了防止盗窃服务,数字机顶盒和移动电话之类的设备需要有安全功能。如果黑客能侵入以FPGA为基础的卫星无线接收总台,并使用户的认证机制失效,不道德的用户就能够乘机盗用免费的服务!

  系统的安全机制一旦被击破,当中的技术通常都会大规模地被散布。只要看一看eBay就可找到各种通过此方法提供的免费服务总台,例如有线电视的解码器。

  即使在产品上市之前,也存在安全/盗窃风险。许多消费和汽车电子厂家都会将一部份的产品制造外判,这就会带来过建的问题,即是代工一方超额制造 客户所定购数量的产品,然后销往地下市场。更糟糕的是,第三方器件编程服务的用户必须以未经保护的格式提供其FPGA配置数据,而这些数据很容易被机构内 或外部的人盗取。

  要防止这类非法活动,设计人员必须从元件层面入手。FPGA的三大技术是反熔丝、FlashSRAM。其中,反熔丝被公认为固有最安全的技 术,因为要非法读取以反熔丝为基础的FPGA状态极之困难;举例说,一个200万门的Actel反熔丝FPGA含有约5300万个反熔丝,而在一般的设计 中只有2-5% 会被用于编程。因此要找出那些经编程的反熔丝的概率很低,这使到设计的盗取非常困难。

  反熔丝FPGA也能抵御过去用于攻击ASIC和成品的反向工程技术。这个技术会对目标芯片进行连续分层剥离,并直接观察敷涂了金属的位置、通路 孔和其它特点。经编程的反熔丝几乎与未经编程的反熔丝没有分别,同样由于找出经编程反熔丝的概率很低,使到反向工程的机会几乎不可能出现。

  以Flash 为基础的FPGA一般也被认为是完全安全的;当对Flash开关编程后,半导体器件层并不会出现物理变化,因此与反熔丝一样,要通过入侵探测来确定经编程或运行中的器件是非常困难的事。

  相反,以SRAM为基础的FPGA就需要外部配置器件 (通常是板上PROM),在上电时将配置数据码流传送给FPGA。这个码流很容易被黑客截获;又或者说这个PROM能够被复制或直接被人读取其内容。

  有些FPGA还包括各种升级功能,有助于保证编程过程中或编程后的安全性。例如,ActelProASIC Flash FPGA早就包含了名为FlashLock的功能,采用由用户定义的密钥机制。假如没有这个密钥,就不能对器件进行读、写、验证或擦除操作。器件还提供一 个永久性的选项,赋予一次性的编程设定,意味着任何方式都不能读取其设计内容。

  这类 Flash FPGA通过物理解构的方式来防止设计盗窃;Flash 的单元位于7层金属之下,几乎不可能从物理层面被解码,因为不能在不干扰已被编程 (或已被擦除Flash晶体管上的电荷下移除这些金属层。

  这些器件同时克服了另一个基本问题;没有包含能回读配置数据的机制。传统的FPGA结构都有一个回读功能,让器件可在编程后进行验证。在ProASIC3/E器件中,由于验证过程属于器件编程的固有部分,因此毋需额外的回读功能。

  ActelProASIC3/E器件进一步扩充了这些安全功能,引进了AES (先进加密标准解密核。AES是符合FIPS (联邦信息处理标准) 192版的加密算法,该标准由美国政府机关所采用,以保护那些敏感但并未分类的信息。ProASIC3/E器件采用AES的变种算法,称为 Rijndael,利用了长度为128位的密钥。由于可能的密钥数目约在1038量级,因此即使是采用最强大的计算技术,这种密钥也是牢不可破。

  AES加密核能同时用于FPGA核本身以及独特 FlashROM (FROM) 内存的加密中。每个FPGA都被分成两部分:FPGA阵列和FlashROM,两者都可独立编程,容许在不改变FPGA核的情况下完成FROM升级。

  AES密钥本身存储在专门的片上非挥发性Flash内存中,并不能被读取。这就使设计人员可保护其知识产权,将经AES加密的配置文件提供给代工厂商,只有与拥有正确密钥的器件配合时才能使用,而这个密钥本身可在安全或可信赖的环境中进行编程。

  这个功能可让设计人员享有将制造外判的成本优势,同时也为那些想发挥FPGA可编程特点的公司带来更高的安全水平,以便实现后期的设计更改或定制产品配置。

  这些设备还可用来实现一个使FPGA制造商引以自豪的功能,即是可执行现场升级。这个可能性在理论上已经存在一段时间:以FPGA为基础的设备 可因应标准的改变在现场重新配置,又或如客户决定在订用服务中启动升级功能时。但缺点是从OEM方获取新FPGA配置数据存在安全风险。AES密钥的使用 可让ProASIC3器件支持安全的服务内编程 (ISP)

  制造商利用这个功能还可在其它方面获益,例如,订用式服务的设备制造商可利用FROM空间来实现终端设备的安全序列化管理,而所有产品的 FPGA结构都进行了相同的编程。AES加密还可以保证数据在PCB板上不同元件之间通信的安全性。数据本身可能就是敏感的信息,如在客户的财务系统中或 按用量付费服务的接入控制设备中,又或存在数据被利用于反向工程的风险。加密的通信提供物理性保护措施及防篡改技术以外别具成本效益的保护方法。

  FPGA提供各种先进的安全功能,可让制造商通过比以前更安全的途径进行设计和保护数据。选择具备固有安全性的FPGA技术,如Flash,并采用目前元件所提供额外的安全功能,设计人员就可安全地充分发挥可编程逻辑的可编程性和现场升级的灵活性优势。


转自 新浪博客 leaf 的文章

阅读更多
文章标签: FPGA加密 
想对作者说点什么? 我来说一句

xilinx FPGA加密方法

2010年10月14日 167KB 下载

Lattice ECP3 FPGA加密方法

2016年01月13日 936KB 下载

没有更多推荐了,返回首页

不良信息举报

FPGA加密

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭