与订单无关的密码

时间:2011-06-06 08:07:21

标签: encryption cryptography

是否存在加密方法,加密和解密顺序是任意的?就像在同一个锁定环上使用两个挂锁一样。

也就是说,如果有两个密钥(或密钥对)K1, K2,则会将消息M和密码C作为(例如)C=M*K1*K2获取(其中) *表示加密),然后可以通过以下每种方式检索消息M:1)M=C*K1*K2,2)M=C*K2*K1(此处*表示解密)。

显然,XOR是一个微不足道的候选人。是否存在任何加密强大的例子?

3 个答案:

答案 0 :(得分:9)

使用任何强块密码(例如AES)并在Output Feedback ModeCounter Mode中运行。

由于OFB和CTR基本上只是加密伪随机流的XOR,因此它将具有您寻找的属性。只需确保您的K1和K2 独立

此外,由于OFB和CTR是NIST认可的(并且广泛使用的)分组密码模式,只要您正确实现它们并使用强大的底层分组密码,它们就会“加密强大”。

答案 1 :(得分:2)

你所要求的是一种可交换的密码。这种密码的一个应用是Shamir的三遍协议(通常使用挂锁来解释)。

目前还不清楚“加密强”是什么意思。即经常需要的一个要求是,如果对手用K1学习消息加密,然后用K2加密消息并用K1和K2加密消息,则对手不能学习消息。在Shamir的三遍协议的情况下,这个要求是显而易见的。

很容易看出流密码不满足上述要求。因此,将流密码称为“密码强的可交换密码”会产生误导。在上述假设下同样容易打破的是Rasmus Fabers的提议(我认为这是Bruce Schneier提出的一个有点不同的结构)。

强可交换密码可以基于模幂运算。 Massey-Omura协议就是一个很好的例子。

答案 2 :(得分:1)

如果密码的大小不是问题,您可以根据任何其他密码轻松构建这样的密码:

让第一个加密器生成大小为> = B1的随机位掩码M。使用原始密码和密钥加密位掩码,并将此加密与B1 ^ M一起发送。

类似地,下一个加密器生成一个新的随机位掩码B2,用他的密钥加密它并发送加密的位掩码和B2^(B1^M)。 (以及N个加密器等等。)

要解密,只需按任意顺序解密每个位掩码,然后将它们放到掩码消息上。