简单地将一种加密算法放在另一种之上并相信一切都会以某种方式“更安全”的问题在于,如果你没有详细研究过这些算法,你就不会完全了解它们的弱点,或者说不够了解此操作的副作用。这并不是一种侮辱,我只是从这个问题中推断出你不是密码分析家,而且你还没有做过这些研究。
看看三重 DES。一旦认识到 DES 太弱而无法承受不断改进的蛮力攻击,它就被设计为 DES 的替代品。DES 有 8 个字节的密钥,所以从逻辑上讲,由于 DES 应该能够承受 2^64 的蛮力攻击,因此双 DES 应该能够承受 2^128 的攻击。那么为什么要使用 Triple DES 而不仅仅是使用 Double DES?事实证明,对强度的估计甚至不接近正确。
首先,DES 丢弃每个密钥字节的最高位,因此 DES 的密钥大小只有 56 位——一旦您考虑了 XOR 反射,则为 55 位。攻击者可以将暴力攻击的输出存储在 DES 的第一个实例上,然后攻击匹配任何存储输出的第二个实例,从而创建中间相遇攻击。这导致 2^55 + 2^55 的攻击,即 2^56。运行 DES 两次的所有工作都会使强度提高一点点。
所以 Triple DES 显然无法承受 2^192 的攻击。3DES 确实将其提高到 2^111 位的强度,这仍然很强大,但与 2^192 的隐含强度相去甚远。
通过 DES 的一个通道的输出与另一通道的加密很容易被破解,这一点并不明显,但密码学家发现了这一点。你能提供强有力的证据证明你的两层加密没有同样的缺陷吗?
加密很难,因为来自加密算法的随机字节看起来非常像它们已经成功加扰。但是没有可以测试的属性来了解加密是否有效或是否可破解。
所以一般给出的建议是“不要发明你自己的加密算法”。与此同时,也不建议您发明自己的协议。如果必须,您需要做很多工作来证明它们是安全的。