首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AES CCM模式(CTR与CBC-MAC)

AES CCM模式(CTR与CBC-MAC)
EN

Cryptography用户
提问于 2018-04-08 07:24:11
回答 1查看 1.3K关注 0票数 2

对于AES的CCM模式,谁能解释一下B_I$‘S和$m$之间的区别是什么?$B_i$'s和$A_i$’30日的现值是一样的吗?

$l(a)$和$L$是什么?$m$大小的最小值是多少?

认证过程是否使用$m$的数据?

EN

回答 1

Cryptography用户

发布于 2018-05-07 23:16:00

CCM的标准定义是NIST 38C 800-38C。并不是所有你引用的符号都出现在NIST SP800-38C中。如果你使用的是不同的引用,你需要引用它来得到一个更具体的答案。

有人能解释一下B_I$‘S和$m$之间的区别吗?

$B_i$是CBC-MAC的输入块,它来自于将nonce、关联数据和有效负载唯一地编码成一个位字符串。

$m$是覆盖要加密的有效负载所需的128位块的数目。

S和S的现值是一样的吗?

CCM加密操作接受一个$N$、一个关联的数据字符串$A$和一个有效负载$P$,并返回一个经过身份验证的密文。这些输入都被唯一地编码成序列$B_0、B_1、\ldots、128位块的B_r$来进行身份验证。因此,现在的$N$用于计算一些$B_i$块,而关联的数据字符串$A$用于计算其他的$B_i$块。

符号$A_i$不出现在NISTSP80038C中。

$l(a)$和$L$是什么?

这些符号$l(a)$和$L$不出现在NISTSP80038C中。

$m$大小的最小值是多少?

$m$的最小值,即覆盖有效载荷$P$所需的128位块数为零:有效负载可能为空,在这种情况下,CCM减少为消息身份验证代码。

认证过程是否使用$m$的数据?

$m$是许多块。CCM确实对当前的$N$、关联的数据$A$和有效负载$P$进行身份验证。在不知道秘密密钥的情况下,更改这些字符串的长度将很有可能导致接收方拒绝将消息作为伪造。

详细信息128位分组密码$E_K$的输入如下:

  • 一个关键的$K$
  • 一个八进制字符串$N$,包含在7到13八进制之间,即现在;
  • 任何长度的八进制字符串$A$,关联的数据;以及
  • 任何长度的八进制字符串$P$,即有效负载。

CCM中的认证标记首先通过将元组$(N,A,P)$编码为由128位块$B_0、B_1、B_2、\l ldots、B_r$组成的序列来计算,如§A.2,第12-14页所述;然后通过计算$Y_0 = E_K(B_0)$、$Y_1 = E_K(B_1 \oplus Y_0)$、$Y_2 = E_K(B_2 \oplus Y_1)$等,设置$T = Y_r$,并显示$$T \oplus Y_r$(N \mathbin\Vert 0)$Y_1实际上是字符串en20# \mathbin\Vert \mathbin\Vert \mathbin\Vert \cdots \mathbin\Vert的CBC-mathbin标记。由于可变长度消息上的CBC-MAC本身并不是一个安全的MAC,所以CCM中的实际身份验证标记是CBC-MAC标记$T$,该标记隐藏在单块一次性衬垫$E_K(N \mathbin\Vert 0)中。

该密文是通过向有效载荷$P$中添加由CTR模式下的块密码$E_K$生成的第一批$|P|$比特($\mathit\Vert 1) \mathbin\Vert E_K(N \mathbin\Vert 2) \mathbin\Vert \cdots \cdots \mathbin\Vert E_K(N \mathbin\Vert m)在CTR模式下生成的块密码$E_K$生成的第一个$$来计算的,其中$|P|$是$P$中的比特数(标准中为$\mathit{Plen}$ ),$m =\lceil/128 CTR$是覆盖有效载荷$P$长度所需的128位块的数目。

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

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

复制
相关文章

相似问题

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