加密算法之惑

时间:2022-07-22 08:00:14

加密算法之惑

一直以来,软件算法的解密有一个成本的问题,例如一个采用“可以确保一天内不被破解”加密算法的信息可能只在今天有价值,这将帮助那些担忧安全风险的人们走出困惑。

一组网络的消息振奋人心:2004年,我国清华大学的教授王小云宣布了她和她的研究小组对MD5、HAVAL-128、MD4和RIPEMD等四个著名密码算法的破译结果;2005年,王教授又破解了美国国家论坛标准与技术研究所(NIST)为美国政府及商业界制定的SHA-1密码算法。

这就是说,王教授动摇了现代信息安全的基础―包括MD5在内的几大加密算法,那么,我们的日常生活会受到影响吗?

走近加密学

你心目中的加密是什么样的?可能是下面这样……

加密算法:按字母顺序将字串中所有的字母用后一位字母代替。

加密例子:“I love you”加密算法“J mpwf zpv”。

没错,这确实是一种加密方式,而且这种字符转换的加密方式也有自己的名字―凯撒加密。可是通常情况下,人们平时用的网上银行、邮箱密码等等用的并不是它,而是一种称为Hash(散列)函数的加密方式。比如刚才的“I love you”字符串,经过MD5(也称“信息摘要算法”)加密后,得到的结果是:e4f58a805a6e1fdof6bef58c86f9ceb3

而你要是把IE 7.0(英文正式版)用MD5加密―下后,会发现结果是:3f3e6315efda6316ae04640516d060ed

为什么一样长?短短几个Byte的文本加密后得出的结果竟然和15MB的二进制安装程序的加密结果一样长!

很多人现在可能已经有了一种受骗的感觉,不能还原的加密算法有什么用?其实,加密这事并不一定要还原的。还记不记得登录一些网站论坛时需要输入密码?如果密码是以原来的样子传输,你至少会有下面一些顾虑……

在一次实验中,笔者按照Hash的加密方式把“I love you”随便改动一点,比如改成“I love yoo”,你会发现仅仅是改了一个字母,但加密后得到的结果竟然已经差了十万八千里。

e4f58a805a6e1fdof6bef58c86f9ceb3

d26331dfac57065565a09c902d88986c

这就是散列函数MD5的优点之一,即使是两段极其相似的数据,得出的MD5加密结果也是完全不同的。很多网站提供ISO文件的同时还会提供一个MD5校验码,下载完之后可以验证文件与官方的MD5是否一致,以确定文件是否完整并且未经修改。

神话被打破

理想状态下,经过Hash加密后,原始信息即使只改变一位,其产生的“指纹”也会截然不同。即使调用全球的计算机,也难以找到两个相同的“数字手印”,因此能保证数字签名无法被伪造。被金融、商业及其他敏感领域所广泛采用的数字签名技术也是建立在这种理论的基础之上的。

可是,Hash函数的碰撞却把这种理论上的安全击得粉碎,所谓的Hash函数碰撞其实指的就是几段不同的数据应用加密后竟然得到了相同的结果!其实,解密有一个成本的问题,比如一个采用“可以确保一天内不被破解”加密算法的信息可能只在今天有价值,所以即使明天被破解也没有关系。目前MD5、SHA-1等加密方式在民用级别还是可靠的,而在涉及机密信息时,就不再可信了。

上一篇:感悟UML中的禅理 下一篇:架构选择开源未来