(11)解密数据
图5.3.13 生成解密数据
软件验证:
- 46 -
参 考 文 献
[1] Wayne W.The Future of MultiProeessor System-on-ChiPs[C].California: Proceeding
of DAC SanDiego,2004.
[2] Benini L.Exploring the MPSoC design space with SystemC[J].Journal of
VLSI,2005(4):169-182.
[3] Geer H.Chip makers turn to multi-core processors[J].Computer,2005,38(35):75-88.
[4] Bolotin E,Cidon I,Ginosar R.QoS architecture and design process for network on
chip[J].The Journal of Systems Architecture,2004,50(2):105-128.
[5] Terry T Y,Luca B,Giovanni M.Packetization and routing analysis of on-chip
multiprocessor networks[J].Journal of System Architecture,2004,50(2):81-104. [6] Dally W,Towles B.Route packets,not wires: on-chip interconnection
networks[J].Design Automation Conference,2001(38):684-689.
[7] Forsell M.A scalable high-performance computing solution for networks on
chip[J].IEEE Micro,2002,22(5):46-55.
[8] 晨风.嵌入式实时多任务软件开发基础[M].北京:清华大学出版社,2004.
[9] Ahmed A J,Wayne W.Multiprocessor System-on-Chips[M].San Francisco: Morgan
Kaufmann Publishers,2005
[10] Xin P Z.A Hierarchical Modeling Framework for On-Chip Communication
Architectures [C].California: Proceeding of ICCA,2002.
[11] Cristian G,Michael J. Performance Evaluation and Design Trade-Offs for
Network-on-Chip Interconnect Architectures[J].IEEE Transactions on Computers,2005,54(8),1025-1040.
[12] Shashi K.On packet switched networks for on-chip communication [J].Networks
on chip,2003,234(18):85-106.
[13] 杜高明.MPSoC_NoC多核体系结构及原型芯片实现技术研究[D].安徽:合肥工业大
学,2007.
[14] 蒋小燕,俞伟钧,张建生.数字信号处理与应用[M].南京:东南大学出版社,2006. [15] 田耕,徐文波.Xilinx FPGA开发实用教程[M].北京:清华大学出版社,2008. [16] 章毓晋.图像处理和分析技术[M].北京:高等教育出版社,2008. [17] Lei C,Qi G,Dhabaleswar K P.Understanding the Impact of Multi-Core Architecture
in Cluster Computing:A Case Study with Intel Dual-Core System[J].Computer Science and Engineering,2007,325(46):471-478.
[18] 余科军.分布式实时系统任务调度算法的设计和实现[D].四川:四川大学,2006. [19] 李显宁.异构集群系统的可分负载调度算法研究[D].广西:广西大学,2007.
- 47 -
第二届中国电子学会Xilinx开放源码硬件创新大赛
基于多核技术的FPGA信息加密解密器设计
研究报告
大连理工大学参赛队
2010年3月10日
基于多核技术的FPGA信息加密解密器设计
指导老师:邱铁
团队成员:刘大伟、黄磊、满俊麟、张宝伟
联系方式:15940891366
dbmelody99z@gmail.com
- 2 -
目录
1.研究背景............................................................... - 5 -
1.1系统原理和技术特点: ............................................. - 5 - 1.2多核技术: ....................................................... - 5 - 1.3多核的挑战: ..................................................... - 5 -
1.3.1 硬件挑战 .................................................. - 5 - 1.3.2 软件挑战 .................................................. - 6 - 1.4 多核的发展 ....................................................... - 6 - 1.5 优势 ............................................................. - 7 - 2 多核构架设计 ........................................................... - 7 -
2.1 系统架构结构概况 ................................................ - 7 - 2.2 本地子系统 ...................................................... - 8 -
2.2.1 微处理器核 ................................................ - 8 - 2.2.2 本地指令存储器 ........................................... - 10 - 2.2.3 本地数据存储器 ........................................... - 10 - 2.3 调度模块 ....................................................... - 10 -
2.3.1 任务分配器 ............................................... - 10 - 2.3.2 任务调度器 ............................................... - 11 - 2.3.3 全局数据通道 ............................................. - 11 - 2.4 通讯互连架构 ................................................... - 11 -
2.4.1 局部总线 ................................................. - 11 - 2.4.2 全局总线 ................................................. - 12 - 2.4.3 总线桥 ................................................... - 13 - 2.5 全局共享模块 ................................................... - 13 -
2.5.1 共享数据存储器 ........................................... - 13 - 2.5.2 中断控制器 ............................................... - 13 -
3.调度算法的实现 ........................................................ - 14 -
3.1 多核CPU与调度算法的总体设计 ................................... - 14 - 3.2 存储地址分配 ................................................... - 15 - 3.3 局部总线各模块的设计 ........................................... - 15 -
3.3.1 本地指令存储器的设计 ..................................... - 16 - 3.3.2 本地数据存储器的设计 ..................................... - 16 - 3.4 调度模块中各模块的设计 ......................................... - 17 -
3.4.1任务分配器 ................................................ - 18 - 3.4.2任务调度器 ................................................ - 20 - 3.4.3 全局数据通道 ............................................. - 23 - 3.5 全局总线各模块的设计 ........................................... - 24 -
3.5.1 共享数据存储器 ........................................... - 24 - 3.5.2 中断控制器 ............................................... - 24 - 3.6 总线桥的设计 ................................................... - 25 -
- 3 -
3.6.1 总线转换器 ............................................... - 25 - 3.6.2 从主译码器 ............................................... - 26 - 3.6.3 从主数据通道 ............................................. - 26 -
4.加密解密算法实现 ...................................................... - 28 -
4.1加密解密算法的选择 .............................................. - 28 - 4.2 RSA算法的实现 .................................................. - 29 -
4.2.1汇编指令集 ................................................ - 29 - 4.2.2汇编程序设计 .............................................. - 35 - 4.3 RSA算法与四核调度 .............................................. - 38 - 5.功能实现.............................................................. - 38 -
5.1 测试原理 ........................................................ - 38 - 5.2 应用模型 ........................................................ - 40 - 5.3 系统级功能验证结果 ............................................. - 40 - 参 考 文 献 ............................................................. - 47 -
- 4 -
1.研究背景
网络通信中的加密解密技术是信息安全技术领域的一项重要课题,本项目是针对当前网络通信特点—数据量较大,其通信速度受加密器和解密的限制,本项目采用FPGA设计多核CPU,实现对网络传输信息进行加密和解密,保证通信网络高效安全的实现。
1.1系统原理和技术特点:
1.在传统的网络通信中,加密和解密的速度影响着通信的速度。单CPU难以满足高效性的要求。本项目采用FPGA设计具有4个核的处理器,外加一 个硬核,用硬核来控制4个软核,设计及优化调度算法,使四个核能协同工作,提高加密解密速度,保证数据传输速率。
2.加密解密采取RSA算法加密过程中,每个处理器完成一步加密技术,采用流水线式的处理机制,产生随机数—判断素数—加密—解密,这样不仅保证了网络传输的安全性,也保证了传输的高效性。
3.此项目中注重处理器的选型,处理器的数量,算法的编写,内存的分配等等。 4..Xilinx基于FPGA的嵌入式解决方案提供了构建范围广泛的嵌入式网络系统所需要的所有组件和资源。Xilinx嵌入式解决方案的一个主要优点是其处理器、IP内核以及软件组件的灵活性和可扩展能力。
1.2多核技术:
1.多核平台的建立,及多核调度算法的的设计及优化。
2.将加密解密过程进行分配,用多核分步进行调度,及每一轮过程中给各处 理机分配合适的负载量。
3.利用平台使加密解密速度与网络传输速率相匹配。
1.3多核的挑战:
在单颗芯片上集成如此多的资源可以在很大程度上提升整体性能,但同时也在硬件和软件的设计上对设计人员提出了新的挑战。 1.3.1 硬件挑战
传统的并行处理系统是用来做科学运算、数据库,以及其他的与嵌入式系统工作环境大相径庭的应用领域。因此,相对传统的并行处理系统而言,设计 人员必须着重考虑多处理器系统芯片的两个应用特征:
(1) 实时性:所谓实时性,其核心含义在于确定性[8],实时性操作要求系 统架构有可以预见的性能体现,也就是说系统的每个组成单元都有可以预见 的为,这样软件开发人员可以计划如何在系统的关键部分获得要求的性能。
(2) 低功耗:大多数嵌入式设备都运行在对功耗要求比较严格的场合。封 装和机械散热装置解决了传统计算机的功耗问题,但是对于多处理器系统芯 片的设计,就需要从各个抽象层次去考虑功耗问题,在系统级设计时就必须 对功耗有足够精确的控制。
- 5 -
图5.3.2 局部总线的连续写操作
图5.3.3 局部总线的连续读操作
(3) 处理器核通过全局总线向全局共享数据存储器发起单个读写操作。如图5.3.4,处理器核3向共享数据存储器地址为0x18000000处写入数据0x00000080;图5.3.5中,处理器核4把该数据读出来并且放入寄存器R5中。
- 41 -
图5.3.4 全局总线的单个写操作
图5.3.5 全局总线的单个读操作
(4) 处理器核通过全局总线向全局共享存储器发起连续读写操作。如图5.3.6,处理器核3向共享数据存储器地址从0x18000000开始的4个字单元连续写入4个数据0x00000050、0x00000060、0x00000070、0x00000080。在图5.3.7中,处理器核4把这四个数据重新读出来并且放入寄存器R5、R6、R7和R8中。
- 42 -
图5.3.6 全局总线的连续写操作
图5.3.7 全局总线的连续读操作
- 43 -
图5.3.8 中断响应过程
(6) 中断请求信号的产生。如图5.3.8中,处理器核1执行程序,把数据放入共享数据存储器后,通过中断控制器向处理器核3发出中断请求,中断控制器把中断地址发送给调度模块的任务分配器,有任务分配器来通知处理器核3响应中断请求,跳转到中断服务程序入口0x00000000。
(7) 串口通信。如图 5.3.9 中,接收部分受到信息rbuf(31:0)写入公共内存myram中。
地址为0X18000000。
图5.3.9 串口数据的写入
(8)随机数的生成
图5.3.10中,利用伪随机序列生成随机数,dataout(31:0)为产生的随机数。
- 44 -
图5.3.10 随机数的生成
(9)判定素数及素数的生成
对产生的随机数进行素数判断,如果不是素数则加1,直到是素数为止。
图5.3.11 素数的生成
(10)加密数据
对myram中数据加密,加密数据放在0X00000090处,加密数据直接通过串口输出。
图5.3.12 生成加密数据
- 45 -
EOR R0,R1,#0X0 TEQ R0,R1,#0X0 EORN R0,R1,#0X0 注:EORW == EOR , EORS == TEQ 减法 指令格式 SUB R0,R1,R2 CMP R0,R1,R2 SUBN R0,R1,R2 SUB R0,R1,#0X0 CMP R0,R1,#0X0 SUBN R0,R1,#0X0 0|00|011|0100|00000|00001|000000000000 0|00|110|0100|00000|00001|000000000000 0|00|010|0100|00000|00001|000000000000 SUB{N}{S} Rd,Rs,operand2 0|00|001|0101|00000|00001|00010|0000000 0|00|100|0101|00000|00001|00010|0000000 0|00|000|0101|00000|00001|00010|0000000 0|00|011|0101|00000|00001|000000000000 0|00|110|0101|00000|00001|000000000000 0|00|010|0101|00000|00001|000000000000 注:SUBN == SUB不写回 , SUBNS == CMP , 没提SUBNS 加法 指令格式 ADD R0,R1,R2 CMN R0,R1,R2 ADDN R0,R1,R2 ADD R0,R1,#0X0 CMN R0,R1,#0X0 ADDN R0,R1,#0X0 ADD{N}{S} Rd,Rs,oprand2 0|00|001|0111|00000|00001|00010|0000000 0|00|100|0111|00000|00001|00010|0000000 0|00|000|0111|00000|00001|00010|0000000 0|00|011|0111|00000|00001|000000000000 0|00|110|0111|00000|00001|000000000000 0|00|010|0111|00000|00001|000000000000 注:ADDN == ADD , ADDNS == CMN
- 31 -
位运算:逻辑左移 指令格式 LSL R0,R1,R2 LSLS R0,R1,R2 LSLN R0,R1,R2 LSL R0,R1,#0X0 LSLS R0,R1,#0X0 LSLN R0,R1,#0X0
逻辑右移 指令格式 LSR R0,R1,R2 LSRS R0,R1,R2 LSRN R0,R1,R2 LSR R0,R1,#0X0 LSRS R0,R1,#0X0 LSRN R0,R1,#0X0
LSR{N}{S} Rd,Rs,operand2 0|00|001|1010|00000|00001|00010|0000000 0|00|100|1010|00000|00001|00010|0000000 0|00|000|1010|00000|00001|00010|0000000 0|00|011|1010|00000|00001|000000000000 0|00|110|1010|00000|00001|000000000000 0|00|010|1010|00000|00001|000000000000 LSL{N}{S} Rd,Rs,operand2 0|00|001|1001|00000|00001|00010|0000000 0|00|100|1001|00000|00001|00010|0000000 0|00|000|1001|00000|00001|00010|0000000 0|00|011|1001|00000|00001|000000000000 0|00|110|1001|00000|00001|000000000000 0|00|010|1001|00000|00001|000000000000 访存类指令
指令格式 LDR R0,[R1,#0X4](立即数前变址) LDR R0, [R1, #0X4]! LDRS R0,[R1,#0X4]
STR/LDR{S} Rd,[Rs,Rt/#0X0]{!} 0|01|0100000|00000|00001|000000000100 0|01|0101000|00000|00001|000000000100 0|01|0100010|00000|00001|000000000100 - 32 -
LDR R0,[R1],#0X4(立即数后变址) LDRS R0,[R1],#0X4 LDR R0,[R1,R2] (寄存器前变址) LDR R0, [R1, R2]! LDRS R0,[R1,R2] LDR R0,[R1],R2(寄存器后变址) LDRS R0,[R1],R2 0|01|0110000|00000|00001|000000000100 0|01|0110010|00000|00001|000000000100 0|01|0100000|00000|00001|00010|0000000 0|01|0101000|00000|00001|00010|0000000 0|01|0100010|00000|00001|00010|0000000 0|01|0110000|00000|00001|00010|0000000 0|01|0110010|00000|00001|00010|0000000 跳转类指令
指令格式 B #0X0 BL #0X0 B R0 BL R0 BCSR #0X0 BCCA #0X0 BMISA #0X0 BPLSO #0X0 BVSSX #0X0
条件码:cond 条件码 0000 后缀 EQ 标志 Z置位 含义 相等 B{L}{cond}{Sel} #0X0/Rd 0|11|0|1110|000000|1|00000000000000000 0|11|1|1110|000000|1|00000000000000000 0|11|0|1110|000000|0|00000|000000000000 0|11|1|1110|000000|0|00000|000000000000 0|11|0|0010|111110|1|00000000000000000 0|11|0|1110|000000|1|00000000000000000 0|11|0|0100|100000|1|00000000000000000 0|11|0|0100|100001|1|00000000000000000 0|11|0|0101|100010|1|00000000000000000 - 33 -
0001 0010 0011 0100 0101 0110 0111 1001 1010 1011 1100 1101 1110 选择码 100000 100001 100010 100011 100100 100101 111110 111111
NE CS CC MI PL VS VC OS GE OT GT OE Z清零 C置位 C清零 N置位 N清零 V置位 V清零 C清零Z置位 N等于V N不等于V Z清零且(N等于V) 不相等 无符号数大于或等于 无符号数小于 负数 正数或零 溢出 未溢出 无符号数小于或等于 带符号数大于或等于 带符号数小于 带符号数大于 Z置位或(N不等于V) 带符号数小于或等于 忽略 无条件执行 含义 Flag=&{VFn} Flag=∣{VFn} Flag=XOR{VFn} Flag=&{~VFn} Flag=∣{~VFn} Flag=XOR{~VFn} Flag=RF Flag=~RF 后缀 SA SO SX SAN SON SXN SR SRN - 34 -
4.2.2汇编程序设计
RSA算法核心共包括四个部分:产生随机数,判断素数,加密,解密。 产生随机数:在本项目中产生的随机数是由种子“1000”经过运算产生的,是伪随机数,以下是汇编指令:
.global _start .text _start:
MOV R0,#8 MOV R2,R0
AND R3,R2,#0X1 MOV R4,R0
AND R1,R4,#0X8 EOR R1,R1,R3 MOV R0,R0,LSR #1 MOV R2,R0
AND R3,R2,#0X1 MOV R4,R0
AND R5,R4,#0X4 EOR R5,R5,R3 MOV R5,R5,LSL #1 ADD R1,R1,R5
MOV R9,#0X30 (存随机数的地址) STR R1,[R9,#0] .end
判断素数部分:素数判断部分分为两个分支,如果是素数,则存入内存,供加密解密部分使用;如果不是素数,则执“+1”,直到随机数为素数为止,然后存入内存供加密解密使用。以下为汇编代:
.global _satrt LDR R2,[R10,#-16] _start: MOV R3,R2,asr #31 MOV R1,0X30 MOV R3,R3,lsr #31
LDR R0,[R1,#0] ADD R3,R2,R3 MOV R1,#0 MOV R2,R3,asr #1 step: LDR R3,[R10,#-20] MOV R10,#0X80 CMP R3,R2 STR R0,[R10,#-16] BLT step2 MOV R3,#2 B step7 STR R3,[R10,#-20] step2: MOV R3,#0 LDR R3,[R10,#-16] STR R3,[R10,#-24] STR R3,[R10,#-28] step1: step3:
- 35 -
LDR R3,[R10,#-28] CMP R3,#0 BGT step4 B step5 step4:
LDR R3,[R10,#-28] LDR R2,[R10,#-20] RSB R3,R2,R3
STR R3,[R10,#-28] B step3 step5:
LDR R3,[R10,#-28] CMP R3,#0 BNE step6 MOV R3,#1
STR R3,[R10,#-24] MOV R0,#0 B stop step6:
LDR R3,[R10,#-20] ADD R3,R3,#1
STR R3,[R10,#-20] B step1 step7:
LDR R3,[R10,#24] CMP R3,#0 BNE stop MOV R0,#1 B stop stop:
LDR R1,[R10,#-16] CMP R0,#0 BEQ abc B stop1 abc:
ADD R0,R1,#1 B step stop1:
B stop1
加密和解密部分:
密钥对的产生。选择两个大素数,p 和q 。计算: n = p * q
然后随机选择加密密钥e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互质。最后,利用Euclid 算法计算解密密钥d, 满足
e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )
其中n和d也要互质。数e和n是公钥,d是私钥。两个素数p和q不再需要,应该丢弃,不要让任何人知道。
加密信息 m(二进制表示)时,首先把m分成等长数据块 m1 ,m2,..., mi ,块长s,其中 2^s <= n, s 尽可能的大。对应的密文是: ci = mi^e ( mod n ) ( a ) 解密时作如下计算:
mi = ci^d ( mod n ) ( b )
以下为具体实现代码: .global _start MOV R2,R0 _start: MOV R3,R1 MOV R4,#0X10000 MOV R2,#0X70 MUL R8,R2,R3
LDR R0,[R7] MOV R5,#0 LDR R1,[R7] STR R8,[R4,R5]
- 36 -
MOV R4,#0
SUB R2,R2,#1 SUB R3,R3,#1 MOV R4,#0X10
MUL R8,R2,R3
MOV R5,#0
STR R8,[R4,R5] MOV R4,#0
MOV R4,#0X100 @e=5 MOV R8,#5
STR R8,[R4,R5] MOV R4,#0
MOV R4,#0X10 MOV R7,#0 MOV R8,#5
LDR R10,[R4,R5] MOV R13,#0 MOV R14,#0 MOV R4,#0 model:
MOV R7,#0
ADD R13,R13,R10 MOV R14,R13 ADD R14,R14,#1 ADD R14,R14,#5
model2:
ADD R7,R7,#1 SUBS R14,R14,#5 CMP R14,R14,#5 BEQ 0x8098 BLS 0x806c
BHI 0x8080 model3:
MOV R4,#0X1000 MOV R5,#0
STR R7,[R4,R5]
MOV R0,#0 MOV R1,#0
MOV R2,#0 MOV R3,#0 MOV R4,#0 MOV R5,#0 MOV R6,#0 MOV R7,#0 MOV R8,#0 MOV R9,#0
MOV R4,#0X90 MOV R1,#0X900 MOV R2,#0X10000 MOV R3,#0X100
MOV R1,#0X18000000 LDR R0,[R1] STR r0,[r4,R10] LDR R0,[R4,R10] LDR R7,[R3,R10]
MUL R8,R0,R0 SUB R7,R7,#2 STR R8,[R1,R10] model4:
MOV R5,R1 LDR R12,[R5,R10]
MUL R8,R12,R0 STR R8,[R1,R10] SUBN R7,R7,#1 BNE 0x80F8 MOV R5,R1
LDR R8,[R2,R10] LDR R6,[R5,R10] model5:
SUB R6,R6,R8 CMP R6,R6,R8 BHI 0X811C MOV R10,#0
STR R6,[R1,R10] MOV R0,#0 MOV R1,#0 MOV R2,#0 MOV R3,#0 MOV R4,#0 MOV R5,#0 MOV R6,#0
- 37 -
MOV R7,#0 MOV R8,#0 MOV R9,#0
MOV R1,#0X90 MOV R4,#0X900 MOV R2,#0X10000 MOV R3,#0X1000 LDR R0,[R4,R5] LDR R7,[R3,R5]
MUL R8,R0,R0 SUB R7,R7,#2 STR R8,[R1,R5]
model6:
MOV R5,R1 LDR R12,[R5,R10]
MUL R8,R12,R0 STR R8,[R1,R10] SUBN R7,R7,#1 BNE 0X817C MOV R5,R1 LDR R8,[R2,R10] LDR R6,[R5,R10] model7:
SUB R6,R6,R8 CMP R6,R6,R8 BHI 0X81A0 MOV R10,#0
STR R6,[R1,R10] stop:
b stop
4.3 RSA算法与四核调度
四核实现的功能为:产生随机数,判断素数,加密,解密。
在本项目中,数据均从内存中读取,每个核都有自己的私有内存,同时四核间也有公有内存。这样就实现了四核间数据的传输,同时也保证了各个内核工作的独立性。
5.功能实现
5.1 测试原理
为了验证我们的设备,加入了内存控制装置来负责串口与内存的通信。 在功能测试中,我们使用PC机发送数据并显示加密数据,内存控制负责将数据写入公共内存中,CPU1产生随机数,CPU2验证随机数,不满足素数条件则加一,直到为素数,作为密钥供CPU3加密数据,CPU3将加密后的数据返回给PC0输出,CPU4解密数据并通过UART发送给PC。
- 38 -
Memory Share RAMPC0要加密的数据生成随机数验证素数加密数据解密数据RXDUARTTXDMemoryContrCPU1olCPU2CPU3CPU4RXDUARTTXDRAMROMRAMROMRAMROMRAMROMPC1 5.1 验证加密机密过程
5.2 测试平台
本实验采用Xilinx XUPV5-LX110T平台。
- 39 -
5.3 应用模型
传统的数据传输是PC机通过服务器与外网连接,进行数据传输;使用我们的产品,在服务器之间加入FPGA,将数据通过硬件的方式加密解密,实现网络传输的效率最大化。
内网服务器外网Router内网FPGA...FPGAPC服务器PCPCPC...PCPC
5.2 应用模型
5.4 系统级功能验证结果
本设计在系统级编写了包含各测试向量的测试平台,仿真软件使用Xilinx ISE中的自带的Simulator仿真软件,下面以六个具有代表性的测试实例产生的波形图来验证通讯架构和调度模块的功能。
图5.3.1 局部总线的单个读写操作
(1) 处理器核通过局部总线向本地存储器发起单个读写操作。如图5.3.1所示,处理器核1从本地指令存储器地址为0x0000110C处读取指令6EFA0000,随后向本地数据存储器地址0x0001000处写入数据0x00000080。
(2) 处理器核通过局部总线向本地数据存储器发起连续读写操作。如图5.3.2所示,处理器核1从本地数据存储器地址为0x0001000处,连续写入4个数0x00000050、0x00000060、0x00000070,0x00000080;图5.3.3中,处理器1在同样的地址将其读出并且分别放入寄存器R5、R6、R7和R8中。
- 40 -