在現代密碼學中,對稱加密密碼一般分為流密碼塊密碼塊密碼根據一個固定長度的位元串來進行操作。塊大小就是這個位串的長度。輸入(明文)和輸出(密文)的長度是相同;輸出不短於輸入——鴿巢原理將導致邏輯上密碼一定可逆的事實——並且不希望輸出長於輸入。

NIST宣布進行高級加密標準評選過程(AES競賽)之前,大多數塊密碼使用類似資料加密標準(DES)的64位(8字節)塊大小。不過生日問題告訴我們,在累計一定數量的塊之後,所有可能的塊的數量變為原來的平方根,將有大約50%的概率兩個塊(或者更多塊)相同,這會開始泄露關於明文的信息。因此,即使當使用適當的加密模式(例如CBC或OFB)時,也只有232 × 8 B = 32 GB的數據可以在同一個密鑰下被安全地傳送[來源請求]。在現實中,為了保證更大的安全性,一般會限制使用同一個密鑰加密的過多的數據,比如只加密幾百兆字節。曾經這個數據的數量被認為是相當大、足夠用的。但在今天,這個上限很容易被超過。如果加密模式沒有適當地隨機擾亂輸入,這個上限會更低。

因此,AES的候選算法要求支持128位(16個字節)的塊大小。這樣對於連續加密最264 × 16 B = 256 艾字節的數據都是可以接受的,並在未來的幾年內是充分安全的。AES競賽的最終獲選算法Rijndael,支持128、192和256位的塊大小和密鑰位數,但在AES中總是使用128位的塊大小。AES標準未接納額外的塊大小。

還有許多塊密碼,如RC5,支持可變的塊大小。它的Luby-Rackoff結構和Outerbridge結構,能夠增加密碼的有效塊大小。

相較而言,Joan Daemen3-Way算法和BaseKing算法使用不常見的塊大小,分別是96位和192位。

參見

參考資料