Hash
Davies-Meyer 分組密碼和 IV
我有關於 Davies-Meyer 構造的三個問題:
- 底層分組密碼的名稱是什麼?
- 如何生成傳遞給分組密碼的第一個輸入雜湊值 (IV)?
- 最後一個原始消息塊填充了什麼?
為了:
- 未指定,它可以是任何塊密碼(具有所需的輸出塊和密鑰大小);
- 未指定,它可以是正確塊大小的任何常數;
- 未指定,它可以是適合密鑰大小的任何填充類型。
Davies-Meyer 是一種壓縮函式的構造,而不是可以開箱即用的實際算法。通常,這些參數將針對採用 Davies-Meyer 構造的特定算法進行描述。
原則上,它們也可以作為配置參數保留(類似於 HMAC,其中散列是配置參數,例如 HMAC-SHA-256)。但是,對於散列函式,這並不常見。
這些抽象的用途之一是可以為它們創建一個證明,而與使用的分組密碼無關 - 當然,您必須假設對於特定案例,分組密碼沒有被破壞。
以下是關於單向函式的維基百科文章的相關部分:
只有至少滿足以下條件,才能認為雜湊函式是安全的:
- 分組密碼沒有區別於理想密碼的特殊屬性,例如弱密鑰或導致相同或相關加密(固定點或密鑰衝突)的密鑰。
- 生成的雜湊大小足夠大。根據生日攻擊,安全級別為 280(通常假設今天無法計算)$$ citation needed $$是可取的,因此散列大小應至少為 160 位。
- 最後一個塊在散列之前適當地填充了長度。(請參閱 Merkle-Damgård 構造。)長度填充通常在專門的雜湊函式(如 SHA-1 等)內部實現和處理。
下面介紹的結構:Davies-Meyer、Matyas-Meyer-Oseas、Miyaguchi-Preneel 和 Hirose 已被證明是 安全的$$ the $$黑盒分析。
對於使用 Davies-Meyer 的特定雜湊函式實現,您可以查看SHA-2 hash family。請注意,SHA-2 不使用命名分組密碼;它使用特定於 SHA-2 的專用密碼。填充模式是位填充,但它有一個長度指示。IV 分別為每個散列函式指定,不能錯過它們。