Rsa

攻擊 RSA 知道公鑰並暴力破解所有可能的消息

  • April 8, 2018

愛麗絲想發送一條消息 $ m $ 給 Bob,並用 Bob 公鑰加密 $ K_B $ .

$ A \rightarrow B : {m}K_B $

假設我已經攔截了 $ {m}K_B $ , 我知道 $ K_B $ 我知道 $ m \in D $ (Alice 消息屬於一個相對較小的字典,稱為 $ D $ )

通過蠻力攻擊,我可以通過所有 $ x \in D $ 所以我發現 $ {x}K_B = {m}K_B $ ?

如果使用教科書 RSA,那麼許多攻擊都是可能的,包括字典攻擊。這是因為模冪運算中使用的值(在標準中稱為 RSAEP )只是解碼為數字的輸入。但是,明文 RSA 容易受到許多攻擊,並且不被認為是安全的;一個相當明顯的情況是,當一條值為 0 或 1 的消息被加密時,輸出也將是 0 或 1;無需攻擊。

然而,通常使用安全填充方法。來自 RSA 實驗室的原始方案是 PKCS#1 v1.5 填充。此填充“包裝”消息並包含許多與消息一起加密的隨機位。攻擊者知道這些位。它們可用於檢查解密是否成功。然而,後來的填充方法 OAEP 被證明是安全的,但是應該使用 PKCS#1 v1.5,因為它容易受到對消息未填充的攻擊。OAEP 與 v1.5 填充一樣,使用隨機位。

PKCS#1 讀取 OAEP“生成長度為 hLen 的隨機八位字節字元串種子”,其中 hLen 是 MGF-1 中使用的雜湊函式,通常是 SHA-1。這意味著 hLen 至少為 160 位。這意味著 160 位隨機性與消息一起被加密。PKCS#1 v1.5 填充至少為 63.95 位,但通常更多(填充量取決於密鑰和消息大小之間的差異)。

所以不,你不能使用字典攻擊,因為 RSA 加密的輸出總是與給定的消息不同 - 如果使用安全填充。但是,如果由於某種原因隨機數生成器失敗並洩漏了非隨機位,那麼您可以匹配填充,並執行字典攻擊。

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