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

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位。

參見 編輯

參考資料 編輯