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

发布者:来来去去来来最新更新时间:2013-09-29 来源: dzsc关键字:单片机  SRAM工艺  FPGA加密 手机看文章 扫描二维码
随时随地手机看文章
       在现代电子系统设计中,由于可编程逻辑器件的卓越性能、灵活方便的可升级特性,而得到了广泛的应用。由于大规模高密度可编程逻辑器件多采用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。

FPGA内工作电路

       在上电之后,单片机将图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四个状态异或运算的结果。[page]

移位寄存器电路

       系统加电时,单片机将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工作时信息实时交互,使得获取验证信息的难度足够大,也可以达到类似的加密效果。 


参考文献:

[1]. ASET datasheet http://www.dzsc.com/datasheet/ASET_1336659.html.
[2]. SETB datasheet http://www.dzsc.com/datasheet/SETB_603704.html.
[3]. CPLD  datasheet http://www.dzsc.com/datasheet/CPLD+_1136600.html.

关键字:单片机  SRAM工艺  FPGA加密 引用地址:单片机SRAM工艺的FPGA加密应用

上一篇:YD-613在单片机、嵌入式系统的应用
下一篇:在软件中判断单片机的冷启动还是热启动

推荐阅读最新更新时间:2024-03-16 13:28

基于单片机的温控报警系统设计 ,
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89S51,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。 #include reg52.h #include stdio.h #include absacc.h code unsigned char seg7code = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92, 0x82,0xf8,0x80,0x90,0x40}; //显示段码 sbit TMDA
[单片机]
基于<font color='red'>单片机</font>的温控报警系统设计 ,
单片机程序调试几点经验
1、程序的确定性比硬件大,不要害怕程序问题。 2、写程序,最重要的不是学会某种语言,而是会分析问题并提出解决问题的方法。 3、含有中断的程序较为复杂,需要编写者清楚同一时刻,我在做什么,其他人在做什么,用 并发 的方式思考问题,才能写好。 4、程序模块化是为了编写而不是为了运行,模块化和函数是两个不同的概念,函数是为了将需要多次使用的代码统一编写,以便减少程序代码量,便于维护;模块化是指将复杂的程序功能化整为零而成的功能块,一个模块可能由多个函数组成,也可能就是一个函数,还有可能只是一段紧密相连的代码块。 模块---打开冰箱门 1、抬起右手,移动到冰箱门把中心右侧1cm处 2、弯曲右手手指,构筑冰箱门 3、以2kg的力量
[单片机]
红外热释电传感器单片机设计
随着近年来,随着改革开放的深入发展,电子电器的飞速发展人民的生活水平有了很大提高。各种高档家电产品和贵重物品为许多家庭所拥有。然而一些不法分子也是越来越多。这点就是看到了大部分人防盗意识还不够强造成偷盗现象屡见不鲜。因此,越来越多的居民家庭对财产安全问题十分担忧。报警器这时正为人们解决了不少问题但是市场上的报警器大部分都是用于一些大公司财政机构。价格高昂一般人们难以接受。如果再设计和生产一种价廉、性能灵敏可靠的防盗报警器,必将在防盗和保证财产安全方面发挥更加有效的作用。由于红外线是不可见光,有很强的隐蔽性和保密性,因此在防盗、警戒等安保装置中得到了广泛的应用,此外,在电子防盗、人体探测等领域中,被动式热释电红外探测器也以其价格低廉
[单片机]
红外热释电传感器<font color='red'>单片机</font>设计
《手把手教你学51单片机-C语言》之六 中断与数码管动态显示
中断是单片机系统重点中的重点,因为有了中断,单片机就具备了快速协调多模块工作的能力,可以完成复杂的任务。本章将首先带领大家学习一些必要的C语言基础知识,然后讲解数码管动态显示的原理,并最终借助于中断系统来完成实用的数码管显示程序。大家对本章节内容要多多研究,要完全掌握并能熟练运用。 1.1 C语言的数组 1.1.1 数组的基本概念 第四章已经学过变量的基本类型,比如char、int等等。这种类型描述的都是单个具有特定意义的数据,当我们要处理拥有同类意义但是却包含很多个数据的时候,就可以用到数组了,比如我们上节课那个数码管的真值表,就是用一个数组来表达的。
[单片机]
《手把手教你学51<font color='red'>单片机</font>-C语言》之六 中断与数码管动态显示
基于单片机的智能家居无线报警系统设计
引言   随着电子信息技术和计算机网络技术的发展,实现家居信息化、网络化是当前智能家居系统发展的新趋势。报警系统作为智能家居系统的一个重要组成部分,其性能的好坏直接关系到整个智能家居系统的优劣。把无线网络技术应用到家居报警系统中,通过各种传感器实时采集家居的环境信息,通过无线的方式将信息传输给家居控制中心, 能够弥补有线设备的缺陷, 具有价廉、可靠性高、等优点。笔者根据无线网络技术和智能家居的特点,设计了一种基于无线网络技术的家居无线报警系统。该无线报警系统可以对整个家居的安全环境进行实时监控。监控的范围包括室内防盗、火灾报警、煤气泄露、水管破裂等一系列不安全因素。一旦有上述安全事故的发生,该报警系统就会发出相应的报警信息,可以
[单片机]
基于<font color='red'>单片机</font>的智能家居无线报警系统设计
51单片机外部中断编程实例2
1、51单片机的5大中断源:串行口中断、定时中断1、外部中断1、定时中断0、外部中断0; 2、中断源的编号: 串行口中断为4、定时中断1为3、外部中断1为2、定时中断0为1、外部中断0为0; 3、中断源的优先级:按以上顺序排列,串行口中断最低、外部中断0最高; 4、使用外部中断0和1,必须TCON寄存器设置其触发方式是低电平触发(0)还是下降沿触发(1); 5、使用前必须通过IE寄存器打开总中断和自己的中断; 一、外部中断基本例程(未使用中断,键盘扫描为一般端口扫描) #include reg52 .h sbit k1=P3^2; sbit led=P2^7; void delay_ms(u
[单片机]
基于SLH89F5162单片机的公交车语音报站系统
一、项目设计背景及概述 随着城市化的进展和经济的快速发展,城市“乘车难”、“行车难”的局面在加剧,很多城市建议人们出门乘坐公交车。但是在天气恶劣或视线不好的时候,乘客乘坐公交车的时候往往无法清楚的分辨到达的站牌,导致没有正常下车或错误下车,给出行带来不必要的麻烦。传统的报站方式是由售票人员进行人工报站,这个售票人员多的工作不仅需要负责售票工作,还要准确的为乘客报站,作为一个地区的公交车站行业,有一定的地方特色,他们报站时多采用地方口音,作为一个外地人有时候很难听懂报站,从而引起很多麻烦。 本系统设计的公交车语音报站系统,利用科大讯飞的语音软件对语音进行词组和句子划分,合成wav文件,然后装载到WT588D语音芯片里面,然后通过深联
[电源管理]
基于SLH89F5162<font color='red'>单片机</font>的公交车语音报站系统
51单片机控制步进电机-让电机转起来
摘要: 本节介绍用简单的方式,让步进电机转起来。其目的之一是对电机转动有直观的感受,二是熟悉整个开发流程 本系列教程必要的51单片机基础包括IO口操作、中断、定时器三个部分,相关基础教程网上很多,可以自行学习 一、软件清单 需要用到的软件有keil5编译软件、STC程序烧录软件 二、控制原理 根据TB6600驱动器原理,向PUL口发送脉冲,每发送一个脉冲,电机就转一步。通过单片机延时的方式,切换PUL口电平产生脉冲,从而控制电机转动。 三、程序代码 //毫秒延时函数 void delay(unsigned int z) { unsigned int x,y; for(x=z;x 0;x--) for(y
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

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