AES 中替換和置換網路的需求是什麼?
我已經嘗試回答這個問題已經有一段時間了。但是我仍然無法完全直覺地理解。
考慮一個沒有任何替換和置換網路的分組密碼的替代結構。這個塊密碼只是用從主密鑰派生的不同密鑰對消息塊進行異或(類似於 ECB 模式,但每個消息塊具有不同的密鑰)。如果從單個主密鑰生成多個密鑰的密鑰擴展器是密碼安全的,那么生成的分組密碼也應該是密碼安全的。我很確定我的推理不正確,但我無法指出錯誤。
歡迎任何關於為什麼這種構造不好以及為什麼我們需要 AES 中的替換和置換網路的直覺解釋。
這個塊密碼只是對消息塊進行異或
$$ … $$
您在這裡談論“消息塊”的事實表明您正在使用“塊密碼”的那些糟糕的初學者(錯誤)定義之一,它說它是一次加密一個塊的可變長度消息的密碼. 許多介紹性的解釋都這麼說,但這並不是實際密碼學家使用該術語的方式,所以我發現(據說)初學者友好的“定義”是錯誤的和令人困惑的。
理論密碼學中的分組密碼是一種算法,旨在作為偽隨機排列系列的現實實現——一種密鑰算法,它實現了一種功能,以一種在實踐中無法區分的方式對固定長度的數據塊進行加擾其域的隨機選擇排列。這個網站上的這個答案有相當長的篇幅。
您在這裡所說的“塊密碼”的確切含義是至關重要的,因為如果您要使用我批評的“一次加密一個塊的可變長度消息的密碼”,那麼您的建議是:
這個塊密碼只是用從主密鑰派生的不同密鑰對消息塊進行異或
…實際上是一種從分組密碼(在正確意義上)構造安全可變長度密碼的合理方法。廣泛使用的CTR 操作模式實際上是沿著這些構想工作的——您通過將分組密碼應用於消息塊計數器來生成密鑰流(您稱之為“從主密鑰派生的不同密鑰”)。
但是,您的提議存在巨大差距,因為您沒有說明如何從主密鑰中派生子密鑰,只是假設它是“加密安全的”——它的安全意味著什麼?這個應用程序,你是如何實現的?實際上,這是您提到替換/置換網路的一個很好的轉折點,因為這是 AES 用來滿足該要求的“特殊調味料”,如果您擁有的一切都是大師,那麼您根本無法實現鍵和異或。
因此,重申和總結:
- 儘管有大量的初學者材料說“塊密碼”是一種一次加密一個塊的可變長度消息的算法,但這並不是密碼學中的實際技術定義。
- 您通過將可變長度消息拆分為塊並使用“密鑰擴展器”生成的密鑰獨立地對每個消息進行異或運算來加密可變長度消息的想法在其核心是合理且非常普遍的。
- 但是,您忽略了密鑰擴展器的工作方式,而這正是替代/置換網路(或 Feistel 網路等替代技術)適用的技術。這是使 AES 適合用作您的“密鑰擴展器”的原因之一這個應用程序。