RSA:使用多个密钥加密消息

5

使用两个或更多RSA密钥加密消息是否可以获得额外的安全性?

编辑:一些澄清:

我最感兴趣的情况是加密随机生成的对称密钥。

我不想限制问题只在连续加密两次的情况下讨论;目的是避免大型RSA密钥的高计算成本。应该考虑使用更少直接的策略,例如将消息分解为部分并分别加密。

应假定仅获取消息的一部分是可接受的。

如果您知道任何专家讨论此事的出版物或使用多个RSA密钥的算法,请贡献。


4
我认为提高安全性的标准方法是使用更大的密钥尺寸。 - R Samuel Klatchko
不,你认为用两个密钥加密消息会更安全吗? - berkay
3
即使没有更加微妙的假设,使用两个密钥加密您的消息会使解密难度翻倍——而使用一个密钥并将原始长度翻倍,则总共使用相同数量的密钥位,但提供了数量级更高的难度。 - Nick Johnson
这样想吧。如果加密两次能够让攻击者的难度提高一倍,那么通过在第一个加密密钥中添加一个比特位,您可以获得完全相同的难度增加。希望能有所帮助。 - Slartibartfast
5个回答

5

可以对密码学进行思想实验,这是不安全的。建议您只按照专家的经验保持狭窄的道路。

当专家想要更好地保护某些东西时,他们会使用更大的密钥长度(至少需要2048位,较小的证书不足以令人放心),或者使用椭圆曲线证书而不是RSA证书。

顺便提一下,您需要记住,消息正文通常使用对称密码和随机密钥加密,只有这个随机密钥才使用收件人的公钥进行加密。双重加密此秘密密钥不会使该秘密密钥变长,并且不会影响攻击者暴力破解该密钥的能力。

量子密码学 - 我之所以提到它,只是因为它很令人兴奋,您不需要将其纳入选择范围 - 对于密钥大小有着有趣的承诺:RSA密钥将被Shor算法摧毁,但对称密钥(Grover)将只被缩短一半(128位将相当于64位,因此可被破解)。当然,关于这样的量子机是否可以实现等等还存在争论 :)


1

不行。

如果密钥A被破解,那么使用A+B加密可以保护免受破解,但在除此特殊情况之外,您将获得任何额外的好处。


这是否意味着单个Key3可以解密RSA(Key1, RSA(Key2, Message))?否则,我很难相信没有“额外的好处”。 - Mike
@mike:我相当确定Key3可能不存在,如果存在的话,它与Key1和Key2之间的关系可能是扭曲的(不可逆的?)。然而,我不是密码学家。这只是基于多个接收者加密消息的方式和多因素密钥系统的使用进行的推测。请勿在家中尝试,本优惠在内布拉斯加州无效。 - msw
我确定Key3存在,但关系是不可逆的。最好的情况就像试图破解RSA(Key1)一样,其中损害Key1的一部分是无济于事的。然而,Key3可能比Key1更多位。 - Joshua
@Joshua:积极?那是什么,或者至少你为什么积极? - President James K. Polk
GregS:因为RSA无法通过均匀零知识证明,所以必须存在Key3(请注意,Key3的算法不能保证是RSA)。对于RSA来说,没有弱明文,因此增加深度也不会使问题变得更容易。QED。 - Joshua
显示剩余2条评论

1

组合密码

假设您有一个加密函数E(M,K),其中M是明文消息,K是密钥。假设E中不存在已知的漏洞。

您生成两个完全不相关的密钥K1K2

如果以E(E(M,K1),K2)的形式组合它们,则保证无法通过这种方式实际上失去安全性。如果从加密E(M,K1)开始可能会丢失安全性,无论使用K2还是任何其他密钥,都会破坏密码,因为攻击者可以执行E(E(M,K1),KF),其中KF是攻击者希望选择的任何密钥。

有关更多信息,请参见此处

使用不同的密钥加密每个第二个块

这里的含义是显而易见的。假设您使用了适当构建的加密原语,其中包括加密函数:密钥组合,如果您将每个第二个块使用来自两个密钥集中不同密钥的加密方式进行加密,则攻击者只能解密他拥有密钥的块。

0
除了已经给出的答案,如果不进行一些修补,它也根本无法工作。非常简单地说,其中一个模数必须大于另一个模数。如果您先对较大的模数执行RSA模运算,然后对较小的模数进行模运算,则会丢失信息,并且无法保证成功解密。显而易见的修补程序是始终使用较小的模数进行加密。当然,您必须按相反的顺序执行解密。另一个简单的修补程序是选择大小非常接近的模数,以便遇到无法唯一解密的密文的概率非常小。

0

是的!

但不要使用原始加密。使用RSA加密方案。不要像重新使用第二个密钥重新加密加密消息一样,这可能会产生削弱效果(我不知道),而是使用共享秘密算法将您的秘密分成两部分。共享秘密算法使得可以将一个秘密分成n个部分,并确保如果攻击者设法获得n-1个部分,则他对秘密一无所知。因此,不要简单地将秘密分成两部分。

然后,您可以拥有多于2个RSA密钥。共享秘密算法的另一个强大属性是,可以将秘密分散在n个部分上,并仅要求恢复秘密的m个部分,其中m小于n。这使得秘密恢复更加鲁棒,可以抵御部分丢失。

在此处查看有关共享秘密的更多信息:http://en.wikipedia.org/wiki/Shared_secret


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接