【问题标题】:Cryptanalysis of ciphertext using Java使用 Java 对密文进行密码分析
【发布时间】:2011-04-13 20:12:05
【问题描述】:

我正在寻找有关作业的一些想法。

我有 7 个密文文件,所有这些文件都使用 相同的对称密钥加密,该密钥长度为 3 个字符,并且是字母。没有提供加密算法,但规范声明它是自制算法并且是天真的(无论这意味着什么)。我的目标是解密这些文件。我只是在寻找可以对这些文件进行攻击的想法。

到目前为止,我已经做了频率分析,暴力攻击检测Ceasar Cipher,Krasinsky 方法检测Vigenere Cipher,Ciphertext XOR 检测简单版本的流密码。我怀疑这些文件是使用某种密码组合加密的。

顺便说一句,解密后的明文应该只包含一条普通消息,但密文显示使用了超过 97 个不同的 ASCII 符号!

非常感谢任何一般性的帮助、想法或指导!老实说,我不希望解密这些文件,但我不妨在你的帮助下证明我的教授错了。谢谢!

编辑

我正在寻找对块或流密码的攻击。至少那是我怀疑的......

【问题讨论】:

  • 只是一个观察 - 但著名的 Enigma 机器使用了 3 个字符的对称字母键。 97 个 ASCII 符号? ASCII 从 32 运行到 126,给出 94 个符号。 \n 和 \r 为 96 添加了两个,然后是消息结束标记,例如 \0 为 97。换句话说,早期 Engima 机器(带有固定反射器)的原始副本加密 Windows 样式的文本数据会很好地匹配线索。
  • @Simon 哇!这是我听过的最准确的话!你说的符合目前的一切!我印象深刻!也许你可以把它写成答案,我很乐意接受。作为附带请求,您知道攻击这种加密的任何技术吗?
  • 仅从示例文件进行反转相当困难。你不能用它们反编译应用程序吗?

标签: java cryptography encryption


【解决方案1】:

著名的 Enigma 机器使用 3 个字符的对称字母键。 97 个 ASCII 符号? ASCII 从 32 运行到 126,给出 94 个符号。 \n 和 \r 为 96 添加了两个,然后是消息结束标记,例如 \0 为 97。换句话说,早期 Engima 机器(带有固定反射器)的原始副本加密 Windows 样式的文本数据会很好地匹配线索。

谜机器有一些已知的缺陷。如果您的教授非常友善,他将复制德国海军早期使用的弱系统。这是使用一次性密钥加密每条消息,然后允许解密在使用标准密钥加密的消息开始时两次传输一次性密钥。通过传输两次,他们为密码分析提供了额外的上下文。

第二个众所周知的缺陷是角色永远不会映射到自己。因此,如果您有潜在的纯文本,则没有字符会匹配。

如果您知道转子和反射器的外观,就可以暴力破解 Enigma。在不知道在这种情况下您有大约 10^15 种可能性可供探索的情况下。

【讨论】:

    【解决方案2】:

    为什么不继续并开始暴力破解每种最流行的对称密钥算法的所有 26**3 可能性:

    还有其他你能找到的。

    【讨论】:

    • @Elalfer 是什么让你这么认为?即使不太可能,尝试的可能性也相对较少,为什么不呢?
    • @Daniel 感谢您的意见!但我试图摆脱蛮力并专注于实际的密码学。另外,由于加密是使用一些简单的算法完成的,我怀疑是否使用了 twofish 或 rijndael .. 而不是我正在寻找有关流和分组密码的技术..
    • @Daniel:请参阅 Druv 之前的评论。对这些密码中的任何一个进行暴力攻击都需要数年甚至数年的时间。所以这个家庭任务没有任何意义。
    • @Elalfer 实际上,在这种情况下,蛮力不会花费太多时间,因为我们知道密钥长度(3 个字母)。但我不是在寻找蛮力..
    • @Elalfer 只需 3-alpha-char 密钥的蛮力攻击不会永远花费任何时间
    【解决方案3】:

    由于算法简单且自制,你可以试试这些朴素的算法:

    • 每隔 3 个字符与密码密钥重复 XOR
    • 每隔 2 或第 1 个字符与密码密钥重复 XOR
    • XOR 和旋转/移位:密码密钥与密文异或并旋转/移位

    由于您知道纯文本是常规文本,因此请在密文的前几个字符中查找模式,看看它们是否可以与密码密钥组合以获得字母/数字的 ASCII 码。

    【讨论】:

      【解决方案4】:

      现在,您说您已经完成了统计分析。如果算法实际上是幼稚的,则符号的频率将不会均匀分布。一些符号会更频繁地被发现。是这样吗?如果是这样,我会从那里挖。

      我不妨证明我的教授 你的帮助有问题

      有了“我们的帮助”将我们证明你的教授错了。

      【讨论】:

      • 感谢您的帮助!不幸的是,我没有找到任何模式。无论如何,密文有大约 97 个不同的符号。知道为什么,考虑到明文是用简单的英语(26个字母)写的?嗯,如果你愿意,我可以在我的报告中特别提到你:)
      • @Dhruv:如果明文有大小写,已经是52个字母了。添加空格、回车、逗号。然后一个密码将它们混合在一起,并且可能还使用大于 1 的块大小分发到完整的 ASCII 曲目中。
      • @Paulo 啊,是的,这是一个敏锐的观察。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      相关资源
      最近更新 更多