csdn一篇报道说中国数学家王小云等在crypto 2004上提出一种能成功攻破md5的算法,gigix与王兄都在blog里引用了相关的报道。
rl提供的王小云的报告我看了一下,因为我不是做这方面的,所以对md5算法本身的实现,以及文中所引用的之前别人的理论都并不了解,所以不是很明白。在这份报告中,介绍md5破解的部分只有一页半,并未细说具体的算法,但在末尾附了两对1024位原文的碰撞例子,较之96年别人提出的512位碰撞有了很大的进步,并且计算量据说在一个小时左右。 【相关文章:IIS突然不解析asp文件的处理步骤】
md5是一种摘要算法,所以理论上是不可能从签名取得原文(见下面说明)。认为要从md5的结果中取得原文才算破解,本身就是对摘要算法的误解。它通常应用于数字签名中,用于标识原文的原始性--即在签名后未作任何的修改。如果可以用不同的原文可以产生相同的签名,这也就意味着签名可能失效,就已经可以证明这种摘要算法的不安全。 【扩展阅读:用VB生成DLL封装ASP代码,连接数据】
王小云的发现证明了有方法可以产生碰撞,但正如gigix那边一位匿名兄所说,这只是非特定碰撞,而要伪造签名则必须能产生特定碰撞。所以说md5并未被完全攻破,但也已经是一个重大的突破了。 【扩展信息:函数指针point of functio】
这些都是进步,如果把这说成是吹嘘就未免有点妄自菲薄了。
因为我手头没有像«应用密码学»这样的介绍具体密码算法的书,只有一本卢开澄的«计算机密码学»,主要是从数学的角度介绍了几类密码算法的原理及其适用领域。不过因为密码学是基于较为高深的数学理论,比如数论、群论、有限域等,但俺的数学不行,所以具体理论也说不出个一二三四来,只能泛泛地说个五六七八。^o^
首先要说的是为什么需要使用密码?因为我们通常的通信环境是不安全的。
那什么是不安全的通信环境呢?不安全至少表现在两个方面:一是通信的内容可能被窃取;二是通信的内容可能被篡改。
通常的密码使用就是为这解决这两方面的问题。
而如果有方法使某种密码的作用失效,就可以说这种密码被破解了。
当然不安全还有一些其它的方面,那些问题通常除了需要密码以外,还需要用一些特别的协议,很少碰到,这里就不提了。
常用的密码有很多种类,其中最常用的是这三种:
1、对称密码 2、非对称密码 3、摘要对称密码的特点是:加密与解密用相同的密钥,甚至可能用相同的算法。比如从最简单的异或,到常用的des、blowfish、idea等。它们通常的用途是这样的:
发送方将源文(m)用密钥(k)加密:e=enc(m,k)
然后将e通过不安全网络传给接收方,接收方用相同的密钥(k)解密:m=dec(e,k)只要算法足够好,并且保管好密钥(k),就可以保证这种通信是安全的,因为别人即使知道了密文(e)与算法enc/dec,也无法知道明文(m)。
对于这种密码来说,如果有方法可以从密文(e)与算法enc/dec中导到密钥(k)或明文(m),则意味这种密码被破解。比如简单异或算法就可以用统计分析法简单地破解掉。但即使是现在被认为不够安全的des算法(已经有近三十年历史了),也需要有大量的明文/密文对(2的数十次方对),并需要大量的计算时间才能求得其密钥(k)。
... 下一页