黑客总是攻击链中最弱的元素。因此,使强大的元素更强大,几乎没有帮助。 128位密钥长度已经无法破解AES加密。 Blowfish也是如此。选择更大的密钥长度会使它变得更难,但实际上128 Bit从未被破解到现在(并且可能不会在未来10年或20年内)。所以这种加密可能不是最弱的元素,为什么要让它更强大呢?它已经很强大了。
想想还有什么可能是最弱的元素? IV?实际上,我不会浪费太多时间选择一个伟大的IV或隐藏它。最弱的密钥通常是加密密钥。例如。如果你要加密存储到磁盘的数据,但是这个数据需要你的应用程序读取,你的应用程序需要知道IV并且它需要知道加密密钥,因此它们都需要是 的 内 强> 二进制。这实际上是最弱的元素。即使您采用20种加密方法并将它们链接到您的数据上,所有20种的IV和加密密钥都需要使用二进制文件,如果黑客可以提取它们,那么您使用20而不是1加密方法的事实提供了额外的零安全。
因为我还不知道整个过程是什么(谁加密数据,谁解密数据,数据存储在哪里,如何传输,谁需要知道加密密钥等等),这很难说出最弱的元素是什么,但我怀疑AES或Blowfish加密本身是你最薄弱的元素。
我不会依赖于模糊你正在使用的算法。这种“默默无闻的安全”长期不起作用。反编译代码是揭示你正在使用的加密的一种方式,但通常人们不会长期保留这样的秘密。这就是我们首先拥有私钥/公钥加密的原因。
是的,它可能是有益的,但在大多数情况下可能有点过分。此外,正如汉克提到的某些组合实际上可以削弱您的加密。
TrueCrypt提供了许多组合加密算法,如AES-Twofish-Serpent。当然,使用它们会有性能损失。
更改算法并不能提高质量(除非您希望算法被破坏),它只是关键/块长度和混淆的一些优点。多次这样做很有意思,因为即使第一个密钥泄露,结果数据也无法与随机数据区分开来。在给定平台上可以更好地处理块大小(例如,寄存器大小)。
攻击质量加密算法只能通过蛮力运行,因此取决于您可以花费的计算能力。这意味着最终你只能增加可能性 有人需要解密它的平均时间。
如果数据是 真实 价值,他们最好不要攻击数据,但密钥持有者......
@Miro Kropacek - 你的同事试图通过Voodoo增加安全性。相反,尝试构建一些可以分析缺陷的简单方法 - 例如使用AES。
我猜是他(她?)建议通过防止调试来增强安全性......
你实际上无法做到 减 如果您使用不同的IV和密钥加密多次,则安全,但安全性的提升可能远低于您的预期:在2DES的示例中,中间相遇攻击意味着它只有两倍难以破解,而不是平衡难度。
但是,一般来说,如果您需要更高的安全性,坚持使用一个众所周知的算法并增加密钥长度会更安全。将密码系统组成专家(我自己也不是其中之一)。
我同意上面所说的话。多个加密阶段对您不会有太大帮助。如果您使用的是“安全”算法,那么几乎不可能破解。在某些标准流模式下使用AES。看到 http://csrc.nist.gov/groups/ST/toolkit/index.html 对于公认的密码和模式。如果使用得当,该网站上推荐的任何内容都应足够安全。如果您想要更加安全,请使用AES 256,尽管128仍然应该足够。最大的风险不是针对算法本身的攻击,而是针对密钥管理或侧通道攻击的攻击(根据应用程序和使用情况,可能存在风险,也可能不存在风险)。如果您的应用程序容易受到密钥管理攻击或侧通道攻击,那么您应用多少级别的加密并不重要。这是我专注于你的努力的地方。
我不认为你有任何东西可以通过在另一个上面应用一个与第一个非常不同的加密算法来解决。然而,我会警惕在第一轮算法上运行第二轮相同的算法,即使你在中间运行另一个算法。两次运行之间的交互可能会打开漏洞。
话虽如此,我认为你在加密部分上苦苦挣扎。大多数数据暴露不是通过破坏行业标准加密算法(如AES),而是通过系统中的其他弱点发生的。我建议花更多的时间来研究密钥管理,未加密数据的处理,算法实现中的弱点(泄漏数据或密钥的可能性)以及更广泛的系统问题,例如,你在做什么来处理数据备份。
Diomidis:这基本上是我的观点,但我的同事正试图说服我,这确实“提升了”安全性。我的建议是使用更强的加密密钥而不是一个接一个的算法,而不需要任何思考或深入了解我正在做什么。