密码学从来都不是显学,就像一些真相永远在历史的角落里。
本文将从法国外交官讲到炼金术士,从明朝万历十五年讲到咸丰十年,认真的。——前言
频率分析法出来后,移位和替换法不好用了,那么怎么才能消解掉这种概率呢?
万历十五年
“小高呀,最近又看什么书了?”
“最近在看黄仁宇的《万历十五年》”
“咱们小高也看《万历十五年》”
“就觉得这本书把有明一代的历史讲明白了”
“看历史要对比要纵横着看,那你知道在欧洲的法国万历十五年的时候发生了什么吗”
“怎么叫纵横着看历史,还真不知道呢”
“你知道维吉尼亚加密法吗?”
“不知道呀”
“小高,光太亮了,你把窗帘拉上,我给你好好讲讲维吉尼亚加密法”
——改编自电视剧《人民的名义》
大家都听说过或者看过一本书叫做《万历十五年》(万历十五年就是1587年),作者黄仁宇先生写的是那一年明朝由盛转衰,维吉尼亚加密法诞生于万历十四年,也就是1586年,那个时候这种加密法如果传到中国就算是奇门遁甲的一类了。
这倒不是开玩笑,因为那个时候欧洲的化学家叫做”炼金术士”,化学家这个词要到两百年之后,化学的祖师爷拉瓦锡先生出生后才有。中国也有炼金术,比如东晋葛洪、南宋王重阳都是炼金术士或者炼丹家。中国的炼丹术没有发展成化学,中国的周易八卦也没发展成密码学。所以,过两百年后要挨打的。
言归正传,维吉尼亚加密法发明人是一名法国外交官,叫布莱斯·德·维吉尼亚,也就不要奇怪,那个时期的外交官经常在一个叫做”黑房厅”的地方把信件加密再发出去,有时候,黑房厅的同事还会接外面的活儿,加密解密信件,是要收费的。
维吉尼亚加密法算是第三代加密法,主要目的是对抗频率分析的解密,使用外交家的这个加密法之后,字母出现的概率就会消失不见。
怎么做到呢?很简单,同一个原文字母在信件中出现的时候,却是不同的密文表达。
直接上图吧。
这就是维吉尼亚加密法的密码表。
这是一个26X26的表格,第一行和第一列都是26个英文字母。第一行代表着原文信息,第一列代表着加密的钥匙。两者交汇就是密文。
估计还是有点懵,这样,钥匙简单一点,就一个字母C,那么,ABCDEFG字母表的顺序也是这个表格的顺序,C就是第三个字母。那么,第一排的D加密后得到什么呢?
就是F,相当于移位两位,D变成F。这个图中的第一排的D是原文,第一列中的C就是秘钥,箭头汇合之处的F就是加密后的密文。同样的,如果原文是C,而钥匙是F,那么密文就应该是H。
那么,如果我的钥匙不是一个字母呢,而是几个字母呢,比如说,ABC、ABC、ABC就这么循环下去,但是呢,这个ABC顺序性太强不适合做钥匙,可以是CASH,COIN,你看BCH也不适合做钥匙,因为B和C挨着加密性就弱了。
你看这样一串字母看得懂吗?CVGDQPO
当然看不懂,这就是加密后的样子,当然看不懂,我现在告诉你钥匙是BCH。
也就是说BCH三个字母循环作为钥匙。你能解出原文吗?
好了,第一个密文是C,钥匙中对应的是B,先在表格中找钥匙也就是第一列,也就是B,然后往右边看到C再往上就是B了,这几个字母离得太近,我找个远点的,密文中的J是第三个字母,对应循环中的bch也就是h,所以h是钥匙,看下图的箭头顺序,就知道怎么破解的了。
好了,下面我把Excel表格中做出来的例子,直接呈现给大家,再揣摩一下。
以上加密法是不是很不错呢?
不是的,以上加密法看似精巧,却犯了一个大忌,太慢了。加密法要兼顾安全性和效率性,像刚刚这么搞加密解密,写信的人非常累,解密的人也非常累。B/C/H这个钥匙的传递还要保密,如果别人知道了也麻烦。对称加密法就是这样,对称加密法是什么?就是加密和解密是可逆的,只要给我钥匙,给我点时间,我随时可以解密——这是后话。
咸丰十年开始应用
所以呢,这个加密法发明出来之后的两百年,基本没有什么大用,只是小密圈子的娱乐游戏。后来到了美国南北战争时期(1861年到1865年)这个加密法才大规模的使用,原因是后来有了机械法,为了解密专门做了机器破解,这样的机器未来也会有一些很著名的,比如摁你个马机(恩尼格玛密码机 德语发音Enigma),也就是说法国人在明朝万历年间发明出来这个加密法,到了1860年(也就是咸丰十年)火烧圆明园之后,才广泛使用。
为什么呢?答案是工业革命。1860年的时候蒸汽机有了。电动机也有了,再枯燥的体力破解的活儿都能交给机器,设计好破解规律就好了。
从这一点来说,当时的清政府就单单在密码学上就落后了一大截。
如果双方战争再重演一次,很可能是英法联军截获清军情报后,直接破解,清军截获英法联军文件后,直接懵逼。这仗还怎么打?先不说西方船坚炮利,就这一条密码学你就得废了。而且,清军还没话说,说什么!
背出来《孙子兵法》”知己知彼,百战不殆”又怎么样,怎么样知己知彼,没有近代科技,不懂破译的方法,你啥都不知道。祖先给你方法,你得把路径找出来。
其实,从本文的脉络,您也看出来下面的密码学发展了。
密码学起源于战争也会回归于战争,从隐藏法、移位替换法到今天讲的维吉尼亚加密法无时无刻不是伴随着战争。下面的密码学要大发展了,以上的加密还是传统,不够神乎其技。为什么大发展?第一次世界大战,第二次世界大战要来了,没有世界大战,人类不会这么快搞出来核裂变;没有世界大战,密码学也不会这么突飞猛进的发展;没有经济危机,中本聪发布比特币可能还需要一些时间。
历史的车轮滚滚向前,如果想从另外一个角度看待所处的世界,从另外一个角度看待目前的区块链行业,请稍微懂一些密码学。
我之所以从法国外交官讲到炼金术士,从明朝万历十五年讲到咸丰十年,一方面密码学的发展中国在之前掉队了(注意是之前),一方面是为了增加一些趣味性,只有科技的理念进入到每个人的脑子里,才会迎来真正的大发展。还有一点,密码学本身是很枯燥的,隐秘的,大家不关注的。
密码学从来都不是显学,就像一些真相永远在历史的角落里。
江湖一杯酒,加密二锅头。
来源:加密二锅头