密碼學(xué)
緒論
密碼學(xué)的發(fā)展歷史(1)
1.3 密碼學(xué)的發(fā)展歷史
密碼學(xué)的發(fā)展歷程大致經(jīng)歷了三個(gè)階段:古代加密方法、古典密碼和近代密碼。
1.3.1 古代加密方法(手工階段)
源于應用的無(wú)窮需求總是推動(dòng)技術(shù)發(fā)明和進(jìn)步的直接動(dòng)力。存于石刻或史書(shū)中的記載表明,許多古代文明,包括埃及人、希伯來(lái)人、亞述人都在實(shí)踐中逐步發(fā)明了密碼系統。從某種意義上說(shuō),戰爭是科學(xué)技術(shù)進(jìn)步的催化劑。人類(lèi)自從有了戰爭,就面臨著(zhù)通信安全的需求,密碼技術(shù)源遠流長(cháng)。
古代加密方法大約起源于公元前440年出現在古希臘戰爭中的隱寫(xiě)術(shù)。當時(shí)為了安全傳送軍事情報,奴隸主剃光奴隸的頭發(fā),將情報寫(xiě)在奴隸的光頭上,待頭發(fā)長(cháng)長(cháng)后將奴隸送到另一個(gè)部落,再次剃光頭發(fā),原有的信息復現出來(lái),從而實(shí)現這兩個(gè)部落之間的秘密通信。
密碼學(xué)用于通信的另一個(gè)記錄是斯巴達人于公元前400年應用Scytale加密工具在軍官間傳遞秘密信息。Scytale實(shí)際上是一個(gè)錐形指揮棒,周?chē)h(huán)繞一張羊皮紙,將要保密的信息寫(xiě)在羊皮紙上。解下羊皮紙,上面的消息雜亂無(wú)章、無(wú)法理解,但將它繞在另一個(gè)同等尺寸的棒子上后,就能看到原始的消息。
我國古代也早有以藏頭詩(shī)、藏尾詩(shī)、漏格詩(shī)及繪畫(huà)等形式,將要表達的真正意思或“密語(yǔ)”隱藏在詩(shī)文或畫(huà)卷中特定位置的記載,一般人只注意詩(shī)或畫(huà)的表面意境,而不會(huì )去注意或很難發(fā)現隱藏其中的“話(huà)外之音”。
由上可見(jiàn),自從有了文字以來(lái),人們?yōu)榱四撤N需要總是想法設法隱藏某些信息,以起到保證信息安全的目的。這些古代加密方法體現了后來(lái)發(fā)展起來(lái)的密碼學(xué)的若干要素,但只能限制在一定范圍內使用。
傳輸密文的發(fā)明地是古希臘,一個(gè)叫Aeneas Tacticus的希臘人在《論要塞的防護》一書(shū)中對此做了最早的論述。公元前2世紀,一個(gè)叫Polybius的希臘人設計了一種將字母編碼成符號對的方法,他使用了一個(gè)稱(chēng)為Polybius的校驗表,這個(gè)表中包含許多后來(lái)在加密系統中非常常見(jiàn)的成分,如代替與換位。Polybius校驗表由一個(gè)5′5的網(wǎng)格組成(如表1-1所示),網(wǎng)格中包含26個(gè)英文字母,其中I和J在同一格中。每一個(gè)字母被轉換成兩個(gè)數字,第一個(gè)是字母所在的行數,第二個(gè)是字母所在的列數。如字母A就對應著(zhù)11,字母B就對應著(zhù)12,以此類(lèi)推。使用這種密碼可以將明文“message”置換為密文“32 15 43 43 11 22 15”。在古代,這種棋盤(pán)密碼被廣泛使用。
表1-1 Polybius校驗表
|
| 1 | 2 | 3 | 4 | 5 |
| 1 | A | B | C | D | E |
| 2 | F | G | H | I/J | K |
| 3 | L | M | N | O | P |
| 4 | Q | R | S | T | U |
| 5 | V | W | X | Y | Z |
古代加密方法主要基于手工的方式實(shí)現,因此稱(chēng)為密碼學(xué)發(fā)展的手工階段。
1.3.2 古典密碼(機械階段)
古典密碼的加密方法一般是文字置換,使用手工或機械變換的方式實(shí)現。古典密碼系統已經(jīng)初步體現出近代密碼系統的雛形,它比古代加密方法復雜,其變化較小。古典密碼的代表密碼體制主要有:?jiǎn)伪泶婷艽a、多表代替密碼及轉輪密碼。Caesar密碼就是一種典型的單表加密體制;多表代替密碼有Vigenere密碼、Hill密碼;著(zhù)名的Enigma密碼就是第二次世界大戰中使用的轉輪密碼。
阿拉伯人是第一個(gè)清晰地理解密碼學(xué)原理的人,他們設計并且使用代替和換位加密,并且發(fā)現了密碼分析中的字母頻率分布關(guān)系。大約在1412年,al-Kalka-shandi在他的大百科全書(shū)中論述了一個(gè)著(zhù)名的基本處理辦法,這個(gè)處理方法后來(lái)廣泛應用于多個(gè)密碼系統中。他清楚地給出了一個(gè)如何應用字母頻率分析密文的操作方法及相應的實(shí)例。
歐洲的密碼學(xué)起源于中世紀的羅馬和意大利。大約在1379年,歐洲第一本關(guān)于密碼學(xué)的手冊由Gabriela de Lavinde編寫(xiě),由幾個(gè)加密算法組成,并且為羅馬教皇Clement七世服務(wù)。這個(gè)手冊包括一套用于通信的密鑰,并且用符號取代字母和空格,形成了第一個(gè)簡(jiǎn)要的編碼字符表(稱(chēng)為Nomenclators)。該編碼字符表后來(lái)被逐漸擴展,并且流行了幾個(gè)世紀,成為當時(shí)歐洲政府外交通信的主流方法。
到了1860年,密碼系統在外交通信中已得到普遍使用,并且已成為類(lèi)似應用中的寵兒。當時(shí),密碼系統主要用于軍事通信,如在美國國內戰爭期間,聯(lián)邦軍廣泛地使用了換位加密,主要使用的是Vigenere密碼,并且偶爾使用單字母代替。然而聯(lián)合軍密碼分析人員破譯了截獲的大部分聯(lián)邦軍密碼。
在第一次世界大戰期間,敵對雙方都使用加密系統(Cipher System),主要用于戰術(shù)通信,一些復雜的加密系統被用于高級通信中,直到戰爭結束。而密碼本系統(Code System)主要用于高級命令和外交通信中。
到了20世紀20年代,隨著(zhù)機械和機電技術(shù)的成熟,以及電報和無(wú)線(xiàn)電需求的出現,引起了密碼設備方面的一場(chǎng)革命——發(fā)明了轉輪密碼機(簡(jiǎn)稱(chēng)轉輪機,Rotor),轉輪機的出現是密碼學(xué)發(fā)展的重要標志之一。美國人Edward Hebern認識到:通過(guò)硬件卷繞實(shí)現從轉輪機的一邊到另一邊的單字母代替,然后將多個(gè)這樣的轉輪機連接起來(lái),就可以實(shí)現幾乎任何復雜度的多個(gè)字母代替。轉輪機由一個(gè)鍵盤(pán)和一系列轉輪組成,每個(gè)轉輪是26個(gè)字母的任意組合。轉輪被齒輪連接起來(lái),當一個(gè)轉輪轉動(dòng)時(shí),可以將一個(gè)字母轉換成另一個(gè)字母。照此傳遞下去,當最后一個(gè)轉輪處理完畢時(shí),就可以得到加密后的字母。為了使轉輪密碼更安全,人們還把幾種轉輪和移動(dòng)齒輪結合起來(lái),所有轉輪以不同的速度轉動(dòng),并且通過(guò)調整轉輪上字母的位置和速度為破譯設置更大的障礙。
幾千年來(lái),對密碼算法的研究和實(shí)現主要是通過(guò)手工計算來(lái)完成的。隨著(zhù)轉輪機的出現,傳統密碼學(xué)有了很大的進(jìn)展,利用機械轉輪可以開(kāi)發(fā)出極其復雜的加密系統。1921年以后的十幾年里,Hebern構造了一系列穩步改進(jìn)的轉輪機,并投入美國海軍的試用評估,并申請了第一個(gè)轉輪機的專(zhuān)利,這種裝置在隨后的近50年里被指定為美軍的主要密碼設備。毫無(wú)疑問(wèn),這個(gè)工作奠定了二次世界大戰中美國在密碼學(xué)方面的重要地位。
在美國Hebern發(fā)明轉輪密碼機的同時(shí),歐洲的工程師們,如荷蘭的Hugo Koch、德國的Arthur Scherbius都獨立地提出了轉輪機的概念。Arthur Scherbius于1919年設計出了歷史上最著(zhù)名的密碼機——德國的Enigma機,在二次世界大戰期間,Enigma曾作為德國陸、海、空三軍最高級密碼機。Enigma機(如圖1-1(a)所示)面板前有燈泡和插接板,它使用了3個(gè)正規輪和1個(gè)反射輪。這使得英軍從1942年2月到12月都沒(méi)能解讀出德國潛艇發(fā)出的信號。4輪Enigma機在1944年裝備德國海軍。
緒論
密碼學(xué)的發(fā)展歷史(2)
這些機器也刺激了英國在二次世界大戰期間發(fā)明并使用TYPEX密碼機,如圖1-1(b)所示。英國的TYPEX密碼機是德國3輪Enigma的改進(jìn)型密碼機,它增加了兩個(gè)輪使得破譯更加困難,在英軍通信中使用廣泛,并幫助英軍破譯了德軍信號。
Hagelin(哈格林)密碼機是在二次世界大戰期間得到廣泛使用的另一類(lèi)轉輪密碼機。它由瑞典的Boris Caesar Wilhelm Hagelin發(fā)明。二戰中,Hagelin C-36型密碼機(如圖1-1(c)所示)曾在法國軍隊中廣泛使用,它由Aktiebolaget Cryptoeknid Stockholm于1936年制造,密鑰周期長(cháng)度為3 900 255。對于純機械的密碼機來(lái)說(shuō),這已是非常不簡(jiǎn)單了。Hagelin C-48型(即M-209,如圖1-1(d)所示)是哈格林對C-36改進(jìn)后的產(chǎn)品,由Smith-Corna公司負責為美國陸軍生產(chǎn),曾裝備美軍師到營(yíng)級部隊,在朝鮮戰爭期間還在使用。M-209增加了一個(gè)有26個(gè)齒的密鑰輪,共由6個(gè)共軸轉輪組成,每個(gè)轉輪外邊緣分別有17, 19, 21, 23, 25, 26個(gè)齒,它們互為素數,從而使它的密碼周期達到了26′25′23′21′19′17 = 101 405 850。
日本人在二次世界大戰期間所使用的密碼機與Hebern和Enigma密碼機間有一段有趣的歷史淵源。在第一次世界大戰期間及之后,美國政府組織了第一個(gè)正式的密碼分析活動(dòng),一位曾指導該活動(dòng)的美國密碼學(xué)家出版了《The American Black Chamber》一書(shū)。該書(shū)列舉了美國人成功破譯日軍密碼的細節:日本政府致力于開(kāi)發(fā)盡可能最好的密碼機,為了達到這個(gè)目的,它購買(mǎi)了Hebern的轉輪機和商業(yè)的Enigma機,包括其他幾個(gè)當時(shí)流行的密碼機來(lái)研究。在1930年,日本的第一個(gè)轉輪密碼機(美國分析家把它稱(chēng)之為RED)開(kāi)始為日本外交部服務(wù)。然而,因為具有分析Hebern轉輪密碼機的經(jīng)驗,美國的密碼分析家們成功地分析出了RED所加密的內容。在1939年,日本人引入了一個(gè)新的加密機(美國分析家將其稱(chēng)為PURPLE),其中的轉輪機用電話(huà)步進(jìn)交換機所取代。
圖1-1 幾個(gè)典型的密碼機
轉輪密碼機的使用大大提高了密碼加密速度,但由于密鑰量有限,到二戰中后期時(shí),引出了一場(chǎng)關(guān)于加密與破譯的對抗。二次大戰期間,波蘭人和英國人破譯了Enigma密碼,美國密碼分析者攻破了日本的RED, ORANGE和PURPLE密碼,這對聯(lián)軍在二次世界大戰中獲勝起到了關(guān)鍵性作用,是密碼分析最偉大的成功。
二次大戰后,電子學(xué)開(kāi)始被引入到密碼機中。第一個(gè)電子密碼機僅僅是一個(gè)轉輪機,只是轉輪被電子器件取代。這些電子轉輪機的惟一優(yōu)勢在于它們的操作速度,但它們仍受到機械式轉輪密碼機固有弱點(diǎn)(密碼周期有限、制造費用高等)的影響。
緒論
密碼學(xué)的發(fā)展歷史(3)
1.3.3 近代密碼(計算機階段)
密碼形成一門(mén)新的學(xué)科是在20世紀70年代,這是受計算機科學(xué)蓬勃發(fā)展刺激和推動(dòng)的結果??焖匐娮佑嬎銠C和現代數學(xué)方法一方面為加密技術(shù)提供了新的概念和工具,另一方面也給破譯者提供了有力武器。計算機和電子學(xué)時(shí)代的到來(lái)給密碼設計者帶來(lái)了前所未有的自由,他們可以輕易地擺脫原先用鉛筆和紙進(jìn)行手工設計時(shí)易犯的錯誤,也不用再面對用電子機械方式實(shí)現的密碼機的高額費用??傊?,利用電子計算機可以設計出更為復雜的密碼系統。
密碼學(xué)的理論基礎之一是1949年ClaudeShannon發(fā)表的“保密系統的通信理論”(The Communication Theory ofSecrecy Systems),這篇文章發(fā)表了30年后才顯示出它的價(jià)值。1976年W.Diffie和M.Hellman發(fā)表了“密碼學(xué)的新方向”(New Directions in Cryptography)一文,提出了適應網(wǎng)絡(luò )上保密通信的公鑰密碼思想,開(kāi)辟了公開(kāi)密鑰密碼學(xué)的新領(lǐng)域,掀起了公鑰密碼研究的序幕。受他們的思想啟迪,各種公鑰密碼體制被提出,特別是1978年RSA公鑰密碼體制的出現,成為公鑰密碼的杰出代表,并成為事實(shí)標準,在密碼學(xué)史上是一個(gè)里程碑??梢赃@么說(shuō):“沒(méi)有公鑰密碼的研究就沒(méi)有近代密碼學(xué)”。同年,美國國家標準局(NBS,即現在的國家標準與技術(shù)研究所NIST)正式公布實(shí)施了美國的數據加密標準(Data Encryption Standard,DES),公開(kāi)它的加密算法,并被批準用于政府等非機密單位及商業(yè)上的保密通信。上述兩篇重要的論文和美國數據加密標準DES的實(shí)施,標志著(zhù)密碼學(xué)的理論與技術(shù)的劃時(shí)代的革命性變革,宣布了近代密碼學(xué)的開(kāi)始。
近代密碼學(xué)與計算機技術(shù)、電子通信技術(shù)緊密相關(guān)。在這一階段,密碼理論蓬勃發(fā)展,密碼算法設計與分析互相促進(jìn),出現了大量的密碼算法和各種攻擊方法。另外,密碼使用的范圍也在不斷擴張,而且出現了許多通用的加密標準,促進(jìn)網(wǎng)絡(luò )和技術(shù)的發(fā)展。
現在,由于現實(shí)生活的實(shí)際需要及計算機技術(shù)的進(jìn)步,密碼學(xué)有了突飛猛進(jìn)的發(fā)展,密碼學(xué)研究領(lǐng)域出現了許多新的課題、新的方向。例如:在分組密碼領(lǐng)域,由于DES已經(jīng)無(wú)法滿(mǎn)足高保密性的要求,美國于1997年1月開(kāi)始征集新一代數據加密標準,即高級數據加密標準(AdvancedEncryption Standard,AES)。目前,AES的征集已經(jīng)選擇了比利時(shí)密碼學(xué)家所設計的Rijndael算法作為標準草案,并正在對Rijndael算法做進(jìn)一步評估。AES征集活動(dòng)使國際密碼學(xué)界又掀起了一次分組密碼研究高潮。同時(shí),在公開(kāi)密鑰密碼領(lǐng)域,橢圓曲線(xiàn)密碼體制由于其安全性高、計算速度快等優(yōu)點(diǎn)引起了人們的普遍關(guān)注,許多公司與科研機構都投入到對橢圓曲線(xiàn)密碼的研究當中。目前,橢圓曲線(xiàn)密碼已經(jīng)被列入一些標準中作為推薦算法。另外,由于嵌入式系統的發(fā)展、智能卡的應用,這些設備上所使用的密碼算法由于系統本身資源的限制,要求密碼算法以較小的資源快速實(shí)現,這樣,公開(kāi)密鑰密碼的快速實(shí)現成為一個(gè)新的研究熱點(diǎn)。最后,隨著(zhù)其他技術(shù)的發(fā)展,一些具有潛在密碼應用價(jià)值的技術(shù)也逐漸得到了密碼學(xué)家極大的重視,出現了一些新的密碼技術(shù),例如,混沌密碼、量子密碼等,這些新的密碼技術(shù)正在逐步地走向實(shí)用化。
緒論
密碼學(xué)在網(wǎng)絡(luò )信息安全中的作用
1.2 密碼學(xué)在網(wǎng)絡(luò )信息安全中的作用
在現實(shí)世界中,安全是一個(gè)相當簡(jiǎn)單的概念。例如,房子門(mén)窗上要安裝足夠堅固的鎖以阻止竊賊的闖入;安裝報警器是阻止入侵者破門(mén)而入的進(jìn)一步措施;當有人想從他人的銀行賬戶(hù)上騙取錢(qián)款時(shí),出納員要求其出示相關(guān)身份證明也是為了保證存款安全;簽署商業(yè)合同時(shí),需要雙方在合同上簽名以產(chǎn)生法律效力也是保證合同的實(shí)施安全。
在數字世界中,安全以類(lèi)似的方式工作著(zhù)。機密性就像大門(mén)上的鎖,它可以阻止非法者闖入用戶(hù)的文件夾讀取用戶(hù)的敏感數據或盜取錢(qián)財(如信用卡號或網(wǎng)上證券賬戶(hù)信息)。數據完整性提供了一種當某些內容被修改時(shí)可以使用戶(hù)得知的機制,相當于報警器。通過(guò)認證,可以驗證實(shí)體的身份,就像從銀行取錢(qián)時(shí)需要用戶(hù)提供合法的身份(ID)一樣?;诿艽a體制的數字簽名具有防否認功能,同樣有法律效力,可使人們遵守數字領(lǐng)域的承諾。
以上思想是密碼技術(shù)在保護信息安全方面所起作用的具體體現。密碼是一門(mén)古老的技術(shù),但自密碼技術(shù)誕生直至第二次世界大戰結束,對于公眾而言,密碼技術(shù)始終處于一種未知的保密狀態(tài),常與軍事、機要、間諜等工作聯(lián)系在一起,讓人在感到神秘之余,又有幾分畏懼。信息技術(shù)的迅速發(fā)展改變了這一切。隨著(zhù)計算機和通信技術(shù)的迅猛發(fā)展,大量的敏感信息常通過(guò)公共通信設施或計算機網(wǎng)絡(luò )進(jìn)行交換,特別是Internet的廣泛應用、電子商務(wù)和電子政務(wù)的迅速發(fā)展,越來(lái)越多的個(gè)人信息需要嚴格保密,如:銀行賬號、個(gè)人隱私等。正是這種對信息的機密性和真實(shí)性的需求,密碼學(xué)才逐漸揭去了神秘的面紗,走進(jìn)公眾的日常生活中。
密碼技術(shù)是實(shí)現網(wǎng)絡(luò )信息安全的核心技術(shù),是保護數據最重要的工具之一。通過(guò)加密變換,將可讀的文件變換成不可理解的亂碼,從而起到保護信息和數據的作用。它直接支持機密性、完整性和非否認性。當前信息安全的主流技術(shù)和理論都是基于以算法復雜性理論為特征的現代密碼學(xué)的。從Diffie和Hellman發(fā)起密碼學(xué)革命起,該領(lǐng)域最近幾十年的發(fā)展表明,信息安全技術(shù)的一個(gè)創(chuàng )新生長(cháng)點(diǎn)是信息安全的編譯碼理論和方法的深入研究,這方面具有代表性的工作有數據加密標準DES、高級加密標準AES、RSA算法、橢圓曲線(xiàn)密碼算法ECC、IDEA算法、PGP系統等。
今天,在計算機被廣泛應用的信息時(shí)代,由于計算機網(wǎng)絡(luò )技術(shù)的迅速發(fā)展,大量信息以數字形式存放在計算機系統里,信息的傳輸則通過(guò)公共信道。這些計算機系統和公共信道在不設防的情況下是很脆弱的,容易受到攻擊和破壞,信息的失竊不容易被發(fā)現,而后果可能是極其嚴重的。如何保護信息的安全已成為許多人感興趣的迫切話(huà)題,作為網(wǎng)絡(luò )安全基礎理論之一的密碼學(xué)引起人們的極大關(guān)注,吸引著(zhù)越來(lái)越多的科技人員投入到密碼學(xué)領(lǐng)域的研究之中。
密碼學(xué)盡管在網(wǎng)絡(luò )信息安全中具有舉足輕重的作用,但密碼學(xué)絕不是確保網(wǎng)絡(luò )信息安全的惟一工具,它也不能解決所有的安全問(wèn)題。同時(shí),密碼編碼與密碼分析是一對矛和盾的關(guān)系,俗話(huà)說(shuō):“道高一尺,魔高一丈”,它們在發(fā)展中始終處于一種動(dòng)態(tài)的平衡。在網(wǎng)絡(luò )信息安全領(lǐng)域,除了技術(shù)之外,管理也是非常重要的一個(gè)方面。如果密碼技術(shù)使用不當,或者攻擊者繞過(guò)了密碼技術(shù)的使用,就不可能提供真正的安全性。
第2章 密碼學(xué)基礎
2.1 密碼學(xué)相關(guān)概念
密碼學(xué)(cryptology)作為數學(xué)的一個(gè)分支,是密碼編碼學(xué)和密碼分析學(xué)的統稱(chēng)?;蛟S與最早的密碼起源于古希臘有關(guān),cryptology這個(gè)詞來(lái)源于希臘語(yǔ),crypto是隱藏、秘密的意思,logo是單詞的意思,grapho是書(shū)寫(xiě)、寫(xiě)法的的意思,cryptography就是“如何秘密地書(shū)寫(xiě)單詞”。
使消息保密的技術(shù)和科學(xué)叫做密碼編碼學(xué)(cryptography)。密碼編碼學(xué)是密碼體制的設計學(xué),即怎樣編碼,采用什么樣的密碼體制以保證信息被安全地加密。從事此行業(yè)的人員叫做密碼編碼者(cryptographer)。
與之相對應,密碼分析學(xué)(cryptanalysis)就是破譯密文的科學(xué)和技術(shù)。密碼分析學(xué)是在未知密鑰的情況下從密文推演出明文或密鑰的技術(shù)。密碼分析者(cryptanalyst)是從事密碼分析的專(zhuān)業(yè)人員。
在密碼學(xué)中,有一個(gè)五元組:{明文、密文、密鑰、加密算法、解密算法},對應的加密方案稱(chēng)為密碼體制(或密碼)。
明文:是作為加密輸入的原始信息,即消息的原始形式,通常用m或p表示。所有可能明文的有限集稱(chēng)為明文空間,通常用M或P來(lái)表示。
密文:是明文經(jīng)加密變換后的結果,即消息被加密處理后的形式,通常用c表示。所有可能密文的有限集稱(chēng)為密文空間,通常用C來(lái)表示。
密鑰:是參與密碼變換的參數,通常用k表示。一切可能的密鑰構成的有限集稱(chēng)為密鑰空間,通常用K表示。
加密算法:是將明文變換為密文的變換函數,相應的變換過(guò)程稱(chēng)為加密,即編碼的過(guò)程(通常用E表示,即c=Ek(p))。
解密算法:是將密文恢復為明文的變換函數,相應的變換過(guò)程稱(chēng)為解密,即解碼的過(guò)程(通常用D表示,即p=Dk(c))。
對于有實(shí)用意義的密碼體制而言,總是要求它滿(mǎn)足:p=Dk (Ek(p)),即用加密算法得到的密文總是能用一定的解密算法恢復出原始的明文來(lái)。而密文消息的獲取同時(shí)依賴(lài)于初始明文和密鑰的值,如圖2-1所示。
根據密碼分析者對明文、密文等信息掌握的多少,可將密碼分析分為以下五種情形。
2.1.1 惟密文攻擊(Ciphertext only)
對于這種形式的密碼分析,破譯者已知的東西只有兩樣:加密算法、待破譯的密文。
2.1.2 已知明文攻擊(Known plaintext)
在已知明文攻擊中,破譯者已知的東西包括:加密算法和經(jīng)密鑰加密形成的一個(gè)或多個(gè)明文-密文對,即知道一定數量的密文和對應的明文。
2.1.3 選擇明文攻擊(Chosen plaintext)
選擇明文攻擊的破譯者除了知道加密算法外,他還可以選定明文消息,并可以知道對應的加密得到的密文,即知道選擇的明文和對應的密文。例如,公鑰密碼體制中,攻擊者可以利用公鑰加密他任意選定的明文,這種攻擊就是選擇明文攻擊。
2.1.4 選擇密文攻擊(Chosen ciphertext)
與選擇性明文攻擊相對應,破譯者除了知道加密算法外,還包括他自己選定的密文和對應的、已解密的原文,即知道選擇的密文和對應的明文。
2.1.5 選擇文本攻擊(Chosen text)
選擇文本攻擊是選擇明文攻擊與選擇密文攻擊的結合。破譯者已知的東西包括:加密算法、由密碼破譯者選擇的明文消息和它對應的密文,以及由密碼破譯者選擇的猜測性密文和它對應的已破譯的明文。
很明顯,惟密文攻擊是最困難的,因為分析者可供利用的信息最少。上述攻擊的強度是遞增的。一個(gè)密碼體制是安全的,通常是指在前三種攻擊下的安全性,即攻擊者一般容易具備進(jìn)行前三種攻擊的條件。
密碼學(xué)基礎
密碼系統(1)
2.2 密碼系統
2.2.1 密碼系統的定義
密碼系統(cryptosystem)是用于加密與解密的系統,就是明文與加密密鑰作為加密變換的輸入參數,經(jīng)過(guò)一定的加密變換處理以后得到的輸出密文,由它們所組成的一個(gè)系統。一個(gè)完整的密碼系統由密碼體制(包括密碼算法以及所有可能的明文、密文和密鑰)、信源、信宿和攻擊者構成。
2.2.2 柯克霍夫(Kerckhoffs)原則
密碼學(xué)領(lǐng)域存在著(zhù)一個(gè)很重要的事實(shí):“如果許多聰明人都不能解決的問(wèn)題,那么它可能不會(huì )很快得到解決?!边@說(shuō)明很多加密算法的安全性并沒(méi)有在理論上得到嚴格的證明,只是這種算法思想出來(lái)以后,經(jīng)過(guò)許多人多年的攻擊并沒(méi)有發(fā)現其弱點(diǎn),沒(méi)有找到攻擊它的有效方法,從而認為它是安全的。
在設計和使用密碼系統時(shí),有一個(gè)著(zhù)名的“柯克霍夫原則”需要遵循,它是荷蘭密碼學(xué)家Kerckhoffs于1883年在其名著(zhù)《軍事密碼學(xué)》中提出的密碼學(xué)的基本假設:密碼系統中的算法即使為密碼分析者所知,也對推導出明文或密鑰沒(méi)有幫助。也就是說(shuō),密碼系統的安全性不應取決于不易被改變的事物(算法),而應只取決于可隨時(shí)改變的密鑰。
如果密碼系統的強度依賴(lài)于攻擊者不知道算法的內部機理,那么注定會(huì )失敗。如果相信保持算法的內部秘密比讓研究團體公開(kāi)分析它更能改進(jìn)密碼系統的安全性,那就錯了。如果認為別人不能反匯編代碼和逆向設計算法,那就太天真了。最好的算法是那些已經(jīng)公開(kāi)的,并經(jīng)過(guò)世界上最好的密碼分析家們多年的攻擊,卻還是不能破譯的算法(美國國家安全局曾對外保持他們的算法的秘密,但他們有世界上最好的密碼分析家在內部工作。另外,他們互相討論他們的算法,通過(guò)反復的審查發(fā)現他們工作中的弱點(diǎn))。
認為密碼分析者不知道密碼系統的算法是一種很危險的假定,因為:① 密碼算法在多次使用過(guò)程中難免被敵方偵察獲悉;②在某個(gè)場(chǎng)合可能使用某類(lèi)密碼更合適,再加上某些設計者可能對某種密碼系統有偏好等因素,敵方往往可以“猜出”所用的密碼算法;③ 通常只要經(jīng)過(guò)一些統計試驗和其他測試就不難分辨出不同的密碼類(lèi)型。
2.2.3 密碼系統的安全條件
如果算法的保密性是基于保持算法的秘密,這種算法稱(chēng)為受限制的(restricted)算法。受限制的算法的特點(diǎn)表現為:①密碼分析時(shí)因為不知道算法本身,還需要對算法進(jìn)行恢復;② 處于保密狀態(tài)的算法只為少量的用戶(hù)知道,產(chǎn)生破譯動(dòng)機的用戶(hù)也就更少;③ 不了解算法的人或組織不可用。但這樣的算法不可能進(jìn)行質(zhì)量控制或標準化,而且要求每個(gè)用戶(hù)和組織必須有他們自己惟一的算法。
現代密碼學(xué)用密鑰解決了這個(gè)問(wèn)題。所有這些算法的安全性都基于密鑰的安全性,而不是基于算法的安全性。這就意味著(zhù)算法可以公開(kāi),也可以被分析,即使攻擊者知道算法也沒(méi)有關(guān)系。算法公開(kāi)的優(yōu)點(diǎn)包括:①它是評估算法安全性的惟一可用的方式;② 防止算法設計者在算法中隱藏后門(mén);③ 可以獲得大量的實(shí)現,最終可走向低成本和高性能的實(shí)現;④有助于軟件實(shí)現;⑤ 可以成為國內、國際標準;⑥ 可以大量生產(chǎn)使用該算法的產(chǎn)品。
所以,在密碼學(xué)中有一條不成文的規定:密碼系統的安全性只寓于密鑰,通常假定算法是公開(kāi)的。這就要求加密算法本身要非常安全。在考查算法的安全性時(shí),可以將破譯算法分為不同的級別。
— 全部破譯(Total Break):找出密鑰。
— 全部推導(Global Deduction):找出替代算法。
— 實(shí)例推導(Instance Deduction):找出明文。
— 信息推導(Information Deduction):獲得一些有關(guān)密鑰或明文的信息。
可以用不同的方式來(lái)衡量攻擊方法的復雜性。
— 數據復雜性(Data Complexity):用做攻擊所需要輸入的數據量。
— 處理復雜性(Processing Complexity):完成攻擊所需要的時(shí)間。
— 存儲需求(Storage Requirement):進(jìn)行攻擊所需要的數據存儲空間大小。
評價(jià)密碼體制安全性的三個(gè)途徑如下。
(1)計算安全性。計算安全性指攻破密碼體制所做的計算上的努力。如果使用最好的算法攻破一個(gè)密碼體制需要至少N次操作(N是一個(gè)特定的非常大的數字),則可以定義這個(gè)密碼體制是安全的。存在的問(wèn)題是沒(méi)有一個(gè)已知的實(shí)際密碼體制在該定義下可以被證明是安全的。通常的處理辦法是使用一些特定的攻擊類(lèi)型來(lái)研究計算上的安全性,如使用窮舉搜索方法。很明顯,這種判斷方法對于一種攻擊類(lèi)型安全的結論并不適用于其他攻擊方法。
(2)可證明安全性。這種方法是將密碼體制的安全性歸結為某個(gè)經(jīng)過(guò)深入研究的數學(xué)難題,數學(xué)難題被證明求解困難。這種判斷方法存在的問(wèn)題是:它只說(shuō)明了安全和另一個(gè)問(wèn)題相關(guān),并沒(méi)有完全證明問(wèn)題本身的安全性。
(3)無(wú)條件安全性。這種判斷方法考慮的是對攻擊者的計算資源沒(méi)有限制時(shí)的安全性。即使提供了無(wú)窮的計算資源,依然無(wú)法被攻破,則稱(chēng)這種密碼體制是無(wú)條件安全的。
無(wú)條件安全的算法(除一次一密方案[1]外,密碼本身只使用一次)是不存在的。密碼系統用戶(hù)所能做的全部努力就是滿(mǎn)足以下準則:
(1)破譯該密碼的成本超過(guò)被加密信息本身的價(jià)值;
(2)破譯該密碼的時(shí)間超過(guò)該信息有用的生命周期。
如果滿(mǎn)足上述兩個(gè)準則之一,一個(gè)加密方案就可認為是實(shí)際上安全的。困難在于如何估算破譯所需要付出的成本或時(shí)間,通常攻擊者有兩種方法:蠻力攻擊(Brute force,或稱(chēng)窮舉搜索攻擊)和利用算法中的弱點(diǎn)進(jìn)行攻擊。排除算法有弱點(diǎn)這一項外(如果算法有弱點(diǎn)就無(wú)法保證保密的強度,原則上,這類(lèi)密碼體制是不能使用的),通常用蠻力攻擊來(lái)估算:用每種可能的密鑰來(lái)進(jìn)行嘗試,直到獲得了從密文到明文的一種可理解的轉換為止,這是一種窮舉搜索攻擊。平均而言,為取得成功,必須嘗試所有可能采用的密鑰的一半。因此,密鑰越長(cháng),密鑰空間就越大,蠻力攻擊所需要的時(shí)間也就越長(cháng),或成本越高,相應地也就越安全(當然作為該算法的使用者要進(jìn)行加密、解密處理所需要的時(shí)間也就越長(cháng),因此,需要在安全性與效率間進(jìn)行權衡)。
由此可見(jiàn),一個(gè)密碼系統要是實(shí)際可用的,必須滿(mǎn)足如下特性。
(1)每一個(gè)加密函數E和每一個(gè)解密函數D都能有效地計算。
(2)破譯者取得密文后將不能在有效的時(shí)間或成本范圍內破解出密鑰或明文。
(3)一個(gè)密碼系統是安全的必要條件:窮舉密鑰搜索是不可行的,因為密鑰空間非常大。
密碼學(xué)基礎
密碼系統(2)
2.2.4 密碼系統的分類(lèi)
密碼編碼系統通常有三種獨立的分類(lèi)方式。
1.明文變換到密文的操作類(lèi)型
所有加密算法基于兩個(gè)基本操作。
(1)代替(substitution):即明文中的每個(gè)元素(比特、字母、比特組合或字母組合)被映射為另一個(gè)元素。該操作主要達到非線(xiàn)性變換的目的。
(2)換位(transposition):即明文中的元素被重新排列,這是一種線(xiàn)性變換,對它們的基本要求是不丟失信息(即所有操作都是可逆的)。
2.所用的密鑰數量
(1)單密鑰加密(single-keycipher):即發(fā)送者和接收者雙方使用相同的密鑰,該系統也稱(chēng)為對稱(chēng)加密、秘密密鑰加密或常規加密。
(2)雙密鑰加密(dual-keycipher):即發(fā)送者和接收者各自使用一個(gè)不同的密鑰,這兩個(gè)密鑰形成一個(gè)密鑰對,其中一個(gè)可以公開(kāi),稱(chēng)之為公鑰,另一個(gè)必須為密鑰持有人秘密保管,稱(chēng)之為私鑰。該系統也稱(chēng)為非對稱(chēng)加密或公鑰加密。
3.明文被處理的方式
(1)分組加密(block cipher):一次處理一塊(組)元素的輸入,對每個(gè)輸入塊產(chǎn)生一個(gè)輸出塊,即一個(gè)明文分組被當做一個(gè)整體來(lái)產(chǎn)生一個(gè)等長(cháng)的密文分組輸出。通常使用的是64位或128位的分組大小。
(2)流加密(stream cipher):也稱(chēng)為序列密碼,即連續地處理輸入元素,并隨著(zhù)該過(guò)程的進(jìn)行,一次產(chǎn)生一個(gè)元素的輸出,即一次加密一個(gè)比特或一個(gè)字節。
人們在分析分組密碼方面做出的努力要比在分析流密碼方面做出的努力多得多。一般而言,分組密碼比流密碼的應用范圍廣。絕大部分基于網(wǎng)絡(luò )的常規加密應用都使用分組密碼。
密碼學(xué)基礎
安全模型
2.3 安全模型
大多數信息安全涉及網(wǎng)絡(luò )傳輸中的信息安全(動(dòng)態(tài)數據的安全)和計算機系統中的信息安全(靜態(tài)數據的安全)。它們面臨著(zhù)建立兩種不同信息安全模型的需要。
2.3.1 網(wǎng)絡(luò )安全模型
發(fā)送方要將秘密消息通過(guò)不安全的信道發(fā)送給接收方,就需要先對消息進(jìn)行某種安全變換,得到安全的消息,以防止攻擊者危害消息的保密性和真實(shí)性。安全的消息到達接收方后,再經(jīng)過(guò)安全變換的逆變換,從而恢復原始的消息。在大多數情況下,對消息的安全變換及其逆變換是基于密碼算法來(lái)實(shí)現的,因此在變換過(guò)程中還需要輸入秘密信息(如密鑰),這個(gè)秘密信息不能為攻擊者所獲知。
在網(wǎng)絡(luò )安全模型中,有時(shí)還需要可信的第三方。如當通信雙方發(fā)生有關(guān)信息傳輸真實(shí)性的爭執時(shí),他可以進(jìn)行仲裁。第三方也可以起到秘密信息分發(fā)的作用,如向通信雙方分發(fā)共享的密鑰。
基于網(wǎng)絡(luò )安全模型設計系統安全服務(wù)時(shí)應包括以下四方面的內容。
(1)設計實(shí)現安全變換的算法,要求該算法有足夠的安全強度,不會(huì )被攻擊者有效地攻破。
(2)生成安全變換中所需要的秘密信息(密鑰)。
(3)設計分配和共享秘密信息(密鑰)的方法。
(4)確定通信雙方使用的協(xié)議,該協(xié)議利用安全算法和秘密信息實(shí)現系統所需要的安全服務(wù)。
2.3.2 網(wǎng)絡(luò )訪(fǎng)問(wèn)安全模型
網(wǎng)絡(luò )訪(fǎng)問(wèn)安全模型如圖2-3所示。網(wǎng)絡(luò )訪(fǎng)問(wèn)安全模型希望保護信息系統不受通過(guò)網(wǎng)絡(luò )的有害訪(fǎng)問(wèn)。如阻止黑客試圖通過(guò)網(wǎng)絡(luò )訪(fǎng)問(wèn)信息系統,或阻止其他有破壞欲望(不滿(mǎn)的雇員),或想利用計算機獲利的人(盜取信用卡號或進(jìn)行非法的資金轉賬等),或阻止惡意的程序利用系統的弱點(diǎn)來(lái)影響應用程序的正常運行。
|
對付有害訪(fǎng)問(wèn)的安全機制分為兩大類(lèi):一類(lèi)稱(chēng)為具有門(mén)衛功能的守衛者,它包含基于鑒別的登錄過(guò)程,只允許授權實(shí)體不超越權限合法訪(fǎng)問(wèn)系統資源。另一類(lèi)稱(chēng)為信息系統的內部安全機制,一旦非法用戶(hù)或程序突破了守衛者,還將受到信息系統內部的各種監視活動(dòng)和分析存儲信息的內部控制機制的檢測。
圖2-3 網(wǎng)絡(luò )訪(fǎng)問(wèn)安全模型
密碼學(xué)基礎
密碼體制(1)
2.4 密碼體制
密碼體制就是完成加密和解密功能的密碼方案。近代密碼學(xué)中所出現的密碼體制可分為兩大類(lèi):對稱(chēng)加密體制和非對稱(chēng)加密體制。
2.4.1 對稱(chēng)密碼體制(Symmetric Encryption)
對稱(chēng)密碼體制也稱(chēng)為秘密密鑰密碼體制、單密鑰密碼體制或常規密碼體制,對稱(chēng)密碼體制的基本特征是加密密鑰與解密密鑰相同。對稱(chēng)密碼體制的基本元素包括原始的明文、加密算法、密鑰、密文及攻擊者。
發(fā)送方的明文消息P = [P1,P2,…,PM],P的M個(gè)元素是某個(gè)語(yǔ)言集中的字母,如26個(gè)英文字母,現在最常見(jiàn)的是二進(jìn)制字母表{0,1}中元素組成的二進(jìn)制串。加密之前先生成一個(gè)形如K = [K1,K2,…,KJ]的密鑰作為密碼變換的輸入參數之一。該密鑰或者由消息發(fā)送方生成,然后通過(guò)安全的渠道送到接收方;或者由可信的第三方生成,然后通過(guò)安全渠道分發(fā)給發(fā)送方和接收方。
發(fā)送方通過(guò)加密算法根據輸入的消息P和密鑰K生成密文C = [C1,C2,…,CN],即:
C =EK(P) (2-1)
接收方通過(guò)解密算法根據輸入的密文C和密鑰K恢復明文P = [P1,P2,…,PM],即:
P =EK(C) (2-2)
一個(gè)攻擊者(密碼分析者)能基于不安全的公開(kāi)信道觀(guān)察密文C,但不能接觸到明文P或密鑰K,他可以試圖恢復明文P或密鑰K。假定他知道加密算法E和解密算法D,只對當前這個(gè)特定的消息感興趣,則努力的焦點(diǎn)是通過(guò)產(chǎn)生一個(gè)明文的估計值

對稱(chēng)密碼體制的安全性主要取決于兩個(gè)因素:① 加密算法必須足夠安全,使得不必為算法保密,僅根據密文就能破譯出消息是不可行的;② 密鑰的安全性,密鑰必須保密并保證有足夠大的密鑰空間,對稱(chēng)密碼體制要求基于密文和加密/解密算法的知識能破譯出消息的做法是不可行的。
對稱(chēng)密碼算法的優(yōu)缺點(diǎn)
(1)優(yōu)點(diǎn):加密、解密處理速度快、保密度高等。
(2)缺點(diǎn):① 密鑰是保密通信安全的關(guān)鍵,發(fā)信方必須安全、妥善地把密鑰護送到收信方,不能泄露其內容,如何才能把密鑰安全地送到收信方,是對稱(chēng)密碼算法的突出問(wèn)題。對稱(chēng)密碼算法的密鑰分發(fā)過(guò)程十分復雜,所花代價(jià)高。
② 多人通信時(shí)密鑰組合的數量會(huì )出現爆炸性膨脹,使密鑰分發(fā)更加復雜化,N個(gè)人進(jìn)行兩兩通信,總共需要的密鑰數為N(N-1)/2個(gè)。
③ 通信雙方必須統一密鑰,才能發(fā)送保密的信息。如果發(fā)信者與收信人素不相識,這就無(wú)法向對方發(fā)送秘密信息了。
④ 除了密鑰管理與分發(fā)問(wèn)題,對稱(chēng)密碼算法還存在數字簽名困難問(wèn)題(通信雙方擁有同樣的消息,接收方可以偽造簽名,發(fā)送方也可以否認發(fā)送過(guò)某消息)。
密碼學(xué)基礎
密碼體制(2)
2.4.2 非對稱(chēng)密碼體制(Asymmetric Encryption)
非對稱(chēng)密碼體制也叫公開(kāi)密鑰密碼體制、雙密鑰密碼體制。其原理是加密密鑰與解密密鑰不同,形成一個(gè)密鑰對,用其中一個(gè)密鑰加密的結果,可以用另一個(gè)密鑰來(lái)解密,如圖2-5所示。公鑰密碼體制的發(fā)展是整個(gè)密碼學(xué)發(fā)展史上最偉大的一次革命,它與以前的密碼體制完全不同。這是因為:公鑰密碼算法基于數學(xué)問(wèn)題求解的困難性,而不再是基于代替和換位方法;另外,公鑰密碼體制是非對稱(chēng)的,它使用兩個(gè)獨立的密鑰,一個(gè)可以公開(kāi),稱(chēng)為公鑰,另一個(gè)不能公開(kāi),稱(chēng)為私鑰。
公開(kāi)密鑰密碼體制的產(chǎn)生主要基于以下兩個(gè)原因:一是為了解決常規密鑰密碼體制的密鑰管理與分配的問(wèn)題;二是為了滿(mǎn)足對數字簽名的需求。因此,公鑰密碼體制在消息的保密性、密鑰分配和認證領(lǐng)域有著(zhù)重要的意義。
在公開(kāi)密鑰密碼體制中,公開(kāi)密鑰是可以公開(kāi)的信息,而私有密鑰是需要保密的。加密算法E和解密算法D也都是公開(kāi)的。用公開(kāi)密鑰對明文加密后,僅能用與之對應的私有密鑰解密,才能恢復出明文,反之亦然。
公開(kāi)密鑰密碼體制的優(yōu)缺點(diǎn)
(1)優(yōu)點(diǎn):① 網(wǎng)絡(luò )中的每一個(gè)用戶(hù)只需要保存自己的私有密鑰,則N個(gè)用戶(hù)僅需產(chǎn)生N對密鑰。密鑰少,便于管理。
② 密鑰分配簡(jiǎn)單,不需要秘密的通道和復雜的協(xié)議來(lái)傳送密鑰。公開(kāi)密鑰可基于公開(kāi)的渠道(如密鑰分發(fā)中心)分發(fā)給其他用戶(hù),而私有密鑰則由用戶(hù)自己保管。
③ 可以實(shí)現數字簽名。
(2)缺點(diǎn):與對稱(chēng)密碼體制相比,公開(kāi)密鑰密碼體制的加密、解密處理速度較慢,同等安全強度下公開(kāi)密鑰密碼體制的密鑰位數要求多一些。
公開(kāi)密鑰密碼體制與常規密碼體制的對比見(jiàn)表2-1。
表2-1 公開(kāi)密鑰密碼體制與常規密碼體制的比較
| 分類(lèi) | 常規密碼體制 | 公開(kāi)密鑰密碼體制 |
| 運 行 條 件 | 加密和解密使用同一個(gè)密鑰和同一個(gè)算法 | 用同一個(gè)算法進(jìn)行加密和解密,而密鑰有一對,其中一個(gè)用于加密,另一個(gè)用于解密 |
| 發(fā)送方和接收方必須共享密鑰和算法 | 發(fā)送方和接收方使用一對相互匹配,而又彼此互異的密鑰 | |
| 安 全 條 件 | 密鑰必須保密 | 密鑰對中的私鑰必須保密 |
| 如果不掌握其他信息,要想解密報文是不可能或至少是不現實(shí)的 | 如果不掌握其他信息,要想解密報文是不可能或者至少是不現實(shí)的 | |
| 知道所用的算法加上密文的樣本必須不足以確定密鑰 | 知道所用的算法、公鑰和密文的樣本必須不足以確定私鑰 |
聯(lián)系客服