【发布时间】: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