Aes

AES 密鑰/密文空間大小

  • February 19, 2013

這讓我現在頭疼…如果我有 AES-128,塊是 128 位,那麼每個明文(128 位)都可以加密為一些也是 128 位的密文。這是塊大小。但是:128 位塊可以有 2^128 個不同的值。因此,如果我有 128 位密鑰——那麼讓每個不同的密鑰為給定的明文產生不同的密文似乎是很自然的—— $ P_1 $ . 所以讓我們再看一個明文—— $ P_2 $ ,也可以加密為 $ 2^{128} $ 不同的輸出塊 - 但仍然是相同的值 - 我們有相同的二進制 128 位塊 - 再次 $ 2^{128} $ values - 相同的值 $ P_1 $ 用過的。AES 如何區分兩者?

第二個問題:AES-256 呢?在這裡我有 $ 2^{256} $ 鍵,但同樣對於給定的明文 - $ P_1 $ 我不能得到更多 $ 2^{128} $ 輸出塊,是我只有 $ 2^{128} $ 即使是 AES-256 的唯一密鑰?以前的情況怎麼樣-我只能 $ 2^{128} $ 不同的輸出塊——那麼有什麼用 $ 2^{256} $ 關鍵空間?不應該為 AES-256 增加塊大小嗎?還是我在這裡犯了一些可怕的錯誤?

因此,如果我有 128 位密鑰 - 那麼讓每個不同的密鑰為給定的明文 - p1 生成不同的密文似乎是很自然的。

事實並非如此。AES 是 128 位塊的鍵控排列,即每個不同的密鑰產生一個唯一的排列。但關鍵空間不是輸出上的排列!事實上,很可能有兩個不同的 AES 密鑰,它們都可以將明文 A 加密為密文 B,對於任何 A 和一些 B(當然,不是所有的 A 和 B,因為這意味著密鑰是等效的) .

任何狀況之下…

AES 如何區分兩者?

您(希望)知道加密密鑰,這會告訴您您想要哪種排列(即使存在兩個等效密鑰,AES 不是這種情況,afaik)。

第二個問題:AES-256 呢?這裡我有 2^256 個密鑰,但是對於給定的明文 - p1 我不能得到超過 2^128 個輸出塊,即使對於 AES-256,我也只有 2^128 個唯一密鑰嗎?

不,所有 $ 2^{256} $ 鍵會產生不同的排列(好吧,至少它們應該如此)。您需要在這裡考慮排列。有 $ 2^{128}! $ 128 位輸入/輸出空間的可能排列。這是一個難以想像的大數字,而且 $ 2^{256} $ 遠小於 $ 2^{128}! $ .

然而,這裡發生的一件事是,不再可能存在兩個不同的 256 位密鑰,它們都將任何 A 加密到某個 B。事實上,由於鴿巢原理,現在可以確定了。這不是問題。

引用自:https://crypto.stackexchange.com/questions/6390