Encryption

在沒有填充的情況下對 RSA/ECB 執行字典攻擊

  • December 3, 2018

我有指數 $ e=2^{16}+1 $ 和模量 $ n $ RSA 公鑰(154 位數字)與密文(64 字節)一起使用與 RSA/ECB 相同的密鑰加密且無填充。

我需要解密密文並有兩個選擇:-

  1. 找出主要因素 $ n $ , $ p $ 和 $ q $ , 以確定可用於解密的私鑰,或
  2. 使用字典攻擊(~135k 單詞)

考慮到模數有多大,第一個選項對我來說似乎不可行,所以我認為第二個選項更有可能。

那麼我的問題是,我將從哪裡開始對上述密文進行字典攻擊?我最初的想法是遍歷字典中的每個單詞,使用上面的公鑰對其進行加密並檢查密文是否包含結果,但是字典中的單詞長度最多為 30,所以這肯定需要一段時間。

如果正確生成了公共模數,則選項 2(候選明文的強力字典搜尋)將更快。選項 1(將 ≈512 位 RSA 整數分解)是可行的,但即使使用最知名的算法 (GNFS) 也可能是計算密集型的。另一方面,如果使用隨機填充(應該這樣做,並且在任何好的實踐中都是如此),那麼選項 2 將不可行。

首先要確定字典單詞的加密方式,包括密文的格式。

我認為 Python 3 的速度可能是可以接受的,只要檢查明文的位置是否pow(m,e,n)==c在加密中適當地轉換為整數,以及密文是否適當地轉換回整數。為了(也許只是稍微)更好的速度,使用GMP編寫一個編譯程序。m``c

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