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

书:Springer的Cryptographic Engineering
作者是Cetin Kaya Koc
就当着是备考了吧,万一有其他学生跟我用同样的课本呢(笑)
密码学的应用需要大量的随机数,比如所谓generate 64-bit challenge, generate random prime, generate a random session key之类的,不过似乎没有要求这些随机数应该怎样,或者说有什么要求。直觉上来说,随机数的结果分布应该是平均的,而且每次生成都应该是独立的。但是实际上我们都知道这种要求是不太现实的。
所以退而求其次,对于随机数有一些要求。
R1:随机数应该有良好的统计特性
这个是拿来给随机数生成器进行统计测试,这个要求是防重播攻击(Replay attack)或者基于相关性的攻击(Correlation based attack)
但是,仅凭这一点是不足够的,因为良好的统计特性也意味着“可被预测”。所以需要第二个要求
R2:随机数不可被猜测,这里是我的个人理解,按照书的原文是"The knowlege of subsequences of random numbers shall not allow one to practically compute predecessors or successors or to guess these numbers with non-negligibly larger probability than without knowledge of these subsequences."
更准确地说,这一条应该是,不管对方知道或者不知道这个随机数的序列,他们猜,或推算出下一个随机数的概率必须差不多一样低。换句话说,知不知道随机数的序列对于他们推算或猜测下一个随机数的概率应该要有可以忽视的影响。

第三节的就是随机数生成器的分类,无非就是确定性随机数生成器(Deterministic RNGs, DRNG),以一个种子(seed)为开头,透过特定的算法生成伪随机数。另一种就是真随机数生成器(True RNG, TRNG),这种生成器又在细分为物理TRNG(Physical TRNG, PTRNG)或者非物理TRNG(Non-Physical TRNG, NPTRNG),对,就是一直套娃。
PTRNG用的是电子电路(例如稳压管的"噪音")的或者物理实验(例如放射性衰变)非确定性的效果,而NPTRNG是利用不确定性的事件(系统时间,RAM容量等)。
因此,所谓的hybric RNG就是结合了这三种的特性。因为DRNG的安全性是建立在计算的复杂度上,而TRNG的安全性是建立在结果的不可预测性上。