有没有一种安全的加密算法,其中加密和解密可以任意顺序?

4
我正在寻找一种满足以下规则的加密算法:
E(key1, E(key2, Message)) = E(key2, E(key1, Message))
显然,解密也是如此。
我怀疑这样的算法存在性较小,但还是想问一下。
谢谢。

谢谢大家的回答,我应该马上想到异或运算,没有想到感觉有点傻。我会仔细考虑你们所有的建议,并决定对我的协议最好的方案。 - David Read
XOR 算法看似简单有效,但同样容易被破解。 - CodesInChaos
5个回答

7

使用相同模数的RSA可以实现这一点。先将其提高到a次幂,然后再提高到b次幂与先将其提高到b次幂再提高到a次幂是相同的。

但通常不会使用RSA来加密您的消息,而是使用它来加密密钥-RSA和大多数非对称加密非常耗时。

也许您需要一个具有该属性的对称算法?


4

有两种已知的加密系统可以满足以下条件:

E(key1, E(key2, Message)) = E(key2, E(key1, Message))

它们分别是Massey Omura加密系统和Shamir的三次握手协议。选择这两种方案的一个原因是其具有以下特性:即使攻击者能够访问密文E(key1,Message),E(key2,Message)和E(key1,E(key2,Message)),也无法找到明文。另一方面,基于RSA或流密码的解决方案在此假设下可能被破解。

假设攻击者可以访问上述所有密文是有意义的,因为可交换密码系统很可能用于将两个密钥保存在不同的系统上的场景中。否则,为什么需要反转解密顺序呢?


3

1
如果E只是密钥(或某些加密生成的扩展)和文本(密码或明文)之间的XOR函数,那么它将表现出您所指示的属性。
也就是说(key1 XOR message)XOR key2 ==(key2 XOR message)XOR key1,因此可以以任何顺序应用密钥进行加密或解密,但是必须使用两个密钥才能解密这样加密的消息。
我可以想象这被用于加密需要两个具有个人秘密密钥的参与者的文档。但是这种方案行不通,因为在给定密文、明文和任一密钥的情况下,另一个密钥可以轻松地恢复。

1

很抱歉打扰并回复晚了...

E(key1, E(key2, Message)) = E(key2, E(key1, Message))

这就是说 (key1 XOR message) XOR key2 == (key2 XOR message) XOR key1, 以便密钥可以按任意顺序用于加密或解密,但是必须使用两个密钥来解密因此加密的消息。

这些不等同。在异或提案下,有可能找到第三个密钥,key3,使得 (key3 XOR message) == ((key1 XOR message) XOR key2)。key3 将是 (key1 XOR key2)。我认为该属性不满足 OP 要求的条件。

回到我的密码学课程(如我所记),数学家们花费了一些时间证明 DES 在其操作下不是封闭的,因此不能使用 2 密钥三重 DES 和 3 密钥三重 DES 来快速恢复明文。即 E(key1, E(key2, Message)) != E(key3, message)。

Jeff


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