为什么gcm-mode 4字节的AES密钥更长?

时间:2014-03-16 10:35:32

标签: linux aes ipsec

我在Linux下使用ip xfrm在系统模式下将带有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-length变量的数据类型,但这与密钥无关。 键加IV不应该长224b(IV + 128 + 96)?

1 个答案:

答案 0 :(得分:2)

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

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

  

每个AES-GCM密钥请求的KEYMAT是20个八位字节。首先   16个八位字节是128位AES密钥,其余四个八位字节   用作nonce中的salt值。

来源:RFC 4106