密码学:混合CBC和CTR?

时间:2012-10-15 03:44:08

标签: encryption cryptography aes

我有一些必须受密码保护的脱机文件。我的策略如下:

  • 密码算法:AES,128位块,256位密钥(PBKDF2-SHA-256 带有随机盐的10000次迭代在其他地方明确存储)

  • 整个文件分为页面大小为1024字节的页面

  • 如需完整页面,请使用CBC

  • 对于不完整的页面,

    • 如果CBC至少有一个块,则使用CBC密文窃取

    • 如果点击次数较少,请使用点击率

通过此设置,我们可以保持相同的文件大小

IV或nonce将基于盐和确定性。由于这不适用于网络通信,我认为我们不需要关注重放攻击吗?

问题:这种混合会降低安全性吗?我们最好只在整个文件中使用CTR吗?

2 个答案:

答案 0 :(得分:4)

你最好只使用CTR来存储整个文件。否则,您需要添加大量额外工作,支持多种模式(CBC,CTR和CTS)并确定使用哪种模式。目前尚不清楚这样做有什么价值,因为点击率非常适合加密大量数据。

您是否计划为每个页面重复使用相同的IV?您应该对页面的含义进行扩展,但我建议每页都使用唯一的IV。这些页面是否可以某种方式解决?您可能希望查看一些新的disk encryption modes以获得有关生成唯一IV的

的想法

您还需要MAC数据。例如,在CTR中,如果有人翻转了一些密文,那么当你解密时它会翻转,你永远不会知道它被篡改了。您可以使用HMAC,或者如果您想简化整个方案,请使用AES GCM模式,该模式结合了CTR加密和GMAC的完整性

答案 1 :(得分:2)

您需要了解有关点击率模式的一些事项。在您了解它们之后,您可以愉快地在您的情况下应用流密码:

  • 永远不要重复使用具有相同nonce的数据密钥;
  • 以上,甚至及时;
  • 请注意,CTR模式确实显示了加密数据的大小;总是加密完整块可以稍微隐藏一下(一般来说,如果文件系统边界得到尊重,1024字节块需要一个比特块);
  • CTR模式本身不提供身份验证(完成后,已经讨论过了);

如果您不遵守前两条规则,攻击者将立即看到编辑的位置,攻击者将能够检索与纯文本直接相关的数据。

在可能的节点上:

  • 您可以愉快地使用文件中的偏移量(例如,块)作为nonce的一部分;
  • 很容易在文件中搜索,缓冲密文并在CTR周围创建多线程代码。

总的来说:

  • 使用特定于数据的密钥特定文件集是有回报的,如果密钥被泄露或更改,您不必重新加密所有内容;
  • 非常清楚如何使用,存储,备份等密钥。密钥管理是最难的部分;
相关问题