<分区>
我最近一直在阅读有关文件加密的内容,并且在很多地方我都看到警告说加密文件很容易被人们解密,无论加密算法强度如何。
但是,我无法理解有人会如何尝试解密加密文件。
例如,假设您有一个加密文件并且您想知道它的内容。您不知道用于加密文件的 key 是什么,也不知道使用的加密算法。你做什么工作? (假设此示例的加密算法是对称 key 算法,例如 AES-256,即用 key 加密的文件需要所述 key 才能解密)。
此外,如果您知道所使用的加密算法,您的方法会如何改变? (假设在这种情况下使用的加密算法是 AES-256,随 secret 钥 + 盐)。
有两种方法可以回答这个问题,从字面上看完美的密码系统是如何受到攻击的,以及现实世界的系统是如何受到攻击的。当您开始更多地了解密码学时,您会发现的最大问题之一是选择算法是比较容易的部分。这就是您管理这些 key 的方式变得异常困难。
攻击基本原语的方式取决于算法的类型。对于由对称密码加密的数据,如 AES你用Brute force attacks .也就是说,您可以有效地尝试每一个可能的键,直到找到正确的键。不幸的是,除非改变物理定律,否则无法尝试所有可能的 256 位 key 。来自维基百科:“理论上,每秒可以检查十亿十亿 (10^18) 个 AES key 的设备理论上需要大约 3×10^51 年才能耗尽 256 位 key 空间”
关于在不了解所用方法的情况下遇到看似加密的文件的问题是,这是一个被称为 Distinguishing Attack 的难题。 .所有现代算法的要求之一是它们的输出应该与随机数据无法区分。如果我在 AES 和 Twofish 下加密一些东西,然后给你一些随机数据,没有任何其他信息,比如标题,你就无法区分它们。话虽这么说……
您询问算法知识如何改变方法。密码学家通常做出的一个假设是算法的知识根本不应该影响安全性,它应该完全取决于 key 。通常,无论您使用什么协议(protocol),都会告诉您算法规范。如果这不是公开的,互操作性将是一场噩梦。 Cipher Suites ,例如,是 SSL 等协议(protocol)支持的算法集。 NIST FIPS和 NSA Suite B是由联邦政府标准化的算法,大多数人都遵循。
但在实践中,大多数密码系统都有更大的问题。