Hash
我可以使用雜湊函式來幫助生成加密密鑰嗎
如果我有一個真正的隨機數生成器,它有一個錯誤,其中 10-20% 的位永遠不會改變(每次呼叫 TRNG 時這些位總是產生相同的值),我可以通過雜湊函式提供 TRNG 的結果嗎? (比方說 SHA-256)生成唯一且安全的密鑰?
我可以通過雜湊函式(比如說 SHA-256)提供 TRNG 的結果以生成唯一且安全的密鑰嗎?
是的,事實上,這是非常普遍的做法。
由於設備缺陷或與環境的微妙互動,真正的 TRNG 通常不會產生精確統一和獨立的位。為了彌補這一現實,我們通常將 TRNG 輸出通過一個調節器,它採用良好(但不完美)的熵並將其轉換為更均勻的輸出。
SHA-256 就是一個好的護髮素的例子;你要做的是估計有多少 TRNG 輸出將具有至少 256 位熵(更糟糕的情況),通過 SHA-256 發送那麼多,SHA-256 輸出將具有大約 256 位熵(假設 SHA-256 確實沒有意想不到的弱點)。
在您的範例中,如果我們有 TRNG 輸出的每 8 位,2 位是固定的,而其他 6 位是統一且獨立的,那麼您至少需要 $ 8/6 \cdot 256 < 344 $ 每個 SHA-256 散列的 TRNG 輸出位(如果您對其他 6 位有疑問,請隨意提高;輸入過多的唯一缺點是實際缺點)。