分组密码使用有多种不同的操作模式,其中一些提供“加密”,而另一些提供经过身份验证的加密。

为什么我应该使用经过身份验证的加密模式而不是仅使用加密模式?

这个问题的目的不是讨论认证加密与VR加密模式的不同模式(尽管可能会选择一个好的答案):其目的是证明为什么/何时AE比“普通”加密更好。

评论

可以在D.W.撰写的Security.SE上找到另一个答案。

#1 楼

普通加密和认证加密(AE)之间的关键区别在于,AE还提供了真实性,而普通加密仅提供了机密性。让我们详细研究这两个概念。
在进一步的文字中,我们假定$ K $是一个秘密密钥,对于授权方而言是已知的,但对于攻击者而言则是未知的。
目标
机密性(privacy)表示攻击者无法从密文$ E_K(P)$中获取有关明文$ P $的任何信息,但可能无法获取长度信息。换句话说,对于不了解$ K $的人来说,密文看起来像一个随机字符串,即使他们对明文有一定的控制权。所有的民俗加密方法,从一次性加密到Enigma,都只能提供机密性(在某些假设下)。
数据真实性(完整性)意味着拥有$ K $的授权方(接收者)可以检查接收到的数据$ D $是否真实,即仅由知道$ K $的发送者构造。数据可以是明文,也可以是密文,在每种情况下,真实数据都有细微的差别:如果密文是经过身份验证的,那么我们知道密钥所有者授权了密文​​,但不一定是明文。实现真实性的传统方法是使用消息认证代码(MAC):
$$
H_K(D)= T,
$$
其中$ T $被称为标签。
在公共密钥密码世界中,使用数字签名可以实现相同的目标。
您需要什么
用户通常能够确定要查找的这些属性中的哪一个。例如,如果他知道攻击者无法修改数据,则他可能不需要进行身份验证。但是,如果他同时需要,则有两种方法可以结合使用安全和不安全的方法。例如,对于大多数实例化来说,在两种方案中使用相同密钥$ K $的幼稚方法都是不安全的。因此,建议使用组合方案。
经过身份验证的加密
身份验证加密(AE)同时提供机密性和数据真实性。 AE方案通常比仅保密或仅真实性方案更为复杂。但是,它更易于使用,因为它通常只需要一个键,并且更健壮,因为用户执行错误操作的自由度较小(另请参见更详尽的答案)。
一项经过认证的加密方案可以对输入的一部分(称为关联数据)进行认证,但不对其进行加密。例如,我们可能希望对Internet数据包的内容进行加密,但必须保留其标头未加密,但仍绑定到内部数据。
安全性
我们尚未指定a的含义安全方案。显然,有几种安全概念,用户必须根据其对对手的期望能力进行选择。
对于纯机密操作模式,最流行的安全概念涉及选择明文攻击。假设$ E $为加密方案。我们假设对手不仅知道一些纯文本$ P $,而且还能够选择其中的一些进行加密(这是相当实际的情况)。因此,我们允许对手连续多次选择用于加密的任何明文。我们仍然需要一个安全的方案,它在每种情况下都输出随机查找的密文:
$$
E_K(P_1),E_K(P_2),\ ldots,E_K(P_n)\ sim RandomString( | P_1 | + | P_2 | + \ cdots + | P_n |)
$$
对手无法区分他从相同长度的真随机位生成器的输出中获得的整个密文,甚至如果对手重复他的明文。后一个要求意味着该方案必须是不确定性的,并且确实,满足这些要求的仅机密模式可以是概率性的或基于随机数的。
我注意到,有一些民间传说安全性概念将计划的安全性与恢复密钥$ K $本身的能力联系起来。当密钥可以在其他地方使用时,这是有意义的,但是现在已经不那么普遍了,并且上面描述的安全性概念很普遍。
真实性模式的安全性以不同的方式定义。假设$ H_K $是具有密钥$ K $的方案。我们要求,如果对手选择了尚未经过身份验证的任何数据$ D $,则他有机会猜测$ T $标记,从而使
$$
H_K(D)= T
$$
可以忽略不计。如果他将对$(D,T)$提交给验证者,他将得到答案$ \ perp $(错误)。
请注意,我们还没有谈论仅机密模式下的选择密文攻击。当对手也能够发送自己的密文进行解密时,这些就是攻击。尽管此设置在实践中也会出现(尽管比选择明文攻击的频率要少),但仅限机密性方案无法抵抗此类攻击。要建立这种安全性,用户必须再次使用经过身份验证的加密。
经过身份验证的加密方案的安全性分为两个部分。首先,类似于仅保密模式,对手必须无法将密文与随机字符串区分开。其次,无论她发送用于解密的任何伪造(不是在$ K $上创建的)密文,她都有可能获得$ \ perp $的响应。
因此,经过身份验证的加密模式还可以为您提供针对所选密文攻击的安全性它是必需的。
如何工作
有许多集成的经过身份验证的加密方案:CCM,GCM,OCB,EAX等,其中建立机密性和真实性的机制紧密耦合。这些方案的设计远远超出了主题。但是,有一个简单的组合方案,称为Encrypt-then-MAC,其工作原理如下。假设$ K_1,K_2 $为密钥,$ P $为明文,$ E $为某种加密方式,$ H $为MAC。然后,该方案
$$
\ Pi_ {K_1,K_2}:M \ rightarrow E_ {K_1}(M)|| H_ {K_2}(E_ {K_1}(M))
$$
是安全的经过身份验证的加密方案,如果$ E $是安全的机密模式而$ H $是安全的真实性模式。
经过身份验证的加密方案的其他功能
除了提供机密性和真实性之外,经过身份验证的加密方案可能还具有许多其他功能。没有任何方案可以全部解决,因此最佳选择取决于用户的设置。


安全级别。方案仅在不超过加密数据或解密请求数量的一定范围内保证机密性和数据真实性。此界限通常比键空间要低得多,并且对于基于AES的模式,通常不会超过$ 2 ^ {64} $。


并行如果有大量资源可用,可能希望并行运行加密,解密或验证。使用链接的模式(例如从CBC加密或海绵构造派生的模式)很难并行化。


在线加密。我们说一个方案是在线的,如果它允许在数据可用时立即加密,而无需知道其长度。


专利的使用。 OCB模式是最有趣的AE方案之一,已获得专利,并且由于此特性而很少使用和分析。通常希望该方案是无专利的。


标签更新。除少数例外,例如GCM之外,大多数方案都需要重新计算几乎整个密文(如果修改了一小部分明文)。如果密文可以快速更新,则可以更快地处理大量加密数据,例如硬盘驱动器加密。


使用随机数或随机IV。随机数和随机IV导致截然不同的安全模型,这些模型通常是不兼容的(随机数可能是安全的,但相同长度的随机IV可能不是安全的,反之亦然)。虽然随机数唯一性可能难以确保,但随机IV需要单独的随机数生成机制并导致密文扩展。


变量密钥,随机数或标签长度。所有这三个参数通常受使用AE方案的应用程序限制。反过来,AE方案也有自己的限制,有时是不兼容的限制。该方案的可变性越大,它适合的应用越多。


关联数据的处理。所有现代方案都允许对未加密的关联数据进行身份验证。但是,其中一些不能在明文结束之前对AD进行预处理,这可能会对性能造成不利影响。


其他阅读内容
Rogaway的技术报告是仅保密模式,MAC和某些认证加密模式的全面调查。它还包含有关安全概念的所有正式细节。

评论


$ \ begingroup $
我可以补充一点,在许多实际情况下,对身份验证加密方案的选择在很大程度上取决于适当的约定或协议。人们不愿使用认证加密是很常见的,但是在实践中,我已经看到,MAC-then-encrypt和crypto-then-MAC的定制实现都比使用认证的加密有缺陷。这是因为需要非常关注细节才能正确实现组合。
$ \ endgroup $
–user4982
2013年12月10日17:57



$ \ begingroup $
在其他属性方面,避免创建副信道(尤其是定时副信道)对于评估AE(AD)密码套件的安全性至关重要。实际上,这意味着可以实施密码,使其在不受密钥或输入明文影响的时间内运行。
$ \ endgroup $
–马丁·汤姆森(Martin Thomson)
2014年12月9日23:53

#2 楼

当我们通过不安全的信道传输信息时,我们希望我们的数据是安全的。

那是什么意思?为了讨论这些问题,我们将使用Alice和Bob的标准加密情况。
Alice希望通过不安全的通道(将讨论这意味着什么)将某些内容(纯文本)发送给Bob。伊芙(窃听者)和马洛里(试图进行恶意干预)将收听此频道-这将在适当的时候进行讨论。

机密性:
当爱丽丝发送给Bob的消息,我们要求侦听其通信的窃听者Eve不能了解其消息内容的任何信息。

理由:否则,Eve可能会学到Alice / Bob不想学的东西解决方案:我们使用加密技术,它将明文转换为密文(从信息论的角度而言)仅包含无法切实提取的有关明文的信息。这意味着(用Goldwasser解释)任何夏娃只要知道密文就可以了解明文,也可以在没有密文的情况下推论。

即使在这种情况下,我们也必须小心。仅仅因为某个方案可以抵御被动攻击者(仅侦听消息流的人),就不能使其对主动攻击者具有强大的抵抗力。例如,考虑使用CBC模式。在IND-CPA游戏下,它很安全,您可能会认为它很安全。但是,在CCA游戏中,我们允许攻击者要求解密消息(尽管不能解密密文)。给定密文$ c = {\ small IV} \ mathbin \ | c_1 \ mathbin \ | \ dots \ mathbin \ | c_n $,他可以做什么,要求解密$ c'= a \ mathbin \ | c $, $ a $是一些非空消息。这不等于密文,因此在游戏中是允许的,通过仅获取最后的$ n $块,他可以提取密文的解密。

这样的例子并不像您想象的那样人为,因为我们建模为解密预言的方式很可能存在,因为攻击者可能能够解密字符串,但是他们要求解密的数据可能必须以a开头。特定的字符串(类似于SQL注入的概念)。

真实性:
当Bob收到消息时,他知道消息肯定来自Alice。

正义:否则,Mallory可能会向Bob发送一条消息,声称该消息来自Alice,而Bob却不知道。在可证明的安全性方面,我们非常宽容Mallory创建虚假消息的含义-如果他可以创建Bob接受的任何消息(即使该消息与Alice已经发送给他的消息几乎相同),他就会获胜。有许多种方法可以做到这一点,例如重播,重新排序或位翻转攻击。

解决方案:要单独实现身份验证,我们可以使用MAC。

真实性和机密性:Alice和Bob进行机密通信,并且每条消息都是真实的。

说明:如果流仅是机密的(即加密但不是经过身份验证的加密),则窃听者可能能够在其中修改消息运输,即使他们不知道这是什么。例如,假设Alice&Bob使用带有密钥$ k $和消息$ m $的完全安全的One Time Pad(OTP):

$$
\ text {send} c = m \ oplus k \ to B
\\ \ prec M \ text {截取} c \ succ
\\ M \ text {发送} c'= c \ oplus h \ to B \ text {对于某些值} h)
\\ B \ text {收到} c'\ text {来自M,但认为它是} c \ text {来自} A
\\ B \ text {解密} m'= c'\ oplus k = c \ oplus h
$$
这意味着$ B $收到了消息$ m'$,但他认为是$ m $。

因此,假设协议未通过身份验证,并且Mallory知道Alice要发送给Bob的消息是“我同意向帐户#???发送£???”?对于???的某些值。即使他们无法确切知道帐户是什么,也可能无法将付款发送到自己的帐户,他们也可以更改付款,因此不再是Alice的帐户。

解决方案:经过身份验证的加密!


Matthew Green的这篇博客文章很好地解释了对AE的需求。 Rogaway撰写的这篇文章对操作模式进行了更为技术性的介绍。

评论


$ \ begingroup $
唯一可确保信息理论安全的加密方案是一次性密码。 IND-CPA加密方案仅保证概率倍增对手无法从密文中提取信息。
$ \ endgroup $
– pg1989
2013年12月6日22:47

$ \ begingroup $
是的,这是(/错误地!)写的不清楚。感谢您对其进行编辑-我打算将其表示为“不包含<可以提取的信息>”
$ \ endgroup $
–密码学家
2013年12月6日22:50



$ \ begingroup $
实际上,许多“仅机密”模式实际上在受到主动攻击者的攻击(甚至可以修改消息或装入选定的纯文本或选定的密文攻击)时甚至没有提供良好的机密性。因此,实际上这些模式(用于通信信道)需要与某些MAC一起使用,甚至只是为了获得机密部分。 AE模式只是将它们组合为一个。
$ \ endgroup $
–PaŭloEbermann
2013年12月6日23:32



$ \ begingroup $
@PaŭloEbermann/其他人:我真的不认为我在这里写了一个好答案(毕竟是星期五晚上!),但我只是想发表一些初步想法。随意添加您自己的答案/编辑此答案/写下您自己的答案。如果人们认为我的答案与一个好的答案“足够接近”(我没有读过),那么欢迎您编辑或重复使用我的话。
$ \ endgroup $
–密码学家
2013年12月7日0:00

$ \ begingroup $
我认为AE还提供了完整性(en.wikipedia.org/wiki/Authenticated_encryption),因此也可能希望添加它。
$ \ endgroup $
–TheRookierLearner
2013年12月7日17:32