如果实现是公开的,散列算法有什么用处?

信息安全 哈希
2021-08-20 06:06:44

我可能会误解,但是如果我想使用诸如 argon2 之类的散列算法,那么有人看到它是如何工作并反转它的作用是什么?

4个回答

公开才是重点:你向每个人展示它是如何完成的,以及扭转它是多么困难。这就像向您展示一个巨大的拼图游戏,其中包含一万亿块,但每一块都在它的位置,然后将所有东西都洗牌。您知道拼图的所有部分(您刚刚看到它),并且您知道将所有内容放回原处非常非常困难。公共哈希向您展示了它是如何完成的(结果)以及反向完成所有事情的难度。

公共哈希函数只是一组数学运算。任何人都可以(但只有少数人会)手工操作并证明该算法按预期工作。任何人也可以扭转它,但它需要很长时间(数万亿年,加上我们星球的所有计算能力),最经济有效的扭转它的方法是暴力破解。

除非它是一个非常基本的不安全哈希函数。

可能不是您正在寻找的答案,但请考虑一下。

取一个 10 位数字,例如 3,481,031,813,然后现在只用笔和纸找到它的正方形(即乘以它本身)。虽然繁琐,但这相对简单,可以在一段时间后完成。

现在用同样的笔和纸,试着计算一个 20 位数字的平方根。这是一项艰巨得多的任务——尽管它实际上与第一项任务相反。

可以制作数学函数,因此反函数更难求解。哈希将其得出其合乎逻辑的结论的一种方式-该函数很难解决,以至于实际上无法解决。

除此之外,信息在此过程中丢失的事实。2 的平方是 4,但 4 的平方根是 +2 和 -2。在平方函数中丢失了关于原始数字的符号的信息。散列函数也有效地做到了这一点,当你把一个 10GB 的文件缩小到 256 位散列时,信息会丢失,根本没有办法重建原始消息。

我不认为我能给出一个完全让你满意的答案,但简短的回答是,对于被称为“加密哈希函数”的东西,它必须是一个足够复杂的函数,这种逆向工程是不容易。这并不是说这是不可能的,但是只要有人在逆向工程加密哈希函数方面取得了一点进展,我们就会认为它已被破坏,并转向更强大的东西。您可以在此处(维基百科)阅读有关加密哈希函数属性的更多信息

作为一个例子,让我们看看 SHA-1,加密哈希函数的属性是:

  • 原像抗性
  • 第二原像电阻
  • 碰撞阻力

2005 年发明了一种攻击,可以在大约 2 60次操作中发现冲突。执行该攻击仍然需要数百万美元,据我所知,其他两个加密属性(原像和第二个原像)仍然没有受到攻击,但这足以让我们考虑 SHA-1完全破碎。

因为你无法逆转它们。

基本上,如果它这么容易,你为什么不去做呢?嗯,曾经有更简单的哈希函数,人们想出了如何反转它们,然后其他人做了它,所以这些方法不起作用。到目前为止,我们有没有人知道如何反转的哈希函数。

实际尝试反转 MD4 之类的东西并看看你卡在哪里可能会很有启发性。然后找出MD4如何反转的。对于最后一部分,您需要查找和阅读学术论文 - 如果您是一名大学生并且您的大学付费让您访问上传论文的地方,这会更容易,但通常您可以在其他地方的互联网。