从古至今,密码学一直贯穿在历史长河当中,一种新的密码加密方法出现,随着加密方法的广泛使用,就有一种解密方法与之对抗,此起彼伏。
在这场人类顶尖智力的漫长博弈历史中,共分为两大部分,前部分叫做古典密码学,后部分叫做现代密码学。
密码学的历史
第一代加密法:隐藏法,顾名思义,隐藏法则是把信息藏起来,比如古时候,传递消息前,先把送信人的头发剃光,然后将保密消息写到头皮上,待到头发重新长出后再让送信人出发。破解:想方设法的找出来。还是上面的例子,对于卫兵来说,只需要仔细留意头皮颜色即可。
第一代的加密法根本上来讲就是躲藏和翻找的游戏。时至今日,人们藏私房钱用的还是这个方法。
第二代加密法:移位法和替代法。移位指将数字或字母往后移位,替代则把文中一部分字母用其他字母代替。这个方法直到16世纪,欧洲人都没有破解法,直到数学–概率论的出现。
替代法用到的破解方法叫频率分析法,它的原理是这样的:英文中字母出现的频率不一样,如e出现频率最高,占12.7%,通过分析频率最高的字母,则知道其替代的是哪个字母。破解实质是通过概率论大幅降低字母排列组合的可能性。简单的替代法被破解后,又有了新的加密法:同音替代法,比如同一个字母使用多个数字替代,越常用的字母,比如e,就用越多的符号替代它,这样总不能算出概率吧?但同音替代法也很快被破解,其对策是:通过字母的前后顺序关系来猜,比如字母q后面出现的最大可能是u,而q又是一个不常使用的字母,则很大概率猜出来u是被什么替代了。从第二代加密开始,数学开始加速密码学加密解密的进化。
第三代加密法:维吉尼亚密码。替代法容易暴露频率特征,为了掩盖,解决办法就是使用多套符号代替原来的文字。使用了26套字符的方法,就是维吉尼亚加密法。维吉尼亚具体的加密过程是这样的:对26个字母形成26*26的表格,比如,使用4套密码加密时,指定原文第1个字母用第8套密码代替,第2个字母用第12套密码代替,第3个字母用第5套密码代替,第4个字母用第9套密码代替,人们事先规定每个字母用了哪套移位法,这个规则就叫做钥匙,钥匙最初是一个单词,比如yes,代表加密时第1个字母往后移25位(字母表y排25位),依次类推,然后循坏,这样原文中同一个字母将会被替换成不同的字符,没有了频率特征。
维吉尼亚密码于16世纪出现,在它出现后的200年内,几乎没人使用,原因很简单–太麻烦了。使用维吉尼亚加密法加密完一篇500字的短文需要3个小时高强度对照,而且容易出错,直到蒸汽机和电动机发明后才开始得到广泛使用。
维吉尼亚加密法直到公元1900年左右才被破解,因为其钥匙的可能性非常多,密文中拼写完全一样的字符,对应的原文可能性也是巨量的,比如说,密文是10个字母,钥匙也是10个字母,那么原文就有10^10,也就是100亿种可能性。最开始的维吉尼亚加密法,我们管它叫做1.0版本,它的破解过程是这样的:从密文中把完全一样的单词挑出来,从中总结规律,分析出钥匙的长度。第一步,从密文中找出拼写完全相同的字母串;第二步,数一数,它们第一次出现到第二次出现,中间隔了多少个字母;中间的字母可能是钥匙使用了N次,其中N是这段字母个数的因子,哪个因数在所有的密文的因数列表里都存在,哪个因数对应的便是钥匙长度,知道长度后,比如长度为5,则可单独把第1、第6、第11、第16…这些字母单独拿出来,放到一起,得到A组,依次可以得到5个组,记作ABCDE组,每个组都是由单独的一套移位法加密过的文字,使用之前的频率分析法则可以破解。猜中钥匙长度就等于把维吉尼亚密码法化简为N套最基础的移位法。
随着1.0版本的维吉尼亚加密法被破解,又诞生了维吉尼亚加密法的2.0版本:增加钥匙长度,每套加密法的字母数量变少,几乎不会表现出频率特征。其破解法是这样的:假设原文中一定会出现常用的单词,然后拿它去和密文对照,倒推钥匙(常用词如the in at)。2.0版本因为钥匙的问题被破解,3.0版本改成了单次钥匙簿密码法–所有钥匙只使用一次。它是绝对安全的加密法,但是效率非常低,而且无法产生绝对随机字母排序,因此,实际上是很难使用的, 码学是一门需要想方设方给别人读取信息制造更多麻烦,与此同时又不给自己读取信息增加太多麻烦的学问。
第四代加密法:恩尼格玛机(Enigma),它本质上还是第二代加密法–替代和移位法,但因为可以切换无穷多种加密配套组合,所以对抗频率分析极为有效,也标志着密码战进入机械电子时代。恩尼格玛机仅仅压制解密法25年左右,就被图灵破解。恩尼格玛机的破解过程简要分三步:第一步、波兰密码学家重视恩尼格玛机,搞清楚了内部结构;第二步,德国人每发一条信息单独使用一把钥匙,密码簿的钥匙用来加密每条消息的开头的小钥匙,小钥匙加密后面的真正消息,其中小钥匙被加密2次(确认信号没被干扰或操作没有失误),第三步,利用重复特性,先破解小钥匙,利用每个字母形成环的特性(出现重复),算出规律如下:环的数量、连接数的数量,是由恩尼格玛机初始设定决定的。
*图源网络
恩尼格玛机第一次破解后,机器进行了升级,难度变大:第一,编码器齿轮增加,接线板数量也增加;第二,提供钥匙的间谍突然消失。但由于德军操作不规范等原因,比如3个初始值经常不规范,设置的是键盘相邻的3个字母(如JKL),图灵分析出一些规律,天气(wetter)这个词每天早上6点到6:05必然出现,而且两个t挨着,恩尼格玛机对同一个字母连续加密的话,是不会加密成相同字母的,而且这个字母也不会被加密成它本身,因此可以对着密文,找到wetter对应的密文到底是哪几个字母,这仅仅是成功的第一步;用这6个原文对应的6个密文,需要求解恩尼格玛机的初始设定,需要建立它们对应的数学关系,参照第一代机器的破解法,其初始设定通过数学分析,由1.6*10^20多种可能性缩减到了105万种,然后再通过一种破解机器(起名为“炸弹”)来计算,到1942年,破解钥匙大概只需要1小时。电影《模仿游戏》讲述的正是经过艺术加工的破解过程,密码学上因为保密法的存在,不公平的待遇和受委屈的人非常多,破解的关键人物图灵协助军方破解德国的著名密码系统Enigma,帮助盟军取得了二战的胜利,却因同性恋罪接受化学阉割,吃下含有氰化物的苹果中毒身亡,享年42岁,直到公元2013年才被赦免,不免令人感叹。从恩尼格玛机的加密和破解来看,随着密码学的发展,“如何加密”的操作过程变得不再隐秘,钥匙的复杂性更加重要。
第五代加密法:魔王加密系统(Lucifer),它是密码学从古典迈入现代的标志之一。计算机的出现,密码的复杂度获得大量提升。字母转化为ASCII,由数字0和1的组合,字母为最小操作的单位的概念消失,数字化的加密,打乱的是语言规律的底层结构,改变发生在字母内部,此时开始,过程不再保密,每个人可以查到技术细节,加密变成规范,有了官方标准(如DES,第五代密码法,又称魔王加密)。比如,Alice和Bob通信,Eve想偷听,用魔王可以保证信息安全,但无法保证钥匙安全。它们是如何解决钥匙的呢?–利用数学的不可逆操作,这种操作叫做“模运算”(举例:如11*9=99,其mod13为8,从左边可以往右推,反过来却不能),当模比较小的时候,可以逆运算的数字比较多;但是当模大到一定程度时,就完全没有逆运算了,这是数学决定的。于是,过程是这样的:第一步,爱丽丝和鲍勃两个人都约定使用7^X这种函数,只不过是在模等于11的情况下运行的;第二步,爱丽丝随便想出一个数A,比如说是3,鲍勃也随便想出一个数B,比如说是6;第三步,他们两个人分别把自己想出来的这个数,带入刚刚那个函数计算一下。比如爱丽丝算完等于α,鲍勃算完等于β;第四步,两人把计算结果告诉对方,直接打电话也行,写信也行,反正是不怕被伊芙偷听的。原因我们刚刚说过:因为伊芙偷听到的只不过是模运算的结果,而这个结果是不可逆的,所以就算伊芙知道结果,也没法倒推出之前的值;第五步,等爱丽丝和鲍勃都得到对方的结果之后,爱丽丝再做一次计算题,她做的是β^A(mod11),鲍勃也算一次,他的题目是a^B(mod11)。当然,你不用管为什么非得是β^A、α^B,这个是数学运算保证的,这样算是一定正确的。这两个人算完后,奇怪的事就会出现——他们将得到完全一样的结果,这个结果就是9。他们得到的结果相同,那么这个结果就可以当作他们的钥匙。这种计算结果一样的函数是由Diffie和Hellman找出来的,又称DH方案。
第六代加密法:RSA加密法,它是由Ron Rivest、Adi Shamir、Leonard Adleman三者创立的,因此命名也是用他们的名字。RSA加密过程:第一步,爱丽丝有很多把锁,每把锁都有两把不同的钥匙,一把专门用来上锁而不能开锁,另一把专门用来开锁而不能上锁。第二步,爱丽丝把那把用来上锁的钥匙,尽量多地赠送给每个可能和她通信的人。这些人拿到钥匙后,就可以把要跟爱丽丝说的话写下来再用爱丽丝给的钥匙把锁锁上,然后寄给爱丽丝。第三步,爱丽丝拿到锁好的盒子后,用另外一把只有她才有的专用钥匙打开盒子,就可以看到信里的内容了。过程的关键是对同一把锁,上锁和开锁是用两把不同的钥匙。
RSA叫“非对称钥匙”或“非对称加密”。其中公钥是公开的,每个人使用自己发布的公钥给自己发信息,私钥是不公开的,可以解开用自己发布的公钥加密过的信息。使用的数学原理是利用两个素数(质数)相乘的乘积N作公钥,两个素数作私钥,N越大,找到两个素数的时间就越夸张。RSA加密法暂时没有被破解。
RSA加密法有很多应用,譬如使用数字签名来确认发信人身份,只要把RSA公钥加密私钥解密的过程,反着操作一遍,就可以起到确认身份的功能。
第七代加密法:量子加密。其运用的主要是测不准原理和特殊算法,从物理学和数学原理上是不可破解的。传统计算机一个单元只能存储0或1,量子计算机一个单元的数据总是处于叠加态,所以一个量子存储单位在某一时刻,可以同时存储2^N个数据;量子计算机一次操作就相当于传统计算机的很多次操作。那有了量子计算机后,是不是我们的RSA加密就会立马被破解呢?其实不是的,量子计算机只是速度快,仍需要花时间,即使如此,只要把RSA的N增大,还是足够应付初期的量子计算机。况且当前量子计算机的硬件也还没搞定吗,主要是没有特别好的手段控制量子按照算法的步骤运转,正如光的双缝干涉实验那样,我们的测量行为也会影响量子的状态。当然,即使量子计算机会威胁到我们的密码安全,我们也不应该去过于担忧,由新技术导致的问题,最好的解决方案不是禁令,而是更新技术。
密码怎么设置才安全
银行卡的密码只有6位,它足够安全吗?密码只有6位,更多是出于使用方便考虑–有一系列科学研究结论显示,人在无压力的时候,轻松记住的一串数字的长度,大约就是5-7位,所以就取这中间值6位,当作密码的长度。银行使用的6位数密码,也会对其做RSA加密,加密后会是标准格式的一长串字符了。对只截获了密文的黑客来说,到底密码是6位还是12位,已经没有安全性的强弱之分。而且,银行会做错误次数限制,防止暴力破解。数字加大小写的字母加特殊符号是否更安全?–不会。从现代密码学的加密过程我们可以知道,密码最终存储的都是0和1的组合,因此对密码安全起最大作用的,其实是密码的长度。相反,越是短的密码,越是常见的密码则越容易被破解。要提高密码安全,不妨将密码改成允许的最大长度。
密码学总是在信息流动量突然增加时飞速进展,信息流动频繁,会相继破解和新增加密法,随着数学工具和计算机的加入,信息加密的过程甚至可以公开,钥匙的复杂性成为关键。信息的价值永远大于武器,现代战争任何一方的武器都可以摧毁对方的武器装备,因此武器对战局影响已经不太大,反而知道对方的作战计划才最重要,密码学的重要性将日益提高。由于保密法的存在,当前的破解法均是已经公开解密的内容,实际上很多破解方法现今为止尚未公开。
从隐藏法到量子加密法,什么算“好用”的加密法?如果认为密码强度高,破解不了就是好用,这实在是对密码最大的误解。就像“维吉尼亚加密法”,就是因为太繁琐,导致它被发明200年内几乎没人使用。所以说,真正好用的密码,是在安全性和效率上找到平衡点。