encryption - 人们如何着手攻击加密文件?

标签 encryption aes

<分区>

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

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

例如,假设您有一个加密文件并且您想知道它的内容。您不知道用于加密文件的 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 FIPSNSA Suite B是由联邦政府标准化的算法,大多数人都遵循。

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

  • Bad random number generation : 密码学需要非常好的、不可预测的随机数生成器。错误的随机数生成器可能会完全破坏安全性,例如 Netscape's SSL implementation。 .你也有像 Debian RNG 这样的例子bug,开发人员更改代码以满足内存泄漏警告,最终导致 Debian 为每个系统生成相同的证书 key 。

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

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

  • Rubber hose cryptanalysis :也许是最简单的攻击之一,除非他们透露 key ,否则您将以人身伤害或监禁来威胁当事人。有很多interesting case law关于法院是否可以强制您透露加密 key 。

关于encryption - 人们如何着手攻击加密文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14309283/

相关文章:

c# - 如何正确保护忘记密码端点

PHP Triple DES ECB 加密/解密的 Java 等效项

github - GitHub 如何知道我的密码较弱?

java - 黑莓中使用 NoPadding 进行 AES 加密

Iphone:如何验证消息验证码(Mac)

php - Mysql/Codeigniter - 加密/解密用户数据安全 - 最佳实践

javascript - 有趣的JavasSript混淆方法——无法解码

iphone - 使用 openssl 加密并使用 AES 128、ecb 模式在 iPhone 上解密

c - 使用 Visual Studio 和 Openssl 进行 AES 256 CTR 加密/解密

c - 为什么我在尝试使用 Brian Gladman 博士的 AES-GCM 时会出现段错误?