第2章 密码学基础
2.1 密码学发展历史
2.1.1 密码学发展的三个阶段
密码学的发展,经历了主要的三个阶段:第一阶段指1949年之前,当时的密码学主要表现为满足少数人的特殊用途为主;第二阶段指1949—1975年,在这个阶段,密码学逐渐发展成为一门独立的学科;第三阶段一般指1975年之后,密码学的新方向——公钥密码学得到了长足的发展与进步。这三个阶段,如果按照密码学的发展进程来分,可以分为“古典密码”“对称密钥密码”和“公开密钥密码”三个阶段。不同时期,人们对信息的存储、处理、传输和计算能力是不同的。信息的利用方式也不同,相应使用的密码技术也不相同,密码学的发展经历了从艺术到科学的发展过程,其中的协议和算法设计、分析以及加解密应用,皆发展成为独立的艺术和学问,同时也发展成为一门高度综合的学科,涵盖了数学、统计、网络、计算机等学科内容。那么,在开始介绍区块链中的密码学之前,先让我们来简单回顾一下这三个阶段。
1.“古典密码”阶段
这个阶段的密码学还不是科学,而是一门小众的艺术。这个阶段出现了一些密码算法和加密工具。在这个阶段中,密码算法的基本手段——置换排列网络(Substitution-Permutation Network)出现了,它主要是针对字符进行加密;同一阶段,简单的密码分析手段也出现了。
举例来说,这个阶段出现过“Scytale密码”:据说公元前5世纪古希腊的斯巴达人,有意识地使用一些技术方法来加密信息。他们使用的是一根叫“scytale”的棍子。送信人先绕棍子卷一张纸条,然后把要写的信息纵向写在上面,接着单独把纸送给收信人。对方如果不知道棍子的粗细是不可能解密纸上内容的,如图2-1所示。
图2-1 斯巴达人使用的“Scytale密码”
此外,公元前1世纪,著名的恺撒大帝发明了一种密码——“恺撒密码”。在恺撒密码中,每个字母都与其后第三位的字母对应,然后进行替换。据说当时罗马的军队就是使用恺撒密码进行通信。举例如下(字母索引偏移量为3):
恺撒密码明文字母表:A B C D E F G …… X Y Z
恺撒密码密文字母表:D E F G H I J …… A B C
例如:明文为“veni,vidi,vici”,密文就是“YHAL,YLGL,YLFL”。
26个字符代表字母表的26个字母,从一般意义上说,也可以使用其他字符表,对应的数字也不一定要选择“3”,可以选其他任意数字。
那个阶段还曾经出现过最早的几何图形密码,例如以一种形式写下消息,以另一种形式读取消息,举例来说(见图2-2),将“I came I saw I conquered”编码为“IONQC CAIUE WMEAR DESI”:
图2-2 几何编码加密示意
2.“对称密钥密码”阶段
对称密钥密码,又称为“单钥密码体制”,即使用相同的密钥(加解密密钥)对消息进行加密/解密,系统的保密性主要由密钥的安全性决定,而与算法是否保密无关。它的设计和实现的中心思想聚焦在:使用哪一种方法,可以产生满足保密要求的密钥,以及用什么方法可以将密钥安全又可靠地分配给通信双方。对称密码体制可以通过分组密码或流密码来实现,它既可以用于“数据加密”,又可以用于“消息认证”。其所谓“对称”,其实就是使用同一把密钥进行加密,使用同一把密钥进行解密。对称加密由于加密和解密使用的是同一个密钥算法,因此在加解密的过程中速度比较快,适用于对数据量比较大的内容进行加解密。它的主要优点就是算法公开、计算量小、加密速度快、加密效率高,但也存在着显而易见的缺点,就是在密钥协商过程中,一旦密钥泄露,别人就可以用获取到密钥对密文进行解密。另外,每一对用户(通信双方),每次使用对称加密算法时,都需要使用其他人不知道的独一密钥(互相隔离),这会使得收、发双方所拥有的密钥数量巨大,密钥管理成为双方的共同负担。常用的对称加密算法有DES、3DES、AES、TDEA、Blowfish、RC2、RC4和RC5等。
3.“公开密钥密码”阶段
相对于“对称密钥密码”阶段,这个阶段进行了公、私钥分离的设计,公钥密码采用了“非对称加密”机制——针对私钥密码体制(对称密钥密码)的缺陷而被提出。非对称加密会产生两把密钥,分别为公钥(Public Key)和私钥(Private Key),其中一把密钥用于加密,另一把密钥用于解密。非对称加密的特征是算法强度复杂、安全性依赖于算法与密钥,但是由于其算法过于复杂,从而使得速度没有对称加密解密的速度快。对称密码体制中只有一把密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码机制那样传输对方的密钥,安全性就提高了很多。常用的非对称加密算法有RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。