首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CMAC生成:如果输入有效负载长度没有以16字节对齐,那么可能的副作用是什么?

CMAC生成:如果输入有效负载长度没有以16字节对齐,那么可能的副作用是什么?
EN

Cryptography用户
提问于 2018-01-23 03:30:29
回答 1查看 1.8K关注 0票数 0

在寻找答案时,我知道RFC AES-CMAC 4493是由NIST建议的,以克服如果有效负载没有以16个字节对齐的话。

我想知道,如果长度没有以16字节对齐,那么AES-CMAC会带来哪些缺点/不安全。生成的标记值会很容易被篡改吗?

如何和何时使用单键CBC MAC1 (OMAC1)?这里的单键代表什么?(普通的CMAC Gen/Ver -相同的单键用于生成和验证)。

EN

回答 1

Cryptography用户

回答已采纳

发布于 2018-01-24 07:35:29

我希望您是指AES CBC-MAC所造成的缺陷,这是在AES-CMAC中解决的.

AES_CBC MAC如果与国际标准化组织填充技术一起正确使用,不应导致标签冲突。

所以AES-CBC MAC应该是这样的。

在AES-CBC MAC中,如果最后一个块未对齐16字节(考虑AES为PRF),则必须对最后一个块进行填充。填充应该基于ISO (位填充,使用二进制填充,后面跟着零,例如\texttt{100..00}),因为ISO 1表示填充的开始。如果块已经对齐了16字节,那么应该连接一个虚拟块(带有ISO填充)。在此之后,只应计算标签。

让我们看看碰撞情况:最后一个块,比如m是13个字节。因此,按照ISO填充,块将变成m\|\texttt{100},然后计算标记。如果有一个称为m'的块,它以\mathtt{100}作为真实数据结尾,如果没有添加虚拟16字节块,那么标记将与m\|\mathtt{100}相同。这意味着可以创建冲突。

根据安全性,两个不同的数据不应导致相同密钥的相同MAC。因此,它可能变得不安全。

为了克服这一问题,在AES-CMAC中有一种解决方案,如果它已经与PRF对齐(在本例中是AES,然后是16字节对齐),则不需要添加虚拟块。

在AES CMAC中有三个键(KK_1K_2)。

K_1

K_2是从K衍生而来的。有关子项(K_1K_2 )生成,请参见2.3节(子密钥生成算法)

如果最后一个块没有对齐(万一AES PRF是16个字节),那么将最后一个块作为ISO填充。用AES和XOR加密它,输出用K_1。标记是在具有相同键K的异或式输出上计算的。

请参阅AES-CMAC中填充盒的图像。

如果最后一个块是对齐的(如果AES为PRF,则为16个字节),则使用K_2对块的输出进行异或。标记是在具有相同键K的异或式输出上计算的。

请参阅非衬垫箱的图片。

注:参考丹·邦纳教授。

票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/54943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档