密码技术最早起源于公元前404年的希腊,此后密码大致经历了古典密码、近代密码和现代密码三个阶段。
1.古典密码
古典密码(公元前五世纪~19世纪末)代表性的是滚桶密码、棋盘密码和凯撒密码。
1.1滚筒密码
滚筒密码原理为信息发送者在特定直径的木棒(斯巴达棒)上螺旋缠绕一条羊皮纸,然后在纸上横着写上信息,信息接收者需要将羊皮纸重新缠绕在相同直径的模板上才能读到初始信息,否者字母顺序错位,斯巴达棒利用置换(换位)的方法达到加密的目的。
因为如果解密木棒直径与加密木棒直径不一致,那么读到的字母组合肯定是不具备特定行业的,所以针对这种情况的加密方法,可以通过不断尝试模板直径,直到出现的字母具有特定含义来破解。
1.2棋盘密码
棋盘密码原理为通过一个5*5的网格矩阵,将每个字母转换成两个数字,第一个数字是该字母的行数,第二个数字是该字母的列数。
\ | 1 | 2 | 3 | 4 | 5 |
1 | M | W | C | X | E |
2 | F | A | Z | I/J | K |
3 | L | G | S | O | P |
4 | R | Q | N | T | U |
5 | V | B | Y | D | H |
表1 Polybius矩阵
基于Polybius矩阵的棋盘加密方法,应该是最早的对称加密算法的应用,在那个时代接收方不知道网格矩阵的前提下,想要破解密文还是非常困难的。这种加密方法需要加解密双方事先约定好网格矩阵,后面双方加解密都是基于这个网格矩阵的,如何保证网格矩阵不被泄露存在很大困难。
1.3凯撒密码
凯撒密码是一种替换加密的技术,其原理是将字母按字母表的顺序构成一个字母序列链,然后将最后一个字母与第一个字母相连成环,接着将明文中的每个字母对照序列链正向或者逆向偏移k个单位后,形成密文。这里的字母链可以是按照所有人都知道的adcdefg……xyz的方式构成字母序列链
假设信息发送方以adcdefg……xyz序列链,k=+3进行信息加密,加密演示如下:
明文:Intern,cancel the operation
变换表及偏移量:abcdefg……xyz,K=+3
密文:Lqwhuq,fdqfho wkh rthudwlrq
序列链也可以按照加解密双方事先约定好的不具备特定规律的字母排序构成序列链,如sgidqpm……wzu等。
凯撒密码其实也是利用对称加密原理进行信息加密的,这种加密方法同样存在着序列链易泄漏的问题,若窃听者拿到序列链通过枚举密钥k值(1-26)就十分容易破解。
1.4单表代换与多表代换
1.4.1单表代换
单表代换是加解密使用同一个固定的代换表进行代换,明文和密文的字母存在惟一对应关系,容易受到频率统计分析攻击。例如恺撒密码和棋盘密码等都属于单表代换。下表为单表代换的字母表,加解密双方持有共同的代换表即可对信息进行加解密。
1.4.2多表代换
多表代换是加解密使用两个及两个以上的代换表进行代换,例如经典的维吉尼亚密码就属于多表代换,直至二战时期,维吉尼亚密码在整个欧洲依旧有着广泛的应用,下图为维吉尼亚密码表,实际上维吉尼亚密码是由一系列凯撒密码(26个)组成的字母表(当密钥仅为一个字母时,则就是凯撒密码),属于多表密码的一种简单形式。
若维吉尼亚密码表中我们使用第一行作为明文,则第一列作为密钥,加密情况如下所下所示。
明文:intern
密钥:khgvsk
密文:suykjx,
明文中n出现2次,而根据密文无法推断出明文中某个字母出现的频次,因此维吉尼亚密码可以抗字频统计破译密码。
以凯撒密码为例的单表代换破解:在英语中,每个字母/相邻双字母/相邻三字母出现还可以通过相邻双字母、三字母概率来增加破译概率),例如字母:E>T>A>O>I,如此在文本信息量较大的情况下,若密文中H出现的频次最多,那么大概率密文中的H对应的是明文中的E,这样下来很大概率能计算到偏移量k=3,若字母序列链为adcdefg……xyz,则可直接根据k=3得到如下字母表。
若字母序列链为sgidqpm……wzu等无规律链时,通过密文中字母出现频次同样可以逆向推出对应明文字母,由此求得k值,对字频接近的字母还可以利用k值反馈校验,提高破译的准确度。
以维吉尼亚为例的多表替换破解其实原理也是以字频分析,主要有以下三步。
第一步:确定密钥的长度
求密钥长度我们以Kasiski 实验的方法来求,现实加密过程中,密钥长度≤明文长度,我们假定密钥长度为K,假定明文长度文l,那么根据维吉尼亚密码表我们知道,第X i,X i+k,X i+2k ······X i+nk (i=1,2,3,···,l)个字母加密方式其实用的同一个凯撒密码加密的,理解了这个后我们接下来看一个实例。
根据维吉尼亚密码表要加密 “The Great Wall in Beijing, the Huangpu River in Shanghai, the Fifth Avenue in Tianjin, and the Presidential Palace in Nanjing.”这样一段信息,为了厘清加密过程中的对应关系,笔者画了下表帮助读者理解。
如上表所示,明文的词组The一共出现了三次,分别对应密文中的dlc、dlc、xfo,这难道是巧合吗?我们分析得到这种对应关系与密钥的长度K以及两两相同词组之间的间距S有关。如明文中第1个The与第2个The间距S(1,The)=21=nK,第2个The与第3个The间距S(2,The)=25 ≠ n K。
也就是说如果两个相同词组之间的间隔(S)正好等于密钥长度的整数倍(nK)时,那么这两个相同词组加密得到对应的密文也是一样的。
以上例来讲,密文中第1个dlc与第2个dlc的间距为n K=21,得到K是21的约数(1或3或7或21),同理若发现密文中另外两个相同词组的间距为n K=6,则得到K是6的约数(1或2或3或6)……,最后取所有约数集合的交集即可求得K值。
第二步:确定密钥的内容
在第一步中假设求的的K=3,也就是说每逢3个字母就会用到同一套密码加密,所以只要知道钥匙的长度K,再分别对3套密码用频率分析法,维吉尼亚加密法就破解了。
接下来就讲下如何利用K=3确定密钥内容,我们知道第X i,X i+k,X i+2k ······X i+nk 个字母加密方式是用的同一套凯撒密码加密的,在本文中第1、4、7、10、13······个字母用的同一套凯撒密码M1加密的,第2、5、8、11、14······个字母用的同一套凯撒密码M2加密的,第3、6、9、12、15······个字母用的同一套凯撒密码M3加密的,将密文中所有字母按照加密方式的不同进行分组。
这样我们就将原始密文拆解成K组密文,每组密文使用同一凯撒密码加密,因此针对每组采取前文讲的字频分析方法破解即可得到密文字母表,将密文字母表与维吉尼亚密码表的行进行对比,便可以得到每组的密钥。上例中对M1组进行破解得到密钥为该组密钥为k,对M2组进行破解得到密钥为该组密钥为e,对M3组进行破解得到密钥为该组密钥为y,所以密钥为key。
第三步:根据密钥恢复明文
知道密钥后,对照维吉尼亚密码本就可以知道明文了。
小结分析:单表代换密码加密后的密文具有明文的字频特征,易通过字频统计破解,而多表代还后密文不具备字频特征,但是遇到二阶式频率分析时就显得无能为力了(周期分析根据密钥的重复使用情况进行频率分析),但是增加密钥长度可以大幅提升破解难度。