是否可以通过使用 2 个或更多 RSA 密钥加密消息来获得额外的安全性?
编辑: 一些澄清:
我最感兴趣的上下文是加密随机生成的对称密钥。
我不想将问题限制为连续加密两次;目的是避免大型 RSA 密钥的高计算成本。应考虑使用不太直接的策略,例如将消息分成几部分并分别加密它们。
应该假设只获取部分消息是可以接受的。
如果您知道专家专门讨论此问题的任何出版物,或使用多个 RSA 密钥的算法,请提供帮助。
是否可以通过使用 2 个或更多 RSA 密钥加密消息来获得额外的安全性?
编辑: 一些澄清:
我最感兴趣的上下文是加密随机生成的对称密钥。
我不想将问题限制为连续加密两次;目的是避免大型 RSA 密钥的高计算成本。应考虑使用不太直接的策略,例如将消息分成几部分并分别加密它们。
应该假设只获取部分消息是可以接受的。
如果您知道专家专门讨论此问题的任何出版物,或使用多个 RSA 密钥的算法,请提供帮助。
没有。
做关于密码学的思想实验是不安全的。建议您小心翼翼地走专家走过的路。
而当专家想要更好地保护某些东西时,他们会使用更大的密钥大小(至少需要 2048 位,更小的证书不足以让您安心)或使用椭圆曲线证书而不是 RSA。
顺便说一句,您还记得您的消息正文通常使用对称密码和随机密钥进行加密,并且只有这个随机密钥是使用收件人的公钥加密的。双重加密此密钥不会使此密钥更长,也不会影响攻击者暴力破解的能力。
量子密码学——我只是把它作为一个令人兴奋的话题提到它,你不需要在你的选择中考虑到这一点——为密钥大小提供了有趣的东西:RSA 密钥将被Shor的算法消除,但对称密钥(Grover的)将只有一半长度(128 位相当于 64 位,因此可以破解)。当然,关于这种量子机器是否可以实现等问题存在争议:)
不。
如果密钥 A 被泄露而不是使用 A+B 加密将防止泄露,但在这种特殊情况之外,您不会获得额外的好处。
组成密码
假设您有一个加密功能E(M, K)
,M
明文消息在哪里,密钥在哪里K
。假设E
.
您生成两个完全不相关的键K1
和K2
.
可以保证,如果您将它们组合成 form E(E(M, K1), K2)
,那么实际上不可能以这种方式失去安全性。如果加密可能会失去安全性,无论是E(M, K1)
使用K2
密钥还是任何其他密钥,密码都会被破坏,因为攻击者可以E(E(M, K1), KF)
在KF
攻击者希望选择的任何密钥的位置进行操作。
有关更多信息,请参见此处。
使用不同的密钥加密每个第二个块
这里的含义是显而易见的。假设您使用正确组合的密码原语和两种encryption function:key
组合,如果您使用两个密钥集中的不同密钥加密每隔一个块,则攻击者只能解密他拥有密钥的块。
除了给出的答案之外,除非您进行一些修补,否则它也根本不起作用。很简单,其中一个模量必须大于另一个。如果您先执行 RSA mod 较大的模数,然后 mod 较小的最后您会丢失信息并且不能保证成功解密。显而易见的补丁是始终首先使用较小的模数进行加密。当然,您必须以相反的顺序执行解密。另一个简单的补丁是选择大小非常接近的模数,这样您遇到无法唯一解密的密文的概率就会非常小。
是的!
但不要使用原始加密。使用 RSA 加密模式。不要使用可能会削弱效果(我不知道)的第二个密钥重新加密加密消息,而是使用共享密钥算法将您的秘密分成两部分。共享秘密算法可以将秘密分成 n 份,并确保如果攻击者设法获得 n-1 份,他对秘密一无所知。所以不要简单地将秘密一分为二。
然后,您可以拥有超过 2 个 RSA 密钥。共享秘密算法的另一个强大特性是可以将秘密传播到 n 块上,并且只需要 m 块(其中 m 小于 n)来恢复秘密。这使得秘密恢复对丢失片段更加稳健。
在此处查看有关共享机密的更多信息: http ://en.wikipedia.org/wiki/Shared_secret