1
3
在这种特殊情况下,它可能是好的(但无论如何不要这样做)。“有效IV”是您的第一个加密块,它保证每个消息都不同(只要nonce在同一个密钥下确实不会重复),因为分组密码操作是一个双射。这也是不可预测的,只要您在更改“IV”的同时更改密钥,因为即使使用完全可预测的输入,攻击者也不能预测分组密码的输出(分组密码的行为类似于伪随机函数)。 然而,它非常脆弱。在你转向更绿色的牧场很久之后仍在维护此协议的人很可能不理解安全性在很大程度上取决于不重复的临时状态,并且可能会“优化”它。为真正的静脉注射发送每条额外的信息块真的是你负担不起的开销吗? |
2
2
做记号 你所描述的几乎就是在 Appendix C of NIST SP800-38a . 具体而言,有两种方法可以生成IV:
第二个选项与您的建议非常相似。 |
3
1
这取决于加密算法的块大小。对于通常64字节的块大小,我认为这不会有任何区别。在输入分组密码之前,许多块的第一位是相同的,但结果不会有任何可识别的模式。对于块大小<4个字节(我不认为会发生这种情况)这会有区别,因为第一个块总是相同的,泄露了关于模式的信息。只是我的意见。
找到这个 “对于CBC和CFB,重复使用IV会泄漏关于第一个块的一些信息 关于明文,以及关于两条消息共享的任何公共前缀“ 资料来源:我的大学演讲: |
MarcForn · 加密/解密字符串Kotlin 6 年前 |
Neeraj Athalye · 加密期间发生Java内存不足错误 6 年前 |
Kuno Heltborg · 尝试用其他语言解密时AES解密错误 6 年前 |
Tim Tuckle · 用Java加密字符串 7 年前 |