Encryption
是否可以通過比較未加密和加密文件來獲得 RSA 加密密鑰?
正是標題所說的。如果我有一個 RSA 加密文件,以及完全相同的文件但已解密,我可以從該資訊中分辨出使用的密鑰嗎?
不,如果 RSA 密碼系統是安全的,即當它使用隨機填充(如 PKCS#1 v1.5 填充或 OAEP)時,則不能。正如斯蒂芬已經想到的那樣,您很可能僅僅因為它被包含或可以派生而找到密鑰;通常公鑰並不意味著安全。
如果使用教科書(原始模冪)RSA,那麼您可以使用公鑰進行加密。如果你得到相同的值,那麼很可能你已經找到了公鑰。但通常不使用教科書 RSA,因為它在其他幾個方面也是不安全的。密文可區分性只是問題之一。
現在當然仍然可以從密文中提取一些資訊。首先,RSA密文的長度一般與密鑰大小相同。因此,您可以區分幾種長度的鍵。此外,如果您發現一個高於公鑰模數的 RSA 密文,那麼該密鑰肯定不會用於生成密文。
您明確要求提供作為公鑰的加密密鑰。如果您的意思是私有解密密鑰,那麼,不,除了少量數據也可用於公鑰之外,無法導出密鑰。
請注意,RSA 永遠不會直接用於加密文件。相反,需要使用混合密碼系統。通常的 RSA 方案對於加密大於模數減去填充成本的數據是不安全的。此外,使用 RSA 加密大量數據會佔用大量CPU,而解密會更糟。
密文應該看起來像 1 和模數內的隨機元素(因為它是 Yehuda Lindell 指出的該範圍內的值)。在不知道模數的情況下,區分用不同密鑰加密的兩個密文應該是不可行的。
如果公鑰儲存在某個密鑰數據庫中,您可以嘗試使用所有儲存的密鑰對解密的文本進行加密,並測試加密是否與文本匹配。無論如何,使用經典電腦在多項式時間內還不可能找到私鑰。
更新:謝謝@Yehuda Lindell 的評論。