Archive for category InfoSec

MD5是加密算法吗?

最近各种暴库,各种明文密码,各种专家写了一篇又一篇分析文章,甚至有无知的网站站长说自家的存储用户密码是经过MD5“加密”的而非明文,所以是安全的。在学习更复杂深奥的密码学理论之前,我们还是首先来清理一下基本概念。

MD5的作用不是加密,不是加密算法!

MD5,是Message Digest 5的缩写,是一种散列算法,又称为摘要算法或哈希(Hash)算法。MD5由其前身MD4改进而来,与其同属一类的算法还有SHA-1等。MD5算法的作用是将不定长的数据经过与、或、非、异或、移位、模幂等运算,产生定长的数据输出,称为散列值。通常情况下,不同的输入得到不同的散列值。优秀的散列算法即使输入差别甚微,都会导致输出大为不同,称为“雪崩效应”。散列算法常与公钥密码体制的加密算法共同使用,以检验数据的完整性。

与加密算法不同的是散列算法没有密钥,并且是单向的,即不能由正向的散列过程推到出逆向的“还原过程”。容易混淆的一点是人们认为加密就是把有具体意义的明文转换成没有意义的密文,这样看来,MD5“确实”是一种“加密算法”。然而对数据加密的目的还不仅于此,不但要让非接收方不能轻易得到明文,还要让接收方有快速的方法得到明文,即为解密。解密和破解是两个概念,解密(decryption)是加密的逆向算法,接收方已知解密密钥,使用解密算法计算得到明文;破解(crack)是在不知道密钥的情况下,采用概率统计、差分分析、暴力尝试等方法得到明文。将MD5值还原成散列前的值只能称为破解,而非解密。

现代密码学将密码体制分为两种,对称密码体制和非对称密码体制(公开密钥加密体制)。MD5不属于两者的任何一种密码体制,不能仅依靠MD5等散列算法进行保密通信。

王小云不是找到了MD5算法的逆向算法

如上文所提及的,通常情况下,不同的输入得到不同的散列值。然而存在一种情况是不同的输入却得到了相同的散列值,称之为“碰撞”。尽管优秀的散列算法应当极力避免碰撞的出现,但理论上是不能完全避免的,所以MD5和SHA-1等散列算法中存在碰撞。山东大学的王小云教授提出了一种比较快的找到碰撞的方法,而不是研究出了任何MD5值都可以被逆的逆向算法,MD5算法仍然是不可逆的。

网上有许多破解MD5值的网站,多是通过正向计算消息值的MD5值,制表存于数据库中,供用户反查。这样的库已经非常庞大,无论是常见的或是不常见的,都可以通过MD5值查到其原始消息,极其鲜见的也可以通过分布式计算在有限的时间内计算出。所以,网站存储仅由MD5散列过的用户密码,一旦泄漏仍然是不安全的。

最后,我想起了大三是网络安全课的老师freebird_007告诫我们的一句话,科班出身的学生就是需要专业,专业地说话,专业地做事。

(我时常思考加密和编码本质的联系是什么;散列算法能不能称为“广义的加密算法”呢,但目前我仍然坚持严格的定义。)

3 Comments

网络安全课程记录2

10、一个好的hash算法需要具备哪些条件?

11、何为散列口令字典攻击,字典攻击与口令长度是否关系密切?应该怎样防止散列字典攻击?

12、在网络上对两个相同的字节流使用相同的加密算法进行加密,加密结果是否相同?

13、【作业2】散列能否防止回放攻击?为什么?如果不能,请试着提出一种新的方案。

14、重点理解基于challenge/response模型的一次性口令技术。对于参数challenge的要求是什么?为什么?如何实现同步?

 

2 Comments

网络安全课程记录1

1、  参考书目

William Stallings,《网络安全要素——应用与标准》,人邮。
Carlton R.Davis,《IPSec VPN的安全实施》,清华。
King Christopher M.,《安全体系结构的设计、部署与操作》,清华。
王育民,《通信网的安全――理论与技术》,西电。

2、  如何实现发送方的抗否认性,如何实现接收方和发送方的双向抗否认性?

3、  很多网络安全问题产生的根源是“人的因素”,人有欲望。无欲则刚。

4、  Smurf攻击的原理是什么?(体会一下这种攻击方式的优美性)

5、  网络上的身份认证或者说是审查似乎是不公平的,从来都只是网站认证用户,网站对用户进行检查,用户好像从来没对网站的真实性、合法性进行认证和检查,但用户怎么知道他所上的网站就是真实的呢?你上了yahoo,你怎么知道他就是yahoo呢?

6、  常见的安全威胁与攻击

7、  安全根源问题

8、 简述 DES和RC4/RC5的优缺点

9、 【作业1】联系上节课所讨论的Internet的安全威胁和常见安全攻击,ISO/OSI安全体系结构和机制是怎样来削弱、抵抗这些威胁和攻击的?

No Comments