Hash

Argon2 允許輸入的密鑰長度很大,但它真的提供了所提供密鑰的安全性嗎?

  • February 5, 2022

我閱讀了Argon2 規範

它在 3.1(第 5 頁)中說:

秘密值 K(必要時用作密鑰,但我們不假設預設使用任何密鑰)可以具有任意長度 $ 0 $ 至 $ 2^{32}\text{-}1 $ 字節。

假設我想將 Argon2 轉換為塊加密,我提供一個 8192 位密鑰(1024 字節)並為每個生成的塊提供一個計數器,因此,對密文中的散列塊進行異或。

根據密鑰長度,這種加密方案是否具有安全性?我會有 8192 位的加密強度嗎?

我問這個是因為 Argon2 使用 Blake2b,它有 512 位的狀態大小,並且它的安全性被限制在這個限制內。

根據密鑰長度,這種加密方案是否具有安全性?我會有 8192 位的加密強度嗎?

不,安全性受限於

$$ security = min{\text{Argon2 input_size};, ;\text{Hash digest size}} $$在您使用 BLAKE2-512 的情況下,它是 512 位安全性而不是 8192。

原因很清楚。Argon2 返回return Hash(C, tagLength)變長雜湊函式)或參見Argon2 論文第 6 頁 *

                   在此處輸入圖像描述

如果使用 BLAKE2,那麼前 64 個字節是 BLAKE2 的輸出。如果輸出要求大於 64 字節,則剩餘字節來自先前 BLAKE2 呼叫的輸出。

  V1 ← Blake2b(digestSize ∥ FinalBlock, 64);
  Subsequent blocks are generated from previous blocks
  for i ← 2 to r do
     Vi ← Blake2b(Vi-1, 64) 
  Lower 32 bytes of Vi is returned.

因此,安全性不能大於散列摘要大小,這對於即使是後量子對手來說也應該足夠了。

而且,256 位安全性對每個人來說都足夠了。Argon2 專為密碼散列而設計,雖然可以將其用於 CTR 模式,但仍然更喜歡 xChaCha20-Poly1305 以獲得機密性、完整性和身份驗證。這比 Argon2 加密要快得多。xChaCha20 是 ChaCha20 的擴展,具有 192 位 nonce,可實現隨機 nonce,而無需擔心 CTR 模式的 nonce 重用問題。


*預設輸出只輸出單個雜湊。這使得客戶端獨立更新是密碼散列競爭的功能要求

引用自:https://crypto.stackexchange.com/questions/98505