使用分組密碼模式的手密碼有多安全?
我一直在研究需要非常小的計算能力的不同密碼(計算器、紙牌、索引卡和鉛筆),即手密碼。在大多數情況下,隨著電腦的出現,通常討論的所有方法都被認為是不安全的。搜尋模式、針對語言統計數據進行測試等都很容易用電腦執行,更不用說只需要一個小密鑰空間並且不需要大量操作(這是手密碼的要求)。
所以我在想,如果你將分組密碼模式合併到手密碼中會怎樣。它會變得更加安全嗎?大多數 BCM 不需要很多額外的努力,因此人類所需的力量不會是荒謬的。並且希望它們能夠提供一些保護,防止電腦可以執行的操作來智能地破譯密鑰/明文。
如果我們允許兩個方格使用全部大寫字母和 0-9,我們在 6x6 方格中可能有 36 個字元。這是一個關鍵空間
36! x 36! = 1.378e83
一個 256 位的密鑰,
2^256 = 1.158e77
所以我認為我們的手密碼有一個很好的開始。我選擇了輸出回饋模式,因為您無法執行並行解密並且它包含單個操作。有很多模式,但我認為這很簡單。選擇一個更好的,我在這裡的使用只是為了擺脫Two-Square 只是Ciphertext 和Cleartext 之間的映射的事實。
假設我們加密了 10 個字元的消息。它非常短,不能真正對數據使用任何類型的分析來猜測密鑰或明文(即使 BCM 有望解決這些問題)。對於非常簡單的數學,讓我們對執行解密所需的操作做出以下假設:
- 塊密碼加密:每個字元 1 次操作(它是一個兩點的查找表)
- XOR 加密和明文/密文:每個字元 1 次操作
為了使這些更簡單,我們假設載入數據或其他任何東西都沒有成本。不現實,但 I/O 始終是我們所做的任何事情的瓶頸,因此我們將跳過它。
假設您擁有密鑰,10 個字元的密文將需要 20 次操作才能解密。如果我們說平均蠻力方法應該佔用一半的密鑰空間來破壞我們擁有的系統
20 * (1.378e83 / 2) = 1.378e84 operations
看起來目前最快的 i7 晶片可以達到 240,000 MIPS,所以糟糕的數學告訴我們
1.378e84 ops / 240,000 MIPS = 5.742e72 seconds
或
1.821e65 years
。那麼我在這裡遺漏了什麼,因為這似乎是一個非常簡單的算法,即使是非常小的消息,也需要大量的工作來蠻力。我知道我使用的是粗略的數字,但即使是其中的 1/1,000,000 仍然是一個巨大的時間。如果分組密碼模式可以允許更大的消息而不洩露有關消息的統計資訊,這難道不是一種非常安全的加密方法嗎?而且由於人類既慢又懶惰,沒有人會真正想要手動加密大量數據。所以真的一封簡短的信不應該那麼容易破解。
編輯:
為了更清楚一點,這裡是輸出回饋的維基百科圖像:
塊密碼加密步驟將只使用二次方密碼(而不是像 AES 之類的密碼)。所以基本上我的問題歸結為,如果你有足夠大的密鑰空間,足夠小的密文,一個非常簡單的加密算法可以提供安全性嗎?
編輯 2
每個字元都可以映射到一個數值。A=1, B=2, 0=27 等等。由於異或對人腦來說有點難以執行,你可以在加密時將兩個字元加在一起,在解密時將它們相減。
A+B=C, C-B=A
. 如果您翻到列表的末尾,您將從頭開始。8 + C = B
減法的工作方式相同。問題實際上是關於大多數經典密碼基於對明文的依賴和對其他密文或任何其他數據的獨立性的缺陷。例如,如果明文中的兩個字元多次出現在同一個塊中,它們會產生相同的密文值。但是,如果這些經典密碼被用於偽隨機流生成呢?除非您正在生成大量數據,否則不應該將經典密碼的許多缺陷最小化或完全消除嗎?
如果您要將分組密碼模式合併到手密碼中怎麼辦
那條線有點誤導,暗示了潛在的誤解。“操作模式”更像是您包裹在分組密碼中的東西……而不是您合併或嵌入到密碼算法中的東西。
如果你有足夠大的密鑰空間,足夠小的密文,一個非常簡單的加密算法能提供安全嗎?
一般來說:是的。
可能最著名的例子是 OTP(一次性密碼),其中密鑰空間與要加密/解密的消息一樣大。
如果你願意,你甚至可以通過雙 OTP 等方式推動這種假設的荒謬性。最後,你的子問題將以問自己“你期望多少安全”和“多少不便”開始和結束。願意和/或能夠處理(想想:密鑰交換、密鑰儲存等)以實現該安全級別。
然而,像你提到的二次方密碼這樣的東西完全不同,並且提供的資訊理論安全性比 OTP 少得多……至少可以這麼說。這正是我的***“一般來說:是的”。很快變成了“在那種情況下:不”。*(強烈希望添加通常的署名:“拜託,當您真正期望加密安全時,甚至不要考慮它。)
看起來目前最快的 i7 晶片可以達到 240,000 MIPS,所以糟糕的數學告訴我們……
在談論諸如暴力攻擊之類的事情時,這可能更相關,但即使假設這是主要的攻擊媒介——請記住,暴力攻擊者肯定會使用更快的東西,如專用 ASIC、FPGA 和/或整個“計算農場”,以確保它們以最佳速度進行攻擊。
現在,將其與您所說的評論進行比較……
用計算器以每分鐘十幾個字元的速度
…事實上,您甚至不會使用 2⁸ 位/字元。
我會簡短地說,你的直覺應該已經暗示了這樣一個事實,即你不會有太多機會贏得那場比賽,並且操作模式不是一個魔法盾牌,可以讓弱或破密碼變得更強大。個人弱點仍然存在;您只需將它們包裹在精美的禮品紙中,以便攻擊者打開。這可能會對攻擊者造成輕微的干擾,但它不會保存您的消息,因為密碼缺陷仍然存在並且(在大多數情況下)可以檢測到。最後,你希望通過應用一種操作模式獲得的東西將被一個核心問題所抵消:弱或損壞的密碼算法。
至於你的主要問題:
使用分組密碼模式的手密碼有多安全?
這取決於密碼、模式、消息、密鑰……整個場景。所以,實際上有太多的事情需要考慮才能以一種既讓你滿意又適合這個小答案框的方式回答你的主要問題。
但有一件事是肯定的:***一種操作模式不會修復弱或損壞的密碼。***這不是為什麼操作模式而設計的;這不是一種操作模式的本意。因此,您不能真正期望操作模式能夠修復分組密碼算法中的弱點。當然,一種操作模式可能(或可能不會)隱藏分組密碼的一些甚至全部缺陷。但這不會提供任何類型的加密安全性(僅是晦澀難懂的),而所有可能與弱或損壞的密碼算法一起出現的缺陷仍將通過密文傳播。