用单片机实现SRAM工艺FPGA的加密应用

发布者:RadiantExplorer最新更新时间:2006-11-16 来源: 单片机及嵌入式系统应用关键字:CPLD  E2PROM  编程 手机看文章 扫描二维码
随时随地手机看文章
在现代电子系统设计中,由于可编程逻辑器件的卓越性能、灵活方便的可升级特性,而得到了广泛的应用。由于大规模高密度可编程逻辑器件多采用SRAM工艺,要求每次上电,对FPGA器件进行重配置,这就使得可以通过监视配置的位数据流,进行克隆设计。因此,在关键、核心设备中,必须采用加密技术保护设计者的知识产权。

1 基于SRAM工艺FPGA的保密性问题

通常,采用SRAM工艺的FPGA芯片的的配置方法主要有三种:由计算机通过下载电缆配置、用专用配置芯片(如Altera公司的EPCX系列芯片)配置、采用存储器加微控制器的方法配置。第一种方法适合调试设计时要用,第二种和第三种在实际产品中使用较多。第二种方法的优点在于外围电路非常简单,体积较小,适用于不需要频繁升级的产品;第三种方法的优点在于成本较低,升级性能好。

以上几种方法在系统加电时,都需要将配置的比特流数据按照确定的时序写入SRAM工艺的FPGA。因此,采用一定的电路对配置FPGA的数据引脚进行采样,即可得到配置数据流信息。利用记录下来的配置数据可对另一块FPGA芯片进行配置,就实现了对FPGA内部设计电路的克隆。典型的克隆方法见图1。

2 对SRAM工艺FPGA进行有效加密的方法
  
由于SRAM工艺的FPGA上电时的配置数据是可以被复制的,因此单独的一块FPGA芯片是无法实现有效加密的。FPGA芯片供应商对位数据流的定义是不公开的,因此无法通过外部的配置数据流信息推测内部电路。也就是说,通过对FPGA配置引脚的数据进行采样可得到配置信息。但也不能知道内部电路结构。如果在配置完成后使FPGA处于非工作状态,利用另外一块保密性较强的CPU产生密码验证信息与FPGA进行通信,仅在验证成功的情况下使能FPGA正常工作,则能有效地对设计进行加密。具体电路结构见图2。

系统加电时,由单片机对SRAM工艺的FPGA进行配置。配置完成时,FPGA内部功能块的使能端为低,不能正常工作。此时,单片机判断到配置完成后,将ASET信号置为高电平,使能FPGA内的伪码发生电路工作;同时,单片机产生一个伪码验证信息,在FPGA中将两路伪码进行比较,两者完全匹配时,FPGA内部电路正常工作,否则不能正常工作。加密电路主要利用了配置完成后处于空闲状态的单片机和FPGA内部分逻辑单元,没有增加硬件成本。

由上述讨论可知,系统的加密能力主要由CPU的加密能力决定。这就要求CPU的加密算法要足够复杂,使得对验证信息的捕获与识别足够困难。最常见的加密算法就是产生两个伪随机序列发生器:一个位于SRAM工艺的FPGA内;另一个位于CPU内。当两者匹配时,通过验斑点。对PN码有两点要求:一方面,要求伪随机序列的长度足够长,使得要捕获整个序列不太可能;另一方面,伪随机序列的线性复杂度要足够高,使推测伪随机序列的结构不易实现。

通常采用的伪随机码发生器的反馈电路如图3所示。实际中,可采用级数较高的线性反馈移位寄存器来产生伪随机码。如采用40级线性移位寄存器产生的最大序列的周期为2?40=10?12。若将所有伪随机码截获并存储,就需要1000Gb的存储空间;若码速率为50Kbps,捕获时间将长达5555小时;当增加移位寄存器的级数时,所需的存储空间和捕获时间都会呈指数增长,以至于难以实现。采用较为简单的线性反馈电路被推测出反馈结构的可能性较大,因此实际的系统中,除了级数要较多之外,往往通过对多个线性移位寄存器产生的伪码进行特定运算产生长码,以增加所产生伪码的线性复杂度。

3 FPGA内的校验工作电路

  在此采用40级线性反馈移位寄存器来产生伪随机码,特征多项式为20000012000005(八进制表示)。其移位寄存器表示形式为:Bin=B23?XOR?B21XORB2XORB0,FPGA内工作电路见图4。

图4

在上电之后,单片机将图4中的电路配置在FPGA中。配置完成后,单片机发送的ASET信号由低电平跳变为高电平,使得FPGA内的PN码产生电路开始工作,并于CPU发送过来的PN码进行比较。比较结果一致就使能USER_DESIGN模块正常工作。其中PLL_BITSYS模块用来发生VERIFY_PN的位同步时钟,采用微分锁相原理实现。各种参考资料都有较多介绍,在此不再详述。

COMPARE_PN模块完成对单片机发送的伪随机码和PNMA_PRODUCER模块产生的伪随机码的比较:当两路相同,输出1,不同时输出0;若两路伪码完全匹配,则恒定输出1,使USER_DESIGN电路正常工作,否则,输出为类似于伪码的信号,使USER_DESIGN电路不能正常工作。

4 FPGA内的伪随机码产生电路

PNMA_PRODUCER模块和来产生伪随机码,采用移位寄存器实现,具体电路见图5。

LPM_SHIFTREG为移位寄存器模块。移位寄存器ASET端为异步置位端,高电平有效,即ASET为高时,将初值85置入移位寄存器内,LPMSHIFTREG模块的“DIRECTION”设置为“RIGHT”即移位方向为右移。Q[39..0]表示40位移位寄存器的各个状态,SHIFTIN为串行输入,SHIFTIN为Q0、Q2、Q21、Q23四个状态异或运算的结果。

系统加电时,单片机将ASET置为低电平,经过一个非门,变成高电平使移位寄存器处于置位状态。在配置完成后,单片机将ASET信号置为高电平,经非门使移位寄存器正常工作。

  利用移位寄存器电路产生伪随机码的电路非常简单,反馈逻辑也便于修改。

5 单片机验证伪码的程序

在位寻址区(20H~2FH)定义了字节变量WORD1、WORD2、WORD3、WORD4、WORD5,用来存储移位寄存器的40个状态。其中Q0对应WORD1.0,Q1对应WORD1.1……Q39对应WORD5.7。同时,在位寻址区定义了WORD6、WORD7、WORD8、WORD9,用来进行后面的反馈逻辑计算。

单片机一上电,首先将ASET脚清零,同时,也将PNMA脚清零,将初值55H作为移位寄存器的初始状态,接着完成FPGA的上电配置工作。配置完成后,单片机检测来自FPGA的外部中断CONFDONE。如果配置完成,CONFDONE为高电;否则,为低电平。在检测到CONFDONE为高电平,即配置完成后,单片机将ASET脚置为1,使能FPGA内的伪码发生电路工作,单片机产生伪随机码的流程。配置完成后,首先将Q0输出到PNMA引脚,接着计算反馈逻辑输入,将参与反馈运算的几个状态运算结果存在中间变量MID_VARY中。然后,对各个状态进行右移,为了提高运算效率,使用了带进位C的字节循环右移指令。移位完成后,将MID_VARY存入Q39,再将新的Q0输出到PNMA引脚,程序循环执行产生伪随机码。

  单片机核心源程序如下:

  CLR ASET;单片机上电后将ASET位清0

  CLR PNMA

  MOV WORD1,#55h

  MOV WORD2,#0

  MOV WORD3,#0

  MOV WORD4,#0

  MOV WORD5,#0;将55H作为移位寄存器的初值PEIZHI:

  ……;进行FPGA的配置工作

  JB CONFDONE,PNPRODUCE;根据CONFDONE判断配置是否完成

  LJMP PEIZHI;否则继续配置

  PNPRODUCE:SETB ASET;配置完成后,将ASET脚置1

  XMQLOOP:MOV C,Q0

  MOV PNMA,C;将Q0输出到PNMA引脚,作为PN码

  MOV C,Q0

  MOV WORD6.0,C;用WORD6单元的0位来存Q0的状态

  MOV C,Q2

  MOV WORD7.0,C;用WORD7单元的0位来存Q2的状态

  MOV C,Q21

  MOV WORD8.0,C;用WORD8单元的0位来存Q21的状态

  MOV C,Q23

  MOV WORD9.0,C;用WORD9单元的0位来存Q23的状态

  MOV ACC,WORD6

  XRL A,WORD7

  XRL A,WORD8

  XRL A,WORD9;通过异或指令,计算反馈逻辑

  MOV C,ACC.0;反馈逻辑为Qin=Q0

  ;XOR Q2 XOR Q21 XOR Q23

  MOV MID_VARY,C;将运算后的状态存到MID_VARY中右移运算

  MOV ACC,WORD1

  RRC A;移位Q7~Q0

  MOV WORD1,A;移位后,保存到WORD1单元中

  MOV ACC,WORD2

  RRC A;移位Q15~Q8

  MOV WORD2,A;移位后,保存到WORD2单元中

  MOV Q7,C;将Q8的值赋到Q7

  MOV ACC,WORD3

  RRC A;移位Q23~Q16

  MOV WORD3,A;移位后,保存到WORD3单元中

  MOV Q15,C;将Q16的值赋到Q15

  MOV ACC,WORD4

  RRC A;移位Q31~Q24

  MOV WORD4,A;移位后,保存到WORD4单元中

  MOV Q23,C;将Q24的值赋到Q23

  MOV ACC,WORD5

  RRC A;移位Q39~Q32

  MOV WORD5,A;移位后,保存到WORD5单元中

  MOV Q31,C;将Q32的值赋到Q31

  MOV C,MID_VARY;将前面反馈计算的值赋给Q39

  MOV Q39,C

  LJMP XMALOOP ;继续产生下一代PN码元

6 其它加密方法介绍及比较

对SRAM工艺的FPGA进行加密,除了可以利用单片机实现外,还可以用E2PROM工艺的CPLD实现。与用单片机实现相比,利用CPLD的优点在于可实现高速伪码,但要在硬件电路中增加一块CPLD芯片,使整个硬件电路复杂化,增加了成本。本文提供的加密方法考虑到配置完成后单片机处于空闲状态,此时利用单片机进行加密,不需要增加任何电路成本,使得整个系统硬件结构十分简洁。本文提出采用长伪随机码来实现加密。如果采用其它的算法产生验证信息,并增加单片机与FPGA工作时信息实时交互,使得获取验证信息的难度足够大,也可以达到类似的加密效果。

关键字:CPLD  E2PROM  编程 引用地址:用单片机实现SRAM工艺FPGA的加密应用

上一篇:基于单片机的FPGA并行配置方法
下一篇:MCS-51单片机与CPLD/FPGA接口逻辑设计

推荐阅读最新更新时间:2024-05-13 18:15

DOCK之profinet的对接快换耦合编程
快换的Profinet对接使用方式 同一个设备可以在不同的上交替运行。为此必须使用其他的 IOCTL 功能进行解耦和。如果一个设备仅在一个机器人上运行,则也可以使用这些 IOCTL 功能。其他 IOCTL 功能只能为了兼容的原因而使用。 在带有工具更换系统的应用中,绝不能将总线用户持久地耦合在上。 在冷启动或在一个输入 / 输出端配置时,在该情况下这将直接导致工业以太网故障。 关闭始终可用这一功能可以防止这些设备在冷启动后或者重新配置输入 /输出端后被逻辑耦合进工业以太网。 这些已被停用的设备可以在以后程序运行时毫无问题地重新耦合进来。 但是在项目设置时必须考虑到,将所有
[机器人]
51单片机的最小系统应用说明
本文我们来谈一谈51单片机的最小化应用系统的问题,相信你做了这个简单的最小系统试验以后,会对单片机逐渐感兴趣起来的,单片机要正常运行,必须具备一定的硬件条件,其中最主要的就是三个基本条件:1.电源正常;2.时钟正常;3.复位正常。下面就以我们实验用的51单片机AT89S51为例介绍其硬件连接方法。 下图就是AT89S51单片机构成的最小系统(仅驱动1个发光二极管)的电路,在AT89S51单片机的40个引脚中:电源引脚2根,晶振引脚2根,控制引脚4根,可编程输入输出引脚32根。 《51单片机的最小化应用系统电路图》 1、工作电源:电源是单片机工作的动力源泉,废话!没有电源当然不能工作啦:),对应的接线方法为:40脚(VCC)
[单片机]
51单片机的最小系统应用说明
单片机的“编程语言”规范
  我在多年教学中发现,单片机的学习,还是以编程为难点。翻开现在的单片机教材,硬件部分与知识讲解部分基本上都是大同小异,唯有程序编写部分,真可谓是五花八门,异彩纷呈。试想一下,面对五花八门的程序编写资料,学生们又如何能知道从哪儿下手呢?这也难怪多数同学认为,编程只是个别学生的事情,与他们无关了。   这是在学校里面单片机的教学情况,社会上学习单片机的情况又怎样呢?随着电子元器件 技术的发展,硬件电路的制作越来越简单容易,有些器件可以直接把管脚焊接在一起,甚至无需用电路板连接即可使用,让大家感到头疼的还是编程。   尤其是业余单片机爱好者,没有受过专业的编程语言训练,大多数情况下是使用别人写好的程序,最多是在别人的程序上修改。我
[单片机]
单片机的“<font color='red'>编程</font>语言”规范
踏踏实实搞清 stm32 SPI总线 基础和编程
SPI应用是相当的广了,同步串行总线,同步同步当然需要时钟信号来统一了,这样通讯双方通讯时就比较默契没那么延迟(呆呆)了。应用于中低速场合。 学起来从哪些地方入手呢?如下: SPI概念与特点 关键的时序接受 编程时重点 STM32内部的SPI使用(介绍、功能、中断) SPI概念与特点:不多说,串行,需要同步信号 主从结构的 CS(片选) SCK SDI SDO 全双工 一主控多从 8或16位数据通信 其它特点:8个主模式波特率预分频系数 fpcll/2 主模式和从模式下快速通行 并支持切换 编程MSB 或LSB在前 专用发送和接受标志可促发中断 有
[单片机]
OPEN MIND hyperMILL 实现更快编程和更高灵活性
hyperMILL®2017.2新版本于中国正式发布,新版本的CAM组件提供了众多改进的加工策略,例如 3D 优化粗加工和 T 型槽特征检测等编程辅助工具。此外,为 CAD 软件 hyperCAD®-S 提供了一个全新的刻模电极生产模块。 hyperMILL®2017.2的亮点包含一个新的T型槽快速检测和编程特征。只需要点击几次,就可高效的产生T型槽的加工程序。此功能具有两种特征识别:“T 型槽”和“有底型腔和 T 型槽”。 3D加工模式“残料粗加工”是新版本中尤为突出的一项功能,具有进一步优化的进给策略。将“使用进给优化”选项与“附加切片厚度与深度”值相结合可计算出最优进给值。这使用户能够根据刀具条件调整加工参数。关键优势是可优
[工业控制]
OPEN MIND hyperMILL 实现更快<font color='red'>编程</font>和更高灵活性
C51编程23-应用篇(HC 06蓝牙模块)
现在的手机,平板,笔记本电脑都会自带蓝牙。本文将会介绍51单片机使用HC 06 蓝牙模块实现手机与笔记本电脑的通讯。 HC 06 模块 购买HC 06模块后需要检测蓝牙模块是否是好的,使用串口线与HC 06 模块连接起来。并在电脑上的串口助手上发送“AT”,在串口助手上可以收到“OK”。 注:建议使用与本文一样的串口调试助手,或者让商家提供测试的串口助手程序。 硬件连接 HC 06 模块TXD 连接单片机的RXD,HC 06 模块RXD 连接单片机的TXD; 功能描述: 上位机在串口助手发送命令,通过上位机的蓝牙传输到单片机中,
[单片机]
C51<font color='red'>编程</font>23-应用篇(HC 06蓝牙模块)
基于视频解码芯片与CPLD的实时图像采集系统
图像采集是实时图像处理的重要步骤。目前,图像传感器件主要有CCD(Charge Coupled Device)和CMOS(Complementary Metal Oxide Scmiconductor)。CCD技术现在已经非常成熟,CCD摄像头仍然是高端应用的首选器件。它输出的模拟视频信号包括图像信号、行与场消隐信号、行与场同步信号等七种信号。传统的视频采集系统由A/D转换电路、控制逻辑电路、数据缓存电路、地址发生器、地址译码电路等构成,此类设计有电路复杂、芯片繁多、开发周期长、成本高等缺点。 本文采用视频解码芯片与复杂可编程逻辑器件CPLD(Complex Programmable Logic Device)设计了一套实时图像
[嵌入式]
基于可编程芯片的软件无线电试验平台的设计
    摘要: 介绍了软件无线电的思想和结构,提出了一种实现软件无线电试验平台的设计方案,随后对各个模块进行了分析。整个试验平台可以根据用户的需求产生各种调制制式的中频信号;也可以接收各种中频信号,并变频成基带信号。另外,它利用通用微机完成形式多样的基带信号处理,使得整个平台结构简单,功能强大。     关键词: 软件无线电 数字上变频 数字下变频 PCI总线 软件无线电技术是的几年发展的新技术,是继无线电通讯从模拟到数字,从固定到移动的第三次革命。当初,是由于解决军事通讯中的不同体制、不同标准之间的兼容性而提出来的一种技术要求。但是,近几年来,由于第三代移动通讯标准UMTS(Universal M
[网络通信]
小广播
最新应用文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved