Val*_*tin 12 cryptography aes hmac
我有点困惑如何在从服务器向客户端传输加密消息时以正确的方式使用AES和HMAC(基于SHA-256),反之亦然
如果以下方法错误,请纠正我:
最大的问题是:是否有可能不以某种方式将IV发送给客户端,而是以相同的方式生成它并且仍然是加密安全的?或者也可以发送IV吗?
我最终得到随机IV生成,因为需要相同的纯文本将以不同的加密结果结束.
imi*_*ers 13
不要发送hmac(消息),aes(消息).如果您发送两次相同的消息,任何人都可以告诉.此外,您需要使用密码文本来防止诸如填充oracle攻击之类的攻击.
IV:一般来说,处理iv的简单方法是将它固定在密文上,因为它是固定长度的.然后你可以在解密之前读取这些字节.IV可以是公开的,但它们必须是随机的.
HMAC:如果您的库支持它,最简单的方法是在GCM模式下使用AES(或者,更不用说EAX).这实际上不是HMAC,但它提供了经过身份验证的加密,这也是一样好.如果不支持:
您需要在iv和密码文本上计算hmac.如果|| 是串联(你可以用数组副本,如果处理字节数组)然后你想要
CipherText = iv|| aes(key1,iv,message)
tag = hmac(key2,ciphertext)
Run Code Online (Sandbox Code Playgroud)
然后发送(tag,CipherText).另一方面,您运行相同的hmac调用以重新生成标记,并将接收的标记与计算的标记进行比较.比较标签的sha1或sha256哈希值而不是直接比较,这样就不会在比较失败的地方泄漏.
您应该为hmac使用不同的键.在实践中,添加加密密钥的sha1总和就足够了.
归档时间: |
|
查看次数: |
16449 次 |
最近记录: |