Rsa

幫助解決 RSA CTF 問題

  • March 31, 2022

我正在嘗試解決與 RSA 加密相關的 CTF 問題。

我可以執行一個挑戰二進製文件,該二進製文件將從文件中讀取一個標誌,該標誌將匹配以下正則表達式:

AB1234C\{[0-9a-f]{32}\}\n

所以標誌總共是 42 個字節,包括換行符

然後用隨機填充將該標誌填充到總共 128 個字節。

我可以選擇公共指數e,只要e>1。二進製文件將使用 python 函式生成一個隨機的 2048 位模數Crypto.PublicKey.RSA.generate(bits=2048)

二進製文件將列印出模數以及加密填充標誌的密文。

我可以多次執行二進製文件,每次執行的模數和填充將不同。

我認為這可能與 Hastad 的攻擊有關,但這似乎只適用於線性填充,而 Coppersmith 的短填充攻擊只有在你有兩條隨機填充但使用相同模數加密的消息時才有效,我在這裡沒有因為每次執行二進製文件時都會生成不同的模數。

當談到加密時,我仍然是初學者,所以我可能對這些攻擊有誤,並且可能錯過了一些明顯的東西。

我相信這個漏洞可能與填充的大小有關,因為填充的消息只有模數長度的一半。

我不一定想要解決方案,而只是朝著正確的方向輕推。謝謝。

這是一個 CTF,所以我只是給出一個提示。

我可以選擇公共指數e,只要e>1

我們可以選擇一個 $ e $ 這使得這從一個單一的查詢變得容易?考慮:

… 總共 128 個字節

二進制將生成一個隨機的 2048 位模數

因此,在閱讀@fgrieu 評論後,我再次查看了填充方案,並意識到它實際上是確定性的,而不是我想像的隨機性。我只是使用 Hastad 的攻擊解決了它,所以它實際上是填充的一個弱點。對於錯誤陳述的問題,我深表歉意。

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