我正在尝试了解有关GCM模式以及CBC之间的区别的更多信息。我已经知道GCM提供了用于消息身份验证的MAC。从我阅读过的内容以及从我看到的代码段中可以看出,GCM会进行排他或类似CBC,但是我不确定排他或反对什么。在CBC模式下,除了第一个使用随机IV的块外,前一个密文块的异或为纯文本。 GCM会做同样的事情吗,还是对其他事情做异或操作?如果是这样,有人可以简要解释一下GCM如何使用IV以及异或的方式。

评论

如果您忽略身份验证,则GCM的行为类似于CTR模式,而不是CBC模式。在维基百科上查找这些内容。

只是因为未在此页面上定义... GCM = Galois /计数器模式,而CBC =密码块链接...,其他定义包括MAC(消息身份验证代码),IV(初始化向量)和CTR(CounTeR模式) )。

#1 楼

GCM和CBC模式在内部工作方式大不相同;它们都包含块密码和异或,但是它们以不同的方式使用它们。

在CBC模式下,您通过获取当前的纯文本块并对数据块进行异或来对数据块进行加密。前一个密文块(或IV),然后通过块密文发送该结果;分组密码的输出是密文分组。

GCM模式提供了保密性(加密)和完整性。为了提供加密,GCM会维护一个计数器;对于每个数据块,它通过块密码发送计数器的当前值。然后,它采用分组密码的输出,并将其与明文进行异或以形成密文。

请注意两个主要区别:异或在CBC模式下,明文与攻击者已知的数据(IV或先前的密文块)异或。因此,它本身不提供任何固有的安全性(相反,我们这样做是为了最大程度地降低通过块密码两次发送相同块的机会)。在GCM模式下,明文与分组密码的输出互斥或。安全模型固有的一个特征是,攻击者无法猜测输出(除非他已经知道明文和密文)。
通过分组密码发送的是什么?在CBC模式下,纯文本通过分组密码发送(使用异或“随机化”后);在GCM模式下,通过分组密码发送的内容实际上并不取决于加密的数据,而仅取决于内部状态。关于GCM如何使用IV(我个人认为'是GCM使用的一个更好的术语,因为它体现了GCM的概念,即您不能对同一密钥两次使用相同的现时数,所以,它用于初始化计数器。

评论


$ \ begingroup $
非常有趣...如果我理解正确,您是说在GCM模式下,将一个块的密文与刚刚通过该密码的明文进行排他或“加”运算,然后发送该块。如果是这样,那么该块如何解密?解密数据是否不需要AES(例如)加密的密文?如何获得的?另外,如果获得了原始的加密文本,则可以将其用于排他或发送的密文,该密文将返回纯文本并且不需要进一步的解密...
$ \ endgroup $
–鲍勃·布莱恩(Bob Bryan)
2012年4月9日在4:23

$ \ begingroup $
不,在GCM中,我们需要一个计数器,将其通过分组密文发送,然后与异或以明文形式互斥,以形成密文。在解密方面,我们保持相同的计数器,将其通过分组密码发送,然后将其与密文互斥或与密文形成纯文本。
$ \ endgroup $
–雨披
2012年4月9日在12:41

$ \ begingroup $
@poncho因此,在GCM中,我们不需要分组密码的“解密”部分吗?因为我们在两侧都使用“加密”。
$ \ endgroup $
–于富兰
18-2-28在4:51

$ \ begingroup $
如果您使用相同的密钥两次使用同一随机数,则会使自己对...产生什么攻击?
$ \ endgroup $
–Robert Siemer
18年4月19日在0:38

$ \ begingroup $
@RobertSiemer:两次攻击:a)攻击者获得了用同一随机数加密的两条消息的大量信息(可能足以推断出两个内容),并且b)攻击获得了使他能够更改邮件而不被检测到
$ \ endgroup $
–雨披
18年4月19日在13:18