3

我最近一直在阅读文件加密,并且在许多地方我看到警告说加密文件很容易被人们解密,无论加密算法强度如何。

但是,我无法理解有人会如何尝试解密加密文件。

例如,假设您有一个加密文件,并且您想知道它的内容。您不知道用于加密文件的密钥是什么,也不知道使用的加密算法。你做什么工作?(假设此示例的加密算法是对称密钥算法,例如 AES-256,即使用密钥加密的文件,需要所述密钥对其进行解密)。

此外,如果您知道使用的加密算法,您的方法将如何改变?(假设在这种情况下使用的加密算法是 AES-256,带有随机密钥 + salt)。

4

4 回答 4

3

有两种方法可以回答这个问题,从字面意义上来说,完美的加密系统是如何受到攻击的,以及现实世界的系统是如何受到攻击的。当您开始更多地了解密码学时,您会发现的最大问题之一是选择算法是很容易的部分。管理这些密钥的方式变得异常困难。

攻击基本原语的方式取决于算法的类型。对于由对称密码(如AES )加密的数据,您使用蛮力攻击。也就是说,您有效地尝试了所有可能的键,直到找到正确的键。不幸的是,除非物理定律发生变化,否则无法尝试所有可能的 256 位密钥。来自维基百科:"A device that could check a billion billion (10^18) AES keys per second would in theory require about 3×10^51 years to exhaust the 256-bit key space"

关于遇到看似加密的文件的问题,不知道使用的方法,这是一个被称为区分攻击的难题。所有现代算法的要求之一是它们的输出应该与随机数据无法区分。如果我在 AES 和 Twofish 下加密某些东西,然后给你一些随机数据,没有任何其他信息(如标题),你就无法区分它们。话虽如此....

你问算法知识如何改变方法。密码学家通常做出的一个假设是,算法知识根本不应该影响安全性,它应该完全取决于密钥。通常,您使用的任何协议都会告诉您算法规范。如果这不是公开的,互操作性将是一场噩梦。例如,密码套件是 SSL 等协议支持的算法集。NIST FIPSNSA Suite B是由联邦政府标准化的算法,大多数人都遵循。

但在实践中,大多数密码系统都有更大的问题。

  • 糟糕的随机数生成:密码学需要非常好的、不可预测的随机数生成器。糟糕的随机数生成器会完全破坏安全性,例如Netscape 的 SSL 实现。您也有像Debian RNG错误这样的示例,其中开发人员更改代码以满足内存泄漏警告,这最终导致 Debian 为每个系统生成相同的证书密钥。

  • 定时攻击:某些操作在计算机上执行的时间比其他操作要长。有时,攻击者可以观察到这种延迟并推断出秘密值。这通过通过本地网络远程恢复服务器的私钥来证明。

  • 对主机的攻击:攻击密码系统的一种方法是攻击主机。通过冷却内存,可以在您控制的机器中保存和检查其内容。

  • 橡胶软管密码分析:也许是最简单的攻击之一,除非他们透露钥匙,否则你会以身体伤害或监禁来威胁当事人。关于法院是否可以强迫你透露加密密钥,有很多有趣的判例法。

于 2013-01-13T23:51:08.927 回答
1

以基本的蛮力攻击为例。您要求软件尝试 1 个字符到 15 个字符与 az AZ 0-9 之间的每个组合,然后等待。软件将从 0 到 10... 开始,然后是 0a、0b、0c,直到找到密码。维基百科会给你更多的细节。

于 2013-01-13T23:11:41.653 回答
1

AES256 实际上是牢不可破的。

来自http://www.wilderssecurity.com/showthread.php?t=212324

我认为没有任何可信的推测可以证明任何机构都可以破坏正确实施的 AES。没有已知的密码分析攻击,实际上暴力破解 AES-256 可能在我们的任何一生中都超出了人类的能力范围。让我们假设 56 位 DES 可以在 1 秒内被暴力破解,这从一开始就是一个荒谬的假设。那么 AES-256 将需要 2^200 秒,即 5 x 10^52 年。因此,您可以看到,如果 AES 没有任何已知的弱点,即使使用量子计算,这在我们的任何一生中都是完全不可能的。大约 50 亿年后,在我们获得足够的计算能力以在没有已知弱点的情况下暴力破解 AES-256 之前,我们的太阳将爆炸。如果从未发现 AES 的弱点,那么绝对没有理由寻找除 AES 之外的另一种密码。

于 2013-01-13T23:14:42.823 回答
1

我部分同意 Andrew,部分同意 Jeremy。

在这种情况下,如果正确生成了加密密钥(随机生成或基于复杂密码、良好的密钥派生函数和随机盐),那么 AES256 实际上是牢不可破的(正如安德鲁所说)

另一方面,如果未正确生成密钥。例如,只需 4 位 PIN 密码的直接哈希,蛮力可能非常有效。

关于“您不知道用于加密文件的密钥是什么,也不知道使用的加密算法。”

在大多数情况下,加密文件具有指定某些内容(用于加密文件、加密算法或其他内容的应用程序)的页眉或页脚。

您可以尝试通过填充来找出算法(例如 3DES 有填充,而 AES 有不同的填充)

于 2013-01-14T00:03:34.157 回答