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