摘要

随机数发生器(random number generator,RNG)在现代密码学中处于基础而核心的地位,其生成的随机数为密码算法和安全协议等众多密码应用提供基本安全保障。随着移动互联网、物联网等技术的快速发展,传统纯硬件形式的随机数发生器存在硬件更新困难、开发成本高等问题,导致适用范围受限。因此,在计算机、移动终端等设备上通常采用软件随机数发生器(software RNG,SRNG)提供随机数服务。目前,Linux、Android、i OS以及Windows等典型操作系统平台均具备各自的SRNG,提供基于软件的随机数服务。现有的研究工作主要聚焦在熵源熵不足和后处理模块内部状态泄露问题,这是影响SRNG的随机数服务质量的主要问题。为此,设计并实现一种带有熵监控功能的软件随机数发生器(entropy monitoring SRNG,EM-SRNG)架构,该设计利用高精度的纳秒级系统时钟作为非物理熵源。在线的熵监控模块可实现在发生器运行时对未处理数据的熵进行持续检测,并在熵不足的情况下按需调用后处理模块以改善数据的统计特性。另外,EM-SRNG的后处理模块可选用基于SM3和SM4密码算法设计的两种后处理扩展算法,以保证发生器内部状态的前向/后向安全性。通过对所设计的EM-SRNG与Linux随机数发生器(LRNG,目前主流的软件随机数发生器之一)进行对比分析,实验结果表明:在安全性方面,经SP 800-90B测试后发现EM-SRNG的输出质量与LRNG的dev/random提供的数据质量相当,而略好于LRNG的dev/urandom提供的数据质量,每比特的最小熵约为0.94/bit;在速率方面,EM-SRNG的数据产生速率比LRNG的dev/random高4个数量级左右,但由于在结构中嵌入了基于90B统计套件进行在线熵估计,使得EM-SRNG的速率比LRNG的dev/urandom要慢一些,约为4 Mbps。