在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 21452|回复: 43

[活动] 【更新,参加7月期】基于Xilinx Spartan-3E的真随机数发生器的设计

[复制链接]
发表于 2012-6-25 08:24:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 huiyuanai3 于 2012-8-5 22:18 编辑


文档   基于Xilinx Spartan-3E的真随机数发生器的设计.rar (643.33 KB, 下载次数: 295 )

       随机数检测标准.rar (1.97 MB, 下载次数: 292 )

      

源码   source.rar (2.59 KB, 下载次数: 200 )


视频  

     

          基于Xilinx Spartan-3E的真随机数发生器的设计

Song-Linyuan

Harbin Institute of technology at Weihai


--------------------------------------------------------------------------------------------

随机数发生器是信息安全领域不可或缺的重要组成部分,广泛应用于金融、军事等信息安全保密通信的电子设备中。目前,随着对随机数发生器体积、功耗接口方式以及随机数质量等方面要求的提高,设计集成化芯片或IP核形式的真随机数发生器成为一种必然。本文研究了真随机数的数字实现方案,在XilinxSpartan-3E FPGA中实现了随机数的生成,利用uart将生成的真随机数上传至PC,对生成的随机数进行FIPS140-1随机数质量检测,结果表明随机数质量优良,可以胜任个场合的需求。

关键词 真随机数发生器; FPGA; uart; 随机数质量检测

--------------------------------------------------------------------------------------------




0 引言


随着计算机技术、互联网以及其他数字技术的发展,开放式的信息共享系统得到了很大发展,人们在享受网络带来的方便、快捷的同时,却在信息安全方面遇到了黑客、木马等不安全因素的挑战。随即就产生了对信息的生成、传输、存储等各个方面进行保护的要求,而这种保护通常采用信息加密来实现。

真随机数发生器(TRNG)是信息加密设备中一个重要的组成部分,它产生的不可预知、不可再现的密钥数字串对信息加密有着重要的作用。在密码学领域,密钥管理、众多的密码学协议、数字签名和身份认证等都要用到随机数。随机数是作为密钥的补充信息,辅助信息和初始化向量来使用的,无论是在非对称算法中的私钥,还是对称算法中的密钥,为了保证其密码系统的安全性,原始钥匙都需要由独立的随机数算法来生成。从某种程度上讲,随机数的随机性决定了整个加密算法的性能。

近年来,FPGA在信息安全、计算机逻辑运算与接口电路、数字化仪表、图像系统、数字通信等领域中FPGA已成为最热门的产品之一。目前,FPGA加密产品中的随机数大都是利用线性反馈移位寄存器(LFSR)产生的伪随机数。由于伪随机数的可预测性,给信息安全构成了巨大的威胁。故利用编程的方法在FPGA上产生高质量的真随机数,对利用FPGA所开发产品安全性的提高具有深远的意义。

1 随机数的概念及应用


随机数就是取一个特定值的随机变量, 实用中是使用随机数所组成的序列。根据所产生的方式, 随机数序列再可以分为两类:

  • 伪随机数序列。伪随机数序列由数学公式计算所产生。根据种子的不同,可以产生不同的随机序列。但这种方式产生的随即序列是重复的且是可以预测的,故具有伪随机性。线性反馈移位寄存器(LFSR)是产生伪随机序列的最常用方法。

  • 真随机数序列。真随机数序列是不可预计、不可再现的,因而真随机数序列不可能出现周期性重复。它只能由随机的物理过程所产生, 如电路的热噪声、宇宙噪声、放射性衰变等。当前,真随机数发生器大都以模拟电路的形式通过放大电阻热噪声来产生。

真随机数发生器(TRNG)是信息加密设备中一个重要的组成部分,它产生的不可预知、不可再现的密钥数字串对信息加密有着重要的作用。在密码学领域,密钥管理、众多的密码学协议、数字签名和身份认证等都要用到随机数。随机数是作为密钥的补充信息,辅助信息和初始化向量来使用的,无论是在非对称算法中的私钥,还是对称算法中的密钥,为了保证其密码系统的安全性,原始钥匙都需要由独立的随机数算法来生成。从某种程度上讲,随机数的随机性决定了整个加密算法的性能。

随机数不仅应用于信息安全领域,而且在扩频通信、博采、赌博机、音乐和图形合成、模拟和测试等多个领域都有着广泛的应用。科学家、军事专家、加密专家、软件开发者等都在广泛地使用着随机数发生器。它们被用于科学研究,如蒙特卡洛模拟。它们还被用于超常规现象的研究,因为在该类研究中随机性是必要的前提条件。



2 Spartan 3E Starter Kit FPGA 开发板简介


Spartan®-3E FPGA 入门套件是一款全面的开发板解决方案,能够让设计者立即获得 Spartan-3E 系列的功能。该开发板采用XC3S500E作为主控FPGA芯片,做工精良、资源丰富,可以完成大部分设计需求。图1给出了此开发板的直观效果图。表1给出了该开发板的板上资源。

11.png

1 Spartan 3E Starter Kit FPGA开发板


1  Spartan 3E Starter Kit FPGA开发板资源一览

Xilinx芯片组Spartan-3EXC3S500E-4FGG320C
多达232个用户I/O
320FBGA封装
10,000逻辑单元,500,000门逻辑门
Xilinx64宏单元 XC2C64A CoolRunner CPLD
Xilinx 4 Mbit Platform Flash configuration PROM
时钟50 MHz有源晶振
8DIP插座晶振输入(可选)
SMA接口时钟输入
存储器64M(512M) DDR SDRAM, 可做16位数据接口, 时钟100+ MHz
16M (128M) 并行 NOR Flash (英特尔标准存储器)
可做FPGA配置存储器
存储MicroBlaze代码的镜像文件
16 Mbits of SPI 串行flash存储器(意法半导体)
可做FPGA配置存储器
存储MicroBlaze代码的镜像文件
接口PS/2鼠标,键盘接口
VGA显示接口
10/100M 以太网接口
2RS232串行接口(一公、一母)
USB下载与调试接口
100个扩展接口
一个旋转编码器加按钮
四个滑动开关、8LED、四个按键
36脚扩展接口
显示16 字符 - 2 LCD
目标应用消费类电子,通讯,存储,图像处理,控制等



3
真随机数发生器的设计



3.1真随机数发生器的实现方案

由于真随机数发生器产生序列的随机性,恰当的选择熵源是保证随机数质量优良的前提条件。这里选用振荡采样法,利用时钟的相位抖动作为熵源获取随机数。

振荡采样法是指通过D触发器把两个独立的振荡信号进行数字混合,用低频信号采样高频信号,利用环形振荡器的频率抖动作为随机源,并进行后处理,从而得到随机数序列。其基本结构如图2所示,低频振荡器的上升沿通过D 触发器对高频振荡器的输出进行采样。振荡器的抖动引起每次采样时刻的不确定性,从而使输出序列具有随机性。大量实验数据表明,如果可以保证低频振荡器的周期间抖动的均方根值δ与高频振荡的周期T满足2δ /T >1.5,则可以认为每次采样之间是不相关的。                                          

22.png

2 基于振荡器的真随机数发生器



3.2真随机数发生器的RTL设计3.2.1 TRNG模块的设计

TRNG模块完成随机数的生成,其基本结构如上图2所示。其中低频振荡器采用开发板上的50MHz有源晶振产生的时钟信号。高频振荡器采用如图3所示的由反相器链构成的环形振荡器产生的高频信号。每级环形振荡器采用7个反相器首尾相接,为了获得质量优良的随机数,共使用10级振荡器,输出异或后,经由触发器同步后作为输出,如图4所示。这样,只要有一级振荡器发生相位偏移,输出就会发生变化。

33.jpg

3 由反相器链构成的高频振荡器

44.jpg

4 trng模块结构图

3.2.2 uart模块的设计

在嵌入式开发和FPGA设计中,串口uart是使用非常频繁的一种调试手段,为了能够将生成的随机数上传至PC以便进行质量测试,特设计了uart模块。

串口一般在台式机上都会有,随着笔记本电脑的使用,一般会采用USB转串口的方案虚拟一个串口供笔记本使用。图5uart串口的结构图,串口有9个引脚,但真正连接入FPGA开发板的一般只有两个引脚。这两个引脚是:发送引脚TxD和接受引脚RxD

55.png

5 串口的引脚功能图

串口发送数据的格式可由图6所示,在TxDRxD这样的单线上,是从一个周期的低电平开始,以一个周期的高电平结束。他中间包含8个周期的数据位和一个周期针对8位数据的奇偶校验位。每次传送一个字节数据,他包含的8位是由地位开始传送的,最后一个传送的是第7位。

66.png

6 串口发送串行数据的格式示意图

设计的uart模块的时序仿真图如图7所示,由图可以看出,模块完成了预定功能。

77.png

7 uart模块时序仿真图

3.2.3 顶层模块的设计

顶层模块的设计如图8所示。

55.jpg

8 顶层模块的设计


4
真随机数的评估



为了能够对随机数的质量进行评估,许多研究人员提出了不同的随机序列性能测试方法。这里采用NIST SP800-22标准评估随机数质量。该标准对随机数进行以下16种测试。

1频率检验Frequency Test
2块内频数检验Frequency Test within a Block
3游程检验Runs Test
4块内最长游程检验Test for the Longest Run of Ones in a Block
5二元矩阵秩检验Binary Matrix Rank Test
6离散傅里叶变换检验Discrete Fourier Transform Test
7非重叠模块匹配检验Non-overlapping Template Matching Test
8重叠模块匹配检验Overlapping Template Matching Test
9Maurer 的通用统计检验Maurer’s “Universal Statistical” Test
10Lempel-Ziv压缩检验Lempel-Ziv Compression Test
11线性复杂度检验Linear Complexity Test
12序列检验Serial Test
13近似熵检验Approximate Entropy Test
14累加和检验Cumulative Sums Test
15随机游动检验Random Excursions Test
16随机游动状态频数检验Random Excursions Variant Test

对每一种测试方法,相应于测试序列,会产生一个相应的P值。对于选定的显著性水平α(在这16种方法中,显著性水平α=0.01),若P≥α,则认为该序列通过该测试,否则视为未通过。

经过随机数发生器产生了近300MB的随机数,送入软件进行测试,以200组为单位进行计算,每组位数为1000000位,4-9为检测报告。图 9给出了随机数质量测试的结果,结果表明随机数质量优良,可以胜任各场合对随机数的要求。

66.jpg

9 检测报告

经过整理主要结果数据见表2、表3

2 检测结果(一)

frequencyblock-frequencycumulative-sumsruns
0.99500.99000.99000.9950
longest-runrankfftoverlapping-templates
1.00000.99500.98500.9850

3 检测结果(二)

universalapenrandom-excursionslinear-complexity
0.99000.98500.99160.9800
seriallempel-zivrandom-excursions-variant
0.99500.98500.9832

经过大量的数据统计结果显示,随机游动状态频数检验最低的通过率为0.96263。随机数性能较好,所有参数均在0.98之上,绝大多数参数能在0.99之上,随机数发生器的制作令人满意。



5 结论


设计了基于FPGA的真随机数发生器,该方案克服了以往随机源所必须的模拟电路中的噪声的缺点,在数字电路中产生连续的亚稳态,可以以IP核的形式予以再利用。经NIST SP800-22随机数质量评估标准测试,随机数质量优良,可以胜任各种场合对随机数的需求。

[1]李新兵. 兼容ARM9的软核处理器设计[M]. 北京: 机械工业出版社

[2]王春平, 张晓华, 赵翔. Xilinx 可编程逻辑器件设计与开发[M]. 北京: 人民邮电出版社.

[3]徐敏, 孙恺, 潘峰. 开源软核处理器OpenRiscSOPC设计[M]. 北京: 北京航空航天大学出版社.

[4]吴燕雯, 戎蒙恬, 诸悦, 朱甫臣. 一种基于噪声的真随机数发生器的ASIC设计与实现[J]. 微电子学, 2005,35(2):213-216.

[5]Bock H, Bucci M, Luzzi R. An offset-compensated oscillator-based random bit source for security applications. Lecture Notes in Computer Science, pp. 268–281 (2004)

[6]Bucci M, Luzzi R. Design of testable random bit generators. In: Cryptographic Hardware and Embedded Systems-CHES 2005, Edinburgh, UK. Lecture Notes in Computer Science, vol. 3659, pp. 147–156. Springer, Berlin (2005)

[7]Bucci M, Germani L, Luzzi R. A high-speed oscillator-based truly random number source for cryptographic applications on a smart card IC. IEEE Trans. Comput., 403-409 (2003).

[8]Bock H, Bucci M, Luzzi R. An offset-compensated oscillator-based random bit source for security applications. Lecture Notes in Computer Science, pp. 268–281 (2004)

[9]Bucci M, Luzzi R. Design of testable random bit generators. In: Cryptographic Hardware and Embedded Systems-CHES 2005, Edinburgh, UK. Lecture Notes in Computer Science, vol. 3659, pp. 147–156. Springer, Berlin (2005)

[10]Bucci M, Germani L, Luzzi R. A high-speed oscillator-based truly random number source for cryptographic applications on a smart card IC. IEEE Trans. Comput., 403–409 (2003)


发表于 2012-6-25 10:48:33 | 显示全部楼层
和我的开发板一样,关注下
发表于 2012-7-6 20:59:53 | 显示全部楼层
学习一下……
发表于 2012-7-14 23:07:02 | 显示全部楼层
第一次來這邊留言,看這麼內容覺的這裡的大大好強啊~~~
发表于 2012-7-19 00:02:41 | 显示全部楼层
回复 1# huiyuanai3


    markmarkmarkmarkmarkmark
发表于 2012-7-21 20:12:16 | 显示全部楼层
excellent, great
发表于 2012-8-4 14:02:31 | 显示全部楼层
MARK一下,以后看
 楼主| 发表于 2012-8-5 20:12:05 | 显示全部楼层
更改过了~
发表于 2012-8-10 21:37:00 | 显示全部楼层
xie xie xie xie xie xie
发表于 2012-8-11 15:34:53 | 显示全部楼层
支持下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-16 18:42 , Processed in 0.028856 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表