论文部分内容阅读
随机数发生器(Random Number Generator,RNG)在现代密码学中处于基础而核心的地位,其生成的随机数为密码算法和安全协议等众多密码应用提供基本安全保障。随着移动互联网、物联网等技术的快速发展,随机数的使用范围在不断扩大,传统纯硬件形式的随机数发生器存在硬件更新困难、开发成本高等问题,导致适用范围受限。因此,在计算机、移动终端等设备上通常采用软件随机数发生器(Software RNG,SRNG)提供随机数服务。通常SRNG收集外部熵源信息(如键盘鼠标操作、磁盘写入/写出操作),并使用软件形式进一步对数据处理以产生随机数据。目前,Linux、Android以及Windows等典型操作系统平台均具备各自的SRNG,提供基于软件的随机数生成服务。本文以操作系统平台上软件随机数发生器的安全设计为切入点,研究工作聚焦在SRNG安全设计中的两个关键点:一是如何在SRNG运行时测量熵源随机性的大小,并在熵不足的情况下调用后处理模块来改善输出序列的统计特性;二是如何设计具有高安全性的后处理扩展算法,以确保后处理模块中内部状态以及输出序列的安全性。为此,本文设计并实现了一种带有熵监控功能的软件随机数发生器(Entropy Monitoring SRNG,EM-SRNG)架构。以下是本文的主要贡献。(1)选取高精度时间序列作为熵源数据。该架构以高精度的纳秒级时间作为熵源,经理论和实验结果表明,其具有良好的不可预测性、数据产生速率高等特点。虽然已有诸多相关研究将时间序列作为熵源数据,但存在由于熵源事件频繁发生而导致时间序列数据重复率和连续性较高的缺点,如Linux随机数发生器,其将熵源事件的发生时间作为熵源数据,后续需要额外操作来消除时间序列之间的相关性。(2)提出一种基于统计测试套件的在线熵监控机制,包含在线熵估计和熵判断两个模块。本文基于代码优化后的C++版本的NIST SP 800-90B统计测试套件,设计并实现了嵌入式的在线熵估计模块;在保证EM-SRNG输出质量的前提下,设计并实现了熵判断模块,用于降低由于调用后处理模块而造成的计算资源开销,从而提高EM-SRNG的整体性能。(3)实现高安全性的后处理模块,以确保EM-SRNG后处理模块中内部状态的安全性。本文的EM-SRNG架构中的后处理模块基于我国SM系列密码算法设计而成,选用基于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个数量级左右,但由于在结构中嵌入了基于SP 800-90B统计套件进行在线熵估计,使得EM-SRNG的速率比LRNG的dev/urandom要慢一些,速率约为4Mbps。