如果突然有一天 MD5 算法被破解了,可逆了怎么办

2014-04-10 21:51:19 +08:00
 atan
由这次的SSL事件想到的,只是一个假设,如果真有那么一天,互联网世界会怎么样?
18685 次点击
所在节点    程序员
73 条回复
Livid
2014-04-10 21:53:41 +08:00
这件事情很多年前已经发生了。

现在用 MD5 的场合已经非常少了。
rannnn
2014-04-10 21:55:06 +08:00
全宇宙最强的压缩算法诞生了,任意字节数据都可以压缩到128bits
YY
2014-04-10 21:55:12 +08:00
完全没什么影响。
atan
2014-04-10 21:55:33 +08:00
大部分数据库的密码还是再用md5(salt+密码)吧
azhao
2014-04-10 22:00:07 +08:00
想当年大家都还用明文来存密码呢,也不是这样过了
webjin
2014-04-10 22:02:18 +08:00
@rannnn ????
rannnn
2014-04-10 22:07:42 +08:00
@webjin 楼主说的是『如果可逆了怎么办』
gelupk
2014-04-10 22:09:44 +08:00
根据摘要就能把论文全文推导出来,碉堡了
davidli
2014-04-10 22:18:29 +08:00
几年前就有一位山大女教授说自己破解了MD5,但不知道后续怎么样了。
至于根据密文推断明文,肯定不可能,1个密文对应无限多个明文。
ejin
2014-04-10 22:45:26 +08:00
楼上的回答楼主可能不太理解,其实很简单

如果md5“可逆”,那么现在用于验证密码,或者验证文件的hash将毫无意义,相当于明文保存了密码,现在所谓的md5破解,一般是用穷举法,穷举法是任何一种加密算法都无法避免的,除非这种算法非常慢,假如算一次要一年,那你设置一个非常用的密码,就算只有8位,可能别人也无法破解出来

如果md5可逆
比如你得到了一个网站的数据库,无论密码是否加了盐,都可以直接破解出明文,嗯,前提是你已经知道加盐的规则,因为加盐本身不是md5算法自带的,相当于加了一层算法,多了一个钥匙而已,但是加再多的钥匙,也永远逃不出md5逆推回来的可能,因为前提是md5算法已经破解,那么推算回去根本不是问题

还有一种情况就是用来验证文件是否被修改,数字签名技术,如果是采用md5算法,那么在md5算法被破解后,那将存在伪造的可能。谁都无法证明这个文件是否被修改过

就好像最简单的1+x=5,1+x=6,算法是死的,那么当你的x是4的时候结果是5,因为直接看算法,逆推就行了,不管结果是什么,只要一看前面的算法,就能算出x是什么,这便是md5破解后的情况。


@rannnn 你所说的压缩算法,根本无需等到md5被破解,比如说qq旋风客户端的离线下载的网址,就是通过md5算法的hash来下载对应文件的,只要这文件被qq旋风下载过,那就可以直接下载到,而且网盘也运用了这种技术,所以你只要有一个hash,就可以得到这个文件,现在的网盘基本上都是如此了

至于楼主说的“怎么办”,那只能更换新的算法,如果是密码,则还需要更换新的密码。被破解的加密算法,不能用作于安全手段。
zzh0410
2014-04-10 22:47:06 +08:00
@davidli 不是破解,只是找到一种理论方法,使得a字符串和b字符串的md5值一致,这样即使不知道a的明文,只要找到b的话,一样可以进入系统。
ejin
2014-04-10 23:10:39 +08:00
补充一下 还有一种就是 @zzh0410 说的情况,因为md5再强大,其结果也只有十几个字母数字的可能而已,所以“破解”出来的原文,最多也用16位的字母数字组合就完全够了,再多位数,再大的文件,也只是重复这个结果而已。所以md5理论是用来“验证”的,不是用来“加密”的,加密算法被破解是可以获得原文的,但是md5属于单项加密,只是一个摘要而已。

所谓摘要,请拿起任意一本书,打开“目录”部分,每个目录的条目和页码,页码也是摘要的一种表现方式
难道说破解了目录的摘要算法,就能得到任何一本书的内容了吗 这当然是不可能的 呵呵呵

我之前举例的情况里比如qq旋风下载,比如网盘通过md5来直接获得该hash文件,都避免不了一个情况,那就是“重复”,一个md5结果可以有无数种可能的原文,所以如果想通过md5来获得原文不是破解md5所能做到的。你得到的只是其中一个,或者多个而已

让我们再回到md5的介绍里,我们会发现,这是一个单向加密算法,是一个内容摘要的算法,这并非是加密算法,而是用作于验证的算法,如果md5被破解,可逆之后不能再用于验证。

所以被破解后,无需再纠结什么,换加密算法吧,比如说sha1之类的。

当然最重要的是,任何加密算法都阻止不了暴力破解,除非本机不参与加密过程,比如现在互联网上最常用的验证算法,他的名字叫“验证码”,错一次就报废的“加密算法”。
lfyzjck
2014-04-10 23:23:34 +08:00
如果md5可逆,下电影就再也不用焦急的看着进度条了,只要一个32位的md5就好(^_^)
ejin
2014-04-10 23:35:12 +08:00
@lfyzjck
@rannnn

白解释这么多了,无语
rannnn
2014-04-10 23:41:29 +08:00
@ejin
@lfyzjck
我们只是借楼主「可逆」这个假设来开个玩笑,并不是不懂这个原理。。。。。。
感谢解释
sneezry
2014-04-11 00:24:42 +08:00
md5的有效碰撞已经实现了,md5已经不安全了,可以使用复合加密。
a3587556
2014-04-11 00:34:44 +08:00
@davidli 你说的那个女教授是王小云吧 她是通过hash碰撞 找到两个加密后hash是一样的数据 当时很轰动
Precious
2014-04-11 00:48:39 +08:00
加密算法为什么不可逆,是因为解密是NP问题或者比NP更难。
如果P与NP的关系被证明了一定是轰动世界的。很难解决的…不用想了
dorentus
2014-04-11 01:19:50 +08:00
你没发现很多年前,各开源软件下载的地方提供的 checksum,都已经不用 md5 或者不光光用 md5 了么……

密码 digest 就算用 md5,也肯定要加盐的(而且正常情况下没人会建议这是这么做;大概上个月论坛这边有人发过一篇讲保存密码策略的文章吧,里面说得比较详细)。

所以根本没影响吧。
dorentus
2014-04-11 01:20:22 +08:00
@dorentus s/建议这是这么做/建议只是这么做/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/108052

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX