我最近一直在阅读文件加密,并且在很多地方我都看到警告说加密文件很容易被人们解密,而不管加密算法的强度如何。
但是,我无法理解有人试图解密加密文件的方式。
例如,假设您有一个加密文件,并且您想知道它的内容。您不知道用于加密文件的密钥是什么,也不知道使用的加密算法。你是做什么? (假设本例中加密算法是对称密钥算法,例如AES-256,I.E。用密钥加密的文件,需要密钥对其进行解密)。
此外,如果您知道使用的加密算法,您的方法将如何改变? (在这种情况下假设使用的加密算法是AES-256,带有随机密钥+盐)。
答案 0 :(得分:3)
有两种方法可以回答这个问题,从字面意义上讲,一个完美的加密系统是如何被攻击的,以及现实世界系统是如何被攻击的。当您开始了解有关密码学的更多信息时,您会发现最大的问题之一是选择算法很容易。这就是你如何管理难以置信的难关。
攻击基本图元的方式取决于算法的类型。对于由AES等对称密码加密的数据,您使用Brute force attacks。也就是说,您可以有效地尝试每一个键,直到找到正确的键。不幸的是,除非物理定律发生变化,否则无法尝试每个可能的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"
关于遇到看似加密的文件的问题,在不了解所使用的方法的情况下,问题是它有点像Distinguishing Attack这个问题。所有现代算法的要求之一是它们的输出应该与随机数据无法区分。如果我在AES和Twofish下加密某些东西,然后给你一些随机数据,没有像标题这样的任何其他信息,你就无法区分它们。话虽如此......
您询问算法的知识如何改变方法。密码学家通常做的一个假设是算法的知识根本不应该影响安全性,它应该都取决于密钥。通常,您正在使用的任何协议都会告诉您算法规范。如果这不公开,互操作性将是一场噩梦。例如,Cipher Suites是像SSL一样支持协议的算法集。 NIST FIPS和NSA Suite B是由联邦政府标准化的算法,大多数人都遵循这些算法。
在实践中,大多数加密系统存在更大的问题。
Bad random number generation:密码学需要非常好的,不可预测的随机数生成器。糟糕的随机数生成器可以完全破坏安全性,如Netscape's SSL implementation的情况。您还有一些示例,例如Debian RNG错误,开发人员更改了代码以满足内存泄漏警告,这最终导致Debian为每个系统生成相同的证书密钥。
Timing Attacks:某些操作在计算机上执行的时间比其他操作要长。有时,攻击者可以观察到这种延迟并推断出秘密值。这是has been demonstrated通过本地网络远程恢复服务器的私钥。
Attacks against the host:攻击密码系统的一种方法是攻击主机。通过冷却内存,可以在您控制的机器中保留和检查其内容。
Rubber hose cryptanalysis:也许是最简单的攻击之一,除非他们泄露钥匙,否则你会对身体受到伤害或被监禁的人进行威胁。关于法院是否可以强迫你揭示加密密钥,已经有很多interesting case law。
答案 1 :(得分:1)
以基本的暴力攻击为例。您要求软件尝试使用a-z A-Z 0-9在1个字符到15个字符之间的每个组合并等待。 软件将从0到10 ...然后0a,0b,0c开始,直到找到密码。 Wikipedia会为您提供更多详细信息。
答案 2 :(得分: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之外,绝对没有理由寻找另一种密码。 只要人类占据地球就足够了。
答案 3 :(得分:1)
我部分同意安德鲁,部分同意杰里米。
在这种情况下,如果正确生成加密密钥(随机生成或基于复杂密码,良好的密钥派生函数和随机盐),那么AES256实际上是牢不可破的(正如安德鲁所说)
另一方面,如果未正确生成密钥。例如,只需4位数的PIN密码直接哈希,蛮力就可以非常高效。
关于“您不知道用于加密文件的密钥是什么,也不知道使用的加密算法。”
在大多数情况下,加密文件有一个页眉或页脚,用于指定某些内容(用于加密文件的应用程序,加密算法或其他内容)。
你可以尝试通过填充来计算算法(例如3DES有填充,AES有不同的填充)