Encryption

具有 1 個時間複雜秘密密碼的完美保密

  • June 2, 2017

是否有可能通過使用完全秘密的密碼來實現完美的保密、牢不可破、不可猜測、不可破解?

必須滿足以下條件:

  • 僅使用秘密密碼 1 次,因此無法實現輸出之間的相關性

  • 密碼本身必須從大量可能性中選擇並且具有很高的複雜性,以便攻擊者無法選擇只執行所有密碼操作組合(XOR、NOR、ShiftRows、Shiftcolumns 等)。

  • 所以攻擊者只知道輸出,不知道私鑰,不知道密碼,也不知道輸入。攻擊者也不知道輸入相對於輸出的大小,除了輸入是 < 或 = 到輸出之外,但不知道精確的大小。此外,密碼不會被共享,因此 1 人使用 1 次,其他使用者不得使用。

  • 現在只使用 1 次密碼是不言自明的。如果您多次使用它,並且密碼很弱,那麼可能會在多個輸出之間安裝某種相關攻擊來恢復輸入。

  • 現在密碼的複雜性也應該是顯而易見的。就像如果你只是選擇一個簡單的密碼,比如冷戰時期的舊密碼之一,或者類似結構的密碼,那麼對手可以遍歷所有密碼操作的可能組合,然後暴力破解每個操作。這會讓他慢下來,但不會阻止他。


那麼有人可能會說這違反了Kerckhoffs原理,但我不同意。

因為如果密碼是秘密的,那麼獲得密碼就相當於獲得了私鑰。如果攻擊者可以通過某種側通道攻擊獲得密碼,那麼他可以通過同樣的努力完全獲得密鑰並解密消息。

所以一個沒人知道的秘密密碼,而且它足夠複雜,就像Navajo code在二戰期間使用的那樣。

而且輸入本身是未知的,就像攻擊者甚至不知道要尋找什麼,那麼即使他破解N了密碼輪,他也完全不知道要尋找什麼,也不知道要尋找多少輪就剩下了。它甚至不知道他使用的算法是否正確。

所以這甚至不像大海撈針。這就像大海撈針,沒有針,攻擊者甚至不知道要尋找什麼。

是否有可能通過使用完全秘密的密碼來實現完美的保密、牢不可破、不可猜測、不可破解?

有兩個不同的問題:你能不能得到完美的保密,你能不能得到一個無法破解的加密算法。

完美保密

One Time Pad已經是一種眾所周知的結構。假設任何提供完美保密的結構實際上等同於一次性密碼,那麼使用秘密密碼來獲得完美保密是不可能的。

假設您確實開發了一些提供完美保密的其他算法,那麼保留該算法將沒有必要或改進任何東西:可以用 One Time Pad 證明這一點,因為它在資訊理論上是安全的,儘管對手知道OTP 用於加密消息。

牢不可破、不可猜測、不可破解等

理論上,可能不會。

在實踐中,是的。然而,再一次,這是可以/可以在不訴諸算法保密的情況下實現的;它通常是通過創建了解對手將如何攻擊的設計來完成的。

那麼有人可能會說這違反了Kerckhoffs的原則,但我不同意。

這就是違反Kerckhoffs 原則的定義:密碼系統應該是安全的,即使敵人知道除了密鑰之外的一切。看來你不是不同意這個方案是否違反原則,而是這個原則是否值得堅持。

算法作為密鑰

對算法保密意味著算法成為關鍵材料。我們可以(並且確實)用比特來量化密鑰的大小;您的算法有一個最小表示,它需要最少的位數來表示。

真正的問題是對稱密鑰應該在兩方之間共享。秘密算法是必須在各方之間共享的對稱密鑰。這極大地增加了將“關鍵”暴露給對手的機會。

因為你必須在某個地方物理執行它,所以你必須確保程序的副本永遠不會在磁碟上結束,永遠不會在記憶體中徘徊,沒有人看到原始碼,沒有人可以看到 CPU 是什麼正在做。即使許多眼睛都在仔細檢查錯誤的來源,也很難做出這些保證。

在假設對手不知道任何明文的假設下創建密碼系統意味著您只加密完全隨機的數據塊。如果您要加密隨機數據以外的任何內容,則不會滿足此假設,並且任何進一步的分析都是浪費。

將算法(和所有明文消息)保密以阻止密碼分析實際上等同於“希望”對手不會發現算法中的任何缺陷。“希望”不是密碼學所提供的;密碼學提供確定性,最好使用盡可能少的假設來對抗盡可能強大的對手。理解設計可以提供****可證明安全性的算法,而不是希望,這是一種經過驗證的卓越實踐。

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