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

书还是同一本书,作者还是同一个作者。
这一节主要说的是DRNG。
第一部分是“纯种”的DRNG(Pure DRNG), PDRNG。
在这个系统中,我们有两个类,分别是S和R。
S叫state space,R叫output space。在这里可以简单地当成seed和"result"。
也叫seed,就是第一个数,然后
之后的就是接下来的随机数种子。
和之后的r都是生成的随机数。
整个随机数的过程就是,这个过程有些抽象:
“产生”了
,这个过程可以简单地
,或者用其他方法生成。
生成第一个随机数,
,
是“随机数生成函数”(Output transition function),并没有特指某个方法。
与此同时,
,
是“状态转化函数”(State transition function),这一步是生成下一个s,以用来进行下一个随机数的生成,和
一样,并不特指某个方法。
简单地说就是,一个DRNG的设计由5个元素组成:状态空间(种子),“结果”空间(随机数),新状态生成器,随机数生成器和。
最后一个是随机种子的概率分布(Probability of random seed)。
一般上种子是由TRNG生成的。
如果说这DRNG有什么缺点的话,那应该就是结果完全依赖种子,而接下来的随机数完全依赖当前的“种子”。也就是说这玩意儿某种意义上很容易被预测。
当然,这玩意儿有个好,就是弄起来便宜,不需要特定的设备来完成。一般智能卡这种东西是用这个的。

在我们无法假设随机数的生成,和“新状态生成”是保密的情况下(Kerckhoff principle也不鼓励这样设计),我们需要加一个新的规则,就姑且称之为R3吧。一个合格的DRNG,需要确保……
R3:知道了内部状态,或者是状态生成的方法之后,谁也也无法透过这一点来“反推”下一个或者前一个的状态,也就是说,没有人能透过现在的种子数去反推上一个或者下一个种子数是什么。
R3的具体意思就是,理论上不可能透过和
去反推
是什么,就跟哈希函数一样。
接下来就是“混种”DRNG,Hybric DRNG
混种DRNG有个特点,就是纯DRNG的两个函数中加了个E(不一定全都一样)。正式来说,所有纯粹的DRNG其实都是混种DRNG,只不过,这个符号的意思是说,整个过程没有E。
所以,混种DRNG需要添加两个额外的东西,一个就是E,额外的输入值,另一个是,也就是E的概率分布。
因为E的存在增加了随机性和不可预测性,所以DRNG的安全性提升了,但是如果E的衍生方式过于简单,那么安全性的提升可能会很有限。
在某些情况下,攻击者可能可以获取“当前内部状态”(Current intenal state),也就是“当前种子”,而生成接下来的随机数。所以就有了第四个要求,R4:
R4:简单的说就是,知道内部的当前种子后,也无法自行推测出下一个随机数,增加了几率,但是微乎其微。

还有什么要说的话,大概就是敏感的东西别贪小便宜用简单的随机数生成方式,比如什么线性同余之类的。或者说如果这些随机数是用在加密方面,就挑些不好破解的,比如RSA-2048(bushi)