使用非常小的塊大小如何減少密鑰空間?
我在網上閱讀了這篇文章並感到困惑:
現代塊密碼的塊大小往往為 128 位或更大,因為如果塊大小太小,則會出現與前面描述的小密鑰空間相同的問題——攻擊者可以列舉所有可能的選項,從而破壞算法。
小塊大小如何減少密鑰空間?
小塊大小如何減少密鑰空間?
讓 $ b $ 是塊密碼的塊比特大小。有 $ 2^b $ 可能的塊值,用於明文和密文。對於固定密鑰,有一個密文對應於任何給定的明文,反之亦然。密鑰和分組密碼因此在集合上實現雙射 $ n=2^b $ 可能的塊值。給定一組 $ n $ 元素,有 $ n! $ 這個集合上的雙射。因此最多有 $ (2^b)! $ 我們的分組密碼可能的明文到密文對應/雙射。
無論我們的分組密碼的密鑰有多大,它都必然會生成其中一個 $ (2^b)! $ 對應/雙射。一個 $ k $ -bit key 可以取 $ v=2^k $ 值,因此對於 $ v $ 我們需要的價值觀 $ k=\log_2(v) $ 位的關鍵。因此有效的密鑰空間被限制在 $ k=\log_2((2^b)!) $ 位。 $$ \begin{array}{r|rr} b&1&2&3&4&5&6&7&8&9&10\ \hline k&1&4.6&15.3&44.3&117.7&296.0&716.2&1684.0&3875.2&8769.0 \end{array} $$ 例如,與 $ b=3 $ , 有 $ 2^3=8 $ 可能的塊值,因此 $ 8!=40320 $ 可能的明文到密文對應關係,對應於介於兩者之間的密鑰 $ 15 $ 和 $ 16 $ 位(給 $ 2^{15}=32768 $ 和 $ 2^{16}=65536 $ 鍵)。
因此對於非常小的塊大小(小於大約 6 位),塊大小確實限制了密鑰空間。
但是問題中的引用¹是關於別的東西:重用塊值的風險,而不考慮鍵空間。對於塊值的隨機分佈,一個值在之後被重用的可能性 >39% $ 2^{b/2} $ 塊(見此)。這是較小塊的問題。
為了 $ b=64 $ (如在TDES中), $ 2^{b/2} $ 塊只是 32GiB 的數據。如果我們有兩個使用相同密鑰 TDES- CBC加密的32GiB 文件,並且第一個文件是已知的,那麼我們有 >63% 的機會可以破譯第二個文件的至少 8 個字節,因為第二個文件中的一個塊匹配一個在第一個文件中。
¹ 那句話並沒有說我們轉移到像 128 位這樣的更大的塊,因為更小的塊會危險地減少密鑰空間,這是錯誤的。它說小塊損害安全性,就像小密鑰空間一樣,這是正確的(即使給出的理由相當模糊)。