【问题标题】:reverse engineering simple encryption algorithm逆向工程简单加密算法
【发布时间】:2012-02-21 21:05:06
【问题描述】:

对于使用遗留系统的公司,我正在尝试对他们使用的旧加密方法进行逆向工程。该软件的源代码丢失了,或者有人告诉我。 (或者他们可能不想让我看到系统的完整运作)。

无论如何,系统使用唯一标识符和其他一些信息来创建密钥。 此密钥用于加密某些数据。

我需要对这个算法进行逆向工程。 (我可能在我的头上,但我会尝试)。

我拥有用于​​创建密钥的信息以及加​​密和未加密的数据。 所以我最好的选择是使用“知道明文攻击”。但我正在寻找一些提示或网站,其中包含有关如何进行的更多信息。

我知道这可能是一项不可能完成的任务,但是尝试一下很不错,对吧?

【问题讨论】:

  • 您可以访问目标代码吗?某个实现是否在某处运行?
  • 如果它是“一些旧的”加密方法,很可能是众所周知的算法,例如 DES 或 TEA。只有傻瓜和天才会编写自己的加密算法。因此,您可能首先想做的一件事是谷歌搜索这些算法。它们都使用一些众所周知的常量用于 s-box 等。如果您使用十六进制编辑器搜索可执行文件,并找到所述常量,您就会知道它是什么算法。这比基于已知明文的密码分析要容易和快十亿倍。例如,如果您在程序中发现 0x9e3779b9,则很有可能是 TEA。

标签: encryption


【解决方案1】:

您可以尝试以这种方式进行:

  1. 加密不同长度的简单重复消息(“aaaa”、“bbb”)并开始分析不同度量的输入与输出的统计相关性(输入的长度与输出的长度相关,a 的出现次数输入中的字符与输出中任何字符的出现等相关)
  2. 如果您发现一些统计相关性,请尝试做出假设并开始进行一些其他实验,为您的加密函数提供更复杂的输入

【讨论】:

  • 我认为这可能是目前最好的方法。
【解决方案2】:

您的任务并非不可能——只是不太可能。

如果您拥有密钥和明文,那么我建议您通过尽可能多的标准算法运行它们。实施该系统的人很可能使用了标准算法的通用实施。

您可能会失败,因为任何足够现代的密码都不应该受到已知明文攻击:http://en.wikipedia.org/wiki/Known-plaintext_attack

【讨论】:

  • 是的,这可能是一个长镜头。我只是想我会得到一些对此事有更多了解的人的意见。我不认为通过众所周知的算法运行数据会有多大帮助,因为有这么多。
【解决方案3】:

我不得不质疑这里的动机,这不是一个饼干网站。即使他们没有来源,如果它不是标准的加密形式,他们也应该有规范。无论哪种方式,我都不敢相信他们会设计一个系统来存储加密数据而无法检索它,因此可以使用解密器,在这种情况下,解密数据,实施新的记录加密技术并重新加密使用它的数据。这比尝试破解未知的加密程序要容易得多。

【讨论】:

  • 你是对的,有一个可用的解密器。但是目前他们希望继续使用旧的加密数据。无需使用新算法重新加密,即可“向后兼容”。
猜你喜欢
  • 2010-11-02
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 2016-11-23
  • 2013-10-14
  • 1970-01-01
  • 2011-12-28
  • 2020-07-02
相关资源
最近更新 更多