AES-CCM 加密消息长度

问题描述 投票:0回答:1

请解释一下:

我通过 AES-CCM 使用 8 字节 MAC 加密了 1 字节纯文本。 结果是 9 字节长。

我以为AES是16字节的分组密码,所以结果一定是24字节长,但事实并非如此。

这绝对不是我的代码中的错误,因为 RFC 3610 中的示例与我的情况非常相似(31 字节数据 + 8 字节 MAC 导致 39 字节输出)。

aes block-cipher
1个回答
1
投票

CCM 是一种结合了用于加密的 CTR 模式和用于认证的 CBC-MAC 的认证模式。由于加密是使用流模式 CTR 完成的,因此密文将与明文一样长。

对于 CCM 模式,随机数(初始化向量)必须是唯一的,否则可能会丢失使用相同密钥的相同随机数的所有消息的机密性。为了加密某些东西,您要么需要使用全局已知的消息计数器作为随机数,要么生成一个随机随机数,并希望您以前没有生成过它(对于 128 位块密码来说,机会非常小)。一个好的随机数大小是 96 位,但可能会根据您要加密的消息的长度而有所不同。如果您想加密较短的消息,则随机数会更长。

随机数不应该是秘密的,因此您可以将其添加到密文中。密文的完整长度为:

nonceLength + plaintextLength + tagLength


© www.soinside.com 2019 - 2024. All rights reserved.