是否有可能获得RSA私钥知道公钥和“原始数据=>加密数据”条目集?

时间:2010-04-17 18:21:46

标签: security rsa

我在apllication上工作,它允许插件访问不同的功能集,每个插件都提供“初始化字符串”,用于设置对不同功能的访问级别。开发人员向我发送此字符串,并使用我的1024位RSA私钥对其进行加密,然后将编码数据发回。启动时,我的应用程序使用内置公钥解码编码数据(编码初始化字符串),如果“解码数据!=初始化字符串”则无法启动。

那么,是否可以使用“初始化字符串”=>的数据库? “编码初始化字符串”(从其他插件中提取)来破解我的私钥,或者可以在合理的时间内强制它?

3 个答案:

答案 0 :(得分:5)

这种密码分析攻击被称为known plaintext attack,应该很难在RSA1024上应用。

或者至少,试图用已知的明文来破解RSA密钥就像没有它们一样努力去做,与你的问题相关的唯一已知类型的攻击是定时攻击,但它需要很好地了解RSA的具体实现,因为它通过测量解密所需的时间来工作。

事实上,RSA的安全性是由两个复杂的数学问题给出的,并且知道纯文本和相关的密文并没有给你太多帮助。

在任何情况下,已知明文攻击通常需要执行大量样本(如数百万或数十亿 DES )所以对于较弱的人来说也不是那么容易算法

答案 1 :(得分:5)

如果您说“使用RSA私钥加密”,那么您实际上并不是在加密内容。这是一个历史性的混乱。您正在做的是数字签名,插件使用相应的公钥进行验证。令人困惑的是,在适当的光线下,RSA签名可被视为一种“反向加密”,其中私钥首先起作用。但是,它在一些细节方面有所不同(例如填充和散列函数的参与),这使得它在实现时完全不同。

如果您正在使用正确的 RSA数字签名方案(例如PKCS#1第8节“带附录的签名方案”中所述的方案之一),通过正确实现的密钥生成算法生成的足够大的RSA密钥(1024位或更多),然后没有已知的,计算上可行的方法让攻击者利用您生成的签名以便伪造新签名(以及一个fortiori ,破解RSA私钥)。没有证据证明你的签名不能帮助攻击者,但是30年来关于这个问题的公众研究没有提出这样的违规行为。

但请注意,使用细节,特别是填充(初始部分,将待签名数据转换为RSA的数学核心可以处理的大数字)已被证明是微妙的;很多提议的填充方法都被成功攻击了。 PKCS#1填充已经被审查了相当长的一段时间(“v1.5”填充二十年)并且抵制了迄今为止所有这些尝试。 “ISO 9796”系列填充物的表现并不好,许多变种已被打破。

如果您根据完善的标准(即PKCS#1)计算您的签名,那么您正在寻找麻烦。不要那样做。幸运的是,大多数RSA实现(在加密库和编程语言/环境中)遵循PKCS#1。

答案 2 :(得分:2)

RSA公钥/私钥技术的重点在于非常难以逆转。

已知的裂缝利用了一些特定的实施缺点,但基本算法被认为需要数十年才能产生暴力攻击。请参阅this