随着计算机网络、Intemet和无线设备等数字通信技术的广泛应用,数据加密越来越成为人们关注的焦点。很多加密系统的安全性直接依赖于产生的密钥的不可预测性以及非相关性。然而要产生一个理想的密钥,仅仅由人来输入一个密码是无法达到要求的。因为那样会有太强的主观性。要生成非主观的密钥,目前常用的方法是伪随机数产生器PRNG(Pseudorandom NumberGenerator)。但再好的PRNG只要其中一个状态因为某种原因泄漏,就极有可能导致整个PRNG的产生机制被破解,从而使得“伪随机”变成“不随机”。因此人们开始研究真 随机数生成器 。有些随机数产生器是基于一个模糊的类随机源的,如键盘的延迟,电脑的系统时钟状态等。这些随机数产生器的安全性总是受这种模糊的类随机源的影响。于是采用自然界中的真随机量产生密钥便成为一个新的课题。例如电路中的热噪声或者放射源的衰变等都是真随机量。在SoC(System on Chip)广泛应用的今天,如何设计一个基于IC的RiNG就成为安全通信应用的急切需要。随机噪声源(如热噪声和发射噪声)存在于IC中却总是被人为地屏蔽掉了。因此,利用电路噪声放大的商用RNG设计需要专门的外部组件和特殊硬件来与那些需要屏蔽噪声的组件隔开。在IC设计中,对数模混合信号的处理经验表明,底层噪声和电源噪声电平总是高于随机噪声源电平。所以一个不被干扰的白噪声源在一个基于IC的数字加解密系统的RNG中是不可能被使用的,必须考虑如何利用抗干扰的随机源来实现随机数生成器。
本文提出一种新的 混沌 RNG的实现方案,更易于用硬件即IC实现。首先讨论其原理和 模型 及其实验,并对其进行随机性测试;然后讨论它的FPGA实现方案。
1 模型及实验
1.1 随机数生成器的定义
定义1 一个理想的随机数生成器是一个生成等概率符号的离散无记忆信息源(DMIS),RNG是一个有着正熵的离散信息源。
但是,现实中的RNG都是产生非均匀概率符号的离散有记忆信息源。因此采用有偏差的RNG来区别于定义1中理想的RNG。一个有偏差的RNG性能的好坏可通过它的冗余度ρ=log2Q-h来衡量,其中Q和h分别是离散符号集的基数和相关信源的熵。一个理想RNG的冗余度应该等于O,而一个有偏差的RNG的冗余度则标志这个RNG跟理想RNG的差距。例如一个冗余度为ρ的RNG产生长度为N位的密钥,则攻击方平均要尝试2(1-ρ)N个密钥才能找到正确的密钥,因此密钥的有效长度可以被定义为Ne=(1-ρ)N。
1.2 混沌随机数生成器模型
混沌理论作为非线性动态系统的分支,近年来受到越来越多的关注。它使得一个低维动态系统也可以拥有复杂的、不可预料的行为,使复杂的方程不再是生成随机数序列的必要条件。
混沌系统可以用基于下列迭代关系式描述的Bemouli移位映射:
式中,e(n)表示一个高斯噪声信号。这个迭代式表明由(1)式产生的序列是极为平滑和均一分布的。另外,与混沌相关的轨迹发散包含了噪声,(1)式产生的序列在一定范围内是不可预测的,从而使系统能被当作一个真随机比特源。离散时间混沌法不受其他噪声源影响。
在电路上实现Bemouli移位映射的关键在于实现一个抗干扰的高斯噪声信号。传统的混沌随机数生成器是用一个伪随机数生成器产生一个伪高斯噪声信号来实现(1)中的e(n),如图1所示,这在一定程度上降低了混沌随机数生成器的安全性和真随机性。
典型的振荡器采样法是利用时钟的相位噪声(理论上是MOSFET热噪声的副产品)产生随机数。通过一个由较慢时钟信号控制的D触发器对一个高速时钟进行采样,高速时钟的相位抖动导致具体采样值的不确定性,如图2所示,理论上每次采样都会产生一个随机比特。典型采样后的抖动电平是符合高斯分布的,而且这种抖动不会受到电路中其他噪声的干扰。另外,振荡器采样法的随机性可以通过仔细挑选快的和慢的时钟频率比来人为增强。采样时发生的非线性偏移现象使得这种振荡器采样技术比目前的确定性噪声更健壮。
基于上述原理,提出用振荡器采样输出作为一个高斯噪声信号e(n)实现(1)式。结合两种随机数生成器方案实现混沌随机数生成器,系统原理框图如图3所示。
其中S/H(Shilt/Hold)为一个移位保持电路,用来实现2(x(n-1)+e(n))。低速时钟控制D触发器、寄存器和S/H。寄存器中残余信号作为初始输人信号,然后与振荡器采样输出信号进行模2加操作(异或),再通过S/H产生最后的输出x(n),x(n)被反馈到寄存器中进行下次操作。