文章目录
从计算机时代开始,字母作为操作的最小单位的概念就消失了。在计算机里,所有的数据都被表示成0和1的数字组合(二进制),字母也不例外,把字母数字化得有个标准,现在这个标准就叫做ASCII。字母一旦变成数字,在计算机中字母的符号属性、发音属性等语言规律就完全消失了,它只是一个二进制数字,我们可以随意对它做改变,且这种改变发生在字母内部。所以说,数字化使加密法步入一个新的世代。
5. 对称钥匙:DES加密法
从前恩尼格玛机的时代,德军还会想方设法保密军用版机器的内部结构和使用说明书。但到了计算机时代,所谓内部结构和操作说明根本不用保密,完全公开。到底有多公开呢?
从1976年11月起,有一套规范就成了美国国家标准局的加密系统官方标准,简称DES(Data Encryption Standard),任何人只要想了解,都可以得到这份规范。这个规范还有个外号—“魔王(Lucifer)”,这是最典型的诞生在计算机时代的第五代密码法。
据说,当初设计者一直把这套算法叫做“示范算法(Demonstration)”,但70年代的操作系统对文件名长度有限制,于是只能截取前几位字母Demon,而Demon又是“恶魔”的意思,后来大家就用另一个恶魔的名字—路西法(Lucifer),也就是“魔王”来称呼这个算法了。
现在咱们用爱丽丝(Alice)、鲍勃(Bob)、伊芙(Eve)三个人来举例,假如爱丽丝和鲍勃通信,但伊芙想偷听,怎么解决呢?有人说,就使用刚介绍的魔王系统加密嘛,但是信息加密后,钥匙的安全怎么保障呢?
爱丽丝得想法把每条消息对应的钥匙给到鲍勃才行,最稳妥得方法是爱丽丝直接和鲍勃见面,告诉他钥匙内容。你可能会说不用见面,双方约定一下,比如用《独立宣言》的字母顺序当钥匙,就可以省去见面了,但这消息一旦走漏给伊芙,此后两人的通信就没法保密了。所以用魔王系统加密能保证信息主体的安全,但双方还是要交换钥匙,而钥匙的安全是没法保证的,这就是魔王系统最大的漏洞。
对双方约定钥匙内容这件事来说:钥匙越没规律,密码越保险,但也就越需要双方见面沟通;钥匙越有规律,密码越不安全,但却省去了见面沟通的成本。70年代的大银行就专门有个职位,那人每天提着保险箱,飞到世界各地给客户送钥匙。
目前使用最广泛的第五代对称密钥加密法,是由美国国家标准与技术研究院 (NIST)于2001年发布的AES(Advanced Encryption Standard)加密法(可以参考博文:TLS 加密原理),该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。
现在问题来了:如果是即对安全性要求特别高,又需要频繁沟通该怎么办呢?通过见面沟通交换钥匙的效率显然低得多,要解决这个问题,就要把魔王加密系统的漏洞给补上,也就是在传输加密内容时不必单独传递钥匙,这就需要等到新一代密码系统的诞生了。
6. 非对称钥匙:RSA加密法
6.1 不可逆模运算 — DH密钥交换
用什么方法来避免钥匙的单独传递呢?还得靠数学,具体来说就是用一种不可逆的函数。密码学中为了简单,把它叫做“单向函数”,什么是不可逆函数呢?
数学上有一类特殊的运算–“模运算(modular arithmetic)”,它有时候就是不可逆的。比如 11 * 9 = 8 (mod 13)这个算式,从左往右推可以推出来,而且结果是唯一的,但是从右往左呢,就相当于问你“在模等于13的体系中,什么数乘以9后余数为8?”,这个问题显然不能逆运算,所以“模运算”就是一个单向函数。
明白了模运算,我们就能知道它是怎么用来传递钥匙的了,过程如下:
- 爱丽丝和鲍勃两个人都约定使用Gx mod P函数(G、P要求是质数,比如G = 7、P = 101);
- 爱丽丝随便想出一个数A(比如A = 3),鲍勃也随便想出一个数B(比如B = 6);
- 他们两个人分别把自己想出来的这个数,代入函数Gx mod P计算一下,比如爱丽丝算完等于α,鲍勃算完等于β;
- 两人把计算结果告诉对方,直接打电话也行,写信也行,反正是不怕被伊芙偷听的。原因刚刚说过:因为伊芙偷听到的只不过是模运算的结果,而这个结果是不可逆的,所以就算伊芙知道结果,也没法倒推出之前的值;
- 等爱丽丝和鲍勃都得到对方的结果之后,爱丽丝再做一次βA mod P运算(也即GA·B mod P),鲍勃做一次αB mod P运算(也即GA·B mod P)。
这两个人算完后,他们将得到完全一样的结果(按上例取值的结果是45)。他们得到的结果相同,那么这个结果就可以当作他们的钥匙。整个过程没人传递过钥匙,但双方都拿到了同样的钥匙。对窃听者伊芙来说,她偷听到的只是模运算的结果,因为这种运算是不可逆的,所以伊芙偷听了也白听。
你可能很困惑,最后两人计算的结果为什么恰恰都等于9?这就是整个过程的精髓所在,不过这可不是巧合,而是sun公司的高级工程师迪菲和斯坦福大学电子系教授黑尔曼两人花了两年多才找到这种函数,因此