我正在考虑将对GCM_AES算法的支持添加到使用WFP来配置IPSec的应用程序中。 当前,该代码支持CBC_AES,并使用IPsecSaContextAddInbound1 / Outbound1函数来指定安全性关联。
对于CBC_AES,密钥在IPSEC_SA_AUTH_AND_CIPHER_INFORMATION0结构中指定。对于此算法,只需一个键作为输入。
但是,对于GCM_AES_128(在RFC 4106中进行了描述),两个输入是128位密钥(或192或256)和四个八位位组的盐值。盐值用于构造随机数。
我想指定WFP使用的盐值,这是怎么做的?
RFC 4106提到密钥材料由密钥本身(128位)和盐值的4个八位字节组成。
在IPSEC_SA_AUTH_AND_CIPHER_INFORMATION0结构中指定密钥时,我应将密钥长度设置为20个字节,并在FWP_BYTE_BLOB结构中将密钥和盐作为连接的字节字符串提供吗?