随机数产生器论文(共8篇)
随机数产生器论文 篇1
摘要:由于现有的32位WELL算法不适用通信编码等较短字长的应用, 本文提出了一种12位的WELL随机数发生器并在Xilinx Spartan-6 FPGA上实现。该发生器具有运行速度高、结构简单、硬件占用率低等特点, 达到每秒产生2亿个随机数的性能。
关键词:随机数,WELL算法,FPGA
一、引言
随机数发生器作为一种模拟自然界随机变量的器件, 是众多科学研究和工程应用所必需的, 包括通信、生物、气候等领域。自从计算机在上世纪70年代大规模应用以来, 利用计算机硬件、软件实现的随机数发生器也随之发展。随机数发生器先后经历了LFSR、GFSR和Mersenne Twister等几代算法的发展。2006年, 加拿大蒙特利尔大学的Francois博士在Mersenne Twister算法上开发了well equidistributed long-period linear“WELL”算法, 大幅度提高了随机算法的性能。本文在已有的32位WELL算法的基础上开发了一种12位的硬件随机数发生器, 具有简单的结构和非常快的运行速度, 适合通信编码等较短字长的应用。同时以Xilinx Spartan-6 FPGA硬件实现了该发生器, 达到了每秒产生2亿个随机数的性能。
二、WELL算法简介
A基于计算机或数字电路的数字式随机数算法, 一般分为线性和非线性两种。线性算法均可以用乘法矩阵表示, 具有分布均匀、结构简单等特点。LFSR、GFSR、Mersenne Twister和WELL算法均属于线性算法。其中, 前三者的乘法矩阵均较为简单, 而WELL算法的有一定的复杂度。WELL算法的乘法矩阵属于一种稀疏矩阵, 只有矩阵上部8个32x32位子矩阵和对角线上的元素为非0, 其他部分为全0。WELL算法的核心部分在于如何设计这8个32x32位非0矩阵, 首先使其满足整体矩阵的本征多项式是本原多项式, 其次使其满足随机值的最大均匀分布。WELL算法的定义中, 将这8个非0矩阵阶数规定在0至6阶。其中, 0阶为全0矩阵、1阶为单位矩阵、2阶为左右移位矩阵、3阶为左右移位与单位异或矩阵、4至6阶为左右移位与固定矢量异或矩阵。具体来说, 8个非0矩阵取多少阶、移位多少位, 直接决定WELL算法的性能。在Francois博士的论文中, 提出了7种WELL算法的非0矩阵设计, 但是均适用于32位输出。如果使用的位数低于32位时, 必须进行截短。但无论取高位还是低位截短, 随机数的性能都会受到影响。而且, 运行WELL算法时, 运行速度与字长成反比。所以有必要设计高性能的短字长WELL发生器, 以满足通信编码等需要。
三、12位随机数发生器的设计
在32位WELL算法的基础上, 为满足较短字长的随机数的需要, 对8个非0矩阵做出调整, 即设计8个12x12位的非0矩阵。为提高运算速度, 与32位不同, 12位非0矩阵的阶数控制在0至3阶。而且交织长度减少至16, 所以乘法矩阵的边长为12x16=192位。由于0至1阶的非0矩阵有固定的形式, 主要考虑2至3阶的移位数。移位数不可超过12位, 所以必须在正负11位的范围之内。由此可见, 每个非0矩阵的取值共有1+1+22+22=46种可能, 8个非0矩阵共计有46的8次方共20万亿种可能。因为可能性太多, 如果使用遍历的方式, 无法历尽所有的可能。本文采用一种随机搜索的方法, 在搜索了1百万种可能后, 得到了一组较好的非0矩阵设计如下。第1非0矩阵为3阶左移1位, 第2非0矩阵为1阶, 第3非0矩阵为3阶右移3位, 第4非0矩阵为2阶左移2位, 第5非0矩阵为1阶, 第6非0矩阵为3阶右移9位, 第7非0矩阵为0阶。该种设计的乘法矩阵满足本征多项式为本原多项式, 而且满足最大均匀分布的要求。同时该种的所需的运算量较小, 能使发生器的运行速度提高。
四、FPGA的硬件实现
随在完成了12位WELL算法的设计之后, 本文采用FPGA硬件方式实现该随机数发生器。8个非0矩阵均由异或门组成, 同时192位的乘法矢量利用FPGA自带的高速RAM存储, 每次读写12位, 即1个非0矩阵的边长。为进一步提高发生器的运行速度, 所有非0矩阵的异或门均设计为流水线式, 8个非0矩阵共有8级流水线。这样, 发生器在每个时钟周期均可产生1个随机数。FGPA的硬件实现最终在Xilinx的Spartan-6上实现, 共消耗LE模块33个, RAM模块1个, 达到了较少的资源占用率。在200MHz时钟输入下, 发生器能每秒产生2亿个12位随机数。
五、结论
本文提出了一种12位的基于WELL算法的随机数发生器。该发生器具有高运算速度、结构简单、低硬件占用率等特点。在Xilinx Spartan-6 FPGA上实现, 达到每秒产生2亿个随机数的性能。
随机数产生器论文 篇2
把0到99的数排列,不重复.
适用于在做多个随机方块遮照图片时和在播放动画时随机播放音乐,但不重复.等
方法一:
ldtime=getTimer;
my_array=new Array();
n=100;
for(var i=0;i
my_array[i]=i;
}
for(var i=0;i
var tmp1=random(n);
var tmp2=my_array[i];
my_array[i]=my_array[tmp1];
my_array[tmp1]=tmp2;
}
trace(my_array);
trace(getTimer()-oldtime);//程序运行时间
//----------------------------------------------------------
--------------方法二-------------------------------------
n=getTimer();
Array.prototype.randomize = function() {
this.sort(function(a, b) { return random(2)>0 ? 1 : -1;});
}
var myArray = new Array();
for(var i=0;i<1000;i++){
myArray[i]=i;
}
myArray.randomize();
trace(myArray);
trace(getTimer()-n);
方法三:
var num_arr:Array = new Array();
var j = 0;
var judge = 0;
do {
var temp_num = Math.round(Math.random()*100);
for (var i = 0; i
var temp_n = num_arr[i];
if (temp_num == temp_n) {
judge = 1;
break;
} else {
judge = 0;
}
}
if (judge == 0) {
num_arr.push(temp_num);
j++;
_root[“t”+j].text = temp_num;
}
} while (j<100);
trace(num_arr);
点击点击这里下载源文件
制作过程: 建两层,各放一图片,其中上层的图片定义实例名:pic_mc
然后画一矩形,转化为MC,定义ID名为 box,然后在帧上写入AS:
creatmask();
//建立遮照
newnum();
//产生随机数
var i = -1;
var n = 0;
_root.onEnterFrame. = function() {
i++;
if (i<300) {
eval(“_root.m1_mc.box”+my_array[n]).removeMovieClip();
//移除方块
n++;
}
if (i>=400 && i<700) {
m = my_array[i-400];
_root.m1_mc.attachMovie(“box”, “box”+m, m+10, {_x:int(m/15)*20, _y:m%15*20});
//加载方块
}
if (i>800) {
i = 0;
n = 0;
}
};
//-------------------------------------
function creatMask() {
_root.createEmptyMovieClip(“m1_mc”, 1);
m1_mc._x = 0;
mc_mc._y = 0;
for (var i = 0; i<300; i++) {
_root.m1_mc.attachMovie(“box”, “box”+i, i+10, {_x:int(i/15)*20, _y:i%15*20});
}
pic_mc.setMask(m1_mc);
}
function newnum() {
my_array = new Array();
n = 300;
for (var i = 0; i
my_array[i] = i;
}
for (var i = 0; i
var tmp1 = random(n);
var tmp2 = my_array[i];
my_array[i] = my_array[tmp1];
my_array[tmp1] = tmp2;
}
}
在上面的基础上有所改进
点击点击这里下载源文件
制作方法与上有点差别,就是在box元件中的方块转化为MC,然后编辑这个MC,在上面做点运动变形.
newnum();
//产生随机数
_root.createEmptyMovieClip(“m1_mc”, 1);
m1_mc._x = 0;
mc_mc._y = 0;
pic_mc.setMask(m1_mc);
for (var i = 0; i<300; i++) {
_root.m1_mc.attachMovie(“box”, “box”+i, i+100, {_x:int(i/15)*20, _y:i%15*20});
}
var i = -1;
_root.onEnterFrame. = function() {
i++;
if (i<300) {
m = my_array[i];
eval(“_root.m1_mc.box”+my_array[m]+“.p”).play();
}
if (i>=400 && i<700) {
m = my_array[i-400];
eval(“_root.m1_mc.box”+my_array[m]+“.p”).play();
}
if (i>800) {
i = -1;
}
};
//-------------------------------------
function newnum() {
my_array = new Array();
n = 300;
for (var i = 0; i
my_array[i] = i;
}
for (var i = 0; i
var tmp1 = random(n);
var tmp2 = my_array[i];
my_array[i] = my_array[tmp1];
my_array[tmp1] = tmp2;
}
一种新的真随机数发生器的研究 篇3
随机数在现实生活中有着广泛应用, 在计算机领域中有:计算机仿真、验证码的生成、密钥的生成、数字签名和身份认证等方面;在非计算机领域中有:彩票、抽签、游戏、随机抽样、发动机推力偏心、审计等方面。这些方面均需要高质量的随机数, 当前使用的随机数分为两种, 伪随机数和真随机数。由数学方法产生的伪随机数是有规律的易破解, 但分布均匀、周期长, 质量好。由物理方法产生的真随机数是无规律的难破解, 但分布均匀性、周期性, 质量均无法保证。针对真伪随机数都有各自的缺点, 本文提出了一种真随机数发生器, 产生高质量的真随机数, 然后通过实验验证其质量。
2 真随机数发生器研究现状
真随机数由真随机数发生器产生, 所谓真随机数发生器 (TRNG) 是指利用物理方法实现的随机数发生器, 它是自然界随机的物理过程所产生物理现象的不确定性的反应[1]。目前对真随机数发生器的研究还很不完善, 通常都是先寻找一个合适的真随机源, 然后通过数学方法进行相应变换, 从而获得质量更好的真随机数。其中, 真随机源有:各种电路噪声、宇宙噪声、热力学噪声、放射性衰变、光子对的纠缠、光量子的偏振、网络IP包到达的时间、计算机高频时钟、鼠标运动坐标等。真随机数生成器通常由有源传感器、放大器和模数转换器组成, 其中有源传感器用来将物理过程中的机械能或声能等其他形式的能量转换为电信号的电能;放大器用来将随机扰动的电信号振幅放大到宏观级别;模数转换器则用来把模拟的电信号转换为二进制的数字, 从而得到更高质量的随机数。通过重复采样这些真随机源信号, 进行处理后真随机数得以生成。
虽然已经设计出了依托各种真随机源的真随机数发生器, 但有的硬件电路难以实现, 有的实现成本过高, 有的速度过慢, 存在着种种问题。
3 伪随机数发生器研究现状
伪随机数由伪随机数发生器产生, 是由计算机中的随机函数按照一定算法模拟产生的, 采用相同的种子产生结果是相同的, 是有规律的。它的特点是占用的内存少, 速度快[2]。国外相关领域的科学家提出了多种伪随机数生成方法:包括线性同余法、非线性同余法、Fibonacci, 移位寄存器序列发生器, 进位加一借位减发生器法, 复合素数发生器和组合发生器等。
4 新的新随机数发生器
本文提出的真随机数发生器实现流程如图1所示。
真随机数发生器实现流程的说明: (1) 初始种子可以用较简单的伪随机数发生器产生, 用取随机数函数即可; (2) 图中高质量伪随机数发生器可用同余发生器或混沌映射发生器等, 本文采用混沌映射发生器; (3) 随机数a、b要转化为二进制数; (4) 目标单元保存整个图1真随机数发生器要产生的真随机数, 其用二进制来表示, 为一个32位或更大的整数单元。具体根据实际需要更改设置; (5) 真随机源可采用各种电路噪声、宇宙噪声、热力学噪声、放射性衰变、光子对的纠缠、光量子的偏振、网络IP包到达的时间、计算机高频时钟、鼠标运动坐标等中的一种, 这里采用较容易实现的网络IP包到达的时间; (6) 填充目标单元选择从低位开始填充。
此真随机数发生器产生的真随机数即用伪随机数发生器又用了真随机数发生器, 所以有效避免了这两种随机数发生器的弊端, 从而产生的真随机数质量更好, 也更难破解。
5 实验检测
采用上文所提出的真随机数发生器, 采样181596个随机数, N取32, M取400。在[0, 1]分布均匀性检验中, 计算得V=26.84。取α=0.05, 则自由度k=23的x2分布表, 所以可以接受α=0.05的均匀性假设。这些样本总体服从[0, 1]分布。使用游程法来进行的独立性检验, 将所有样本都减0.5, 得到一个正负号序列, 统计正负号个数n1和n2, 游程个数r:n1=90954, n2=90642, r=90886。E (r) =90798.23198, D (r) =45398.48198, |z|=0.4119, 查找正态分布表, 可以得出此随机数序列满足独立分布特性。
6 结语
本文对真伪随机数的现状进行了讨论, 然后提出了一种真随机数发生器, 从理论和实验分析得出, 此发生器简单, 容易实现, 所产生的随机数质量好。在信息安全等领域有应用价值。
摘要:高质量的随机数在信息安全和密码学等领域有着广泛的应用。本文简要的介绍了真伪随机数在计算机领域和非计算机领域的应用情况和当前真伪随机数发生器的研究现状, 提出了一种混合真伪随机数发生器而成的真随机数发生器, 通过检测表明, 这种真随机数发生器可以产生出质量更好的随机数。通过改变真随机源, 可以在多个领域使用此真随机数发生器。
关键词:随机数,真随机数发生器,随机数检测
参考文献
[1]王朝阳, 哈渭涛.随机数的应用与研究[J].渭南师范学院学报, 2008, 23 (5) :60-62.
随机数产生器论文 篇4
生活中常常会遇到需要产生多个不重复随机数的问题,如随机抽奖、摇号等从多个整数中随机产生一个数。解决此问题的方法有多种如:软件编程、硬件电路实现或仿真。我们可以利用《数字电子技术》知识通过仿真软件进行仿真设计。Multisim是美国国家仪器公司(NI)下属的Electronics Workbench Group发布的交互式SPICE仿真和电路分析软件,它是一款优秀的电子电路辅助分析与设计软件,其优点很多,利用该软件对电子电路进行仿真设计,不消耗实际的元器件,电路修改调试方便,提高了电子电路设计的效率,缩短了产品开发的周期,是目前大学课程中常用的电子设计应用软件。下面让我们一起来了解如何用Multisim来实现一定功能的电路并仿真。
2. 设计要求与分析
2.1 设计要求
设计一个在0到9这十个数内可预置数的1位随机数产生电路,即可以根据要求在0到9范围内任意设定一定范围内产生随机数,如0到4,5到9等,要求:通过一个按键开关随机抽取预先设定数范围内中的一个数字,经译码后用数码管直观地显示该随机数。
2.2 分析
根据设计要求,数字至多在0到9可由十进制计数器状态输出获取。由于计数器状态输出是周期性变化的,因此数字所设定的随机数应均等地出现。为了保证随机数均等地出现,其频率可设定为10k Hz。在确定初态的情况下,按键频率要达到10k Hz才能预知下一状态。操作人员是远远达不到如此高的按键频率,这样就保证了随机数出现的公正性。电路还需2个开关(用变量J1和J2表示)分别控制电路的工作状态(计数和送数到译码显示管)。根据上述任务分析确定设计方案。整个电路由开关控制等6个模块组成。如图1所示。
3. 电路设计与仿真
3.1 计数器与寄存器设计
由于设计要求中:数字至多在0到9可由十进制计数器状态输出获取。因此选用具有十进制加法计数功能的器件即可。本设计选用集成1进制同步加法计数器741S160。为了保证随机数应均等地出现,其频率可设定为10k Hz。寄存器选用的是由4D边沿触发器构成的74Ls175。由于数字0也是摇号备选号码,则计数器74Lsl60及寄存器74Lsl75皆不能作清零操作,避免数字O出现次数过多,影响随机数产生的均等性。因此,计数器74LSl60和寄存器74LSl75的清零控制端无效,即CLR=1。若要在0到9范围内任意设定一定范围内产生随机数,可以运用清零法,只需再加与非门或非门以及多路选择开关与74Lsl60的清零端相连即可。
3.2 振荡电路设计
振荡电路用于产生计数器所需的时钟脉冲信号。用于产生时钟脉冲信号的电路有很多种,常用的有:由CMOS门电路构成多谢振荡器、石英晶体振荡器等。由于该电路设计精度要求不高,由LM555定时器构成的多谢振荡器具有结构简单、功能齐全、操作灵活、使用方便等优点,因此时钟脉冲由555定时器与RC组成的多谐振荡器产生,如图2所示,其振荡频率约10KHZ。
3.3 译码显示电路设计
为直观地观察摇号结果,采用共阳极七段数码管作为显示器。译码电路采用74LS47,其输入端A—D接寄存器74LSl75的输出端1Q-4Q。电路如图3所示。
3.4 开关控制电路设计
开关控制电路是整个电路的重要部分,需要两个开关分别控制计数开始和产生随机数,其功能为由表1所示电路功能。开关J1用于控制十进制计数器置数和计数,当J1与74LS160的置数控制端LOAD相连时,计数器的置数控制端LOAD=0,使得计数器处于置数状态;当J1闭合时,计数器的置数控制端LOAD=1,使得计数器工作于计数状态。其输出循环产生0~9。J2用于产生随机号操作,可与寄存器时钟控制端CLK相连。没按下J2键寄存器时钟控制端CLK处就产生一个上升沿脉冲。
整体电路如图4所示,根据表1功能分析如下:
(1)灭灯开关J1断开使74Ls160置数端有效,QAQBQCQD输出1111,送入74LS175的输入端,即1D2D3D4D为1111。按下开关J2,74LSl75的时钟控制端CLK产生一个上升沿脉冲,其输出1Q2Q3Q4Q也为1111。使74LS47的七路输出全为0,则此时七段数码管显示为灭灯状态。
(2)保持开关J1闭合,74LS160工作于计数状态。J2断开,74LSl75的时钟控制端CLK=0输出保持,则此时七段数码管显示状态也保持。
(3)产生随机数开关Jl闭合,74LS160工作于计数状态。按下开关J2,74LSl75的时钟控制端CLK产生一个上升沿脉冲,其输出lQ-4Q为该时刻计数器的输出QA~QD,通过74LS47译码后七段数码管显示出相应的随机数。
根据如图4所示的整体电路,为了更好地显示整体电路,由555定时器与RC组成的多谐振荡器产生的时钟脉冲信号用Multisim软件中的时钟信号源来代替。图4电路通过J1使74LS160处于计数状态,通过多路选择开关在0到9范围内任意设定一定范围内产生随机数,当开关J3打到5V时产生0-9范围内的随机数,将J3打到另一边,然后通过多路选择开关S1选择不同范围内的随机数,从左到右顺时针依次是0-1、0-2、……0-8范围内的随机数,最后通过按下开关J2产生设定范围内的随机数。如图当J1闭合,J3选择其它范围内的随机数,S1选择开关打到0-6范围内,此时按下J2停止后在译码显示器显示随机数是4。在规定的0-6范围内,该电路满足设计要求。
4. 结束语
通过应用所学《数字电子技术》知识设计并仿真了可预置数的1位随机数产生电路,让我们不仅了解数字电路应用的广泛性,而且了解Multisiml0软件具有直观的图形界面、庞大的元器件库、丰富的测试仪器、完备的分析工具、强大的仿真能力等特点,可广泛应用于电子电路的教学、设计和科研中。
摘要:运用《数字电子技术》知识设计了可预置数的1位随机数产生电路,并通过Multisiml0仿真软件进行仿真,仿真结果表明该电路实现了随机产生数码0到9的功能。基于Multisiml0的电路设计与仿真方法与传统的设计方法相比,具有省时、低成本、高效率的优越性。可广泛应用于电子电路的教学、设计和科研。
关键词:可预置数,随机数,Multisiml0,仿真
参考文献
[1]王冠华.Multisiml0电路设计及应用[M].北京:国防工业出版社,2008.
[2]聂典,丁伟.Multisiml0计算机仿真在电子电路设计中的应用[M].北京:电子工业出版社,2009.
[3]王全字,董昱.EDA技术创设电子技术课堂教学实验环境的研究[J].仪器仪表用户,2010,12(6):104-105.
[4]黄培根.Multisim9虚拟仿真和业余制版实用技术[M].北京:电子工业出版社,2008.
随机数产生器论文 篇5
随机数在密码学中占有重要的地位,几乎所有的密码算法都要用到一些对攻击者来说必须是秘密的数据[1]; 现代通信系统在编码设计中,除了考虑容错性,也对保密性有很高的要求[2]。对于一次一密系统而言,其安全性依赖于密钥,包括对称密码算法( DES、AES等) 的密钥和非对称密码算法( RSA、DSA等 ) 的密钥对等等,而这些密钥必须是随机数[3]。随着加解密技术的快速发展,基于软件实现的伪随机数发生器已经无法满足系统对安全性的要求,而真随机数发生器所产生的随机数来源于真实的随机物理过程,彻底地消除了伪随机数的周期性问题[4]。因此,具有良好性能的真随机数发生器已经成为了现代加密系统的必需组成单元之一。
本文设计了一种基于数字处理单元的真随机数发生器,通过对传统的真随机数发生器结构进行改进,增加数字后处理电路,提高了物理随机源产生的随机数序列的质量,最终所输出的随机数序列具有均匀性好、独立性高等特点,在信息安全方面具有较高的实际应用价值。
1 真随机数发生器的架构设计
真随机数发生器设计方案通常可以归为3类:放大电路噪声、混沌电路和振荡采样[5,6]。基于物理随机源产生的真随机数虽然在随机序列的长度、独立性等方面相比伪随机数发生器得到了突破性进展,但是其产生的真随机数序列的随机性不够稳定,随机数的质量不高。一般而言,高质量的真随机数序列具有分布均匀、周期长和序列无关等特性,检验序列质量有跟随性、游程、均匀性、独立性、相关性等一系列检验指标以及谱分析、ENT( 一种随机数性能检测程序) 等测试方法[7]。物理随机源虽然能够提供真正意义上的真随机数序列,但是完全达到上述测试标准要求的难度较大,设计实现困难。
设计的真随机数发生器的基本结构如图1所示,包括真随机数源、曼彻斯特编码器、线性反馈移位寄存器( LFSR) 和AES运算单元4部分,其中曼彻斯特编码器、线性反馈移位寄存器( LFSR) 和AES运算单元组成了真随机数发生器的数字处理电路,最终真随机数由真随机数输出寄存器送至片上系统总线。
真随机数源基于震荡采样法实现,采用环形振荡器结构。为了防止在实际应用中振荡器失效或者被锁死,设计使用了3个高频振荡器,将3个输出进行异或,保证采样输出的随机性,3个振荡器分别采用5级反相器环路、7级反相器回路和13级反相器回路[8]。
真随机数源的结构如图2所示,低频振荡器利用系统时钟的2分频实现,作为真随机数的采样时钟采样输入的高频振荡器信号,从而产生随机数序列。在实际具体电路中,真随机数的采样时钟作为基于触发器结构的采样单元的时钟信号,高频震荡器输入信号则作为采样单元的数据输入,并在采样时钟脉冲的上升沿对其进行采样,最终输出得到的就是一个真随机数比特流。
由于模拟随机数源输出的真随机数比特流质量不高,可能存在由连续的多个“0”或者多个“1”组成的长0或长1序列,这样的序列虽然属于真随机数,但是其随机性差,不能满足现代算法的要求,因此首先将数据送入曼彻斯特编码器,消除长0及长1序列。如图3所示,曼彻斯特编码器由一个异或门、一个非门与一个触发器组成,从而实现从NRZ码到曼彻斯特码的转换,并由编码控制端控制曼彻斯特编码的开始和停止。
为了提高真随机数的随机性指标,将真随机数序列的值离散化,在通过曼彻斯特编码器后,将曼彻斯特码比特流送入后续的LFSR单元和AES运算单元进行处理。如图4所示,LFSR单元采用128位线性反馈移位寄存器实现,其反馈函数为A0= A0⊕A1⊕A6⊕A127,产生的随机数的序列周期长度为21281。LFSR工作时,输出使能信号为0,由曼彻斯特码比特流逐比特进入LFSR,作为种子填充至128位寄存器中; 待128位全部填充结束后,LFSR输出使能信号变为1,此时,LFSR开始工作,输出端开始逐比特输出真随机数序列。
AES运算单元的作用是利用AES算法,通过重复非线性变换、混合函数变换,将字节代换运算产生的非线性扩散,达到充分的混合,使加密后的分组信息统计特性分布更均匀,形成的密码有很高的随机性[9]。AES运算单元结构如图5所示,明文寄存器和密钥寄存器通过获取LFSR输出的随机数序列生成AES运算所需的128 bits的明文和密钥; 当明文和密钥生成后,控制单元向AES运算模块发出使能信号,由状态机控制完成AES加密运算,AES运算流程如图6所示。运算完成后,向真随机数输出寄存器输出128 bits的加密后的数据。
2 真随机数发生器的仿真
在传统混合信号集成电路仿真方法中,首先利用Hspice和Spectre等模拟仿真器对模拟真随机源的电路进行仿真; 在数字部分,一般会根据模拟仿真结果,建立一个近似随机源的等效Verilog模型,利用VCS等数字仿真器对该模型以及数字电路进行仿真,最终对输出序列进行测试。这种方式虽然实现了系统仿真,但是由于随机源的Verilog模型只能近似产生输出序列,无法获取真实的仿真数据; 同时,在仿真中无法验证两部分之间的接口关系及时序[10]。为了解决上述问题,本文采用了基于Synopsys公司的XA-VCS数模混合仿真解决方案。
XA-VCS混合仿真是用于数模混合信号集成电路仿真的一种高性能解决方案,混合仿真流程如图7所示。在一个混合信号系统中,仿真器利用XA仿真晶体管级的模拟电路模块,同时利用VCS仿真Verilog语言描述的数字模块,从而达到精度与速度的统一。
利用上述方法,通过XA部分完成模拟随机源的仿真,利用接口配置文件,规定数字、模拟信号域的电平转换规范,将其输出作为数字处理单元的随机数源,实现混合信号仿真,具体仿真结果如图8所示。
3 真随机数发生器仿真测试结果
根据数字处理单元的规模,选择了一款Altera的FPGA开发板对数字处理部分进行FPGA验证,FPGA芯片型号为Cyclone II系列的的EP2C35[11]。通过Quartus完成代码的综合与布局布线,使用Mega Core生成存储器IP,为验证提供随机数数据源; 模拟随机源仿真生成的随机数序列作为存储器初始化mif文件。数字处理单元的FPGA验证结果如图9所示,通过Signal Tap逻辑分析仪采集FPGA工作波形数据,经验证数字处理单元,特别是AES运算单元的功能和时序均与仿真结果一致。
按照NIST( 国家标准与技术研究所) 测试程序对随机数测试的要求,由仿真器生成64 Mbit的真随机数数据,进行随机性评估测试,并与模拟随机源的测试结果进行比较,测试项目和结果如表1所示。
从表1可以看出,在模拟随机源输出随机数质量不高的情况下,通过数字处理,可以有效的提高随机数的质量,达到相关测试标准的要求。
4 结束语
真随机数发生器作为现代信息安全及保密通信系统的核心组成部分之一,发挥着极其重要的作用,片上真随机数发生器的设计工作也越来越得到人们的重视。基于模拟随机源的随机数发生器虽然相比伪随机数发生器得到了突破性进展,但是其产生的随机数序列不稳定,且满足测试标准的难度较高; 因此,设计一款基于数字处理单元的真随机数发生器,将数学方法和物理方法结合起来,既能够产生高质量的真随机数,使密码算法的信息保密性得到很大程度的提升,又能达到相关规范及标准的要求,有效保障信息安全。
摘要:真随机数发生器(True Random Number Generator,TRNG)是保密通信系统以及信息安全芯片中的重要单元之一,用来产生系统所需要的真随机数序列,从而实现通信加密或者身份认证。对传统的基于模拟随机源的真随机数发生器结构进行了改进,在随机源后加入数字处理单元,包含曼彻斯特编码器、线性反馈移位寄存器(Linear Feedback Shift Register,LFSR)和AES运算单元。模拟随机源产生的真随机数序列在经过数字电路的后处理后,再送入系统中进行使用。数模混合仿真结果显示,该结构可有效提高真随机数的随机性指标,提高系统和芯片的加密性能,保障通信及数据安全。
随机数产生器论文 篇6
关键词:真随机数发生器,扩展频谱振荡器,DC/DC转换器,噪声
在现代开关电源的控制电路中,振荡器对模拟电路和信号处理起着很重要的作用。在多数情况下,其工作频率被设计为某一固定频率[1,2,3]或是基于一定负载的恒定值,在该工作频率下存在大量的噪声信号[4]。如果振荡器的频率在某一频率范围内随机变化,噪声信号就会分散在一定的频率范围,从而可以减小由谐振引起的噪声,并有利于在频谱范围内,最大限度地减小开关电源的输出信号噪声峰值。本文提出了一种新型真随机数发生器的结构,利用真随机数发生器产生的随机序列控制振荡器中恒流源的充电电流的大小,设计了一种扩展频谱CMOS振荡器,可以用于改善DC/DC转换器的噪声性能。
1扩展频谱振荡器的结构
整个电路的基本结构如图1所示,它由随机序列发生器、振荡器电路、整形电路及二分频电路四部分组成。在外部使能信号和反馈时钟的控制下,随机序列发生器产生随机信号,与整形电路的反馈信号一起控制振荡器工作,这样振荡器中对电容充电电流的大小在一定范围内是随机跳变的,因此振荡器产生了随机振荡信号。在振荡器中,通过改变电容的充电电流的大小,从而调节随机振荡器的振荡信号的周期。振荡器产生的振荡信号经过二分频电路整形后产生的时钟频率在某一频率范围内随机变化。
2真随机数发生器电路
2.1 设计思路
在以往的文献[5,6,7,8,9]中,真随机数发生器的许多设计方法已经产生。本电路设计的思路是利用D触发器“振荡采样法[10]”,核心部分是一个下降沿触发的D触发器,用于对两个相对独立的方波进行数字混合,即将一个高频方波送触发器时钟端,另一个低频方波送入数据输入端。但文献[10]提出了一种振荡采样法的结构需要两个振荡器,电路复杂,不能满足扩展频谱振荡器的需要。
2.2 电路设计
通过对文献[10] 振荡采样法的结构进行改进,本文设计了一种仅需要一个振荡器的随机序列发生器。
当使能信号EN为高电平时,整体电路如图2所示。在此电路中共有17级D触发器,第一个D触发器实现对两个独立的方波进行数字混合,后面16个D触发器构成一个16位的移位寄存器。为了补偿输出分布的不均匀,在采样时钟的节拍下,每次将第一个D触发器采样得到的单个随机位逐次移位,然后将移位寄存器的第二个D触发器的输出与最后的D触发器的输出异或,此信号b12又被送入到第一个D触发器的数据输入端。电路的输出信号为移位寄存器的后四位,即为:c5,c6,c7,a10。
在电路设计中,利用了异或电路把相隔14个时钟的输出值b7和a10相异或,这样得到b12的预知输出值的概率很小。其原理是根据高斯分布的特征之一,随机变量(周期)的变化会引起标准变差的相同变化。如果我们考虑相隔14个周期的采样值,而不是连续采样值,这样第14个时钟边缘相对于第一个时钟边缘的标准是原来的14倍。于是相隔多个周期的采样值就会具有较小的相关性,预知输出值的概率就很小。这样, b7和a10相异或得到的b12信号是一预知概率很小的随机信号,所以送入到第一个D触发器的数据输入端的信号为随机信号。
综上所述,在某范围内随机采样时钟的节拍下,第一个D触发器对输入随机数据b12进行采样得到随机信号。为了得到分布均匀的输出信号,将采样所得到的随机信号利用移位寄存器逐次移位,从而得到了分布均匀的四路随机输出信号c5,c6,c7,a10。
3振荡器电路设计
CMOS随机振荡器电路的工作原理图如图3所示。M1~M5,M7,M8,R1构成了单位增益缓冲器[11],使Vo⧋Vref,决定了振荡器的充电电流基I1(I1=Vo/R1),在设计时可以调节R1的大小实现对充电电流基I1的调整。M10~M18构成了电压比较器,利用M18,M19电流镜产生单端输出Vout。由M25产生镜像电流I2,对时间常数电容C充电。随机电流充电电路由随机控制信号(V1~V4)随机打开M27~M30管,由于镜像的作用,电容C充电电流变大,加快电容C充电速度,即改变了振荡器的频率。在电路中M21~M24各管的宽长比比值设计为8∶4∶2∶1,使振荡器的振荡频率可以完全覆盖某一频率范围,从而保证该振荡器在某一频率范围内连续随机变化。
当电容C上的电压Vc低于Vref时,电压比较器的输出为0;而当Vc高于Vref时,比较器的输出电压升高,直到比较器的输出电压高于整形电路(施密特触发器)的上阈值电压(VT+)时,Vc=Vout=V+T,充电结束, a27为1。电容上的电荷通过M31放电,比较器输出电压下降,当比较器输出端电压低于V-T时,整形电路输出为1,完成一个周期的充放电工作。
因此,充放电的确切时间为:
式中:V+T为施密特触发器正向翻转阈值;V-T为施密特触发器负向翻转阈值。
即整形电路的输出为低电平的时间远远小于为高电平的时间。
二分频电路,将振荡器输出信号整形,实现方波输出。
由于t放约占(t放 +t充)的1%,因此计算时可以忽略t放,在仿真时改变R1的大小,就可以达到预期的目标。
整个电路输出时钟为:
4扩展频谱振荡器整体电路的仿真结果
4.1 真随机数发生器电路的仿真
真随机数发生器电路的仿真如图4所示。c5,c6,c7,a10为串联的D触发器中最后四位的输出信号,从仿真结果中可见,在开始几个微秒内,这四位随机信号没有变化,则输出的时钟信号的周期保持不变;在几个微秒之后,这四位随机信号随机变化,则输出时钟的频率以基频为最小值随机变化。此后,输出时钟信号的周期将随着这四位随机信号的改变而变化。
4.2 振荡器整体电路的仿真
通过Cadence spectre仿真工具对电路进行仿真验证,当随机开关都关闭时振荡器的振荡频率为1 MHz;而当随机开关管都打开时振荡器的振荡频率为1.6 MHz。振荡器的输出为随机信号如图5所示。a2是对应于Vout的输出时钟信号。从仿真波形可见,输出时钟信号a2的周期随机变化,验证了所设计的电路的正确性。
5试验情况
将上述电路应用于DC/DC转换器电路,在输出电流为500 mA,输出电容为10 μF的条件下进行整体测试。同时将DC/DC转换器的频率固定,即将振荡器的随机控制信号置为低电平,在输出电流为500 mA,输出电容为22 μF的条件进行整体测试。测试结果表明,使用扩展频谱振荡器电路的转换器的输出电容值仅为固定频率转换器的一半,但是峰值大于20 dBm的输出噪声很明显地减少了。由此可见,采用扩展频谱振荡器的转换器抑制噪声的能力比工作频率固定的转换器强。
6结语
本文利用真随机数发生器产生随机信号控制充电恒流源电流大小,完成了一种扩展频谱振荡器电路的设计。仿真结果表明,在5 V电源电压下,利用随机数发生器产生的控制信号实现了扩展频谱振荡器在1~1.6 MHz的范围频谱内随机变化,随机振荡信号性能良好,能满足实际电路需要。
参考文献
[1]Yu Shuhuan,Chen Yingming,Guo Weidong,et al.A Digital-trim Controlled On-chip RC Oscillator[C].In:Proceedingsof the 44 IEEE 2001 Midwest Symposium Circuits andSystem,2001:882-885.
[2]Cheung Fai Lee,Philip K,Mok T.A Monolithic Current-mode CMOS DC-DC Converter with On-chip Current-sens-ing Technique.IEEE of Solid-State Circuits,2004,39(1):3-4.
[3]邹连英,易风华.一种新颖的高精度高稳定性CMOS振荡器电路的设计[J].计算机与数字工程,2007,35(7):165-168.
[4]Phillip E Allen,Douglas R Holberg.CMOS模拟集成电路设计[M].2版.北京:电子工业出版社,2006.
[5]Bucci M,Germani L,Luzzi R,et al.A High Speed Oscillator-based Truly Random Number Source for CryptographicApplications on a Smart Card IC[J].IEEE Trans.Comput.,2003,52(4):403-409.
[6]Brederlow R,Prakash R,Paulus C,et al.A Low-power TrueRandom Number Generator Using Random Telegraph Noiseof Single Oxide-traps.IEEE ISSCC Dig.Tech.Papers,2006:1 666-1 675.
[7]Petrie C S,Connelly J A.A Noise-based Random bitGenerator IC for Applications in Cryptography[J].In Proc.IEEE ISCAS,1998,2:197-200.
[8]Kinniment D J,Chester E G.Design of an On-chip RandomNumber Generator Using Metastability[J].In Proc.ESS-CIRC,2002:595-598.
[9]Carlos Tokunaga,David Blaauw,Trevor Mudge.True RandomNumber Generator with a Metastability-Based Quality Control[J].IEEE Journal of Solid-State Circuits,2008,43(1).
[10]吴燕雯,戎蒙恬,诸悦,等.一种基于噪声的真随机数发生器的ASIC设计与实现[J].微电子学,2005,35(2):213-216.
一种真随机比特流发生器 篇7
关键词:真随机数,比特流,随机噪声,信号源
随机数在博彩业、计算机模拟仿真以及随机抽样等很多领域有着重要的应用,尤其在密码学及信息安全领域扮演着重要角色。随机数可分为伪随机数(PRNG)和真随机数(TRNG)两种类型。伪随机数一般是通过数学方法由计算机产生的,它产生的随机数是有一定规律的,对于同样的输入种子,输出的随机序列将会是相同的,所以在加密应用中,如果攻击者拥有足够的计算能力,就可对伪随机数加密进行破解[1]。而真随机数是基于某种自然噪声产生的,完全没有规律可循,是不可预测的。现着重介绍一种真随机比特流发生器,并对其工作原理进行了详细说明。
1常用的随机数生成方法
真随机序列应该满足以下几个要求[2]:
(1)具有不可预测性;
(2)不能重复产生;
(3)能通过随机性检验。
目前已经出现了多种随机数生产生方法,主要有以下三种[3]。
1.1人工方法
通过拋硬币、扔骰子等方法获得随机序列。由这类方法产生的随机序列具有高度的随机性,但是这种方法效率极低。
1.2利用计算机生成伪随机数
这是最常见的随机序列产生方法,它是基于“随即种子”产生的。由计算机算法来获得的随机序列是有规律可循的,所以其安全性较差。
1.3通过检测随机噪声源来获取真随机数
产生真随机数需要熵源即随机源,目前熵源一般是通过检测放射性衰变、粒子轨迹、电子电路噪声、大气噪声、机械振动噪声、电子振荡器频率抖动等物理噪声来获取的。由于这些装置结构复杂,操作繁琐,有些还对人体具有一定的危险性,使得目前这类随机数产生方法既不方便,也不实用。
由此可见,现有的三类随机序列产生方法都存在着各种各样的问题,不能很好地满足信息安全系统需求。
2真随机比特流发生器
2.1随机噪声源的选取
雪崩二极管是一种负阻器件,其特点是输出功率较大,噪声也很大。试验说明,在电源取得得当的时候,处于反偏状态的晶体稳压二极管能产生良好的随机噪声。主要噪声来自于雪崩噪声,是由于雪崩倍增过程中产生电子和空穴和无规则性所引起的,其性质和散弹噪声类似。这是因为在材料掺杂浓度较低的PN结中,当PN结反向电压增加时,空间电荷区中的电场随着增强。这样,通过空间电荷区的电子和空穴,就会在电场作用下获得的能量增大,在晶体中运动的电子和空穴将不断地与晶体原子又发生碰撞,这就是载流子的倍增效应。因此,雪崩二极管可以很方便地作为理想的随机噪声源。
2.2系统组成
该真随机比特流发生器由随机噪声提取模块以及比特流输出模块两部分组成[4]。随机噪声提取模块用于提取稳压二极管两端的噪声,并产生随机数字噪声信号,比特流输出模块对多路随机数字噪声进行处理,输出真随机比特流。
2.2.1随机噪声提取模块
随机噪声提取模块由N路构成一致的随机数字噪声发生器构成,每一路结构相同(见图1)。它由稳压二极管、偏流调节器、低通滤波器和比较器等四个部分组成。
(1) 稳压二极管,选用雪崩二极管。在电路中适当地控制流过稳压二极管的反向偏流可使稳压二极管工作于不被损坏的反向击穿状态,反向击穿的PN结可以提供一个非常稳定的参考电压,同时在该参考电压上叠加着大量的噪声信号,此噪声是由于在雪崩击穿的过程中产生电子和空穴不断地与晶体原子发生不规则性碰撞所引起的,具有很强的随机性。
(2) 偏流调节器,通过调节电位器控制流过稳压二极管的反向偏流,使二极管工作于适当的状态并产生质量较高的随机噪声。
(3) 低通滤波器,由电阻R1、C1构成,它能有效滤除叠加在稳压二极管两端的噪声信号,为比较器提供稳定的参考电压。
(4) 比较器,用来产生数字噪声输出信号。稳压二极管产生的噪声信号直接送入比较器的“+”端,经过滤波后不含噪声的参考电压接至比较器的“-”端,由于噪声的随机性导致比较器也随机地输出“1”或“0”。由于比较器的两个输入信号最终都来源于稳压二极管两端,因此该电路具有自适应特性,能自动跟随由环境变化引起稳压二极管反向击穿电压的变化,避免比较器进入饱和状态而降低随机比特流输出的质量。
2.2.2 比特流输出模块
比特流输出模块由多路数字噪声信号运算电路及比特流输出电路组成,(见图2)。其中,将随机噪声提取模块输出的N路数字噪声信号任意分成M路和(N-M)路两部分,其中M为满足1≤M<N的正整数,并将它们分别接至两个多输入异或门的输入端,这样使异或门的输出信号更具有随机性。经过逻辑运算得到的两路数字输出信号分别接至由JK触发器构成的比特流输出电路,在采样时钟的作用下可以连续输出真随机数字比特流。还需说明的是:本系统使用JK触发器是为了利用其输出不仅与当前输入状态有关还与以前输出状态有关的重要特性,进一步提高了比特流输出的随机性,使产生的随机数据在进行后处理前就具有良好的统计特性。
3 真随机比特流发生器的应用
随机数除了在博彩业、计算机模拟仿真以及随机抽样等场合有广泛应用外,还在以下领域有重要应用:
3.1 金融领域
该随机比特流发生器结构简单,可以很方便地集成在计算机、手机、PDA、MID等设备内部,用于产生静态随机密码和动态密码,确保了电子商务的安全性。
3.2 网络通信
在进行网络通讯时,信息的加密尤为重要,通过该装置,可以很方便地获取高质量的随机数对信息进行加密及解密,实现了网络通信的安全性。
4 结语
随着计算机技术的发展,特别是电子商务行业的发展,对信息的安全要求越来越高,因此,随机序列的产生十分必要。而该真随机比特流发生器使用简单电路,避免了使用复杂的随机噪声信号发生振荡器,以及手工操作的繁琐过程,便于集成化及大规模应用,能够快速地获得具有高质量的真随机数列,满足信息安全标准所需的高强度安全密钥要求。
参考文献
[1]郭宏,刘钰,党安红,等.物理真随机数发生器.科学通报,2009;54(23):3651—3652
[2]苏桂平,吕述望.计算机安全系统中随机序列发生器的研究.计算机研究与发展,2003;40(7):994—995
[3]肖攸安,周祖德.基于PDA的高效真随机密钥生成系统.计算机工程,2007;33(12):134—137
随机数产生器论文 篇8
伪随机序列在数字通信、密码系统、计算机仿真等领域有着广泛的应用。一个伪随机序列发生器包括随机信号源(种)和一系列的离散、量化及其实现技术,其中良好的随机信号源是伪随机序列设计的关键问题。混沌与传统密码学之间存在着一种自然的联系,混沌动力学特性基本对应着高强度密码系统的某些安全特征,而具有良好混合特性的传统密码又蕴涵着混沌现象。以混沌作为信号源为伪随机序列发生器的设计提供了一种新的途径。
利用连续和离散混沌系统进行伪随机序列发生器的设计已有研究[1,2,3]。离散混沌由于算法简单致使其运算速率快,序列码率较高,但缺点是系统参数和初值条件在一般情况下较少,密钥空间小,序列的安全性较低。连续混沌一般情况下是几个非线性微分方程的耦合,其系统参数和初始条件较多,产生伪随机序列的密钥空间较大,缺点是运算复杂,在数字系统实现时运算速率相对较慢。但如果采取合理的量化方法,会较好地弥补这种慢的运算速率。如在抽位量化方法中[4,5],如果一次抽取混沌数字迭代值的多位作为0,1序列,可大大提高其码率。因此采用复杂的连续混沌系统作为伪随机序列的源将是混沌序列应用的一个方向。
另一方面,数字系统的编码理论表明,在数字系统中处理非周期的混沌时,由于系统本身的有限位数致使混沌出现周期现象,即短周期或动力学退化问题[1]。为改善这种短周期问题,可通过对混沌系统的变量或参数进行扰动以提高其数字PN序列的统计性能,增大序列的周期[1,2]。为了提高混沌伪随机序列的复杂性和改善其动力性退化问题,本文设计了一个变结构混沌系统,以期获得性能更好的伪随机序列。所谓变结构混沌系统,是指该系统的代数结构不断地自动变化,而实现这种变化的控制函数是一个开关函数,该函数在自身变量控制下自动地在0,1之间转换。在提出变结构混沌系统之后,对基于该混沌系统的伪随机序列发生器进行了设计,对产生的伪随机序列进行了NIST(National Institute of Standards and Technology)测试。测试结果验证了该数字序列具有良好的随机性能。
1 变结构混沌系统构造
首先构造了一个三维连续混沌系统:
式中:a,b,c为可变的系统参数。在Matlab软件平台上计算表明,在较大的a,b,c参数范围内系统(1)都是混沌的,取a=0.8,b=1.5和c=1.5时系统(1)的时域波形和y-z平面上的轨迹(相图)如图1所示。
又构造了另一个三维连续混沌系统:
式中:a,b,c和k为可变的系统参数。在Matlab软件平台上计算表明,在较大的a,b,c和k参数范围内系统(2)都是混沌的,取a=0.8,b=1.5,c=1.5和k=0.32时系统(2)的时域波形和y-z平面上的轨迹(相图)如图2所示。比较图1和图2发现,两者的时域波形和对应的平面轨迹不同。
混沌系统(1)、(2)除第一个方程不同外,其余两个方程完全相同。虽然它们有相似的结构,但其代数结构不同,平衡点也不同(见下一节),因而它们是非拓扑等价的,即它们在理论上是不同的两个系统。根据两个系统有相似结构但本质不同的特点,采用一个开关控制函数u构造了一个变结构混沌系统:
式中:a,b,c和k仍为可变的系统参数;u(x-m)为一个开关控制函数,其定义为:
式中:m为开关控制函数的门限,m∈x。取m=0.2,其他参数同前。对变结构混沌系统(3)进行仿真计算,所获得的时域波形x-t和y-z平面上的轨迹如图3所示。
图3中,实线和虚线分别为为系统(1)和(2)的波形或轨迹。
从图3看出,该系统的信号波形或解的轨迹由两个不同的部分构成。当系统的解x≥m=0.2时,u(x-m)=1,混沌系统(3)为混沌系统(2)的结构;当系统的解x<m=0.2时,u(x-m)=0,式(3)变为混沌系统(1)的结构,如此往复变化。虽然在这种结构变化中的门限为一确定值,但由于混沌的不可预测性导致何时达到这一门限是无法预知的,即这种结构随时间而变化的规律是无法预知的,也是随机的。
这种由两个不同的混沌信号按时间随机地混杂在一起而形成的一个完整的混沌信号,比之由单一混沌系统产生的信号要复杂得多,且门限参数本身又是一种密钥参数,它扩展了混沌伪随机序列的密钥空间,使其提高了安全性。
2 伪随机序列发生器设计及性能分析
基于上述的变结构混沌系统可设计一种新的伪随机序列发生器。主要思路是以变结构混沌系统作为随机信号源,采用一定的方法对其离散、量化,获得一系列的伪随机序列。
这里研究的变结构混沌系统是一个非线性常微分方程组,在数字系统中对其进行数值解就是一种离散的方法。常微分方程近似求解的数值方法有欧拉算法、改进型的欧拉算法和龙格库塔法等,这都是将连续系统进行近似离散化的方法。其中,欧拉算法速率最快,本文采用欧拉算法将连续混沌离散化。对于一个连续的混沌系统,有:
根据导数的定义可表示为:
当时间间隔τ足够小时上式可近似地表示为:
当i=1,2,3时,令xn=x1n,yn=x2n,zn=x3n,变结构混沌系统(3)可离散为:
当τ足够小时,经过欧拉算法离散化后的系统具有与式(3)所示的连续混沌系统相同的动力学特性,此处选择τ=0.004。
在数字系统中迭代求解式(8)所示的离散化系统,迭代过程中的每一个解变量xn,yn和zn都可以通过二进制数据的方式来表示。以xn为例:
式中:b1n,b2n,…,b(k+1+l)n分别为二进制数的所有位(0或1),混沌系统的解xn随时间不断变化,其二进制表达式中的每一位bjn(“0”或“1”)也随时间不断变化。如果抽取随时间变化的一位或多位,可构成一个由“0”或“1”组成的伪随机序列。为了保证提取的序列具有较好的随机性,可以严格地从小数部分中提取其中一位作为随机序列,也可以从{b1n,b2n,…,b(k+1+l)n}中选取随机性能较好的多位作为随机序列,从而增加随机序列的提取速度。这种量化方法可用图4表示。
式(5)~式(9)描述了混沌伪随机序列发生器设计的核心算法。实现一个混沌伪随机序列发生器可借助于软件和硬件平台。如果为计算机或其他软件提供伪随机序列,可借助数字计算机这个性能完善的平台实现式(5)~式(9)的运算,如可用Matlab,C语言等软件实现一个混沌伪随机序列发生器。也可结合实际应用在相关信号处理软硬件平台上实现混沌伪随机序列发生器,如利用DSP芯片对语音或视频信号进行混沌加密,可在DSP内进行上述运算而实现混沌伪随机序列发生器,也可利用FPGA硬件平台实现这种伪随机序列发生器[4]。本文不侧重利用何种平台,如何实现混沌伪随机序列发生器,而是着重基于上述变结构混沌系统的伪随机序列发生器性能的测试。为此,选择Matlab求解变结构混沌系统,通过实现式(5)~式(9)的运算产生一系列伪随机序列,提取序列并进行序列的随机性统计测试。
描述一个序列随机性统计性能的指标有多种,但目前应用最广的是NIST(National Institute of Standards and Technology,美国国家技术与标准局)标准[6]。NIST推出2.0版本的测试软件包STS是当前最具权威的一种随机性检测工具,它为研究人员提供了一种量化的报告,显式地说明一个伪随机序列性能的好坏。STS-2.0b是当前最新的软件包版本,由十五项核心测试指标组成。
该测试包评价序列性能好坏有两项指标:其一是通过率,另一项是P-value分布的均匀性。测试独立生成的m组随机序列,依据各组每次测试的P-value值是否大于测试水平α=0.01来计算通过率。若各次测试的通过率在可信性区间
在Linux操作系统环境下进行测试。通过编程将变结构混沌系统进行离散迭代运算来产生数字混沌序列,然后将产生的二进制数字序列保存为txt文档,并通过测试指令调用软件包对txt文档中的序列进行测试,测试由STS软件包自动完成,并生成测试报告。基于变结构混沌系统产生的伪随机序列的测试结果如表1所示,序列共有100 000 000 b,以每组100 000 b分为1 000组。
从表1中P-value这一列看出,序列仅在FFT这一项中的P-value值测试不满足P-valueT>0.000 1的条件,这说明序列在该项测试中的P-value值分布不均匀,在其余14项测试中表现为分布均匀。若从通过率来分析,取显著水平α=0.01,那么根据通过率可信区间的计算公式
3 结 论
为产生性能良好的伪随机序列,本文构造了一个新的变结构混沌系统。该系统在一个开关函数控制下自动地在两个混沌子系统之间随时间随机地转换,所产生的混沌信号是两个不同的混沌信号的混合,因而具有较好的复杂性。利用该变结构混沌系统设计了一种伪随机序列发生器,基于NIST标准和STS-2.0b测试套件对其产生的伪随机序列进行了测试,序列通过率全部通过了测试,序列的均匀性只有一项未通过测试。测试结果表明,该伪随机序列发生器具有良好的随机性能,可应用于计算机、通信、信息加密等领域之中。
摘要:为产生随机性能良好的伪随机序列,提出了一个新的变结构混沌系统。该混沌系统在一个开关函数控制下其系统结构随时间随机地转换,所产生的混沌信号是两个不同的混沌信号的混合,具有良好的复杂性。基于该变结构混沌系统设计了一种伪随机序列发生器,采用NIST标准和STS-2.0b测试套件对其产生的伪随机序列进行了统计性能测试,测试结果表明该伪随机序列发生器具有良好的随机性,可应用于计算机、通信、信息加密等领域中。
关键词:混沌,变结构混沌,伪随机序列,随机性
参考文献
[1]ALVAREZ G,LI S.Some basic cryptographic require-ments for chaos-based cryptosystems[J].Journal of Bifur-cation and Chaos,2006,16(8):2129-2151.
[2]DING Q,PANG J,FANG J,et al.Designing of chaoticsystem output sequence circuit based on FPGA and its ap-plications in network encryption card[J].Int.J.of Inno-vative Computing,Information and Control,2007,3(l.2):449-456.
[3]YALCIN M E,SUYKENS J A K,VANDEWALLE J.True random bit generation from a double-scroll attractor[J].IEEE Trans.on Circ.Syst.I:Regular Papers,2004,51(7):1395-1404.
[4]张波,王光义,韩春艳.基于Logistic映射的PN序列的FPGA实现[J].现代电子技术,2009,32(7):11-14.
[5]韩春艳,包旭雷,王光义.一种新的数字混沌密码序列及其性能分析[J].重庆邮电大学学报:自然科学版,2009,22(3):334-338.
[6]RUKHIN A,SOTO J,NECHVATAL J,et al.NIST SP800-22revision 1a,a statistical test suite for random andpseudorandom number generators for cryptographic applica-tions[S].Department of Commerce,US:NIST,2010.
[7]SUN Yue,WANG Guang-yi.An image encryption schemebased on modified logistic map[C]//Proceedings of 2011Fourth International Workshop on Chaos-Fractals Theoriesand Applications.[S.l.]:IEEE,2011:179-182.