如何根据散列检测散列的算法?

信息安全 哈希 密码分析
2021-09-06 10:26:01

今天早上我正在阅读一篇Ars Technica 文章,并在最后看到以下内容(强调我的):

Equation Group 在不同的漏洞利用中包括了其他六个哈希值,目前这些哈希值仍然未知。它们似乎是由 SHA1 算法生成的。他们是:

0044c9bfeaac9a51e77b921e3295dcd91ce3956a

06cf1af1d018cf4b0b3e6cfffca3fbb8c4cd362e

3ef06b6fac44a2a3cbf4b8a557495f36c72c4aa6

5b1efb3dbf50e0460bc3d2ea74ed2bebf768f4f7

930d7ed2bdce9b513ebecd3a38041b709f5c2990

e9537a36a035b08121539fd5d5dcda9fb6336423

如何仅根据散列的位推断用于生成散列的算法?(特别是关于 SHA 类算法,它们旨在加密安全?)

2个回答

一般来说,您不能从输出中推断出散列算法。输出只是一个位序列,产生n位输出的散列函数至少在理论上可以产生任何n位输出序列。

但是,有些人可以快速推断(也许太快了),说在“通常”的哈希函数中,只有一个产生 160 位输出,即 SHA-1。(这个“通常”的概念不包括RIPEMD-160,它虽然比 SHA-1 少见,但仍被广泛用作PGP的一部分。)


如果,在未来的某个时刻,我们找到一个值x使得 SHA-1( x ) 匹配这些哈希值之一,那么我们将非常确定 SHA-1 确实参与其中,并且在输入x上;任何其他假设都意味着我们刚刚打破了 SHA-1 的原像抗性,据我们所知,这超出了我们的集体技术范围(除非我们非常幸运)。然而,在这完成之前,声称“这是 SHA-1”只是猜测。

在同一篇文章中暗示卡巴斯基可以访问使用哈希的代码。他们知道算法,因为他们有生成它的代码。

他们想知道的是哈希隐藏的代码目标是什么。