如果明文長度 <= 密鑰長度,則 AES 中的密鑰長度和消息長度以及完全保密
據我了解,使用 One Time Pad 加密的明文是不可破解的,因為所有可能的相同長度的明文都是可能的。作為一個具體的例子,如果你解密一個你知道是英文的 4 字節明文的前 3 個字節並得到“HEL”(你知道這是正確的),這無助於你解密最後一個字節。明文同樣可能是“HELO”、“HELP”、“HELL”等,您無法知道哪個是正確的。
AES(或類似的流行對稱密鑰加密算法)的具體步驟是什麼,使得使用 n 字節密鑰加密 n 字節明文與一次性密碼不同?
感覺很直覺,如果密鑰比明文短,那麼無論算法如何,所有明文都不可能。反過來(密鑰比明文長)不直覺。
分組密碼,AES 是分組密碼,加密 $ Enc $ 可以形式化為
$$ Enc:\mathcal{P} \times \mathcal{K} \to \mathcal{C} $$在哪裡 $ \mathcal{P} $ 是明文空間, $ \mathcal{K} $ 是鍵空間,並且 $ \mathcal{C} $ 是密文空間。同理解密;$$ Dec :\mathcal{C} \times \mathcal{K} \to \mathcal{P}. $$對於分組密碼 $ \mathcal{P} = \mathcal{C} $ . 該空間的元素數量由位確定,對於 $ \mathcal{P} $ 它由塊大小決定。AES 具有 128 位塊大小,並且具有 $ 2^{128} $ 單個塊的消息空間。對於 DES,它是 $ 2^{64} $ . AES 具有可變的密鑰大小,例如 128,192 和 256,因此,密鑰空間 $ \mathcal{K} $ 是 $ 2^{128},2^{192},\text{ and } 2^{256} $ , 分別。
我們要求分組密碼的操作是可逆的$$ * $$以便我們解密。因此,分組密碼是排列。來自鍵空間的每個鍵為所有可能的排列選擇一個排列。消息空間的排列數為 $ 2^b! $ 在哪裡 $ b $ 是塊大小,對於 AES,這是 $ 2^{128}! $ . 用斯特林近似 $$ 2^{128}! \approx \sqrt{2\pi 2^{128}}(\frac{2^{128}}{e})^{2^{128}}. $$這不能被微小的鍵空間覆蓋 $ 2^{128} $ ,根據比較很小,但對於任何經典計算能力來說都是巨大的。
我們期望分組密碼的行為類似於偽隨機排列,這是一個無法與隨機排列區分開來的函式,而 AES 被認為是其中之一。
回到你的問題;
- AES(或類似的流行對稱密鑰加密算法)的具體步驟是什麼,使得使用 n 字節密鑰加密 n 字節明文與一次性密碼不同?
分組密碼使用混淆擴散範式,Shannon 1945。在這裡,與您的近似值相關的是,更改密鑰的一位將影響所有密文位。如果密碼達到雪崩效應屬性,那麼它將隨機翻轉一半位。因此,塊的所有位都會受到影響(受影響並不意味著更改),而在 OPT 中,更改一位只會影響一位明文位。
- 感覺很直覺,如果密鑰比明文短,那麼無論算法如何,所有明文都不可能。反過來(密鑰比明文長)不直覺。
它不是所有的明文,而是所有的排列。在 AES 中。所有 128 位都是有效的明文,明文空間包含所有內容。但是塊密碼從所有可能的排列空間中隨機選擇排列。使用鍵空間,我們無法涵蓋所有排列。它們僅限於鍵空間。
這是 OTP 和 AES 或任何分組密碼之間的區別。在分組密碼中,無論明文的長度如何,密鑰大小都是固定的。在分組密碼中,我們使用計算安全性,因為如果沒有密鑰位等於消息位,我們就無法實現資訊安全。
- 如果問題是密鑰是否與明文一樣大或更大,那麼為什麼可以將 AES 與完美密碼區分開來?
不能保證給定密文 $ c $ 在所有可能的密鑰下解密 $ c=AES_k(x) $ 給出所有可能的明文或給出所有但它們是均勻分佈的。這與 OTP 的完美保密性相矛盾。
為了證明AES在這個意義上具有完美的保密性,我們需要對AES進行全面分析。這超出了我們的計算點。如果可能,它可能會導致已知明文攻擊。
雖然分組密碼可以達到所有可能的明文是合理的屬性,但同樣,大多數分組密碼都試圖近似隨機排列,其中每個密鑰都獨立於其他密鑰。這意味著我們可能無法通過解密獲得所有明文 $ c=AES_k(x) $ 在所有鍵下。或者類似地,可能有明文 $ E_{k_1}(c)=E_{k_2}(c) $ .
$$ * $$分組密碼需要操作模式,並非所有模式都需要解密,如 CTR 模式。在 CTR 模式下,可以使用不是排列的雜湊函式。