Blake2

Blake2:通過 Config 截斷 512 位雜湊比 256 位更安全?

  • December 12, 2015

我需要使用 BLAKE2 在我的程式碼中計算 256 位雜湊。

我知道我可以將 BLAKE2 設置為為任何數據生成 256 位雜湊,但我很想知道什麼可以更安全、更快:

1-使用 Blake2Config 模組創建 256 位;或 2- 截斷正常的 512 位結果,得到最左邊的 32 個字節(256 位)。

第一次,我想獲得最左邊的 32 字節會比直接從 Blake 獲得 256 位更安全,而且不會那麼慢。

我錯了嗎?感謝您的任何評論。

您應該始終使用配置選項來選擇散列函式的輸出大小。

如果您需要標準輸出大小(例如 224、256、384、512 位),請使用推薦的參數集。

這主要適用於 SHA-3 等標準,如果您使用 SHA-3-256,您將獲得與“Keccak-256”、SHA-3-512/256 和 SHAKE128-256 不同的(更標準的輸出),它們都使用稱為“域分離”的東西(即將特定的字節序列附加到輸入以獲取不同的雜湊值)。

第一條語句的原因如下:

config 選項始終與 / 比手動截斷一樣好。在最壞的情況下(例如 SHAKE),它只是對無限長的密鑰流的簡單截斷,因此表現出與手動截斷相同的安全屬性。在最佳情況下(例如 Skein),所選輸出大小將影響輸出,即 Skein-256-256 將為消息提供完全不同的輸出 $ m $ 比 Skein-256-255 會。顯然,這更安全(通常速度不會變慢),因為它可以保證你 $ Trunc(H_{d}(m),t)\neq H_t(m) $ 這可能是一個理想的屬性(儘管很少需要)。

Blake2 對應於第二種情況(即摘要大小影響輸出)。請求的摘要大小與靜態常量和 MAC 密鑰(如果使用)一起用作初始內部連結值(在 IV 之後)。因此它對雜湊的影響與 IV 一樣多,這意味著對於相同的消息,Blake2b-32 將與 Blake2b-64 大不相同。這可以在RFC 76934 頁(變數名)第 9 頁(雜湊大小的使用)中找到。

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