密码工程读后感-第三章-第二,三,四节

这一章主要是对于PRNG的评估事项(例子我看了头也疼)
一般来说,PRNG的核心在于噪音源(noise source),将噪音数字化之后的数值我们称之为digitized analog signals或者叫das。一般来说,PRNG会产生三次随机数,分别是das,内部随机数和外部随机数。das就算噪音数字化的数值,内部随机数是对于das的“后处理”, postprocessing。这个内部随机数会进行多一次加工,生成最后的外部随机数。一般上外部随机数并不是由随机数的设计者所决定的,打个比方,我决定在PRNG生成一个随机数后进行一次mod 114514的运算,这个PRNG生成的随机数在我的系统里就算内部随机数,而经过mod 114514之后的随机数,就算外部随机数。

PTRNG的评估最主要的目的是估算每一个比特的熵,然后第二个目的就算进行在线测试(online test,之后会细说),很不幸的是,熵不能够像其他数值(例如温度)一样可以简单地测量。因为信息熵本身就是一种“随机性”,所以统计学上的黑箱测试是不太管用的。
备注3.1:以Maurer的例子(https://link.springer.com/content/pdf/10.1007/BF00193563.pdf),如果我们用LFSR来产生随机数,每增加一个伪随机比特所增加的熵为0,但是Maurer的测试会接近最大值。这跟Coron的例子(http://www.crypto-uni.lu/jscoron/publications/entropy.pdf)很相似。
所以,与其量化每一个比特的熵,我们可能要先研究随机数的分布会比较合适。

这一节是随机模型(Stochastic model)
假设随机变量R和Y,分别满足das(数字化信号)和ir(内部随机数)随机性质。前者的分布方式会很依赖噪音源和“数字化机制”,而后者的分布会依赖后处理算法。所一般上,我们是无法准确确认这些分布的,所以评估的时候,会先标注一个“分布家族”(Family of distribution),并证明所有此分布都是源于这个“家族”。
打个比方(3.1)
把硬币正面设为1,反面设为0,结果为我们假设这其中并没有任何“后处理算法”,也就是说
然后我们把每一次投币的结果设为,而且其分布概率是B(1,p)分布,而
。也就意味着,其分布是来自于单一参数的家族,或者单一参数的概率分布(B(1,p)分布的积)
对于现实中的PTRNG,往往情况更复杂,特定的分布家族可能需要依赖多个参数,所有需要多次实验来测试其独立性。一般来说,信号那一段了解的越深,在PTRNG的所需要的证实部分就越少。另外,随机模型并不是噪音源的物理模型,更不是数字化的机制。
这个随机模型的最终目的是找出每个内部随机数的平均熵(下限),然后基于这个下限,再估算出PTRNG的熵。所以需要这三个步骤:
对于PTRNG设置一个随机模型,如果没有理论上的论据,就需要实验证实。
用这个PTRNG来生成随机数,然后导入属于这个PTRNG的参数
使用这些参数来估算每一个随机比特的熵增。