0

我在 Linux 下使用 ip xfrm 在 GCM 模式下将带有 AES 的 IPsec SA 添加到系统中。

我正在使用的命令是这样的:

ip xfrm state add src 10.66.21.164 dst 10.66.21.166 proto esp spi 0x201 mode transport aead "rfc4106(gcm(aes))" 0x010203047aeaca3f87d060a12f4a4487d5a5c335 96

现在我想知道:密钥似乎是 20B = 160b 长。正常的 AES 密钥是 128b,如上所示,IV 长度是 96b。如果我延长或缩短它不起作用的密钥,那么显然预期的输入是 (sizeof(AES)=128b) (当然,它也适用于 256b)+ 32b 长。

为什么会这样?在这种情况下,我唯一知道的 4B 长是 unsigned int,它是 IV 长度变量的数据类型,但这与密钥无关。密钥加 IV 不应该是 224b 长(IV 是 128 + 96)吗?

4

1 回答 1

2

命令中的 96 值是身份验证标签的大小。身份验证标签是会话中消息的一部分,您不必指定它。IV 也是如此,它是由每条消息的协议生成的。

密钥材料包括一个 16 字节(128 位)的 AES 密钥和一个 4 字节(16 位)十六进制格式的盐,每个字节使用 2 个字符。

为每个 AES-GCM 密钥请求的 KEYMAT 为 20 个八位字节。前 16 个八位字节是 128 位 AES 密钥,其余四个八位字节用作随机数中的盐值。

来源:RFC 4106

于 2014-03-16T21:19:20.057 回答