為什麼 SHA2-224 使用與 SHA2-256 不同的 IV?
鑑於它只是截斷,我可以猜測能夠從 256 值計算 224 值是一個不需要的屬性,但這只是推測。
這 $ \operatorname{SHA-224} $ 以完全相同的方式定義 $ \operatorname{SHA-256} $ 具有不同的初始值,並通過截斷散列值獲得摘要,FIPS PUB 180-4 Page 23。
不同的初始值提供域分離。帶域分離 $$ \operatorname{SHA-224}(m) \neq \operatorname{SHA-256}(m)|{224} $$在哪裡 $ |{224} $ 是截斷。如果 IV 相同,則截斷的值將與完整雜湊的初始位相同,從而破壞域分離。
可以在Hashing to Elliptic Curves,ietf 草案中找到域分離的一個很好的定義
使用隨機預言的加密協議通常在隨機預言只回答該協議生成的查詢的假設下進行分析。在實踐中,如果兩個協議查詢同一個隨機預言機,這個假設就不成立。具體來說,考慮協議 $ P1 $ 和 $ P2 $ 查詢隨機預言機 $ R $ : 如果 $ P1 $ 和 $ P2 $ 兩個查詢 $ R $ 在同一個值 $ x $ ,一個或兩個協議的安全分析可能會失效。
解決此問題的常用方法稱為域分離,它允許單個隨機預言機模擬多個獨立的預言機。這是通過確保每個模擬預言機看到的查詢與所有其他模擬預言機看到的查詢不同來實現的。例如,模擬兩個預言機 $ R1 $ 和 $ R2 $ 給定一個預言機 $ R $ , 可以定義
$$ R1(x) := R(\text{“R1”} \mathbin| x) $$ $$ R2(x) := R(\text{“R2”} \mathbin| x) $$
在這個例子中, $ \text{“R1”} $ 和 $ \text{“R2”} $ 被稱為域分隔標籤;他們確保查詢到 $ R1 $ 和 $ R2 $ 不能產生相同的查詢 $ R $ . 因此,治療是安全的 $ R1 $ 和 $ R2 $ 作為獨立的神諭。
隨機預言機就像一種散列函式,同樣的概念也適用於散列函式。
初始值需要是一個不折不扣的數字,以消除對隱藏屬性的懷疑,儘管這是心理上的。
如同 $ \operatorname{SHA-224} $ ,
- $ \operatorname{SHA-384} $ 是一個截斷 $ \operatorname{SHA-512} $ 具有不同的初始值。
- $ \operatorname{SHA-512/256} $ 是一個截斷 $ \operatorname{SHA-512} $ 具有不同的初始值。
- $ \operatorname{SHA-512/224} $ 是一個截斷 $ \operatorname{SHA-512} $ 具有不同的初始值。
作為旁注;自然地,截斷提供了對長度擴展攻擊的抵抗力。