江南
密碼這個(gè)詞有多種解釋。人們最熟悉的是與銀行打交道時(shí)用到的那些數(shù)字。那是人們事先在銀行存儲(chǔ)的一組數(shù)字,以后與銀行打交道時(shí),只要交驗(yàn)這組數(shù)字就能證明你的身份。這個(gè)數(shù)字通常被叫做密碼。本文介紹的不是這種密碼,而是一種“密碼術(shù)”,就是對(duì)要傳遞的信息按某種規(guī)則進(jìn)行轉(zhuǎn)換,從而隱藏信息的內(nèi)容。這種方法可以使機(jī)密信息得以在公開渠道傳遞而不泄密。使用這種方法,要經(jīng)過(guò)一個(gè)加密過(guò)程。在加密過(guò)程中通常要用到下面這些概念:
原文,或者叫明文,就是被隱藏的文字。
加密法,指隱藏原文的法則。
偽文,或者叫密文,指對(duì)原文按加密法處理后生成的可公開傳遞的文字。偽文有時(shí)是可訊的,有時(shí)是亂碼。
密鑰,在加密法中起決定作用的因素,可能是數(shù)字、詞匯,也可能是一些字母。
加密的結(jié)果生成了偽文。要想讓偽文接收者能夠讀懂原文,就要把加密法以及密鑰告訴接收者,否則接收者無(wú)法對(duì)密文解密,也就無(wú)法讀懂原文。
古代的實(shí)例
Cryptography(密碼術(shù))一詞是從希臘文的Kryptos(隱藏)一詞派生的。密碼術(shù)被廣泛應(yīng)用之前,人們先是用隱文術(shù)為秘密信息加密。
隱文術(shù),就是把文字隱藏起來(lái)的方法。古希臘時(shí),一位流亡的希臘人聽說(shuō)波斯暴君薜西斯要進(jìn)攻希臘,就將消息刻在一塊木板上,再在上面涂一層蠟蓋住刻痕。木板傳到希臘,希臘人得知將受到攻擊,提前整頓武備,挫敗了波斯的進(jìn)攻。
近代隱文術(shù)中比較有趣的例子,是在一張紙的不同位置上挖一些小窟窿,用這張紙蒙上一篇布滿文字的公開文獻(xiàn),比如一張報(bào)紙,透過(guò)小窟窿露出來(lái)的字就是發(fā)報(bào)者想傳遞的原文。電影《火燒圓明園》和《美麗心靈》中都有類似的情節(jié)。隱文術(shù)發(fā)展到現(xiàn)代,已經(jīng)與密寫藥水和縮微膠卷等技術(shù)聯(lián)系在一起。
隱文術(shù)的缺點(diǎn)是它過(guò)分依賴物質(zhì)介質(zhì)。如果用密碼術(shù)的術(shù)語(yǔ)形容,它的加密法和密鑰太容易引起人們的注意了,那真是一把看得見的鑰匙,而不是一種碼。
易位與替換
密碼術(shù)主要有兩種:易位法和替換法。
易位法在公元前5世紀(jì)就被斯巴達(dá)人用于加密軍事信息。所謂易位,就是原文和密文的文字(或字母)不變,只是按照一定的規(guī)則改變它們的位置或前后順序。舉例來(lái)說(shuō):
原文“我的密碼你永遠(yuǎn)不懂”。
可以按照如下加密法加密:
我密你遠(yuǎn)懂的碼永不
最后得出偽文“我密你遠(yuǎn)懂的碼永不”。
要想讓接收者看懂,你只需將密鑰“懂后回行,間隔鑲?cè)搿蓖ㄖ邮照呔涂梢粤恕.?dāng)然,這只是最簡(jiǎn)單的易位。
如果把一個(gè)句子拆成三層、四層,破解的難度就會(huì)增加。
替換,是將原文文字或字母按照規(guī)則用其他文字或字母替換。比如原文“我的密碼你永遠(yuǎn)不懂”。密鑰是:流氓兔=我,表情=密碼,你=恐龍。利用替換術(shù)制定的著名密碼,早期可以舉愷撒密碼為例。愷撒密碼的規(guī)則是,原文的每一個(gè)字母被替換成字母表中排在此字母后三位的字母。如原文為“Attack”。(進(jìn)攻),按照愷撒密碼的加密規(guī)則:A—D,t—w、c—f、k—n,就被加密成“Dwwdfn”。接收者收到密文后,按加密規(guī)則進(jìn)行逆推,即可得出原文。愷撒密碼在幾個(gè)世紀(jì)內(nèi)一直被廣泛使用,被認(rèn)為是非常安全的。直到公元9世紀(jì),阿拉伯科學(xué)家阿爾·金迪提出的字母頻率分析法終結(jié)了愷撒密碼無(wú)法破譯的神話。
16世紀(jì),法國(guó)外交官維熱納爾設(shè)計(jì)了一種更復(fù)雜的字母替換規(guī)則。運(yùn)用這種規(guī)則先要排列一個(gè)字母方陣,然后規(guī)定一個(gè)單詞作為密鑰,對(duì)照原文在方陣中找出密文。維熱納爾替換法能夠掩蓋密文中字母出現(xiàn)的頻率。但是到19世紀(jì),維熱納爾替換法還是被一位普魯士人找到了破譯規(guī)律。
愷撒密碼和維熱納爾替換法只是人工加密法中比較著名的例子。大約從19世紀(jì)初開始,人們已經(jīng)研制出機(jī)器加密裝置。計(jì)算機(jī)發(fā)明之前的密碼機(jī),以第二次世界大戰(zhàn)中大出風(fēng)頭的恩尼格瑪密碼機(jī)最為著名。
發(fā)明和破譯密碼的代價(jià)
兩次世界大戰(zhàn)期間,無(wú)數(shù)天才的大腦在不斷地發(fā)明和破譯著一堆堆信息。
1917年,德國(guó)決定實(shí)行無(wú)限制潛艇戰(zhàn),以封鎖英國(guó)的海上運(yùn)輸,作戰(zhàn)對(duì)象包括尚保持中立的美國(guó)。為避免美國(guó)宣戰(zhàn),德國(guó)決定先下手,并制訂了一個(gè)絕密計(jì)劃:策動(dòng)墨西哥與日本對(duì)美國(guó)宣戰(zhàn),使美國(guó)腹背受敵,自顧不暇。這一絕密方案的電報(bào)被英國(guó)截獲了,英國(guó)的密碼學(xué)家破譯了密文。消息傳出,美國(guó)舉國(guó)嘩然,4月16日,美國(guó)向德國(guó)宣戰(zhàn)。9個(gè)月后,德國(guó)投降。
1919年,德國(guó)謝爾比斯發(fā)明了一種新的密碼編碼裝置——恩尼格瑪(Enigma)密碼機(jī),它成為歷史上最難破解的加密系統(tǒng),被德國(guó)軍方大量采用。隨著二戰(zhàn)的爆發(fā),破譯恩尼格瑪?shù)闹匾耘c日俱增。為此,英國(guó)薈萃全國(guó)最好的數(shù)學(xué)家、密碼學(xué)家來(lái)完成這一任務(wù)。最終,由于德國(guó)報(bào)務(wù)員的失誤,英國(guó)破譯了恩尼格瑪?shù)拿孛?,開始源源不斷地接收并破譯德軍的電報(bào)。
1940年11月12日上午,德國(guó)下達(dá)了“月光奏鳴曲”計(jì)劃,決定在14日摧毀考文垂市。此時(shí),被破譯的德軍進(jìn)攻命令送到英國(guó)首相丘吉爾的手上。如果此時(shí)通知考文垂市的居民撤退,雖然能減少考文垂市的損失,但會(huì)使德國(guó)懷疑恩尼格瑪已被破譯,從而改用其他密碼,使英國(guó)斷了絕密情報(bào)的來(lái)源。為了麻痹德軍,丘吉爾決定犧牲考文垂市,不采取任何防范措施。最后,德國(guó)飛機(jī)準(zhǔn)時(shí)到來(lái)并狂轟濫炸,將全城夷為平地,居民傷亡慘重。沉重的代價(jià)換來(lái)的收獲是,德國(guó)始終堅(jiān)信恩尼格瑪沒(méi)被破譯,一直使用到大戰(zhàn)結(jié)束。英軍則在北非戰(zhàn)場(chǎng)的對(duì)德作戰(zhàn)中,在諾曼底登陸戰(zhàn)役中,都靠恩尼格瑪取得了重要情報(bào)。
現(xiàn)代密碼學(xué)的開始:
非對(duì)稱體系
二戰(zhàn)后,機(jī)構(gòu)和私人間的通信手段和通信頻率大大增加,特別是計(jì)算機(jī)進(jìn)入民用領(lǐng)域后,許多機(jī)構(gòu)都研制了自己的密碼體系,在信息交流中引起了不少問(wèn)題與混亂。于是,制定一套公用的標(biāo)準(zhǔn)化密碼系統(tǒng)迫在眉睫。1976年12月,美國(guó)政府正式啟用IBM公司研制的新型密碼系統(tǒng)——數(shù)據(jù)編碼標(biāo)準(zhǔn),簡(jiǎn)稱DES。DES的采用,解決了密碼系統(tǒng)標(biāo)準(zhǔn)化的問(wèn)題,至今仍是美國(guó)官方認(rèn)定的加密標(biāo)準(zhǔn)。endprint
雖然統(tǒng)一了數(shù)據(jù)編碼標(biāo)準(zhǔn),人們還是經(jīng)常在信息保密方面遇到難題。其中最突出的一個(gè)難題是,傳統(tǒng)的加密技術(shù)都采用單密鑰方法,信息發(fā)送者使用密鑰將原文加密。接收者使用同一密鑰解密。沒(méi)有密鑰,就無(wú)法譯回原文。長(zhǎng)期以來(lái),一直有一個(gè)根本問(wèn)題困擾著密碼學(xué)家,就是如何將密鑰安全傳遞到接收者手中。這種方法費(fèi)時(shí)費(fèi)力不說(shuō),也不安全。
解決這個(gè)難題的是笛福和赫爾曼——兩個(gè)非常非常聰明的學(xué)者。他們的解決方案是“雙重加鎖方案”。用雙密鑰方法加密原文,發(fā)文方和收文方無(wú)需傳遞密鑰。舉一個(gè)例子:
流氓兔要和恐龍秘密通信,他們各有一把自己掌管鑰匙的鎖。流氓兔將原文放在一個(gè)盒子中,掛上自己的鎖,送給恐龍。恐龍?jiān)诤凶由霞訏焐献约旱逆i,將盒子回送給流氓兔。流氓兔取下自己的鎖,再把盒子送到恐龍手中。這時(shí),盒子上只掛著恐龍的鎖,恐龍就可以用自己掌管的鑰匙開鎖取出原文了。
在雙重加鎖方案的基礎(chǔ)上,笛福經(jīng)過(guò)進(jìn)一步研究,提出了“非對(duì)稱密鑰”的重要思想,發(fā)明了“非對(duì)稱加密”密碼體系。傳統(tǒng)的加密系統(tǒng)中,用于加密的密鑰與解密的密鑰完全相同,解密過(guò)程只是加密過(guò)程的反演,被稱為“對(duì)稱加密”。非對(duì)稱加密系統(tǒng)中,加密密鑰不同于解密密鑰,加密密鑰公之于眾,稱為公開密鑰,供所有人加密發(fā)送原文。解密密鑰是私人密鑰,只有收件人自己掌握,可用來(lái)解密別人發(fā)給自己的原文。
“非對(duì)稱加密”已經(jīng)完美地解決了密鑰分發(fā)的問(wèn)題。但是要將“雙重加鎖方案”和“非對(duì)稱加密”體系應(yīng)用到計(jì)算機(jī)和互聯(lián)網(wǎng)中,還需要設(shè)計(jì)一套簡(jiǎn)便的算法。麻省理工大學(xué)計(jì)算機(jī)科學(xué)實(shí)驗(yàn)室的三位研究員最后成功地完成了這一任務(wù),他們創(chuàng)建了RSA“非對(duì)稱加密”體系,是現(xiàn)代密碼學(xué)中最有影響的密碼系統(tǒng)。
RSA密碼體系在計(jì)算機(jī)與互聯(lián)網(wǎng)上得到了廣泛應(yīng)用。目前網(wǎng)絡(luò)信息傳遞(包括電子郵件)與電子商務(wù)的信息加密、數(shù)字簽名和身份認(rèn)證等,都是以RSA密碼軟件為基礎(chǔ)的。
關(guān)于密碼學(xué)的幾個(gè)術(shù)語(yǔ)
1、維熱納爾方陣:舉個(gè)例子,設(shè)WHITE為密鑰,來(lái)為divert troops加密。先找到W字母打頭的第23行,這一行中與第一行的D字母(原文的第一個(gè)字母)所指豎列交叉的是Z。再找H打頭的第8行,這一行中與第一行的I字母(原文第二個(gè)字母)所指豎列交叉的是P。再找I打頭的第9行……于是我們得到的密文是ZPDXVQ AZHSLZ。接收者只要知道密鑰是WHITE,按照這張表,就可以還原出原文。
2、M—94陸軍密碼柱:1922年至1942年間在美軍一般軍官中廣泛使用的“M—94陸軍密碼柱”,由25個(gè)直徑35厘米的鋁盤組成,每個(gè)盤上刻著無(wú)序的26個(gè)字母。密鑰如果是“U—3”,就按照正常順序排列出橫向的26個(gè)字母,以U打頭,接下來(lái)是VWXYZABC……這一橫行下面的第三行就是密文字母。
3、惠斯通(Wheatstone)密碼表:1867年在巴黎世紀(jì)展覽會(huì)上展出。這是一個(gè)單表加密密碼器,轉(zhuǎn)動(dòng)指針指向原文字母,圓盤會(huì)聯(lián)動(dòng)給出密文字母。
4、轉(zhuǎn)輪式密碼機(jī):謝爾比斯(Arthur Scherbius)發(fā)明的恩尼格瑪轉(zhuǎn)輪式密碼機(jī),輪的多少與密級(jí)有關(guān)。這是一臺(tái)四輪密碼機(jī),主要用于潛艇間的聯(lián)絡(luò)。
5、DES密碼系統(tǒng):也叫盧斯福加密系統(tǒng),由IBM的菲思特爾發(fā)明。其加密步驟是:先將原文轉(zhuǎn)換為二進(jìn)制數(shù)字,以每64個(gè)數(shù)字為單位進(jìn)行分組,再對(duì)每組數(shù)字按照一定程序進(jìn)行多達(dá)16個(gè)回合的復(fù)雜加密,然后將密文發(fā)送出去。接收方按約定程序逆向運(yùn)算,就可以獲得原文。
6、RSA加密系統(tǒng):該系統(tǒng)于1977年由麻省理工大學(xué)計(jì)算機(jī)科學(xué)實(shí)驗(yàn)室的三位研究員里維斯特(R·Rivest)、沙米爾(A·Shamir)及阿德爾曼(L、Adieman)研發(fā)成功。RSA,就是他們姓名的首字母連寫。RSA加密系統(tǒng)是世界上第一套符合公開密鑰條件的密碼系統(tǒng),其核心是數(shù)論中一類基于取模運(yùn)算的單向函數(shù)。
(責(zé)任編輯:武學(xué)滬)endprint