1.1.1 密码的发展与应用
密码技术历史悠久,几千年前就有古巴比伦人采用保密的方法来传递保密信息,后来密码技术因军事需要而得到巨大推动,最终因为信息化和互联网技术而得到全面发展。
只有了解密码技术的发展历史,才能深入理解密码的当前热点和未来趋势,才能充分把握密码的应用场景。现在大部分密码学书籍都是根据密码发展的不同时间阶段将密码学的发展史分成古典密码学、机械密码学和现代密码学三个阶段。所以,本书也按照这三个阶段来阐述密码学的发展。
1.古典密码学阶段
古典密码学阶段是指从密码的产生到第二次世界大战这段时期密码的发展历史。该阶段的密码技术通常是通过手工计算实现的,最多借助一个圆形的木棍或圆盘。古典密码编码方法主要有两种,即置换和替换。置换就是把明文中的字母重新排列,即字母本身不变,但其位置改变了。这样编成的密码称为置换密码;替换就是用一个类型来替代另一个类型,比如用数字5代表字母R等。这样编成的密码称为替换密码。替换过程如果通过一个变换表格,就称为单表替换,变换表格多于一个就称为多表替换。
著名的凯撒密码算法就是一个单表替换算法,因为它的替换表只有一个。凯撒密码算法是古罗马凯撒大帝在营救西塞罗时用来保护重要军事情报的加密系统(《高卢战记》)。
1467年初,莱昂·巴蒂斯塔·阿尔伯蒂第一个提出了多表替换的密码概念,使得多表替换算法开始进入研究和发展阶段。多表替换算法的典型代表算法是维吉尼亚密码(又译为维热纳尔密码),它是对凯撒密码算法一系列的综合使用。维吉尼亚密码以其简单易用著称,且初学者通常难以破解,因此当时它又被称为“不可破译的密码”。
古典密码算法由于字母空间的限制,机密性并不是很好,再加上频度分析,使得密码算法很容易被破解。随着人类文明的发展和技术的进步,古典密码算法慢慢过渡到机械密码阶段。
2.机械密码学阶段
机械密码学阶段在不少密码学书籍中也被称为近代密码学阶段。该阶段密码技术通常借助机械装置实现,比如转轮或转子。机械密码发展最蓬勃、使用最频繁的时期主要是第二次世界大战期间。
1918年,在第一次世界大战即将结束的时候,德国人亚瑟·谢尔比乌斯参考科赫构想并设计出了一种密码机器,也就是后来世界闻名的Enigma机。Enigma机是一种多表替换的密码机。其加密核心是3个转轮。每个转轮的外层边缘都写着26个德文字母,用以表示26个不同的位置,经过转轮内部不同导线的连接,改变输入和输出的位置,从而进行加密。一个3转轮的Enigma机,能进行17576种不同的加密变化。Enigma机在第二次世界大战中作为德国海陆空三军最高级的密码机,有效保护了德军各种机密信息的传递安全。当时德军使用的Enigma机较刚设计出来的原始形态又做了一些改变,使用了3个正规轮和1个反射轮,极大提高了军事信息的安全性。
作为第二次世界大战中没有硝烟的无声战场,情报的加密和破译也是战争的重要组成部分。在此期间的较量中,英国出现了一位被后人称为“计算机科学之父”的科学家——艾伦·图灵,他是英国著名的密码破译大师。图灵和他的团队是第二次世界大战破译德军密码的核心力量,由大量的数学家组成。虽然德国对Enigma机不断进行编码程序的变更和改进,但随着图灵团队持续对Enigma机的研究、模仿和破译,最终制作出了能破译德国情报的破译密码机——“炸弹”。从此之后,有了“炸弹”的助力,德军在第二次世界大战中的很多军事行动计划从图灵团队传到了英国军事指挥中心,帮助英军取得胜利,减少了战争损失。在我国的抗日战场上,破译日军的电报密码也一直是情报部门的重要工作内容之一,有大量的密码破译专家在努力分析破解当时的机械密码算法,密码技术的使用在战场上起到了举足轻重的作用。
3.现代密码学阶段
现代密码学的建立主要是依据数学、信息论等密码基础原理成为一门学科来判定的。这个过程中也有一位标志性的人物,信息论的鼻祖——香农。1949年,香农发布了一篇名为《保密系统的通信理论》的论文,将信息论引入到密码学,给出了历史上关于密码安全性的第一个定义——“完善保密性”,提出了混淆和扩散两大设计原则,奠定了密码学相对成体系的原理基础。从此密码学从技术进化成为一门学科,开始进入正式的研究发展阶段。美国数据加密标准DES的出现开启了现代密码学蓬勃发展的时代。
香农的密码学原理偏向对称密码学,分成分组加密和流加密两大类。分组加密是将明文分成多个等长的数据块,使用确定的算法和对称密钥对每组分别加密,更适用于软件类的加密,比如电子邮件加密和银行交易转账加密等;而流密码是加密和解密双方使用相同的随机加密数据流作为密钥,通常是对每一个数据位进行异或操作,由于生成密钥流和数据流等长,实际操作相对更困难,找到随机的密钥流不太容易,所以通常用于基于硬件的通信加密,硬件部件的核心是线性反馈移位寄存器(Linear Feedback Shift Register,LFSR),通过LFSR来产生伪随机的密钥流用于加/解密的运算。
在后面的章节中,本书主要针对现代密码学涉及的各个算法进行介绍。