密碼學(xué)的前世今生 它決定著人類(lèi)的歷史走向

崔哥侃
今天我們?cè)谟肦SA算法的時(shí)候,使用的數(shù)一般都是300位以上,想分解這樣一個(gè)數(shù),需要把全球的計(jì)算機(jī)集中起來(lái),一塊工作上億年才能破解,目前看來(lái)啊,RSA加密算法,是非??煽康募用芊绞剑运脖粡V泛應(yīng)用在各種場(chǎng)合,比如我們使用的網(wǎng)銀支付,網(wǎng)絡(luò)和手機(jī)支付等等,背后都有使用這種算法。

密碼學(xué)

前段時(shí)間上映了一部電影叫,懸崖之上,不知道大家有沒(méi)有看,它主要講的是一群特工,在執(zhí)行一項(xiàng)秘密行動(dòng)的故事,在執(zhí)行任務(wù)的過(guò)程中,需要傳遞情報(bào),經(jīng)常會(huì)用密碼,俗話說(shuō),君不密,則失臣,臣不密,則失身,已事不密則害成,換句話說(shuō),如果沒(méi)有機(jī)密,就會(huì)有危險(xiǎn),孫子兵法里也說(shuō),知己知彼,百戰(zhàn)不殆,說(shuō)明在戰(zhàn)爭(zhēng)中,沒(méi)有比刺探別人的情報(bào),我們回顧歷史,有多少權(quán)力爭(zhēng)權(quán)和戰(zhàn)爭(zhēng),背后就有多少秘密,密碼學(xué),就是這樣誕生的,我們也經(jīng)常在電影電視上看到過(guò)很多加密方法,但我估計(jì)你可能不知道它背后的原理,今天我們就聊一聊,密碼的前世今生。

什么是密碼

雖然現(xiàn)在我們這么稱呼,其實(shí)在古代,人們是先研究了密,然后再去研究碼,密碼的歷史非常久遠(yuǎn),剛開(kāi)始是從秘密書(shū)信開(kāi)始,人們的想法就是,先把信里的內(nèi)容給藏起來(lái),據(jù)文獻(xiàn)記載,在公元前5世紀(jì),希臘和波斯之間正在打仗,希臘這邊呢,為了去送信,會(huì)把信寫(xiě)在木板上,然后在上面涂上一層臘,收信人拿到之后,把臘刮掉,就能看到信上的字,還有一種方法,是把信史的頭發(fā)剃光,把信寫(xiě)在頭皮上,等信史的頭發(fā)長(zhǎng)出來(lái)之后,然后再去送信,到了之后再把頭發(fā)給剃了,這種直接掩蓋信息的方法,叫做隱匿法,這種方法很常見(jiàn),現(xiàn)在還有在使用,比如,在電影上經(jīng)??吹降模秒[形墨水寫(xiě)信,或者把信放在膠囊吞到肚子里等等,這種方法能被用了這么久,說(shuō)明這個(gè)方法很管用,但是,這個(gè)方法它也有很大的缺點(diǎn),就是如果敵人非常認(rèn)真找的話,情報(bào)就容易暴露,于是,人們就在研究,就是說(shuō),有沒(méi)有另外一種可能,就算敵人找到了信,但還是看不懂寫(xiě)的是什么,順著這個(gè)思路,各種密碼就出現(xiàn)了,密碼剛開(kāi)始呢,出現(xiàn)了很多種方法,但是原理只有兩個(gè),一種是移位法,另一種是替代法,什么是移位法,就是把想要說(shuō)的那個(gè)字母,向后移動(dòng)一位,比如,你想要寫(xiě)A,你就寫(xiě)成B,想寫(xiě)B(tài),你就寫(xiě)成C,依次類(lèi)推,就敵人看到信之后,也看不懂上面的意思,但是如果說(shuō)能找到這里的規(guī)律,也就被破譯了,這種方法,最早是由凱撒大帝發(fā)明的,所以移位式加密,也叫凱撒加密法,另一種替代法,就是先將字母隨意搭配,再用配好的字母替代原來(lái)的字母,比如我們可以指定用A代表V,B代表T等等,就是說(shuō)替代的規(guī)則是人提前定好的,所以更加靈活,也更難破解。

1.jpg

凱撒密碼

這兩種方法雖然很好用,但是它都有本質(zhì)上的弱點(diǎn),就是這些拼出來(lái)的字母,每一個(gè)出現(xiàn)的頻率是不一樣的,比如在英文里頭,字母A和E會(huì)經(jīng)常出現(xiàn),所以不管哪個(gè)方法,只要是用一套加密方案,那么只要統(tǒng)計(jì)字母出現(xiàn)的頻率。就能找到破解的方向,于是人們又在這兩個(gè)方法的基礎(chǔ)上,發(fā)明了一套新的加密方法,這個(gè)方法是由一個(gè)叫維吉尼亞的法國(guó)外交官發(fā)明的,所以叫做維吉尼亞加密法,這個(gè)方法最大的特點(diǎn),是它給每個(gè)字母都設(shè)了一套加密方法,一個(gè)字母有26套方案,通訊的雙方需要提前約定好一組數(shù)字,這樣就知道哪個(gè)字母用哪一套方案了,維吉尼亞加密法確實(shí)提高的密碼的安全性,但是用起來(lái)有點(diǎn)麻煩,在手工計(jì)算的時(shí)代,并沒(méi)有被廣泛的應(yīng)用。

二戰(zhàn)德國(guó)恩尼格瑪密碼機(jī)

2.jpg

恩尼格瑪密碼機(jī)

直到機(jī)械時(shí)代才算真正使用上,在兩次世界大戰(zhàn)中,對(duì)加密的技術(shù)需求非常強(qiáng)烈,一方面因?yàn)闄C(jī)械的出現(xiàn),提高了效率,另一方面因?yàn)閼?zhàn)爭(zhēng)的需要,也讓加密的場(chǎng)合就越來(lái)越多,比如,在戰(zhàn)爭(zhēng)中,會(huì)使用大量的無(wú)線電通訊,但是,因?yàn)殡p方都能截獲這些信號(hào),所以就需要加密,在第二次世界大戰(zhàn)中,德國(guó)發(fā)明了一種叫恩尼格瑪?shù)拿艽a機(jī),因此出現(xiàn)了密碼學(xué)歷史上最著名的密碼攻防戰(zhàn),就是英國(guó)的密碼專家,攻破德國(guó)恩尼格瑪密碼機(jī),恩尼格瑪是一種機(jī)械電子加密機(jī),也是第一個(gè)量產(chǎn)的加密機(jī)器,它的樣子有點(diǎn)像打字機(jī),有鍵盤(pán)有顯示裝置,內(nèi)部是機(jī)械和電子零件,操作員每敲一下字母,經(jīng)過(guò)電子和機(jī)械的轉(zhuǎn)換,就會(huì)出現(xiàn)一個(gè)對(duì)應(yīng)的字母,這就是加密之后的密碼,聽(tīng)起來(lái)似乎沒(méi)什么特別,但是它最牛的是,它的核心叫編碼器,編碼器的核心是齒輪,每敲一次,齒輪就旋轉(zhuǎn)一格,齒輪只要一轉(zhuǎn),內(nèi)部的線路連接就會(huì)發(fā)生變化,加密的結(jié)果就會(huì)不一樣,早期的恩尼格瑪齒輪只有6格,也就是只有6套加密方法,后來(lái),齒輪增加到26格,但是感覺(jué)還不夠用,就又增加了一個(gè)同樣的齒輪,就是26乘26,也就是676套算法,這樣的密碼機(jī)也是僅僅夠商業(yè)使用,德國(guó)軍方的密碼機(jī)是8個(gè)齒輪,這8個(gè)齒輪有多少套加密方案呢,這個(gè)數(shù)字可能你都想象不到,它有2000多億套加密算法,這是什么概念呢,我們知道,最新的大英百科全書(shū),也只有6000多萬(wàn)個(gè)單詞,咱們就算它每個(gè)單詞平均有10字母,也就是說(shuō)我們把每個(gè)單詞打上300遍,也用不完全部的加密方法。

3.jpg

恩尼格瑪密碼機(jī)內(nèi)部結(jié)構(gòu)

從理論上講,這樣的機(jī)器幾乎是無(wú)法攻破的,所以,在戰(zhàn)爭(zhēng)中德軍大約裝備了三萬(wàn)臺(tái)這樣的機(jī)器,可見(jiàn)德國(guó)人對(duì)它的信任,恩尼格瑪密碼機(jī)它的原理,其實(shí)用的還是傳統(tǒng)的方法,移位法和替代法,只是大大提高了數(shù)量級(jí),那英國(guó)的情報(bào)部門(mén)又是怎么破解的呢,其實(shí)它是由波蘭,法國(guó)和英國(guó),這個(gè)三個(gè)國(guó)家合作完成的,先是通過(guò)間諜活動(dòng)和軍事襲擊,搞到軍方的恩尼格瑪密碼機(jī),法國(guó)又弄來(lái)了它的使用說(shuō)明書(shū),但是有了說(shuō)明書(shū),也不能直接破譯,因?yàn)橛?000多億套方案,你根本不知道到底用的哪一套,當(dāng)初德軍就是假設(shè)如果敵人弄到了一模一樣的機(jī)器,也不能破解,這才批準(zhǔn)使用恩尼格瑪密碼機(jī),波蘭的密碼學(xué)家,做了一些嘗試,能在一定程度上破解密碼,這給了英國(guó)很大的希望,于是開(kāi)始大量招募語(yǔ)言學(xué)家,科學(xué)家,還有數(shù)學(xué)家,組成了一支7000人的密碼破譯隊(duì)伍,這些學(xué)者每天24小時(shí)不停的做解密工作,最終破譯成功是,著名的數(shù)學(xué)家艾倫圖靈,也是計(jì)算機(jī)科學(xué)的奠基人,電腦用的英偉達(dá)顯卡的那個(gè)圖靈架構(gòu),就是以他的名字命名的,圖靈發(fā)現(xiàn)截獲的德國(guó)密碼里,有大量的規(guī)律,比如,像希特勒萬(wàn)歲這樣的句子就經(jīng)常出現(xiàn),還有每天早上六點(diǎn),德軍要發(fā)一份當(dāng)天的天氣預(yù)報(bào),而且格式非常固定,比如,僅僅憑著經(jīng)驗(yàn)就判斷出天氣這個(gè)單詞,然后圖靈用出現(xiàn)頻率高的單詞,來(lái)進(jìn)行反推,但是我們前面說(shuō)過(guò),這個(gè)機(jī)器它有2000多億種加密方式,最后圖靈也僅僅將范圍縮小到105萬(wàn)種,但是如果用手來(lái)算,它也是個(gè)天文數(shù)字,圖靈也專門(mén)為它設(shè)計(jì)了一種破譯的機(jī)器,這就是計(jì)算機(jī)最早的原型,它的代號(hào)叫做炸彈,炸彈的數(shù)量越多,破解的速度也就越快,最終他們制造了49個(gè)機(jī)器,最快只需要1個(gè)小時(shí),就能破譯德軍的密碼,從這之后,英國(guó)扭轉(zhuǎn)了德國(guó)在歐洲的局勢(shì)。

納瓦霍密碼

4.jpg

納瓦霍人

當(dāng)然戰(zhàn)爭(zhēng)是一場(chǎng)博弈,你能截獲對(duì)方的情報(bào),對(duì)方也能破解你的情報(bào),在太平洋的戰(zhàn)場(chǎng)上,美軍就想,找到一種沒(méi)有規(guī)律可言的加密方法,于是就想到了用少數(shù)民族的語(yǔ)言直接當(dāng)作密碼,我們國(guó)家當(dāng)時(shí)在抗戰(zhàn)的時(shí)候,也用溫州話做過(guò)通訊,最早提出這種想法,是一位叫約翰斯頓的工程師,約翰斯頓是父親是一名傳教士,為了傳教,他生活在納瓦霍人的保留區(qū),納瓦霍人是美國(guó)原住民其中的一個(gè)部落,本來(lái)數(shù)量就很少,約翰斯頓最極少的同時(shí)掌握英語(yǔ)的納瓦霍語(yǔ)的人,他明白納瓦霍語(yǔ)很少有人知道,別人根本就聽(tīng)不懂,軍方為了檢驗(yàn)它的保密性,美軍將納瓦霍語(yǔ)的信息交給了情報(bào)部門(mén),讓他們當(dāng)成密碼來(lái)破譯,結(jié)果這些專家們,沒(méi)日沒(méi)夜地忙了三個(gè)星期,連一點(diǎn)頭緒都沒(méi)有,專家們甚至無(wú)法用文字來(lái)記錄,更不用說(shuō)破譯了,納瓦霍密碼成功通過(guò)了檢驗(yàn),其實(shí)美國(guó)還有很多的原住民和語(yǔ)言,納瓦霍人因?yàn)槭怯泻屯饷娴娜私佑|過(guò),所以說(shuō),他的語(yǔ)言,很少有人會(huì)知道,它就是天然的加密語(yǔ)言,于是美軍招募了29名納瓦霍人,他們?yōu)閼?zhàn)爭(zhēng)做出了巨大的貢獻(xiàn),而且還創(chuàng)造了一個(gè)歷史記錄,就是納瓦霍密碼是世界從沒(méi)有被破譯的密碼之一,美國(guó)為了紀(jì)念納瓦霍人為二戰(zhàn)作出的貢獻(xiàn),還將每年的8月14日定為,納瓦霍密語(yǔ)通話員國(guó)定紀(jì)念日

現(xiàn)代計(jì)算機(jī)時(shí)候密碼

到了現(xiàn)代,由于計(jì)算機(jī)的出現(xiàn),密碼的加密方案,不管是從質(zhì)還是量,都達(dá)到質(zhì)的飛越,我們都知道計(jì)算機(jī)是二進(jìn)制,一切的信息都可以有O和1來(lái)表示,每個(gè)字母在計(jì)算機(jī)都是0和1的代碼,目前通用的代碼叫做美國(guó)標(biāo)準(zhǔn)信息交換碼,每個(gè)字母都是由7個(gè)0.1,0.1的代碼組成,我們用計(jì)算機(jī)加密的時(shí)候,其實(shí)就是不同的0和1,計(jì)算機(jī)的出現(xiàn),把語(yǔ)言數(shù)字化了,打破了語(yǔ)言規(guī)律的底層結(jié)構(gòu),數(shù)字化讓密碼學(xué)進(jìn)入了新的時(shí)代,還有一個(gè)非常重要的變化就是,就是加密的過(guò)程不用再保密了,以前的加密方法,它都有要保密,不能讓別人知道加密規(guī)則,可是現(xiàn)在,我們完全公開(kāi)技術(shù)細(xì)節(jié),這里加密最核心的原理叫分解制因數(shù),這個(gè)技術(shù)很關(guān)鍵,什么意思呢,我們?cè)趯W(xué)校都學(xué)過(guò)質(zhì)數(shù),所謂質(zhì)數(shù)就是不能被其它數(shù)字整除的數(shù)字,舉個(gè)例子,12能夠被2.3.4.6整除,它就不是質(zhì)數(shù),13不能被整除,它就是質(zhì)數(shù),同樣,23也是質(zhì)數(shù),如果我們將兩個(gè)質(zhì)數(shù)相乘,比如13乘23,得出299,這個(gè)很容易計(jì)算,但是如果問(wèn)299是哪兩個(gè)質(zhì)數(shù)相乘的,這個(gè)就計(jì)算起來(lái)很困難,只能用笨方法一遍一遍地試,這個(gè)方法就叫分解制因數(shù),結(jié)果只有我知道,這就是保密的鑰匙,這套加密算法是由美國(guó)麻省理工的三位科學(xué)家發(fā)明,這三位科學(xué)家的首字母為RSA,所以這套算法被命名為RSA加密算法,可能有人覺(jué)得,這樣的算法,麻煩是麻煩,但也不是太困難啊,其實(shí)一般在用RSA加密的時(shí)候,用的這個(gè)數(shù)字會(huì)非常的大,數(shù)字越大,分解它所需要的時(shí)間就越長(zhǎng),1977年,為了驗(yàn)證這個(gè)算法有多可靠,這三個(gè)科學(xué)家給雜志上投了一篇文章,解釋了RSA加密算法的工作原理,還下一個(gè)挑戰(zhàn)書(shū),寫(xiě)了一串密碼,然后給了一個(gè)129位的數(shù)字,這串?dāng)?shù)字就是公開(kāi)的那把鎖,懸賞100美元,邀請(qǐng)大家來(lái)破解,最終這個(gè)密碼還是被破解了,但是它是怎么破解的呢,它是由600人組成的團(tuán)隊(duì),他們借助了全球各地計(jì)算機(jī),還動(dòng)用了超級(jí)計(jì)算機(jī),即使是這樣,也花了整整17年的時(shí)間,成功破解了密碼,這也證明了它的可靠性,如果是在戰(zhàn)場(chǎng)上,17年后得到的情報(bào),破解了也沒(méi)啥用。

今天我們?cè)谟肦SA算法的時(shí)候,使用的數(shù)一般都是300位以上,想分解這樣一個(gè)數(shù),需要把全球的計(jì)算機(jī)集中起來(lái),一塊工作上億年才能破解,目前看來(lái)啊,RSA加密算法,是非??煽康募用芊绞?,所以它也被廣泛應(yīng)用在各種場(chǎng)合,比如我們使用的網(wǎng)銀支付,網(wǎng)絡(luò)和手機(jī)支付等等,背后都有使用這種算法。

其實(shí)講到這,故事也就講完了,雖然說(shuō)現(xiàn)代社會(huì),我們的加密方式非??煽?,但我們回顧密碼學(xué)的歷史,每一個(gè)時(shí)代都是加密和被破譯的過(guò)程,魔高一尺,道高一丈,你會(huì)發(fā)現(xiàn),這是一場(chǎng)永遠(yuǎn)都沒(méi)有終結(jié)的拉鋸戰(zhàn),現(xiàn)在已經(jīng)有科學(xué)家,用量子計(jì)算機(jī)來(lái)破譯RSA算法,所以并沒(méi)有一勞永逸的加密手段,這將是一場(chǎng)沒(méi)有終點(diǎn)的戰(zhàn)爭(zhēng)。

THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無(wú)評(píng)論