基於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的週期性更新。