Cryptanalysis

使用標準問候等的已知明文攻擊

  • January 6, 2021

在所有現代密碼中,即使一位輸入發生變化,那麼由於擴散,一半的輸出也會發生變化。考慮到這一點,知道標準稱呼等(“Hello Alice”或消息的其他已知部分)究竟將如何用於發起攻擊。您不知道整個純文字,而只知道純文字的一部分。那麼它到底有什麼幫助呢?

已知明文攻擊 (KPA) 是低於選擇明文攻擊 (CPA) 的安全級別,我們希望所有密碼中至少有 CPA。實際上,我們在現代密碼學中想要更多;工業註冊會計師

經典密碼學時代包含大量可以通過 KPA 攻擊輕鬆破解的範例;移位、排列、Vegenere 和Hill密碼就是一些例子。

在現代,KPA 可用於如下鍵搜尋。

  • 蠻力攻擊; 搜尋所有鍵
 # c = E(k,m) for some key k we are looking for
 for i in keys:
   if c == E(i,m):
      return i

歷史上一個有趣的例子是RSA 的 DES 挑戰,其中包含給定的部分資訊**。未知的資訊是:**在完整的明文上,參賽者需要在給定完整密文的情況下找到密鑰。他們使用類似於上述的蠻力攻擊。由於 DES 的密鑰大小為 56 位,因此攻擊成功。

以上仍然可以認為是一種經典的尋找鑰匙的方法,技術進步有助於尋找鑰匙。1992 年,Matsui 和 Yamagish 在他們的小說論文上發起了一場現代小說攻擊

這現在稱為線稿攻擊。在攻擊 DES 時,它需要 $ 2^{43} $ 松井在 1994 年已知的明文。

如果您想了解線性攻擊,Heys的教程是一個很好的起點。

現在回到你的具體問題;

(“Hello Alice”或消息的其他已知部分)用於發起攻擊。您不知道整個純文字,而只知道純文字的一部分。那麼它到底有什麼幫助呢?

首先,根據Kerckhoff 原理,我們假設除了我們假設的所有關於目標系統的密鑰,例如消息如何轉換為字節進行加密。

  • 如果該位置在 RSA DES 挑戰中是已知的,那麼如果適合一個塊,則該知識可以很容易地轉換為已知明文。AES 至少需要 16 個字元,DES 至少需要 8 個字元。

為DES和Hello Alice形成多個塊。如果您對 DES 進行暴力破解,那麼第一個塊可用於查找關鍵候選者,是的,候選者不止一個。然後可以使用下一個塊的解密來查明消息。Hello Al``ice?????

# c = E(k,m) for some key k 
# we are looking for the possibele key for full known message block m
for i in keys:
  if c == E(i,m):
     m' = D(i,c')             # c' is the other message blocks  
     if m' is a valid string  # check the validity of m'
       return i 
  • 一種特殊情況,如果我們沒有完整的塊,則通過解密執行暴力破解,並且對於包含部分資訊的每個可能的候選者,通過解密其餘密文來查找有意義的字元串。這可以使用 Linuxstring命令之類的工具自動化,並且可能在最後檢查 PKCS#5 填充將消除大多數候選者。
  • 如果位置未知

與蠻力相比,這是一個需要解決的小問題,並且實際上取決於消息的大小。如果消息大小為 $ t $ 並且已知的消息部分是 $ l $ 然後需要尋找 $ t-l $ 職位。因此,蠻力的成本乘以 $ t-l $ . 對於短消息,這不是一個真正的問題,但是當消息大小超過 $ 2^{32} $ 那麼蠻力成本就變成了 $ 2^{80} $ 對於 DES 和 $ 2^{160} $ 對於 AES。

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