20

我编写了一个以这种方式加密文本的应用程序:

  1. 获取输入文本

  2. 反转文本

  3. 转换为十六进制

  4. 与密钥进行异或

  5. Base64 编码

现在,我自己并没有做很多加密/编码,所以我的问题可能听起来很愚蠢,但是,假设我得到一个包含上述算法内容的文件,而我不知道这个算法。一个人将如何开始“破坏”文本,是否有任何指导方针、原则和规则可以遵循?

我的问题与这 5 个步骤无关,这是一个纯粹的例子。

作为不同的示例,以文本:A751CD9E1F99 为例。我将如何开始调查这可能意味着什么?

4

11 回答 11

18

为了破解密码,密码分析员使用他们可以收集的所有信息。攻击分为许多类别,具体取决于已知的内容。一些主要的攻击,从最难到最简单,是

  • 仅密文:这是最难的攻击。分析师试图收集尽可能多的加密消息,并分析它们以寻找符号频率的模式或偏差。但是,对于良好的现代密码,没有模式。这对于正确使用的良好密码是不可行的。
  • known-plaintext:让明文对应一些密文是从新密文中恢复未知明文的一大步。这是“逆向工程”真正开始的地方,因为他可以根据已知的输入和输出来测试他关于算法的假设。在第二次世界大战中,密码分析员努力建立广泛的“婴儿床”列表 - 可能出现在敌人信息中的单词 - 以利用已知明文攻击。例如,某一天的天气状况或战斗的地名等都可能以加密消息的形式报告给总部。
  • 选择明文:更好的是当密码分析员可以欺骗他的敌人加密由密码分析员创建的消息时。在战时,有时会向敌人泄露虚假信息,希望将其加密并帮助密码分析员破解密码。
  • 自适应选择明文:这是一种已知明文的迭代方法。密码分析者可以反复让系统加密他选择的明文,并查看结果以调整他的下一次尝试。

如今,破解密码的可能方法是通过系统中的缺陷。例如,可能会使用不良的密钥管理,从而导致密钥被盗或被猜到。在其他情况下,可能会使用“旁道”攻击。例如,通过仔细测量某些加密操作所需的时间,攻击可能会猜测密钥的某些位或字节为零,从而导致通过某些算法的快速路径。

频谱的“锡箔帽”端附近是拦截计算设备无线电发射的方法。这允许远程代理“看到”监视器上显示的内容。甚至有专门设计的字体来尝试破坏这种窃听。

于 2009-06-12T20:21:08.973 回答
8

基本上,这种加密方式很容易解密。base64 编码将相当容易识别。(您将只使用 64 个字符,这是 Base64 的典型特征。)接下来是查找原始 XOR 键的步骤。这有点困难,但如果有足够的加密数据可用,有几种算法可以检测这些密钥。你的简单文本是不够的,但如果他们知道它应该变成一个十六进制字符串,事情就会变得容易得多。然后他们确实扭转了你的其他步骤。所有这些都太容易了。

如果可能的话,如果黑客在加密之前知道原始值,它应该能够破解。在这种情况下,与提供的字符串一样短的字符串至少足以发现您的完整加密例程,尽管您用于对字符串进行异或的密钥可能并不完全已知。

好吧,让我们尝试解密 A751CD9E1F99... 12 个字符。您似乎只使用了几个字符,因此它似乎只是一些十六进制字符串。原件必须是 6 个字符。值将在 0x51 到 0xCD 的范围内,这对于 base64 编码来说太大了。此外,由于大多数值都高于 0x7F,这表明您已经对其进行了一些编码。字典攻击已经可以对所使用的 XOR 键提供一些见解,您可以将 6 个十六进制值与大量 6 个字符的单词进行 XOR,以查看哪个返回字典中的另一个单词。似乎返回有效单词的那些可能是您用来异或原始单词的键。使用第二个加密字符串,可以再次使用那些发现的密钥,将可能的密钥集过滤成更小的集合。在现代系统中,

大约 50 年前,这种加密方案将非常强大。如今,希望它在一天之内被任何有兴趣尝试破译它的人破解。

我不是破解加密的专家,但我知道哪些加密方法太弱而无法使用。大约 10 年前,我参与了一个项目,该项目使用像您这样的复杂 XOR 机制将密码存储在加密文件中。然后,一位客户决定检查安全性,并让专家仅调查密码文件。他只知道一个用户名和密码,并且该用户帐户没有管理权限。但这足以让他在一小时内破解安全性,阅读有关管理员帐户的信息,然后使用该信息做任何他喜欢的事情。然后我的公司给了他一周的免费啤酒...... :-) 因此,10 年前,专家只需要一个小时。如今,他们正在相对轻松地破解更复杂的算法,仅仅因为计算机功能更强大。如果您必须使用这种加密,那么您也可以不使用加密。对于黑客来说,这并不重要。

于 2009-06-12T20:58:12.333 回答
5

如果您知道如何解密,您将能够尝试猜测算法。我可以创建许多算法,这些算法会导致某些输入为“A751CD9E1F99”。

现在,如果您有许多可用的输入/输出,例如,您可以尝试只更改一点输入以查看输出会发生什么。良好的加密算法通常会导致较小的输入更改导致较大的输出更改。

于 2009-06-12T19:43:08.270 回答
5

我认为您应该从阅读The Code Book开始。您要问的是如何破解加密方法,这将使您开始了解它们的工作原理。

于 2009-06-12T19:43:44.663 回答
4

橡胶软管密码分析可能非常有效。

于 2009-06-12T20:11:50.557 回答
3

您将需要比这更大的文本库,并且需要了解地穴来自特定语言/域。然后根据该语言/领域中单词的频率,可以潜在地破译文本中的某些属性。

当然,好的密码可以解决这个问题。使用这种方法只能轻松破解实现不佳的密码。

于 2009-06-12T19:44:43.007 回答
2

密文不可区分性是一个很好的页面,可以帮助您了解加密算法旨在防止/防御的内容。提到的攻击类型(例如 IND-CPA)也可以为您提供有关可以从什么开始的线索。

于 2009-06-12T19:59:16.920 回答
1

攻击者可能(通常)会执行以下操作:

识别并击败任何“肉眼可见的编码”或琐碎的加密,如文本反转、Base64 编码、ROT13 等。

当他们发现高熵状态时,他们会尝试获取更多的编码数据,并将它们异或在一起。如果编码确实是基于 XOR(如 RC4)并且密钥是恒定的,这会导致两个原始纯文本的 XOR-ing 与密钥被取消。如果攻击者可以获取任何纯文本编码的数据组合,则所有其他编码数据都是可解码的。

在最后绝望时,他们可能会尝试针对最常见的做法进行测试,例如他们使用 RC4 或其他带有动态密钥的简单算法,并将密钥放在文件/数据的末尾或开头。

如果他们只能访问编码文本,这几乎就是路的尽头。如果他们可以访问.. 像 API,他们可以在其中生成提供的纯文本的编码版本,那么他们将轻松识别它是基于位(如 XOR)、块密码还是前馈块密码编码,但获取密钥和实际算法仍然是一个问题。

如果他们可以访问对称密钥编码的解码程序(如您的 XOR),或非对称密钥编码的编码程序,则编码很可能会立即被逆转而失败。

于 2016-03-29T09:39:51.020 回答
0

如果您可以访问进行加密的黑匣子,则可以通过为其提供特定的输入值来获取大量信息。

举个简单的例子,如果黑匣子进行“一次性密码”式加密,如果您将其全部输入零,您将获得一次性密码。(事实上​​,给它提供任何输入值都会让你得到一个带有额外异或的一次性填充。)

请注意,即使密码系统已知(但密钥未知),好的密码系统也能抵抗此类攻击。

于 2009-06-12T20:08:26.133 回答
-1

那是不可能的,如果您对使用的密钥一无所知,您将在 XOR 解密中失败。

在一般情况下,更不可能(如果可能的话:))来衡量加密字符串的含义。

于 2009-06-12T19:38:52.053 回答
-2

错误...我会说:

  1. Base64 解码输出。
  2. 将输出与输入异或以获取密钥。

我假设由于这是一个简单的加密算法,如果您知道输入和输出,但不知道密钥,那么应该很容易以这种方式反转它。

于 2009-06-12T19:44:10.090 回答