我目前正在使用aes加密/解密来自web服务的消息。
当用户建立会话时,他通过rsa公钥发送随机生成的秘密。
此秘密用于使用AES (CBC)建立安全信道。
我使用Rfc2898派生带有静态盐的密钥( salt是硬编码的,从不更改)。对每条消息随机生成IV,并以明文形式加上IV。
是否可以使用静态盐(因为我对每个会话都使用随机生成的秘密)?
发布于 2014-10-07 09:58:02
目前,您似乎使用的是基于密码的KDF (PBKDF);您使用的是PBKDF2,如Rfc2898中所定义的。您不需要这样做,因为随机生成的数据已经可以创建AES密钥了。所以-因为你不需要PBKDF -你实际上不需要盐。
如果您需要更多的密钥或密钥数据,那么实际上需要的是基于密钥的KDF (KBKDF),因为共享的秘密已经包含足够的熵。密码通常不需要,这就是为什么它们需要PBKDF提供的密钥增强(通过使用salt和迭代计数)。HKDF也不需要盐,但是如果你提供盐的话,它的安全属性就会大大增强。
请注意,CBC本身不应用于创建安全传输协议。CBC既不提供完整性,也不提供真实性。如果错误(填充)预言适用--这是很有可能的--那么它甚至不提供机密性,使你一无所有。您至少需要添加一个MAC - HMAC是首选-和一个MAC密钥。要生成两个keys...see,第二段,并提供两个不同的标签(或"OtherInfo"),每个键一个。
https://crypto.stackexchange.com/questions/19513
复制相似问题