Hash
基於AES的安全雜湊函式
散列函式的安全性如何然後對所有加密塊進行異或?
一點都不安全;生成原像將是微不足道的。這是一個包含三塊消息的展示:
這是您建議的方法(僅限於三個阻止消息):
$ E_0 = Encrypt( IV \oplus P_0 ) $
$ E_1 = Encrypt( E_0 \oplus P_1 ) $
$ E_2 = Encrypt( E_1 \oplus P_2 ) $
$ E_3 = Encrypt( E_2 \oplus 0 ) $
$ Hash = E_0 \oplus E_1 \oplus E_2 \oplus E_3 $
(加密密鑰和 IV 固定)。
查找消息的方法如下 $ (P_0, P_1, P_2) $ 散列到預選值 $ Hash $ :
- 選擇任意值 $ P_2 $ (可能包括最後一個塊的尾隨填充)
- 選擇任意值 $ E_2 $ .
- 計算 $ E_3 = Encrypt( E_2 \oplus 0 ) $ , $ E_1 = Decrypt(E_2) \oplus P_2 $ 和 $ E_0 = Hash \oplus E_1 \oplus E_2 \oplus E_3 $
- 計算 $ P_0 = IV \oplus Decrypt( E_0 ) $ 和 $ P_1 = Decrypt(E_1) \oplus E_0 $
你完成了: $ (P_0, P_1, P_2) $ 散列到預選值;很容易看出散列這個值會導致內部 $ E_0, E_1, E_2, E_3 $ 我們選擇的值,並且對它們進行異或運算將產生預選的雜湊值。