塊大小

在現代密碼學中 ， 對稱加密密碼一般分爲流密碼和塊密碼 。 塊密碼根據一個固定長度的位元串來進行操作 。 塊大小就是這個位串的長度 。 輸入 （ 明文 ） 和輸出 （ 密文 ） 的長度是相同 ； 輸出不短於輸入 — — 鴿巢原理將導致邏輯上密碼一定可逆的事實 — — 並且不希望輸出長於輸入 。 在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 Daemen的3 - Way算法和BaseKing算法使用不常見的塊大小 ， 分別是96位和192位 。