【问题标题】:Increasing the diffusion of the AES-CBC encryption algorithm in pycrypto for python增加 AES-CBC 加密算法在 pycrypto for python 中的扩散
【发布时间】:2013-12-23 11:55:57
【问题描述】:

当使用 AES-CBC 算法完成加密时,可以将加密视为将密文与之前的密文和 IV 链接起来。然而,如果它在 CBC 模式下,我们给我们的密文前向扩散属性(即,如果我们改变但 i 在我们的密码中,明文是改变之后的所有块)。为了使延展性攻击更难,可以在加密期间在两个方向上链接密文(或实现类似于 bitLocker 论文中的东西)。

有谁知道是否有 pyCrypto 的实现提供双向的密文链接?

我想到解决这个问题的一种方法是获取原始密文,使用 python 将其反转,然后将其提供给 pyCrypto。然而,这似乎有点蛮力,因为 pyCrypto 的全部意义在于利用它们的 C 级实现(而反转字符串会带来明显的性能损失)。

【问题讨论】:

  • 如果您不是密码学专家,请不要尝试自己实现。任何可能的(不太可能的)安全收益都被搞砸并引入大洞的可能性所抵消。
  • 要使延展性更加困难(如果不是不可能的话),请使用经过身份验证的模式(如 CCM)或将 CBC 耦合到 MAC。
  • OpenSSL 中的 biIGE 会这样做。

标签: python encryption aes pycrypto cbc-mode


【解决方案1】:

不,据我所知有no modes in pyCrypto 这样做。密文出错后明文的这种强烈扩散称为错误传播。现在,错误传播不再被认为是重要的。如果您想提供明文的完整性,那么您可以在密文上添加一个 MAC(例如,HMAC),或者您使用经过身份验证的密码(它基本上提供了机密性之上的完整性)。不幸的是,我在 pyCrypto 中没有看到任何经过身份验证的密码模式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 2015-09-16
    • 1970-01-01
    相关资源
    最近更新 更多