用单片机实现SRAM工艺FPGA的加密应用
时间:02-27
来源:互联网
点击:
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. 宋万杰 CPLD技术及其应用 1999
2. 候伯亭.顾新 VHDL硬件描述语言与数字逻辑电路设计 1999
3. 蔡美琴.张为民.沈新群 MCS-51系列单片机系统及其应用 1992
4. 沈允春 扩谱技术 1995
5. Ray Schouten A Whitepaper on SRAM FPGAsecurity
6. 刘晓明.王军.谢明钦 基于单片机的复杂可编程逻辑器件快速配置方法 [期刊论文] -电子技术应用2002(10)
7. 屈代明 可编程数字逻辑器件中数字锁相环的实现 [期刊论文] -石油仪器2000(2)
作 者:重庆大学 刘晓明 谢明钦 王军
来 源:单片机与嵌入式系统应用2003(7)
在位寻址区(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. 宋万杰 CPLD技术及其应用 1999
2. 候伯亭.顾新 VHDL硬件描述语言与数字逻辑电路设计 1999
3. 蔡美琴.张为民.沈新群 MCS-51系列单片机系统及其应用 1992
4. 沈允春 扩谱技术 1995
5. Ray Schouten A Whitepaper on SRAM FPGAsecurity
6. 刘晓明.王军.谢明钦 基于单片机的复杂可编程逻辑器件快速配置方法 [期刊论文] -电子技术应用2002(10)
7. 屈代明 可编程数字逻辑器件中数字锁相环的实现 [期刊论文] -石油仪器2000(2)
作 者:重庆大学 刘晓明 谢明钦 王军
来 源:单片机与嵌入式系统应用2003(7)
电子 FPGA Altera 电路 单片机 555 CPLD VHDL 嵌入式 相关文章:
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- 周立功:如何兼顾学习ARM与FPGA(05-23)
- 初学者如何学习FPGA(08-06)
- 为何、如何学习FPGA(05-23)
- 学习FPGA绝佳网站推荐!!!(05-23)
- 我的FPGA学习历程(05-23)