基于Hash函数的PRNG算法
流程很是相似于对称密码的CTR工做模式安全
算法的伪码以下函数
m = ⌈n/outlen⌉spa
data = Vblog
W = the null Stringit
for i = 1 to m密码
wi = H(data)im
W = W || wid3
data = (data + 1) mod 2seedlen数据
return leftmost n bits of W
说明:
V是种子,seedlen为V的长度,n是须要的输出位数,H是Hash函数
对于诸如SHA-2等强密码学Hash算法,目前尚未发现基于Hash方案的PRNG的已知或可疑缺陷。SP800-90标准对V提供了周期性地更新。
基于MAC的PRNG
基于MAC的PRNG几乎都是HMAC构造的。与基于Hash的方案相比,其劣势是执行时间会增大一倍,由于HMAC对于每一个输出块都要执行两次Hash函数运算。可是HMAC方案的优点是能够提供更高的安全性。
对基于MAC的方案,须要两个输入:密钥K和种子V,对于每一个输出分组的密钥都是相同的,而每一个分组的输入数据都等于前一分组的MAC值。为了增长安全性,SP800-90标准提供了对K和V的周期性更新。