使用 SHA256 作為 AES256 的密鑰
使用難以暴力破解的字元串的 SHA256 作為使用 AES256 加密數據的密鑰是否安全?
的定義
hard-to-bruteforce string
是模糊的,因為不清楚在哪些條件下、何時以及針對誰。因此,雖然假設您有hard-to-bruteforce string
一個密碼作為我們需要打開通常的建議。我們假設攻擊者也知道密鑰生成方法。因此,首先,攻擊者將嘗試暴力破解可能的字元串以及簡單或複雜的組合。
對於這種方法,使用者應該從熵源中選擇密碼。通常的建議是使用diceware生成的密碼片語來提供高熵密碼。
如果使用者有一個高熵密碼來輸入任何密碼學安全的散列函式,即它具有原像、二級原像和抗碰撞性,那麼使用者是安全的。,請注意,沒有迭代,也沒有防止並行化,儘管如果您的密碼具有高熵,則沒有必要這樣做。對於密碼來說,抗碰撞性並不重要,前像、二次前像抗性很重要。
對於多個密鑰派生,您可以使用基於散列消息驗證碼 (HMAC) 的密鑰派生函式 (HKDF)。擴展的HKDF可以增加輸入密鑰材料 (IKM) 的熵。如果熵好,則可以使用提取機制。
對於從密碼生成密鑰,您還可以更喜歡基於密碼的密鑰生成算法。Bcrypt (1999)、PBKDF2 (2000) 和Scrypt (2009) 是眾所周知的例子。還有新的Argon2,它在 2015 年 7 月的密碼雜湊競賽中獲勝。Argond2id 是值得推薦的。基於密碼的密鑰派生函式的目標之一是減少暴力密碼搜尋(如hashcat)的時間。這是通過多次迭代散列來實現的,比如 10K,使用大記憶體來減少 GPU 中的並行化。
請記住,一般來說,人類無法記住
hard-to-bruteforce string
。建議使用密碼管理器來保存密碼。現在,它變成了雞蛋問題。如何記住hard-to-bruteforce string
密碼管理器。基於密碼的密鑰派生函式是針對一般使用者的解決方案。通過對密碼的一些限制(強制一定級別的密碼空間、10 個字元、1 個大寫、1 個小數、1 個標點符號等),可以根據目前已知的攻擊級別調整攻擊時間。因此,在實踐中,設置了最低安全性。最好教他們玩骰子。