Encryption

建構一個“簡單的”、毫不費力的、可證明抗 KPA 的對稱密碼

  • July 15, 2020

為什麼 AES 是安全的?顯然沒有答案 -為什麼 AES 能夠抵抗已知明文攻擊?.

考慮到這一點,人們顯然會想要一種在數學上可以證明能夠抵抗 KPA 的密碼。一個人將如何建構這樣一個密碼?已經完成了嗎?可以做到嗎?有人在做嗎?為什麼還沒有完成?你能至少責怪數學嗎?

當我查看 AES 時,我看到一堆隨機的袖手旁觀的操作,如前所述,幾乎沒有任何解釋。為什麼不能有一種簡單、高效、安全的算法來加密事物?

想像一個簡單的(例如異或)密碼,它有一個 256 位的密鑰,應用於每個 256 位對齊的明文塊。假設它不容易受到 KPA 和其他攻擊。考慮到 AES 的潛在缺陷,即使不是更好,它也會與 AES-256 一樣安全。問題解決了?不幸的是,沒有;矛盾。

考慮到這一點,人們顯然會想要一種在數學上可以證明能夠抵抗 KPA 的密碼。

任何具有大於密鑰空間的消息空間並且無條件地證明可以抵抗已知明文攻擊同時可以有效計算的方案都意味著 $ P\neq NP $ . 因為我們不確定是否 $ P\neq NP $ 成立,這是一個眾所周知的棘手問題,似乎很難建立這樣的密碼。

但是,如果您願意做出假設,我們知道可證明的安全結構。問題在於,儘管大多數這些假設和構造導緻密碼比像 AES 這樣的啟發式設計良好的密碼沒有真正的安全優勢,而且速度要慢得多*。*

當我查看 AES 時,我看到一堆隨機的袖手旁觀的操作,如前所述,幾乎沒有任何解釋。

雖然乍一看可能是這樣,但 AES 的設計非常周到。如果您想了解有關此主題的更多資訊,我建議您閱讀有關為什麼 AES 看起來如此的書: Rijndael 和 Daemen的“The Design of Rijndael”

一個人將如何建構這樣一個密碼?已經完成了嗎?可以做到嗎?

如果您有一個至少與消息一樣長的密鑰(並且不要重複使用該密鑰來加密第二條消息),我們知道如何做到這一點(這並不難)。除此之外,不,我們不知道該怎麼做;我們甚至不知道它可以做到。

我們能得到的最接近的方法是創建一個密碼,如果你能破解它,你就可以解決一些其他普遍接受的難題(例如,分解一個大的合數)。另一方面,這只是在轉移問題,因為我們無法證明分解大合數實際上比破壞 AES-256 更難。

當我查看 AES 時,我看到一堆隨機的袖手旁觀的操作,如前所述,幾乎沒有任何解釋。

實際上,AES 團隊公佈了他們的運營理由;他們選擇的操作可證明可以抵抗許多通用攻擊(差分、線性和飽和密碼分析)。當然,由於他們無法證明他們的結構不易受到未知攻擊,他們還沒有證明他們是 KPA(因此他們就像所有其他小密鑰密碼一樣)。

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