正如马丁·邦纳(Martin Bonner)评论中指出的那样,我无法证明这一点,但在直觉上似乎是不可能的。如果甚至可以确定底层的加密算法,那么就没有实现该目标。

这是正确的吗?双重加密(使用相同或单独的算法)会削弱安全性吗?

评论

相关:Hazay和Lindell的书第58-61页。

我想可能第二个密钥可能导致第二个加密操作取消了第一个密钥,从而导致了纯文本输出。

仅当您搞砸时(例如通过使用将明文信息泄漏到密文长度中的密码)。

您是否使用独立键?

@CodesInChaos我想同时考虑这两个选项,但是如果范围太广,那么可以使用独立键。

#1 楼


双重加密(使用相同或单独的算法)会削弱安全性吗?

另一个答案中的ROT13示例说明了这一点,即使它不是真正的加密也是如此。同样,使用相同密钥两次应用的同步流密码将自行撤消。像这样的其他密码可能是可能的。如果选择了错误的密钥,则可能具有分组密码,使得$ E_k = D_ {k'} $,或者可以定义AES'来切换加密和解密方向。结合使用单独的密钥将是安全的,但并非一定如此。

如果您假设密钥是独立的,则与两种算法相比,结果仍然较弱。例如,假设您具有易受填充oracle攻击的CBC加密。即使在顶部添加安全流密码,padding oracle攻击仍然存在。使用某些假设,您可以说该组合并不比第一个密码(pdf)弱。

评论


$ \ begingroup $
但是,如果双重加密可以使它更容易获得纯文本,那么攻击者就不能简单地加密他们试图破解的单一加密密文,以使它不会被双重加密,因此更容易打破?
$ \ endgroup $
– Shelvacu
16 Mar 19 '16 at 9:31

$ \ begingroup $
ROT13是“真实加密”,前提是您认为凯撒转变是“真实加密”。通常,如果选择的两个密钥(=移位)加起来等于26的倍数,则采用凯撒移位的双重加密将是无效操作。ROT13:13 + 13 = 26。
$ \ endgroup $
–rossum
16 Mar 19 '16 at 10:44

$ \ begingroup $
@shelvacu,如果攻击者再次尝试加密,那么他们的密钥是独立的(或者他们可能知道如何解密),所以这就是最后一段的情况,加密的强度并不比最初的弱。
$ \ endgroup $
–otus
16-3-19在13:09



$ \ begingroup $
@ rossum,ROT13是带有恒定密钥的Caesar。我也不会称呼带有恒定密钥的AES真实加密。无论如何,是否考虑加密与实际答案无关。
$ \ endgroup $
–otus
16年3月19日在13:11

#2 楼

这里的答案和评论都不错,但是我认为值得整理一下。问题很广泛,而答案中恰好表达了这一点。这里有多个问题。在开始之前,我注意到当我们谈论密钥不是“独立的”时,我们需要定义我们的意思。我将只涉及相同的键。如果您让键相关联(例如,一个是另一个的倒数),那么很容易提出反例,表明没有什么是安全的。但是,实际上,我们对相同的密钥与独立的密钥很感兴趣。我们将从以下三个问题开始:

当算法和密钥相同时,双重加密是否一定安全?
当算法和密钥相同时,双重加密是否一定安全?相同但密钥是独立的吗?
当算法不同但密钥相同时,双重加密是否一定安全?如果仅考虑窃听,则与考虑选择明文攻击的情况有所不同。我们还需要询问是否正在考虑两种算法都是安全的情况。 (当然,如果它们都是安全的,那么为什么还要麻烦进行双重加密。因此,我们将考虑仅保证一个以后安全的情况。)

让我们首先回答以上三个问题:


当使用相同的算法和相同的密钥进行双重加密时,并且在选择明文攻击下该方案是安全的时,很容易看到保留了安全性。这很容易证明:CPA攻击者可以通过将密文查询回oracle自身来进行双重加密。因此,如果可以破坏双重加密,那么就可以破坏单一加密。但是,如果该方案仅在存在窃听对手的情况下是安全的,则双重加密可能会中断(出于安全性考虑,定义对手输出两个明文向量,对其进行加密,并需要确定对哪个向量进行加密)。特别是,采取任何窃听安全加密方案并对其进行修改,以使加密为0的加密输出秘密密钥。在存在窃听对手的情况下,这仍然是安全的(易于证明;将其留给您)。但是,使用双重加密会完全破坏这种情况。
使用相同算法和独立密钥进行加密时,很容易证明保留了安全性。归约可以自己生成第二个密钥。因此,即使方案仅在存在窃听对手的情况下才是安全的,这也是安全的。这应该很明显,因为决不允许您将密钥重复用于不同的方案。我再给您一个具体的反例(只是确保两种方案都是安全的)。该计划可能是不安全的。通常,从仅其中一些是安全的多个方案中构造安全的方案具有许多优点。因此,HMAC的第一个结构使用了SHA1和MD5的组合。正式地,我们称这种构造为鲁棒的组合器。关于双重加密,这是这里的层叠研究。

评论


$ \ begingroup $
关于相同的算法相同的密钥,那么OTP呢?加密和解密是相同的过程,因此具有相同填充符的OTP将再次为您提供纯文本。我想这里也存在垫子不再是一次性的问题。
$ \ endgroup $
– Shelvacu
16-3-21在15:53

$ \ begingroup $
@shelvacu是的,OTP是仅可防止窃听的一种方案示例。因此,这是另一个反例。但是,从某种意义上说,它仅对单个加密是安全的(从数学上来说仍然是有效的反例),从某种意义上来说,这并不令人满意。相比之下,我的反例甚至适用于对多种加密都是安全的方案(仅针对窃听对手)。
$ \ endgroup $
–耶胡达·林德尔(Yehuda Lindell)
16-3-21在18:03

$ \ begingroup $
“当使用不同的算法和相同的密钥进行加密时,您会遇到很大的麻烦。这应该很明显”。
$ \ endgroup $
– Shelvacu
16年3月21日在20:35

$ \ begingroup $
@shelvacu我假设您试图找到一个反例。看到答案,说你应该把$ E'_k = D_k $。这是一个问题,因为没有人说E'是安全的。另外,将其定义为概率加密是一个问题。但是,您应该能够执行类似的操作。
$ \ endgroup $
–耶胡达·林德尔(Yehuda Lindell)
16-3-21在20:40

#3 楼

当然,如果我们不限制密码。一个简单的例子是双ROT13,它比单个ROT13弱一些。

评论


$ \ begingroup $
我的意思是使用秘密密钥的加密算法。
$ \ endgroup $
– Shelvacu
16 Mar 19 '16 at 4:37

$ \ begingroup $
添加ROT13忽略的密钥会生成带有密钥的密码。您似乎在指定一些需求,而不仅仅是一个关键,但这还不清楚。
$ \ endgroup $
–车床
16 Mar 19 '16 at 4:44

$ \ begingroup $
可能是IND-CPA?
$ \ endgroup $
–量子震颤
16年3月19日在7:13

$ \ begingroup $
Funfact:您可以将双ROT13替换为双Caesar加密,并将密钥加到26。
$ \ endgroup $
– SEJPM♦
16年3月19日在9:25

$ \ begingroup $
@Shelvacu ROT13只是一个以$ 13 $为密钥的凯撒密码。
$ \ endgroup $
–森林
19-2-19的2:31

#4 楼

如果第一和第二种加密算法是相同的算法,但是具有不同的密钥,我会说答案是肯定的。结果。
如果算法是不相交的(例如aes和twofish)并且每个算法使用不同的密钥,我会说不,它会更健壮。
我将先进行AES加密,然后再进行Twofish加密,以及第一个和第二个之间的密码块链接。 (如果使用CBC使其成为三种算法,则删除CBC)。

评论


$ \ begingroup $
XTS会更安全吗?只是问问而已 :)
$ \ endgroup $
–黑光
16年6月6日在7:09