1月 212010
 

      前一阵子在《弯曲评论》上的讨论中,大家谈到了密码学和协议的安全性问题。目前广泛使用的MD5、SHA-1、AES等算法都是公开的,这会不会导致这些算法不安全呢?而国内的众多媒体渲染的,“山东大学王小云教授破解MD5加密算法”究竟是何种成就?看大部分中文媒体是基本得不出结论的,因为许多记者喜欢用劳动人民喜闻乐见的词语把一件事情说得惊天动地来装噱头,而真正的专业知识几乎找不到。正好前几天杰夫的文章《百万美元悬赏:求解七大世纪难题》提到了徐迟写《哥德巴赫猜想》的事情。当年徐迟虽然有点夸大哥德巴赫猜想在数学界的地位,可是在专业上是一丝不苟的——数学不是徐迟的专业,可是也一点不敢马虎,生怕报道出现什么硬伤。王小云的成就也需要一些一丝不苟的文章来说明。

      从头说起,密码学(Cryptography)这个词源于希腊语kryptós(意即“隐藏的”)和gráphein(意即“书写”)。望名知意,密码学是研究如何隐密地传递信息的学科。在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。

      二战以前,经典密码学的研究往往只考虑信息的机密性(confidentiality):如何将可理解的信息转换成难以理解的信息,并且使得知道如何转换的人能够逆向回复,但不知道如何转换的拦截者或窃听者则无法解读。用行话说,这个“转换”就是加密算法。经典密码学拼命的研究更优秀的基于文本语言的加密算法,而知道了加密法就能一览无余的破译密电。这就是为什么描述以前战争的电影中,那个“码本”总是非常关键,我军打入国军内部的红色间谍工作都围绕它展开。

      十九世纪以来,学者们开始认识到算法保密并非理想的防护手段。柯克霍夫原则(Kerckhoffs’ principle)就明确提出,“即使密码系统的任何细节已为人悉知,它也得是安全的。”信息论鼻祖香农也有句近似的话“敌人了解系统”。于是密码学开始研究更“好”的加密算法——用这种加密算法产生密钥(key)来加密要保护的内容,安全寄托在密钥上而不是算法上。即使敌人知道了使用何种加密算法,只要密钥未泄露,理应足以保障资料的机密性。通常认为,1970年代中期当时的美国国家标准局(现在是国家标准技术研究所NIST)公布由IBM开发的 DES这一事件推动了现代密码学的公开学术研究。

      现代密码学的主要领域包括:密码学原理(如探索单向函数、求解椭圆曲线函数等)、密码分析学(发现密码机制的弱点,如加快求解整数分解问题的速度)、公钥密码学(主要成果如RSA、DSA、椭圆曲线密码)、密码协议(如MIT开发的Kerberos)等等。 Continue reading »