通過 Salsa20 生成安全的 AES 密鑰?
我不是在滾動我自己的加密或任何東西——只是想了解密碼學的注意事項:特別是關於 AES 加密和為此生成密鑰的方法。
據我了解,創建加密安全密鑰時的選項之一是收集熵
/dev/urandom
,然後通過 Salsa20 密碼提供該數據。但是我不太確定接下來的步驟,因為那是搜尋引擎對我不再有用的地方。據我了解,使用 Salsa20 生成的輸出似乎不夠安全,無法按原樣用作關鍵材料。如果這是正確的,那麼在獲得 Salsa20 輸出後,“加密”正確的下一步是什麼?
此外,如果您知道任何相關論文並樂於分享,我們將非常歡迎!
如評論中所述,dev/random已經產生了加密安全的隨機字節,這些字節非常適合用於加密密鑰。通過另一個 CSPRNG 執行這些字節是完全多餘的。
據我了解,創建加密安全密鑰的選項之一是從 /dev/urandom/ 收集熵,然後通過 Salsa20 密碼提供該數據。
Salsa20等對稱密碼本身並不是正確的密碼原語。您需要一個CSPRNG(例如 /dev/random)。
但我不確定下一步,因為那是搜尋引擎對我不再有用的地方。據我了解,使用 Salsa20 生成的輸出似乎不夠安全,無法按原樣用作關鍵材料。我對麼?如果,在我檢索到 Salsa20 輸出後,下一步加密正確的步驟是什麼?
如果您有某種理由不使用 dev/random(方便、不信任等),並且您有其他一些強大的(我的意思是強大的,而不僅僅是 mouse-movements ala mega)熵源,那麼您應該參考一個NIST 特別出版物 800-90A中定義的CSPRNG 的數量。您可能對 CTR_DRBG 特別感興趣,它在內部使用分組密碼(在 CTR 模式下執行,本質上是像 Salsa20 一樣的流密碼)。您可以找到多種語言的實現。
專業提示:避免 Dual_EC_DRBG