介绍些从古至今使用的密码方法,以及破解方法。以下所述密码按照现代的标准来看都是不安全的密码,但是其思路沿用至今。
以前使用的密码都可以称为对称密码,具体特征为加密、解密皆为相同密钥,加密解密流程如下图所示:
如同小时候玩的不亦乐乎的替换文字形式一样,将英语字母逐一替换,如:a->c, b->w, c->n,此为密钥,因此加密abc后的文本为,cwn。
著名的凯撒密码,顾名思义,由凯撒大帝所发明,用于当时的军事领域,并且延续使用的400余年。
凯撒密码的加密非常简单,就是26字母的位移,比如:密钥为3,因此a->d,b->e,c->f以此类推。
以此可算,凯撒密码的密钥空间为:26!,约等于2的88次方。
但是以上两个密码都有相应的方法来破解。
简单来说,英语的26字幕在日常生活中的使用频率都是不相等的,就如同汉字千千万,但是常用的就2000左右。
因此破解遵循以下两个步骤:
(1)密文频率:
英语中出现概率最高的字幕是e,概率为12.7%,其次为t,概率为9.1%。
然后我们将密文中字母进行统计,最高概率很大可能为e,其次为t,由此能够快速的推测出替换密码所使用的替换表,和凯撒密码所进行的位移数目。
(2)配对字母:
字母频率敲定后,我们可以跟进一步,敲定两个字母的频率。
英语中常用的两个字母为:he,an,in,th等,与字母频率相结合后能更加快捷的敲定明文的信息。
两个字母之后,可以尝试三个字母,等等。
起源于文艺复兴时期,上述两个加密方式做了进一步的改进。
比如:Key=20160929,那明文要做的就是就是按照Key来进行依次偏移操作,根据Key的长度进行循环。
按照这例子的Key来说,明文第一位偏移2位。第二位偏移0位,第三位偏移1位,以此类推,到第八位偏移9位,第九位再次从2开始偏移,8位一循环。
这样做看似不能再次使用上述的方法了,其实不然。
首先要收集一定数量的同一密钥加密的密文。
其次我们可以假定密钥长度,比如为8位。
之后,对密文进行每8位一分割,对每个分割中的每一位进行收集。
到这里,我们就能发现,每一个分割中的第一位,用的都是相同的偏移量,因此再次使用字母频率的方法进行破译。
有趣的小东西,发明与二战前,并且在二战时候大放光彩、、、最后被破译、、、哈哈哈,以下是原理图:
以上是个单轴轮机,左边为26字母,右边为加密后字母,譬如一开始A->K,B->S,C->T,但当你打了一个字母后,右边轴轮会进行转动,变成了A->E,B->K,C->S,再次打入一个字母后又变成了A->N,B->E,C->K。
其破解方法相对于前几个加密方式而已相对困难(毕竟二战时候元首的钦定),但原理类似,收集到足够的密文后进行密码轮的推算。
题外话:
二战时候的军用轴轮机是3-5轴的,按照密钥空间来看根本没有破解的可能,但是一位英国的破译员(好像是英国的),利用人性的弱点攻克了它,具体感兴趣的可以自己去查,这里也就不赘述了。
当然,除了这些过去还有很多其他的加密方式,如:栅栏教程,猪笔密码,摩斯电码之类的,因其并不能演化成计算机交互之中信息传递安全的方式,故此不做介绍。