加密方法未知时解密数据的最有效方法是什么?

时间:2009-06-11 12:07:25

标签: language-agnostic encryption

我有大量数据在备份之前由第三方工具加密,现在我们无法再访问该工具了,我 需要 数据尝试和确定数据加密方式的最有效方法是什么?

12 个答案:

答案 0 :(得分:9)

需要 以获取最初用于加密数据的第三方工具。

如果您无法掌握该工具,那么您 需要 有关所使用的算法,密钥等的信息,最好来自供应商。

答案 1 :(得分:9)

希望不会丢失。有一个很好的变化,你可以弄清楚使用了什么加密,并可能解密它。首先,在Cygwin或unix中,键入文件命令:

$ file mydata
mydata: SQLite 3.x database

文件将查看前几个字节并尝试确定其内容。数据如何加密有几种可能性:

  • 100%加密数据和结构
  • 数据加密,但不是结构
  • 既不加密,也会在程序中添加密码检查。

如果幸运的话,file命令将知道文件的文件,并且不会加密数据的结构。这很常见,因为当程序更新数据时,它通常不想重写整个文件。此外,如果数据不是实际数据库,而是导出,则可以对其进行压缩。文件将告诉您它是否使用通用压缩格式。

接下来,使用'strings'命令。

$ strings mydata

这将输出任何明文数据。如果您看到数据的证据,则可能无需解密。有些程序只是执行密码检查而根本不进行任何加密。即使供应商表示他们正在“加密”您的数据,情况也是如此。

如果你仍处理一堆随机字节,而字符串和文件只是告诉你它的二进制数据,那么你需要开始探索数据。

接下来的两件重要事情是查看文件的总长度。文件大小的模数可以告诉您有关加密算法的信息。第二件事是查看数据的直方图。

$ ruby -e 'ARGF.each_byte {|b| puts b >> 4; }' <  mydata | sort -n | uniq -c

如果字节均匀分布在0-255范围内,那么您处理的是正确的加密算法。如果您的数据不平衡,则可能很容易检测到并破坏加密。例如,看看这个输出:

     15 0
     54 2
     93 3
    248 4
    165 5
    177 6
    135 7

频率计数在第一个桶中,数据在第二个桶中。在这里,您可以看到数据中不包含127以上的字符。这意味着数据接近ASCII文本。再次运行直方图,并将数据放在一个字节桶中。只需离开右移操作员。

$ ruby -e 'ARGF.each_byte {|b| puts b; }' <  mydata | sort -n | uniq -c

现在,您可能会看到ASCII分布,或者数据可能是base64编码或base96编码。您可以通过解码器运行流,并再次尝试上述所有步骤。

如果您发现处理工业强度算法,那么您需要弄清楚哪一个。如果您有任何程序副本,代码本身通常会很容易地放弃使用的算法。如果没有,你必须看看像长度这样的东西。如果数据长度始终是模数8,那么它可能使用像河豚这样的对称块密码进行加密。

如果您可以确定使用的密码,那么您必须弄清楚密钥。如果程序需要密码,则密钥可能基于密码,或者密码本身。如果幸运的话,程序不会要求输入密钥,只有程序本身才能知道密钥。在这种情况下,如果您可以开始使用该程序,那么您可以从程序中提取密钥,因为它必须包含密钥才能加密和解密。

我的经验是大多数供应商软件都没有使用真正的加密技术,程序员在编写数据之前会尝试对数据进行异或操作。如果它使用真正的加密,软件通常会附带有关出口限制的披露。

答案 2 :(得分:8)

你需要两个:

  • 找出加密方法;和
  • 找出用于加密的密钥。

最简单的方法是(如果可能的话)去找那个做它的人或公司并问他们。

我不羡慕你这个任务,因为除非加密像XOR一样无用,否则你的工作就会很严重。

首先,您可能想告诉我们该工具的名称。从问题中扣留信息只会让你更难,而且你不需要: - )

答案 3 :(得分:7)

我认为已经涵盖了所有正常的想法,但这里有几个长镜头。

尝试查看原始数据,尤其是前四个字节。运行搜索前四个十六进制字节,看看你是否幸运并得到一个命中(即看看供应商是否在标题中使用了一个魔术字节)。

您可以尝试的另一件事是通过像'strings'这样的实用程序运行原始文件(或者只是浏览文件,如果它相对较小)。看看该工具是否在结果文件中嵌入了版权声明等 - 它至少值得一试。

当然,您也可以尝试将文件发布到互联网上并查看其他人可以提出的内容,但我猜这会破坏您的目的(即,它是机密数据 - 为什么还会这样?首先加密。)

答案 4 :(得分:4)

如果第三方工具有任何好处,您可能不得不亲吻数据再见。数据值多少钱?恢复需要多少钱?再次获取工具的成本是否会低于数据的价值?如果是这样,那就再买一次吧!

您应该寻找对第三方工具的有效性和安全性的任何专业审核。他们可能会对所使用的方法有所了解。

老实说,如果您无法再次访问该工具,最好的办法是联系专业的数据恢复公司。如果您使用的产品相当普遍,您可能以前遇到过它。当然,如果它有任何好处,它们可能无法提供帮助,除非你还有任何可用的钥匙。

答案 5 :(得分:3)

除非你有加密密钥,否则这不是一个毫无意义的练习?

答案 6 :(得分:3)

追踪制作该工具的人员,或者在您有权访问该工具时使用该工具的人员。催眠它们以使它们回归到更早的时间,以便它们能够回想起它是什么。

答案 7 :(得分:2)

除非您可以联系第三方供应商或者可以在线搜索以查看使用何种类型的加密,否则您运气不佳。

即使你确实发现了,除非你使用的钥匙非常短或容易猜到,否则强行使用可能需要很长时间。

答案 8 :(得分:1)

听起来你甚至在你自己的组织中也表现出冷漠,如果他们甚至不合作甚至命名这个工具。

我告诉管理层,知道它是哪个工具至关重要。有人要么知道,要么有一些有用的文书工作。四处询问,强调重要性,并记录你提出的问题。在这种情况下,采取通常的CYA措施。

在那之后,我不再担心了。你可能想对它进行一些攻击只是为了看起来不错,你可能会很幸运。但是,如果公司中没有其他人关心公司的重要事情,我发现自己太过于紧张而无法自拔。

答案 9 :(得分:1)

由于您知道拥有所需信息的人,因此您最好的选择是rubber hose cryptanalysis

答案 10 :(得分:0)

如果有人知道完美的答案,世界将是一个疯狂的地方。

答案 11 :(得分:0)

如果数据是加密的,可能是正好防止你现在正在尝试做的事情:在没有相应凭据的情况下访问明文。

这个无法完成,在这种情况下加密工具已经完成了它的工作;或者它可以可行完成,你需要开始非常担心(与保持数据保密的价值成比例)关于谁 else 能够在你不知情的情况下做。