給定足夠的 RSA 密文,是否可以確定使用了哪個密鑰?
給定足夠的 RSA 密文,是否可以確定使用哪個公鑰來生成密文?
假設一個用於生成 RSA 密文的未知公鑰,我們有相當多的密文。是否可以確定使用哪個密鑰生成密文?
在我看來,任何密文都在範圍內 $ [0, N) $ 其中 N 是模數。因此,如果您有足夠的密文,您應該能夠估計 N 的值。現在我認為即使給定足夠的密文,這也不足以確定 N。但是我想知道您是否可以確定地從一組公鑰中找出使用了哪個密鑰。
是否有足夠的資訊來確定使用哪個密鑰?是否有一個公式可以讓我計算一組中每個鍵的確定性?該公式是否僅考慮該範圍內的基本機率,或者 RSA 方案中是否有更精確的內容?
只能考慮使用 PKCS#1 v1.5 填充或 OAEP 填充的填充 RSA,而不是原始/教科書 RSA。
是的,可以肯定地確定某個已知集合中的哪個公鑰用於生成使用該集合中的相同密鑰製作的 RSA 密文,給定足夠的密文,並且如果公共模數和隨機填充都不是有意的隱藏使用了哪個公鑰。
假設集合 $ k $ 公鑰具有公共模數 $ N_i $ ,按遞增順序排列,我們最初不知道哪個可能是使用的。如果我們在兩個 PKCS#1 加密填充中的任何一個中選擇隨機填充(隨機且獨立於 RSA 密鑰),則任何 $ r $ 密文在區間上基本一致 $ [0,N_j-1] $ 在哪裡 $ N_j $ 是實際用於生成密文的公共模數。猜測所用公鑰的明顯策略是確定最大的密文 $ C $ ; 集合中最可能的公鑰是具有 $ N_i $ 立即優於 $ C $ , 和 $ i\le j $ 持有。
我們猜測的賠率 $ N_i $ 公共模數是對的 $ 1/\sum_{j\ge i}(N_i/N_j)^r $ ,這僅取決於在哪裡 $ C $ 介於公共模數和這些值之間(理由:僅 $ j\ge i $ 能把持住; 對於這些中的任何一個 $ j $ , 獲得 a 的機率 $ C $ 不高於我們實際得到的 $ p(C,N_j)=(C/N_j)^r $ 在我們知道之前 $ C $ ; 所有這些 $ j $ 然後假設同樣可能;因此,奇數 $ i=j $ 是比例 $ p(C,N_i) $ 超過總和 $ p(C,N_j) $ 為了 $ j\ge i $ ,簡化為給定的表達式)。
注意:很容易打敗這種猜測;例如,當使用 2048 位 $ N $ , 在發送之前加密給定的明文,直到結果為 2047 位或更少。