Hash
生成一個大小大於雜湊輸出長度/安全性的密鑰,這可能嗎?
假設我想從一個安全性高達 512 位的雜湊函式(例如 Blake2b)生成一個 2048 位的密鑰。
我拍攝了 4 張高解析度照片,用 512 位的雜湊輸出長度對它們進行雜湊處理,然後將所有雜湊連接起來,生成一個 256 字節(2048 位)的密鑰。
這個方案會安全地生成一個真正安全的 2048 位密鑰嗎?
使用散列函式是從非均勻源中提取熵的常用方法。是的,Blake2b 的安全性不能超過 512 位,因此您需要連接不同輸入的輸出以獲得更多位。有一種更好的方法可以實現這一點;連結; $$ \begin{align} h_0 &= \operatorname{Blake2b}(image_0)\ h_i &= \operatorname{Blake2b}(image_i\mathbin| h_{i-1})) \end{align} $$
雖然 256 位足以讓所有人加密甚至對抗量子對手,但請確保您的輸入文件從它們獲取的源中攜帶足夠的熵。如果圖像儲存庫非常有限或圖像幾乎沒有變化,則最終可能會出現不良熵。