




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章密碼技術(shù)2.1密碼學(xué)概述2.2古典密碼2.3分組密碼2.4公鑰密碼體制2.5報(bào)文認(rèn)證與數(shù)字簽名2.6密鑰管理與分發(fā)2.7密碼技術(shù)實(shí)例習(xí)題
2.1密?碼?學(xué)?概?述
密碼學(xué)(Cryptology)是一門古老的科學(xué)。自古以來(lái),密碼主要用于軍事、政治、外交等重要部門,因而密碼學(xué)的研究工作本身也是秘密進(jìn)行的。密碼學(xué)的知識(shí)和經(jīng)驗(yàn)主要掌握在軍事、政治、外交等保密機(jī)關(guān),不便公開(kāi)發(fā)表。然而隨著計(jì)算機(jī)科學(xué)技術(shù)、通信技術(shù)、微電子技術(shù)的發(fā)展,計(jì)算機(jī)和通信網(wǎng)絡(luò)的應(yīng)用進(jìn)入了人們的日常生活和工作中,出現(xiàn)了電子政務(wù)、電子商務(wù)、電子金融等必須確保信息安全的系統(tǒng),使得民間和商界對(duì)信息安全保密的需求大大增加??偠灾诿艽a學(xué)形成和發(fā)展的歷程中,科學(xué)技術(shù)的發(fā)展和戰(zhàn)爭(zhēng)的刺激起著積極的推動(dòng)作用?;仡櫭艽a學(xué)的歷史,應(yīng)用的無(wú)窮需求是推動(dòng)密碼技術(shù)文明和進(jìn)步的直接動(dòng)力。在古代,埃及人、希伯來(lái)人、亞述人都在實(shí)踐中逐步發(fā)明了密碼系統(tǒng)。從某種意義上可以說(shuō),戰(zhàn)爭(zhēng)是科學(xué)技術(shù)進(jìn)步的催化劑。人類自從有了戰(zhàn)爭(zhēng),就面臨著通信安全的需求。這其中比較著名的是大約公元前440年出現(xiàn)在古希臘戰(zhàn)爭(zhēng)中的隱寫術(shù)。當(dāng)時(shí)為了安全傳送軍事情報(bào),奴隸主剃光奴隸的頭發(fā),將情報(bào)寫在奴隸的光頭上,待頭發(fā)長(zhǎng)長(zhǎng)后將奴隸送到另一個(gè)部落,再次剃光頭發(fā),原有的信息復(fù)現(xiàn)出來(lái),從而實(shí)現(xiàn)這兩個(gè)部落之間的秘密通信。嚴(yán)格上說(shuō),這只是對(duì)信息的隱藏,而不是真正意義上的加密。自從有了文字以來(lái),人們?yōu)榱四撤N需要總是想方設(shè)法隱藏某些信息,以起到保證信息安全的目的。這些古代加密方法體現(xiàn)了后來(lái)發(fā)展起來(lái)的密碼學(xué)的若干要素,但只能限制在一定范圍內(nèi)使用。古典密碼的加密方法一般是文字置換,使用手工或機(jī)械變換的方式實(shí)現(xiàn)。古典密碼系統(tǒng)已經(jīng)初步體現(xiàn)出近代密碼系統(tǒng)的雛形,加密方法逐漸復(fù)雜。雖然從近代密碼學(xué)的觀點(diǎn)來(lái)看,許多古典密碼是不安全的,極易破譯,但我們不應(yīng)當(dāng)忘掉古典密碼在歷史上發(fā)揮的巨大作用。古典密碼的代表性密碼體制主要有:?jiǎn)伪泶婷艽a、多表代替密碼及轉(zhuǎn)輪密碼。Caser密碼是一種典型的單表加密體制;Vigenere密碼是典型的多表代替密碼;而著名的Enigma密碼就是第二次世界大戰(zhàn)中使用的轉(zhuǎn)輪密碼。密碼技術(shù)形成一門新的學(xué)科是在20世紀(jì)70年代,這是受計(jì)算機(jī)科學(xué)蓬勃發(fā)展和推動(dòng)的結(jié)果。密碼學(xué)的理論基礎(chǔ)之一是1949年ClaudeShannon發(fā)表的“保密系統(tǒng)的通信理論”(TheCommunicationTheoryofSecrecySystems),
這篇文章發(fā)表了30年后才顯示出它的價(jià)值。1976年W.Diffie和M.Hellman發(fā)表了“密碼學(xué)的新方向”(NewDirectioninCryptography)一文,提出了適應(yīng)網(wǎng)絡(luò)保密通信的公鑰密碼思想,開(kāi)辟了公開(kāi)密鑰密碼學(xué)的新領(lǐng)域,掀起了公鑰密碼研究的序幕。各種公鑰密碼體制被提出,特別是1978年RSA公鑰密碼體制的出現(xiàn),在密碼學(xué)史上是一個(gè)里程碑。同年,美國(guó)國(guó)家標(biāo)準(zhǔn)局正式公布實(shí)施了美國(guó)的數(shù)據(jù)加密標(biāo)準(zhǔn)(DataEncryptionStandard,DES),宣布了近代密碼學(xué)的開(kāi)始。2001年美國(guó)聯(lián)邦政府頒布高級(jí)加密標(biāo)準(zhǔn)(AdvancedEncryptionStandard,AES)。隨著其他技術(shù)的發(fā)展,一些具有潛在密碼應(yīng)用價(jià)值的技術(shù)也逐漸得到了密碼學(xué)家極大的重視并加以應(yīng)用,出現(xiàn)了一些新的密碼技術(shù),如混沌密碼、量子密碼等,這些新的密碼技術(shù)正在逐步地走向?qū)嵱没?.1.1密碼體制
研究各種加密方案的科學(xué)稱為密碼編碼學(xué)(Cryptography),而研究密碼破譯的科學(xué)稱為密碼分析學(xué)(Cryptanalysis)。密碼學(xué)(Cryptology)作為數(shù)學(xué)的一個(gè)分支,是密碼編碼學(xué)和密碼分析學(xué)的統(tǒng)稱,其基本思想是對(duì)信息進(jìn)行一系列的處理,使未受權(quán)者不能獲得其中的真實(shí)含義。
一個(gè)密碼系統(tǒng),也稱為密碼體制(Cryptosystem),有五個(gè)基本組成部分,如圖2.1所示。圖2.1密碼系統(tǒng)模型明文:是加密輸入的原始信息,通常用m表示。全體明文的集合稱為明文空間,通常用M表示。
密文:是明文經(jīng)加密變換后的結(jié)果,通常用c表示。全體密文的集合稱為密文空間,通常用C表示。
密鑰:是參與信息變換的參數(shù),通常用k表示。全體密鑰的集合稱為密鑰空間,通常用K表示。
加密算法:是將明文變換為密文的變換函數(shù),即發(fā)送者加密消息時(shí)所采用的一組規(guī)則,通常用E表示。
解密算法:是將密文變換為明文的變換函數(shù),即接收者加密消息時(shí)所采用的一組規(guī)則,通常用D表示。加密:是將明文M用加密算法E在加密密鑰Ke的控制下變成密文C的過(guò)程,表示為C?=?EKe?=?(M)。
解密:是將密文C用解密算法D在解密密鑰Kd的控制下恢復(fù)為明文M的過(guò)程,表示為M?=?DKd(D),并且要求M?=?DKd(EKe(M)),即用加密算法得到的密文用一定的解密算法總是能夠恢復(fù)成為原始的明文。
對(duì)稱密碼體制:當(dāng)加密密鑰Ke與解密密鑰Kd是同一把密鑰,或者能夠相互較容易地推導(dǎo)出來(lái)時(shí),該密碼體制被稱為對(duì)稱密碼體制。非對(duì)稱密碼體制:當(dāng)加密密鑰Ke與解密密鑰Kd不是同一把密鑰,且解密密鑰不能根據(jù)加密密鑰計(jì)算出來(lái)(至少在假定合理的長(zhǎng)時(shí)間內(nèi))時(shí),該密碼體制被稱為非對(duì)稱密碼體制。
在密碼學(xué)中通常假定加密和解密算法是公開(kāi)的,密碼系統(tǒng)的安全性只系于密鑰的安全性,這就要求加密算法本身要非常安全。如果提供了無(wú)窮的計(jì)算資源,依然無(wú)法被攻破,則稱這種密碼體制是無(wú)條件安全的。除了一次一密之外,無(wú)條件安全是不存在的,因此密碼系統(tǒng)用戶所要做的就是盡量滿足以下條件:
(1)破譯密碼的成本超過(guò)密文信息的價(jià)值。
(2)破譯密碼的時(shí)間超過(guò)密文信息有用的生命周期。
如果滿足上述兩個(gè)條件之一,則密碼系統(tǒng)可認(rèn)為實(shí)際上是安全的。2.1.2密碼分類
加密技術(shù)除了隱寫術(shù)以外可以分為古典密碼和現(xiàn)代密碼兩大類。古典密碼一般是以單個(gè)字母為作用對(duì)象的加密法,具有久遠(yuǎn)的歷史;而現(xiàn)代密碼則是以明文的二元表示作為作用對(duì)象,具備更多的實(shí)際應(yīng)用?,F(xiàn)將常用密碼算法按照古典密碼與現(xiàn)代密碼歸納如圖2.2所示。圖2.2加密法分類圖
2.2古典密碼
常用的古典密碼可以分為替代密碼和換位密碼兩大類。替代密碼(SubstitutionCipher)是發(fā)送者將明文中的每一個(gè)字符用另外一個(gè)字符來(lái)替換,生成密文發(fā)送,接收者對(duì)密文進(jìn)行逆替換恢復(fù)出明文。換位密碼是將明文中的字母不變而位置改變的密碼,也稱為置換密碼。2.2.1替代密碼
在古典密碼學(xué)中,替代密碼以下四種類型:
簡(jiǎn)單替代密碼(simplesubstitutioncipher);
多明碼替代密碼(homophonicsubstitutioncipher);
多字母替代密碼(polygramsubstitutioncipher);
多表替代密碼(polyalphabeticsubstitutioncipher)。
其中,最常用的古典密碼是簡(jiǎn)單替代密碼和多表替代密碼。
1.簡(jiǎn)單替代密碼(simplesubstitutioncipher)
簡(jiǎn)單替代密碼又稱為單表替代密碼或單字母密碼(monalphabeticcipher),是指一個(gè)明文字符用相應(yīng)的唯一一個(gè)密文字符替代的密碼。如打亂字母的排列次序構(gòu)成與明文對(duì)應(yīng)的密碼表,或者采用密鑰詞組來(lái)推導(dǎo)密碼表。
移位密碼是簡(jiǎn)單替代密碼中的一種,其替代規(guī)則是明文字母被字母表中排在該字母后面的第K個(gè)字母所替代,即明文字母表向左循環(huán)移位K位,Z的字母后面是A。當(dāng)K?=?3時(shí),就是最早的替代密碼——愷撒密碼(CaesarCipher)。移位密碼算法可以表示如下:
設(shè)明文字母為m,則加密算法c=E(m)=(m+k)mod26,解密算法m=D(c)=(c-m)mod26,其中M={A,B,C,…,Z},C={A,B,C,
…,Z},K
=
{0,1,2,…,25}。
【例2.1】已知移位密碼的密鑰K
=
5,明文M
=
CLASSROOM,求密文C
=
?
解1:首先建立英文字母和模26的剩余0~25之間的對(duì)應(yīng)關(guān)系,如圖2.3所示。圖2.3字母數(shù)值表利用圖2.3可查到CLASSROOM對(duì)應(yīng)的整數(shù)為2,11,0,18,18,17,14,14,12。
利用公式c=E(m)=(m+5)mod26可計(jì)算出值為7,16,5,23,23,22,19,19,17。
再利用圖2.3查到算式值對(duì)應(yīng)的字母分別為H,Q,F(xiàn),N,N,W,T,T,R。
因此明文CLASSROOM對(duì)應(yīng)的密文為HQFNNMTTR。
解2:利用循環(huán)移位密碼的概念使字母表向左循環(huán)移位5位,生成的密碼表如圖2.4所示。圖2.4循環(huán)移位密碼表由圖2.4可查到明文CLASSROOM對(duì)應(yīng)的密文為HQFXXWTTR。
移位密碼僅有25個(gè)可能的密鑰,用強(qiáng)行攻擊密碼分析直接對(duì)所有25個(gè)可能的密鑰進(jìn)行嘗試即能破解,因此非常不安全。如果允許字母能夠任意替代則可以使密鑰空間變大,消除強(qiáng)行攻擊密碼分析的可能性,如采用密鑰詞組單字母密碼(KeywordCipher)。
在密鑰詞組的單字母密碼替代算法中,密文字母序列為先按序?qū)懴旅荑€詞組,去除該序列中已出現(xiàn)的字母,再依次寫下字母表中剩余的字母構(gòu)成密碼表。
【例2.2】已知密鑰詞組的單字母密碼替代算法的密鑰K
=
CLASSISOVER,明文M
=
BOOKSTOR,求密文C?=??
解:按照密鑰詞組的單字母替代算法生成密碼表如圖2.5所示。圖2.5密鑰詞組單字母替代密碼表查密碼表得明文BOOKSTOR對(duì)應(yīng)的密文為L(zhǎng)JJFQTJP。
密鑰詞組的單字母密碼雖然比移位密碼更安全一些,但由于它和移位密碼一樣,都是明文字母與密文字母一一對(duì)應(yīng)的,因此,利用語(yǔ)言的規(guī)律性,采用頻率分析的方法仍能對(duì)密文進(jìn)行破解。為了對(duì)抗頻率分析,可以對(duì)單個(gè)字母提供多種替代,即一個(gè)明文字母可以對(duì)應(yīng)多個(gè)密文字母,如果分配給每個(gè)字母的替代字母數(shù)正比于該字母的相對(duì)頻率,則單字母頻率信息會(huì)完全被淹沒(méi),如多表替代密碼。
2.多表替代密碼(polyalphabeticsubstitutioncipher)
多表替代密碼是由多個(gè)簡(jiǎn)單替代密碼組成的密碼算法。?Vigenere密碼是一種典型的多表替代密碼,其密碼表是以字母表移位為基礎(chǔ),把26個(gè)英文字母進(jìn)行循環(huán)移位,排列在一起,形成26?×?26的方陣,如圖2.6所示。圖2.6Vigenere密碼表Vigenere密碼算法表示如下。
設(shè)密鑰K?=?k0k1k2…kd,明文M?=?m0m1m2…mn
加密變換:ci=(mi?+?ki)mod26,i?=?0,1,2,…,n
解密變換:mi=(ci-ki)mod26,i?=?0,1,2,…,n
【例2.3】已知Vigenere密碼算法中密鑰K?=?SCREEN,明文M?=?COMPUTER,求密文C?=??。
解1:根據(jù)字母數(shù)值表圖2.3查得明文串的數(shù)值表示為(2,14,12,15,20,19,4,17),密鑰串的數(shù)值表示為(18,2,17,4,4,13),根據(jù)Vigenere密碼算法對(duì)明文和密鑰串進(jìn)行逐字符模26相加:c0
=
(m0
+
k0)mod26
=
(2
+
18)mod26
=
20,對(duì)應(yīng)字母表中的字母U;
c1
=
(m1
+
k1)mod26
=
(14
+
2)mod26
=
16,對(duì)應(yīng)字母表中的字母Q;
c2
=
(m2
+
k2)mod26
=
(12
+
17)mod26
=
3,對(duì)應(yīng)字母表中的字母D;
…
c7
=
(m7+
k1)mod26
=
(17
+?2)mod26
=?19,對(duì)應(yīng)字母表中的字母T。
因此明文COMPUTER加密的密文為UQDTYGWT。解2:將明文與密鑰字符串一一對(duì)應(yīng),密鑰不足重復(fù)字符串,如圖2.7所示。
構(gòu)造所需密碼表如圖2.8所示。(注:對(duì)于實(shí)際計(jì)算使用的密碼表并不需要將26?×?26密碼表字符全部列出,由于每一行均為移位密碼的單表構(gòu)成,每一行的首字母與密碼表的行標(biāo)是一致的,所以只要知道密鑰字母(行標(biāo)字母)就可以很方便地列出此行的密碼字符串。因此本題只需列出密鑰字母標(biāo)識(shí)的行即可。)圖2.7明文與密鑰對(duì)應(yīng)表圖2.8Vigenere密碼表按照明文字母為列,密鑰字母為行,查找密碼表對(duì)應(yīng)的字母即為密文字母。如明文C對(duì)應(yīng)的密文為C行S列的字母U,明文O對(duì)應(yīng)的密文為O行C列的Q,…,最終查到明文COMPUTER對(duì)應(yīng)的密文為UQDTYGWT。2.2.2換位密碼
將明文中的字母不變而位置改變的密碼稱為換位密碼,也稱為置換密碼。如,把明文中的字母逆序來(lái)寫,然后以固定長(zhǎng)度的字母組發(fā)送或記錄。列換位法是最常用的換位密碼,其算法是以一個(gè)矩陣按行寫出明文字母,再按列讀出字母序列即為密文串。
【例2.4】已知列換位法密鑰K=SINGLE,明文M=ABOUT
FUNCTION
DISCOVERVERY,求密文C=?
解:根據(jù)密鑰中字母在字母表中出現(xiàn)的次序可確定列號(hào)為(635241),將明文按行寫,不足部分以不常用的字母進(jìn)行填充,本例題以ABC…進(jìn)行填充,如圖2.9所示。
按照列次序讀出,得到密文序列為FOOREUTSVCBNDEATICEDOCIRBAUNVY。
純換位密碼易于識(shí)別,因?yàn)樗哂信c原文字母相同的頻率,但通過(guò)多次換位可以使密碼的安全性有較大的改觀。圖2.9列換位法矩陣
2.3分組密碼
現(xiàn)代密碼學(xué)中所出現(xiàn)的密碼體制可分為兩大類:對(duì)稱加密體制和非對(duì)稱加密體制。對(duì)稱加密體制中相應(yīng)采用的就是對(duì)稱算法。在大多數(shù)對(duì)稱算法中,加密密鑰和解密密鑰是相同的。從基本工作原理來(lái)看,古典加密算法最基本的替代和換位工作原理,仍是現(xiàn)代對(duì)稱加密算法最重要的核心技術(shù)。對(duì)稱算法可分為兩類:序列密碼(StreamCipher)和分組密碼(blockcipher),其中絕大多數(shù)、基于網(wǎng)絡(luò)的對(duì)稱密碼應(yīng)用,使用的是分組密碼。與序列密碼每次加密處理數(shù)據(jù)流的一位或一個(gè)字節(jié)不同,分組密碼處理的單位是一組明文,即將明文消息編碼后的數(shù)字序列劃分成長(zhǎng)為L(zhǎng)位的組m,各個(gè)長(zhǎng)為L(zhǎng)的分組分別在密鑰k(密鑰長(zhǎng)為t)的控制下變換成與明文組等長(zhǎng)的一組密文輸出文字序列c。
分組密碼算法實(shí)際上就是在密鑰的控制下,通過(guò)某個(gè)置換來(lái)實(shí)現(xiàn)對(duì)明文分組的加密變換。為了保證密碼算法的安全強(qiáng)度,對(duì)密碼算法的要求如下:
(1)分組長(zhǎng)度足夠長(zhǎng);
(2)密鑰量足夠多;
(3)密碼變換足夠復(fù)雜。2.3.1DES
美國(guó)國(guó)家標(biāo)準(zhǔn)局(NBS)于1973年向社會(huì)公開(kāi)征集一種用于政府機(jī)構(gòu)和商業(yè)部門的加密算法,經(jīng)過(guò)評(píng)測(cè)和一段時(shí)間的試用,美國(guó)政府于1977年頒布了數(shù)據(jù)加密標(biāo)準(zhǔn)(DataEncryptionStandard,DES)。DES是分組密碼的典型代表,也是第一個(gè)被公布出來(lái)的標(biāo)準(zhǔn)算法,曾被美國(guó)國(guó)家標(biāo)準(zhǔn)局(現(xiàn)為國(guó)家標(biāo)準(zhǔn)與技術(shù)研究所NIST)確定為聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPSPUB46),使用廣泛,特別是在金融領(lǐng)域,曾是對(duì)稱密碼體制事實(shí)上的世界標(biāo)準(zhǔn)。
DES是一種分組密碼,明文、密文和密鑰的分組長(zhǎng)度都是64位,并且是面向二進(jìn)制的密碼算法。DES處理的明文分組長(zhǎng)度為64位,密文分組長(zhǎng)度也是64位,使用的密鑰長(zhǎng)度為56位(實(shí)際上函數(shù)要求一個(gè)64位的密鑰作為輸入,但其中用到的只有56位,另外8位可以用作奇偶校驗(yàn)位或者完全隨意設(shè)置)。DES是對(duì)合運(yùn)算,它的解密過(guò)程和加密相似,解密時(shí)使用與加密同樣的算法,不過(guò)子密鑰的使用次序則要與加密相反。DES的整個(gè)體制是公開(kāi)的,系統(tǒng)的安全性完全靠密鑰保密。
DES的整體結(jié)構(gòu)如圖2.10所示。圖2.10DES的整體結(jié)構(gòu)
DES算法的加密過(guò)程經(jīng)過(guò)了三個(gè)階段:
首先,64位的明文在一個(gè)初始置換IP后,比特重排產(chǎn)生了經(jīng)過(guò)置換的輸入,明文組被分成右半部分和左半部分,每部分32位,以L0和R0表示;第二階段是對(duì)同一個(gè)函數(shù)進(jìn)行16輪迭代,稱為乘積變換或函數(shù)f。這個(gè)函數(shù)將數(shù)據(jù)和密鑰結(jié)合起來(lái),本身既包含換位又包含替代函數(shù),輸出為64位,其左邊和右邊兩個(gè)部分經(jīng)過(guò)交換后得到預(yù)輸出。最后階段,預(yù)輸出通過(guò)一個(gè)逆初始置換IP-1算法就生成了64位的密文結(jié)果。相對(duì)應(yīng)的DES的解密過(guò)程由于DES的運(yùn)算是對(duì)合運(yùn)算,所以解密和加密可共用同一個(gè)運(yùn)算,只是子密鑰的使用的順序不同。解密過(guò)程可用如下的數(shù)學(xué)公式表示:
DES在總體上應(yīng)該說(shuō)是極其成功的,但在安全上也有其不足之處。
(1)密鑰太短:IBM原來(lái)的Lucifer算法的密鑰長(zhǎng)度是128位,而DES采用的是56位,這顯然太短了。1998年7月17日美國(guó)EFF(ElectronicFrontierFounation)宣布,他們用一臺(tái)價(jià)值25萬(wàn)美元的改裝計(jì)算機(jī),只用了56個(gè)小時(shí)就窮舉出一個(gè)DES密鑰。1999年EFF將該窮舉速度提高到24小時(shí)。
(2)存在互補(bǔ)對(duì)稱性:將密鑰的每一位取反,用原來(lái)的密鑰加密已知明文得到密文分組,那么用此密鑰的補(bǔ)密鑰加密此明文的補(bǔ)便可得到密文分組的補(bǔ)。這表明,對(duì)DES的選擇明文攻擊僅需要測(cè)試一半的密鑰,從而窮舉攻擊的工作量也就減半。
除了上述兩點(diǎn)之外,DES的半公開(kāi)性也是人們對(duì)DES頗有微辭的地方。后來(lái)雖然推出了DES的改進(jìn)算法,如三重DES,即3DES,將密鑰長(zhǎng)度增加到112位或168位,增強(qiáng)了安全性,但效率較低。2.3.2AES
高級(jí)加密標(biāo)準(zhǔn)(AdvancedEncryptionStandard,AES)作為傳統(tǒng)對(duì)稱加密標(biāo)準(zhǔn)DES的替代者,于2001年正式發(fā)布為美國(guó)國(guó)家標(biāo)準(zhǔn)(FISTPUBS197)。
AES采用的Rijndael算法是一個(gè)迭代分組密碼,其分組長(zhǎng)度和密鑰長(zhǎng)度都是可變的,只是為了滿足AES的要求才限定處理的分組大小為128位,而密鑰長(zhǎng)度為128位、192位或256位,相應(yīng)的迭代輪數(shù)N為10輪、12輪、14輪。Rijndael匯聚了安全性能、效率、可實(shí)現(xiàn)性和靈活性等優(yōu)點(diǎn),其最大的優(yōu)點(diǎn)是可以給出算法的最佳差分特征的概率,并分析算法抵抗差分密碼分析及線性密碼分析的能力。Rijndael對(duì)內(nèi)存的需求非常低且操作簡(jiǎn)單,也使它很適合用于受限制的環(huán)境中,并可抵御強(qiáng)大和實(shí)時(shí)的攻擊。在安全性方面,Rijndael加密、解密算法不存在像DES里出現(xiàn)的弱密鑰,因此在加密、解密過(guò)程中,對(duì)密鑰的選擇就沒(méi)有任何限制;并且根據(jù)目前的分析,Rijndael算法能有效抵抗現(xiàn)有已知的攻擊。
除了前面介紹的分組密碼外,還有其他很多的分組密碼,比如RC系列分組密碼(包括RC2、RC5、RC6等),CLIPPER密碼,SKIPJACK算法,IDEA密碼等。國(guó)際上目前公開(kāi)的分組密碼不下100種,在此不一一介紹。
2.4公鑰密碼體制
公鑰密碼學(xué)與其之前的密碼學(xué)完全不同。首先,公鑰密碼算法基于數(shù)學(xué)函數(shù)而不是之前的替代和置換。其次,公鑰密碼學(xué)是非對(duì)稱的,它使用兩個(gè)獨(dú)立的密鑰。公鑰密碼學(xué)在消息的保密性、密鑰分配和認(rèn)證領(lǐng)域都有著極其重要的意義。公開(kāi)密鑰密碼的基本思想是將傳統(tǒng)密碼的密鑰k一分為二,分為加密鑰Ke和解密鑰Kd,用加密鑰Ke控制加密,用解密鑰Kd控制解密,而且在計(jì)算上確保由加密鑰Ke不能推出解密鑰Kd。這樣,即使是將Ke公開(kāi)也不會(huì)暴露Kd,從而不會(huì)損害密碼的安全。于是可對(duì)Kd保密,而對(duì)Ke進(jìn)行公開(kāi),從而在根本上解決了傳統(tǒng)密碼在密鑰分配上所遇到的問(wèn)題。為了區(qū)分常規(guī)加密和公開(kāi)密鑰加密兩個(gè)體制,一般將常規(guī)加密中使用的密鑰稱為秘密密鑰(SecretKey),用Ks表示。公開(kāi)密鑰加密中使用的能夠公開(kāi)的加密密鑰Ke稱為公開(kāi)密鑰(PublicKey),用KU表示,加密中使用的保密的解密密鑰Kd被稱為私有密鑰(PrivateKey),用KR表示。根據(jù)公開(kāi)密鑰密碼的基本思想,可知一個(gè)公開(kāi)密鑰密碼應(yīng)當(dāng)滿足以下三個(gè)條件:
(1)解密算法D與加密算法E互逆,即對(duì)所有明文M都有DKR(EKU(M))?=?M;
(2)在計(jì)算上不能由KU推出KR;
(3)算法E和D都是高效的。
滿足了以上三個(gè)條件,便可構(gòu)成一個(gè)公開(kāi)密鑰密碼,這個(gè)密碼可以確保數(shù)據(jù)的秘密性。進(jìn)而,如果還要求確保數(shù)據(jù)的真實(shí)性,則還應(yīng)滿足第四個(gè)條件。即:
對(duì)于所有明文M都有EKU(DKR(M))?=?M。如果同時(shí)滿足以上四個(gè)條件,則公開(kāi)密鑰密碼可以同時(shí)確保數(shù)據(jù)的秘密性和真實(shí)性。此時(shí),對(duì)于所有的明文M都有DKR(EKU(M))?=?EKU(DKR(M))?=?M。
公開(kāi)密鑰密碼從根本上克服了傳統(tǒng)密碼在密鑰分配上的困難,利用公開(kāi)密鑰密碼進(jìn)行保密通信需要成立一個(gè)密鑰管理機(jī)構(gòu)(KMC),每個(gè)用戶都將自己的姓名、地址和公開(kāi)的加密密鑰等信息在KMC登記注冊(cè),將公鑰記入共享的公開(kāi)密鑰數(shù)據(jù)庫(kù)PKDB中。KMC負(fù)責(zé)密鑰的管理,并且得到用戶的信賴。這樣,用戶利用公開(kāi)密鑰密碼進(jìn)行保密通信就像查電話號(hào)碼簿打電話一樣方便,無(wú)須按約定持有相同的密鑰,因此特別適合計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用。2.4.1RSA
RSA公鑰算法是由美國(guó)麻省理工學(xué)院(MIT)的Rivest,Shamir和Adleman在1978年提出的,其算法的數(shù)學(xué)基礎(chǔ)是初等數(shù)論的Euler定理,其安全性建立在大整數(shù)因子分解的困難性之上。
RSA密碼體制的明文空間M?=?密文空間C?=?Zn整數(shù),其算法描述如下:
(1)密鑰的生成:首先,選擇兩個(gè)互異的大素?cái)?shù)p和q(保密),計(jì)算n?=?pq(公開(kāi)),φ(n)?=?(p-1)(q-1)(保密),選擇一個(gè)隨機(jī)整數(shù)e(0<e<φ(n)),滿足gcd(e,φ(n))?=?1(公開(kāi))。計(jì)算d?=?e-1modφ(n)(保密)。確定:公鑰Ke?=?{e,n},私鑰Kd={d,p,q},即{d,n};
(2)加密:C?=?Memodn;
(3)解密:M?=?Cdmodn。
【例2.5】p?=?17,q?=?11,e?=?7,M?=?88,使用RSA算法計(jì)算密文C?=??
(1)選擇素?cái)?shù)p?=?17,q?=?11;
(2)計(jì)算n?=?pq?=?17*11?=?187;
(3)計(jì)算
(n)?=?(p-1)(q-1)?=?16*10?=?160;
(4)選擇e?=?7,滿足0?<?e?<?160,且gcd(7,160)?=?1;
(5)計(jì)算d,因?yàn)閐?=?e-1modφ(n),即ed?
?1mod
(n),選擇d?=?23。因?yàn)?3*7?=?1*160?+?1;
(6)公鑰Ke?=?
e,n
?=?
7,187
,私鑰Kd?=?{d,n}?=?{23,187};
(7)計(jì)算密文C?=?Memodn?=?887mod187?=?11。(解密M?=?1123mod187?=?88)由于RSA密碼安全、易懂,既可用于加密,又可用于數(shù)字簽名,因此RSA方案是唯一被廣泛接受并實(shí)現(xiàn)的通用公開(kāi)密鑰密碼算法,許多國(guó)家標(biāo)準(zhǔn)化組織,如ISO,ITU和SWIFT等都已接受RSA作為標(biāo)準(zhǔn)。Internet網(wǎng)的E-mail保密系統(tǒng)PGP(PrettyGoodPrivacy)以及國(guó)際VISA和MASTER組織的電子商務(wù)協(xié)議(SecureElectronicTransaction,SET協(xié)議)中都將RSA密碼作為傳送會(huì)話密鑰和數(shù)字簽名的標(biāo)準(zhǔn)。2.4.2ElGamal和ECC
ElGamal密碼是除了RSA密碼之外最有代表性的公開(kāi)密鑰密碼。ElGamal密碼建立在離散對(duì)數(shù)的困難性之上。由于離散對(duì)數(shù)問(wèn)題具有較好的單向性,所以離散對(duì)數(shù)問(wèn)題在公鑰密碼學(xué)中得到廣泛應(yīng)用。除了ElGamal密碼外,Diffie-Hellman密鑰分配協(xié)議和美國(guó)數(shù)字簽名標(biāo)準(zhǔn)算法DSA等也都是建立在離散對(duì)數(shù)問(wèn)題之上的。ElGamal密碼改進(jìn)了Diffie和Hellman的基于離散對(duì)數(shù)的密鑰分配協(xié)議,提出了基于離散對(duì)數(shù)的公開(kāi)密鑰密碼和數(shù)字簽名體制。由于ElGamal密碼的安全性建立在GF(p)離散對(duì)數(shù)的困難性之上,而目前尚無(wú)求解GF(p)離散對(duì)數(shù)的有效算法,所以p足夠大時(shí)ElGamal密碼是很安全的。橢圓曲線密碼體制(EllipticCurveCryptography,ECC)通過(guò)由“元素”和“組合規(guī)則”來(lái)組成群的構(gòu)造方式,使得群上的離散對(duì)數(shù)密碼較RSA密碼體制而言能更好地對(duì)抗密鑰長(zhǎng)度的攻擊,使用橢圓曲線公鑰密碼的身份加密系統(tǒng)能夠較好地抵御攻擊,是基于身份加密的公鑰密碼學(xué)在理論上較為成熟的體現(xiàn)。由于橢圓曲線密碼學(xué)較難,故我們?cè)谶@里不詳細(xì)介紹。2.4.3公鑰密碼體制應(yīng)用
大體上說(shuō),可以將公開(kāi)密鑰密碼系統(tǒng)的應(yīng)用分為如下三類。
1.機(jī)密性的實(shí)現(xiàn)
發(fā)送方用接收方的公開(kāi)密鑰加密報(bào)文,接收方用自己相應(yīng)的私鑰來(lái)解密,如圖2.11所示。圖2.11公開(kāi)密鑰算法加密過(guò)程發(fā)送者A發(fā)送的信息用接收者B的公鑰KUB進(jìn)行加密,只有擁有與公鑰匹配的私鑰KRB的接收者B才能對(duì)加密的信息進(jìn)行解密,而其他攻擊者由于并不知道KRB,因此不能對(duì)加密信息進(jìn)行有效解密。此加密過(guò)程保證了信息傳輸?shù)臋C(jī)密性。
2.數(shù)字簽名
數(shù)字簽名是證明發(fā)送者身份的信息安全技術(shù)。在公開(kāi)密鑰加密算法中,發(fā)送方用自己的私鑰“簽署”報(bào)文(即用自己的私鑰加密),接收方用發(fā)送方配對(duì)的公開(kāi)密鑰來(lái)解密以實(shí)現(xiàn)認(rèn)證。如圖2.12所示。
發(fā)送者A用自己的私鑰KRA對(duì)信息進(jìn)行加密(即簽名),接收者用與KRA匹配的公鑰KUA進(jìn)行解密(即驗(yàn)證)。因?yàn)橹挥蠯UA才能對(duì)KRA進(jìn)行解密,而發(fā)送者A是KRA的唯一擁有者,因此可以斷定A是信息的唯一發(fā)送者。此過(guò)程保證了信息的不可否認(rèn)性。圖2.12公開(kāi)密鑰算法數(shù)字簽名過(guò)程
3.密鑰交換
密鑰交換即發(fā)送方和接收方基于公鑰密碼系統(tǒng)交換會(huì)話密鑰。這種應(yīng)用也稱為混合密碼系統(tǒng),可以通過(guò)用常規(guī)密碼體制加密需要保密傳輸?shù)南⒈旧?,然后用公鑰密碼體制加密常規(guī)密碼體制中使用的會(huì)話密鑰,充分利用對(duì)稱密碼體制在處理速度上的優(yōu)勢(shì)和非對(duì)稱密碼體制在密鑰分發(fā)和管理方面的優(yōu)勢(shì),從而使效率大大提高,如圖2.13所示。圖2.13公開(kāi)密鑰算法交換會(huì)話密鑰過(guò)程發(fā)送者A發(fā)送明文用常規(guī)加密算法進(jìn)行加密,然后把會(huì)話密鑰KS用接收者的公鑰KUB加密并與密文一起發(fā)送出去。接收者收到信息后先對(duì)信息進(jìn)行分離,將加密密鑰用自己的私鑰KRB進(jìn)行解密得到會(huì)話密鑰KS,然后再用KS對(duì)密文進(jìn)行解密恢復(fù)出明文。
2.5報(bào)文認(rèn)證與數(shù)字簽名
2.5.1Hash函數(shù)
1.Hash函數(shù)的特性
Hash函數(shù)也被稱為哈希函數(shù)或者散列函數(shù)。它是一種單項(xiàng)密碼體制,即它是一個(gè)從明文到密文的不可逆映射,能夠?qū)⑷我忾L(zhǎng)度的消息M轉(zhuǎn)換成固定長(zhǎng)度的輸出H(M)。
Hash函數(shù)除了上述的特點(diǎn)之外,還必須滿足以下三個(gè)性質(zhì):
(1)給定M,計(jì)算H(M)是容易的。
(2)給定H(M),計(jì)算M是困難的。
(3)給定M,要找到不同的消息M’,使得H(M)=H(M’)是困難的。實(shí)際上,只要M和M’略有差別,它們的散列值就會(huì)有很大不同,而且即使修改M中的一個(gè)比特,也會(huì)使輸出的比特串中大約一半的比特發(fā)生變化,即具有雪崩效應(yīng)。(注:不同的兩個(gè)消息M和M’使得H(M)?=?H(M’)是存在的,即發(fā)生了碰撞,但按要求找到一個(gè)碰撞是困難的,因此,Hash函數(shù)仍可以較放心地使用。)
2.Hash函數(shù)的算法
單項(xiàng)散列函數(shù)的算法有很多種,如Snefru算法、N-Hash算法、MD2算法、MD4算法、MD5算法、SHA-1算法等,常用的有MD5算法和SHA-1算法。
(1)?MD5算法:MD表示信息摘要(MessageDigest)。MD4是RonRivest設(shè)計(jì)的單向散列算法,其公布后由于有人分析出算法的前兩輪存在差分密碼攻擊的可能,因而Rivest對(duì)其進(jìn)行了修改,產(chǎn)生了MD5算法。MD5算法將輸入文本劃分成512bit的分組,每一個(gè)分組又劃分為16個(gè)32bit的子分組,輸出由4個(gè)32bit的分組級(jí)聯(lián)成一個(gè)128bit的散列值。
(2)安全散列算法(SHA):由美國(guó)國(guó)家標(biāo)準(zhǔn)和技術(shù)協(xié)會(huì)(NIST)提出,在1993年公布并作為聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPSPUB180),之后在1995年發(fā)布了修訂版FIPSPUB180,通常稱之為SHA-1。SHA是基于MD4算法的,在設(shè)計(jì)上很大程度是模仿MD4的。SHA-1算法將輸入長(zhǎng)度最大不超過(guò)264bit的報(bào)文劃分成512bit的分組,產(chǎn)生一個(gè)160bit的輸出。由于MD5與SHA-1都是由MD4導(dǎo)出的,因此兩者在算法、強(qiáng)度和其他特性上都很相似。它們之間最顯著和最重要的區(qū)別是SHA-1的輸出值比MD5的輸出值長(zhǎng)32bit,因此SHA-1對(duì)強(qiáng)行攻擊有更大的強(qiáng)度。其次,MD5算法的公開(kāi),使它的設(shè)計(jì)容易受到密碼分析的攻擊,而有關(guān)SHA-1的設(shè)計(jì)標(biāo)準(zhǔn)幾乎沒(méi)有公開(kāi)過(guò),因此很難判定它的強(qiáng)度。另外,在相同硬件條件下,由于SHA-1運(yùn)算步驟多且要處理160bit的緩存,因此比MD5僅處理128bit緩存速度要慢。SHA-1與MD5兩個(gè)算法的共同點(diǎn)是算法描述簡(jiǎn)單、易于實(shí)現(xiàn),并且無(wú)須冗長(zhǎng)的程序或很大的替代表。2.5.2報(bào)文認(rèn)證
報(bào)文認(rèn)證是證實(shí)收到的報(bào)文來(lái)自于可信的源點(diǎn)并未被篡改的過(guò)程。常用的報(bào)文認(rèn)證函數(shù)包括報(bào)文加密、散列函數(shù)和報(bào)文認(rèn)證碼MAC三種類型。
1.報(bào)文加密
報(bào)文加密是用整個(gè)報(bào)文的密文作為報(bào)文的認(rèn)證符。發(fā)送者A唯一擁有密鑰K,如果密文被正確恢復(fù),則B可以知道收到的內(nèi)容沒(méi)有經(jīng)過(guò)任何改動(dòng),因?yàn)椴恢繩的第三方想要根據(jù)他所期望的明文來(lái)造出能夠被B恢復(fù)的密文是非常困難的。因此對(duì)報(bào)文進(jìn)行加密既能保證報(bào)文的機(jī)密性,又能認(rèn)證報(bào)文的完整性。報(bào)文加密認(rèn)證過(guò)程如圖2.14所示。圖2.14報(bào)文加密認(rèn)證過(guò)程
2.散列函數(shù)
散列函數(shù)是一個(gè)將任意長(zhǎng)度的報(bào)文映射為定長(zhǎng)的散列值的公共函數(shù),并以散列值作為認(rèn)證碼。發(fā)送者首先計(jì)算要發(fā)送的報(bào)文M的散列函數(shù)值H(M),然后將其與報(bào)文一起發(fā)給B,接收者對(duì)收到的報(bào)文M’計(jì)算新的散列函數(shù)值H(M’)并與收到的H(M)值進(jìn)行比較,如果兩者相同則證明信息在傳送過(guò)程中沒(méi)有遭到篡改。用散列函數(shù)進(jìn)行認(rèn)證的過(guò)程如圖2.15所示。圖2.15散列函數(shù)認(rèn)證過(guò)程
3.報(bào)文認(rèn)證碼(MessageAuthenticationCode,MAC)
報(bào)文認(rèn)證碼(MAC)是以一個(gè)報(bào)文的公共函數(shù)和用作產(chǎn)生一個(gè)定長(zhǎng)值的密鑰的認(rèn)證符。它使用一個(gè)密鑰產(chǎn)生一個(gè)短小的定長(zhǎng)數(shù)據(jù)分組,即報(bào)文認(rèn)證碼MAC,并把它附加在報(bào)文中。發(fā)送者A用明文M和密鑰K計(jì)算要發(fā)送的報(bào)文的函數(shù)值CK(M),即MAC值并將其與報(bào)文一起發(fā)給B,接收者用收到的報(bào)文M和與A共有的密鑰K計(jì)算新的MAC值并與收到的MAC值進(jìn)行比較。如果兩者相同則證明信息在傳送過(guò)程中沒(méi)有遭到篡改。用MAC進(jìn)行認(rèn)證的過(guò)程如圖2.16所示。圖2.16MAC認(rèn)證過(guò)程基于對(duì)稱分組密碼(如DES)是構(gòu)建MAC最常用的方法,但由于散列函數(shù)(如MD5和SHA-1)的軟件執(zhí)行速度比分組密碼快、庫(kù)函數(shù)容易獲得以及受美國(guó)等國(guó)家的出口限制等原因,MAC的構(gòu)建逐步轉(zhuǎn)向由散列函數(shù)導(dǎo)出。由于散列函數(shù)(如MD5)并不是專門為MAC設(shè)計(jì)的,不能直接用于產(chǎn)生MAC,因此提出了將一個(gè)密鑰與現(xiàn)有散列函數(shù)結(jié)合起來(lái)的算法,其中最有代表性的是HMAC(RFC2104)。HMAC已經(jīng)作為IP安全中強(qiáng)制執(zhí)行的MAC,并且也被如SSL等其他的Internet協(xié)議所使用。2.5.3數(shù)字簽名
數(shù)字簽名與手寫簽名一樣,不僅要能證明消息發(fā)送者的身份,還要能與發(fā)送的信息相關(guān)。它必須能證實(shí)作者身份和簽名的日期和時(shí)間,必須能對(duì)報(bào)文內(nèi)容進(jìn)行認(rèn)證,并且還必須能被第三方證實(shí)以便解決爭(zhēng)端。其實(shí)質(zhì)就是簽名者用自己獨(dú)有的密碼信息對(duì)報(bào)文進(jìn)行處理,接收方能夠認(rèn)定發(fā)送者唯一的身份,如果雙方對(duì)身份認(rèn)證有爭(zhēng)議則可由第三方(仲裁機(jī)構(gòu))根據(jù)報(bào)文的簽名來(lái)裁決報(bào)文是否確實(shí)由發(fā)送方發(fā)出,以保證信息的不可抵賴性,而對(duì)報(bào)文的內(nèi)容以及簽名的時(shí)間和日期進(jìn)行認(rèn)證是防止數(shù)字簽名被偽造和重用。常用的數(shù)字簽名采用公開(kāi)密鑰加密算法來(lái)實(shí)現(xiàn),如采用RSA、ElGamal簽名來(lái)實(shí)現(xiàn)。在圖2.12中已經(jīng)演示了發(fā)送者用自己的私鑰對(duì)報(bào)文進(jìn)行簽名,接收者用發(fā)送者的公鑰進(jìn)行認(rèn)證的過(guò)程。但由于直接用私鑰對(duì)報(bào)文進(jìn)行加密不能保證信息的完整性,因此,必須和散列函數(shù)結(jié)合來(lái)實(shí)現(xiàn)真正實(shí)用的數(shù)字簽名。如圖2.17所示。圖2.17公開(kāi)密鑰算法數(shù)字簽名發(fā)送者用自己的私鑰對(duì)信息的Hash值進(jìn)行加密,然后與明文進(jìn)行拼接發(fā)送出去。接收者一方面對(duì)收到的明文信息重新計(jì)算出Hash值,一方面對(duì)簽名信息用發(fā)送方的公鑰進(jìn)行驗(yàn)證,得到的Hash值與重新計(jì)算的Hash值進(jìn)行比較,如果相一致,則說(shuō)明信息沒(méi)有被篡改。這種方法的優(yōu)點(diǎn)在于保證了發(fā)送者真實(shí)身份的同時(shí)還保證了信息的完整性,滿足了數(shù)字簽名的要求;不足之處是由于數(shù)字簽名并不對(duì)明文信息進(jìn)行處理,因此不能保證信息的機(jī)密性,但可以在簽名之后再對(duì)信息用接收方的公鑰進(jìn)行加密,接收方收到信息后用自己的私鑰進(jìn)行解密,再驗(yàn)證數(shù)字簽名以及信息的完整性,如圖2.18所示。圖2.18帶數(shù)字簽名信息的秘密通信數(shù)字簽名的另一種算法是使用仲裁機(jī)構(gòu)進(jìn)行簽名。如采用常規(guī)加密算法與仲裁機(jī)構(gòu)相結(jié)合實(shí)現(xiàn)數(shù)字簽名。假設(shè)發(fā)送者A與接收者B用密鑰KAB進(jìn)行通信,仲裁者為C,發(fā)送者A與仲裁者C之間共享密鑰KAC,接收者B與仲裁者C之間共享密鑰KBC,簽名過(guò)程如圖2.19所示。
采用第三方仲裁結(jié)構(gòu)進(jìn)行數(shù)字簽名的方法歸納如圖2.20所示。圖2.19常規(guī)加密算法與仲裁機(jī)構(gòu)相結(jié)合的數(shù)字簽名圖2.20采用仲裁者數(shù)字簽名過(guò)程歸納
(1)常規(guī)加密且仲裁者C能看見(jiàn)明文:發(fā)送者A將發(fā)送的明文和簽名信息SA(M)用密鑰KAC加密后發(fā)送給仲裁者C,C對(duì)信息進(jìn)行解密,恢復(fù)出明文M,對(duì)A的簽名信息SA(M)進(jìn)行認(rèn)證,確認(rèn)正確后將明文信息和簽名信息以及時(shí)間戳T用與接收者B共享的密鑰KBC加密后,發(fā)送給接收者B。由于接收者B完全信任仲裁者C,因此可以確信它發(fā)過(guò)來(lái)的信息就是發(fā)送者A發(fā)的信息。其中發(fā)送者A的簽名信息SA(M)由A的標(biāo)識(shí)符IDA和明文的散列函數(shù)值H(M)組成。
(2)常規(guī)加密且仲裁者C不能看見(jiàn)明文:如果不想被仲裁者C看到發(fā)送者A發(fā)出的明文,則可用發(fā)送者A和接收者B之間的共享密鑰KAB對(duì)明文進(jìn)行加密,與簽名信息一起發(fā)出。仲裁者C只能對(duì)發(fā)送者A的簽名進(jìn)行認(rèn)證,但不能解密密文。只有接收者B能夠?qū)χ俨谜逤轉(zhuǎn)發(fā)的信息進(jìn)行兩次解密,得到明文。
(3)公開(kāi)密鑰加密且仲裁者C不能看見(jiàn)明文:發(fā)送者A用自己的私鑰KRA對(duì)信息進(jìn)行簽名,然后用接收者B的公鑰KUB進(jìn)行加密,再用私鑰KRA對(duì)所有信息進(jìn)行簽名。仲裁者C收到信息后用發(fā)送者A的公鑰KUA進(jìn)行認(rèn)證,然后用自己的私鑰KRC對(duì)信息進(jìn)行簽名并轉(zhuǎn)發(fā)給接收者B。接收者B收到信息后通過(guò)仲裁者C的公鑰KUC進(jìn)行簽名認(rèn)證,確認(rèn)發(fā)送者A的密鑰是有效的,再用A的公鑰KUA對(duì)信息進(jìn)行解密恢復(fù)出明文。
2.6密鑰管理與分發(fā)
密鑰管理負(fù)責(zé)密鑰從產(chǎn)生到最終銷毀的整個(gè)過(guò)程,包括密鑰的生成、存儲(chǔ)、分配、使用、備份/恢復(fù)、更新、撤銷和銷毀等,是提供機(jī)密性、完整性和數(shù)字簽名等密碼安全技術(shù)的基礎(chǔ)。
密鑰的分發(fā)是保密通信中的一方生成并選擇密鑰,然后把該密鑰發(fā)送給參與通信的其他一方或多方的機(jī)制,一般分為秘密密鑰分發(fā)和公開(kāi)密鑰分發(fā)兩大類。
1.秘密密鑰分發(fā)
秘密密鑰的分發(fā)一般使用一個(gè)大家都信任的密鑰分發(fā)中心(KeyDistributionCenter,KDC),每一通信方與KDC共享一個(gè)密鑰。其交換方式有如下兩種。
(1)秘密密鑰交換方式一,如圖2.21所示。
①發(fā)送者A隨機(jī)生成會(huì)話密鑰KS,然后將KS和要通信的對(duì)象信息B用A與KDC之間的共享密鑰KA-KDC加密后發(fā)送給KDC。
②KDC將收到的信息解密后得到會(huì)話密鑰KS,將此密鑰和信息發(fā)送者A的身份信息用B和KDC之間共享的密鑰KB-KDC加密后發(fā)送給接收者B。圖2.21秘密密鑰交換方式一③B收到加密信息后進(jìn)行解密,得到用KS與A通信的信息。
④發(fā)送者A與接收者B之間用會(huì)話密鑰KS進(jìn)行信息的秘密傳輸。
(2)秘密密鑰交換方式二,如圖2.22所示。
①發(fā)送者A將要與B通信的請(qǐng)求發(fā)送給KDC。
②?KDC隨機(jī)生成會(huì)話密鑰KAB,并將B的身份信息用A與KDC之間的共享密鑰KA-KDC加密后一起發(fā)送給A;同時(shí)將會(huì)話密鑰KAB與B的身份信息用B與KDC之間的共享密鑰KB-KDC加密后發(fā)送給B。
③發(fā)送者A與接收者B分別對(duì)收到的KDC加密信息進(jìn)行解密,得到通信另一方的信息和會(huì)話密鑰KAB。
④發(fā)送者A與接收者B用會(huì)話密鑰KS進(jìn)行信息的加密傳輸。圖2.22秘密密鑰交換方式二
2.公開(kāi)密鑰分發(fā)
公開(kāi)密鑰分發(fā)方法有四種:
(1)通過(guò)直接將密鑰發(fā)送給通信的另一方或者通過(guò)廣播的方式將公鑰發(fā)送給通信的其他方。
(2)建立一個(gè)可動(dòng)態(tài)訪問(wèn)的公鑰目錄(存放公鑰信息的數(shù)據(jù)庫(kù)服務(wù)器),使通信的各方可以基于公開(kāi)渠道訪問(wèn)公鑰目錄來(lái)獲取密鑰。
(3)帶認(rèn)證功能的在線服務(wù)器式公鑰分發(fā)。例如發(fā)送者A向管理員請(qǐng)求接收者B的公鑰,管理員將接收者B的公鑰用自己的私鑰進(jìn)行簽名,使發(fā)送者A能夠通過(guò)管理員的公鑰進(jìn)行認(rèn)證,從而確認(rèn)接收者B的公鑰是可用的。(4)使用數(shù)字證書(shū)進(jìn)行公鑰分發(fā)。在這個(gè)方案中,一般有一個(gè)可信的第三方結(jié)構(gòu)——認(rèn)證中心又稱為證書(shū)授權(quán)(CertificateAutnority,CA),通信各方均向CA申請(qǐng)證書(shū)并信任CA頒發(fā)的證書(shū)。證書(shū)的內(nèi)容一般包括證書(shū)的ID、證書(shū)的發(fā)放者、證書(shū)的有效期、用戶的名稱、用戶的公鑰以及證書(shū)發(fā)放者對(duì)證書(shū)內(nèi)容的簽名信息。用戶能夠根據(jù)CA的簽名信息來(lái)認(rèn)證證書(shū)的有效性和合法性,并利用證書(shū)中的用戶公鑰對(duì)信息進(jìn)行加密通信。CA負(fù)責(zé)數(shù)字證書(shū)的頒發(fā)和管理。
2.7密碼技術(shù)實(shí)例
2.7.1CAP軟件應(yīng)用
【實(shí)驗(yàn)背景】
一般的密碼學(xué)實(shí)驗(yàn)要求學(xué)習(xí)者編寫實(shí)現(xiàn)加密法或分析工具的程序,但這勢(shì)必要占用學(xué)習(xí)者較多的時(shí)間去調(diào)試程序,減少真正學(xué)習(xí)密碼學(xué)的時(shí)間。加密分析程序CAP是DrRichardSpillman編寫的一款密碼加密與分析的軟件,包含了古典密碼學(xué)和現(xiàn)代密碼學(xué)常用的密碼算法和分析工具。學(xué)習(xí)者可以利用CAP更好地學(xué)習(xí)加密法和密碼分析技術(shù),而不必花費(fèi)大量的時(shí)間調(diào)試程序。CAP的測(cè)試版本可以從http://www.cs.plu
.edu/courses/privacy/cap.htm下載。
【實(shí)驗(yàn)?zāi)康摹?/p>
掌握常規(guī)的密碼算法加密和分析技術(shù)。
【實(shí)驗(yàn)條件】
(1)?CAP軟件;
(2)基于Windows的PC機(jī)。
【實(shí)驗(yàn)任務(wù)】
(1)利用CAP軟件實(shí)現(xiàn)幾種常用密碼加密和解密;
(2)利用CAP軟件對(duì)密文進(jìn)行分析。
【實(shí)驗(yàn)內(nèi)容】
雙擊運(yùn)行CAP4.exe,出現(xiàn)CAP軟件主界面,如圖2.23所示。圖2.23CAP主界面
1.一般使用過(guò)程
先在“Plaintext”中輸入要加密的明文,或在“Ciphertext”中輸入要解密的密文,然后選擇菜單“Ciphers”中的“加密算法”→“輸入密鑰”→“進(jìn)行加密或解密運(yùn)算”。相應(yīng)的密文或回復(fù)的明文將分別出現(xiàn)在“Ciphertext”或“Plaintext”中。如果是對(duì)密文進(jìn)行分析,則在“Ciphertext”中輸入要分析的密文后。利用“AnalysisTools”中的分析工具進(jìn)行分析。現(xiàn)在以明文M=CryptographicStandards為例,用不同的密碼算法求出相應(yīng)的密文C=??(建議學(xué)習(xí)者以手工運(yùn)算先計(jì)算出密文,再與CAP軟件運(yùn)算結(jié)果比較,以加強(qiáng)對(duì)密碼算法的理解。對(duì)于密文進(jìn)行分析則可使用CAP的分析工具以幫助提高分析效率。另外,由于知道密鑰和密碼算法的解密過(guò)程和加密過(guò)程一致,即先輸入密文,然后選擇算法及輸入密鑰,解密恢復(fù)出明文,因此不再在每個(gè)算法實(shí)例中單獨(dú)進(jìn)行演示。)
(1)對(duì)于密鑰K=3的簡(jiǎn)單移位密碼(愷撒密碼)的加密與解密過(guò)程。
在“Plaintext”窗口中輸入字符串“CryptographicStandards”,在菜單中選擇“Ciphers”→“SimpleShift”,輸入移位的個(gè)數(shù),即密鑰3,如圖2.24所示。
單擊“Encipher”生成密文,如圖2.25所示。圖2.24簡(jiǎn)單移位密碼加密/解密圖2.25加密結(jié)果
(2)對(duì)于密鑰K=badge的Vigenere密碼的加密與解密過(guò)程。
在菜單中選擇“Ciphers”→“Vigenere”,輸入密鑰“badge”,如圖2.26所示。
單擊“Encipher”,生成密文“drbvxpgugtiifyxbnggves”。
(3)對(duì)于密鑰K=badge的列換位法的加密與解密過(guò)程。
在菜單中選擇“Ciphers”→“ColumnTransposition”,輸入密鑰“badge”,單擊“SetKey”生成列序號(hào)及矩陣,如圖2.27所示。
再單擊“Encipher”生成密文“rginscohadyrcdqtptrqpasaq”。圖2.26Vigenere密碼加密/解密圖2.27列變換密碼加密/解密
2.密文分析
(1)利用移位工具進(jìn)行分析。
對(duì)于移位密碼來(lái)說(shuō),如果不知道移位位數(shù),即密鑰,就不能對(duì)密文進(jìn)行解密。對(duì)此類密文可采取嘗試所有的移位數(shù)對(duì)密文進(jìn)行分析的方法,以確定可能的密鑰。如以移位密碼密文“icbpmvbqkibqwv”為例進(jìn)行密碼分析。
首先在密文框中輸入密文,然后利用單擊左側(cè)的“AnalusisTools”中的“Shift”→“Run”進(jìn)行破解,測(cè)試1~25位移位密鑰,經(jīng)分析得到明文“authentication”,如圖2.28所示。圖2.28簡(jiǎn)單移位密碼分析結(jié)果
(2)采用基本頻率分析工具分析。
可以使用頻率分析工具,選擇“Run”→“Single”即可對(duì)密文進(jìn)行分析,找出26個(gè)字母在密文中出現(xiàn)的頻率,然后對(duì)照字母頻率表及字母出現(xiàn)的順序ETAONIRSHDLUCMPFYWGBVJKQXZ進(jìn)行明文替換,直到嘗試找到所有明文與密文對(duì)應(yīng)的密碼表。這種方法適合于一對(duì)一替換的密碼分析,如移位密碼,關(guān)鍵詞密碼算法等。CAP提供了“Singel”、“Double”、“Triple”三種字母組合的頻率分析,并提供了圖表顯示,如圖2.29所示。圖2.29CAP頻率分析圖表
(3)使用低頻率分析工具對(duì)多表替代密碼進(jìn)行分析。
已知密文:“uhhogwivggiefqwvmwneutkkvfchozjnjyxbtlur
fvhtxvaorcsefgpduogxfsdthdopvesevzsuhhurfshtxcywniteqjmo
gvzeuirtxpdhzismltixhhzlfrwniurdtwniwzieddzevngkvxeqzeoyiuvnoizenphxmogznmmeltxsaqymfnwojuhhxidelbmogvzeuirtgblfapbthyeoifbxiawjsfsqzqbtfnxiertigoxthjnwnigrdsiuhhtxieukgfiyorhswgxjoqieorhpidtwnigrdsiprirehtkkyteu”是采用Vigenere密碼加密,密鑰長(zhǎng)度是5,請(qǐng)分析得出明文。單擊CAP左側(cè)分析工具“PolyalphabeticTools”中的“LowFreq”,輸入密鑰可能長(zhǎng)度,單擊“Run”,出現(xiàn)頻率分析報(bào)告和可能的密鑰,再用可能的密鑰對(duì)密文進(jìn)行解密看是否能夠正確解密出明文,直到找到正確的密鑰為止。密文越長(zhǎng),用頻率分析的效果越好。采用低頻率分析工具對(duì)多表替代密碼進(jìn)行密鑰分析,如圖2.30所示。
(4)?CAP提供了很多實(shí)用的密碼分析工具,一般來(lái)說(shuō),破譯密碼不可能一次成功,往往需要嘗試很多的方法,學(xué)習(xí)者應(yīng)當(dāng)在掌握密碼算法的基礎(chǔ)上進(jìn)行分析。圖2.30CAP低頻率分析工具2.7.2PGP軟件應(yīng)用
【實(shí)驗(yàn)背景】
PGP(PrettyGoodPrivacy)是由美國(guó)的PhilipZimmermann創(chuàng)造的用于保護(hù)電子郵件和文件傳輸安全的技術(shù),在學(xué)術(shù)界和技術(shù)界都得到了廣泛的應(yīng)用。PGP的主要特點(diǎn)是使用單向散列算法對(duì)郵件/文件內(nèi)容進(jìn)行簽名以保證郵件/文件內(nèi)容的完整性,使用公鑰和私鑰技術(shù)保證郵件/文件內(nèi)容的機(jī)密性和不可否認(rèn)性。PGP不僅提供了程序試用,而且提供了程序源碼,是一款非常好的密碼技術(shù)學(xué)習(xí)和應(yīng)用軟件。
PGP的30天試用版本可以從
下載。(注:由于本實(shí)驗(yàn)中只用到PGP加密/解密和簽名/驗(yàn)證功能,而此功能是PGP最基本的功能,因此任何一個(gè)PGP版本都支持此類功能。本實(shí)驗(yàn)僅以PGP.Desktop9.8為例進(jìn)行介紹。)
【實(shí)驗(yàn)?zāi)康摹?/p>
通過(guò)使用PGP軟件加強(qiáng)對(duì)公鑰密碼技術(shù)應(yīng)用的理解和掌握。
【實(shí)驗(yàn)條件】
(1)?PGPDesktop32-982.exe;
(2)基于Windows的PC機(jī)2臺(tái),分別為發(fā)送者userA和接收者userB使用。
【實(shí)驗(yàn)任務(wù)】
(1)掌握PGP基本原理;
(2)利用PGP軟件對(duì)文件進(jìn)行加密/解密;
(3)利用PGP軟件對(duì)文件進(jìn)行簽名/驗(yàn)證。
【實(shí)驗(yàn)內(nèi)容】
1.?PGP基本原理
圖2.31顯示了PGP提供數(shù)字簽名和機(jī)密性的操作過(guò)程。如果在實(shí)際操作中只需要數(shù)字簽名服務(wù),則把加密和解密模塊取消即可;同樣,若只需要機(jī)密性服務(wù),則把簽名和認(rèn)證模塊取消即可。
圖2.31PGP原理
1)簽名
發(fā)送者A產(chǎn)生報(bào)文M,用單向散列算法(SHA或MD5)生成報(bào)文摘要,然后用自己的私鑰KRA,采用RSA或DSS數(shù)字簽名算法對(duì)報(bào)文摘要進(jìn)行加密,把計(jì)算結(jié)果串接在M的前面。
2)壓縮
默認(rèn)情況下,PGP在簽名之后、加密之前對(duì)報(bào)文進(jìn)行壓縮,用Z表示。此方法有利于在電子郵件傳輸和文件存儲(chǔ)時(shí)節(jié)約空間,而且由于壓縮過(guò)的報(bào)文比原始明文冗余更少,密碼分析更加困難,因此也加強(qiáng)了加密的強(qiáng)度。一般在PGP軟件中使用PKZIP算法進(jìn)行壓縮。
3)加密
發(fā)送者生成128比特的用于作為該報(bào)文會(huì)話密鑰的隨機(jī)數(shù)KS,此會(huì)話密鑰采用CAST-128、IDEA或3DES算法對(duì)報(bào)文進(jìn)行加密。然后,由于會(huì)話密鑰只被使用一次,因此要把會(huì)話密鑰和報(bào)文綁定在一起傳輸。為了保護(hù)此會(huì)話密鑰,需要使用接收者的公開(kāi)密鑰KUB,并采用RSA算法對(duì)會(huì)話密鑰進(jìn)行加密后附加到報(bào)文的前面。
4)解密
接收者收到發(fā)送者發(fā)來(lái)的報(bào)文,用自己的私鑰KRA采用RSA算法解密出會(huì)話密鑰KS,然后用會(huì)話密鑰KS來(lái)解密報(bào)文。
5)解壓縮
將解密后的報(bào)文進(jìn)行解壓縮Z-1操作,得到壓縮前的報(bào)文。
6)認(rèn)證
對(duì)解壓縮后的報(bào)文進(jìn)行處理,提取出發(fā)送者用自己的私鑰加密的報(bào)文摘要和明文,對(duì)前者用發(fā)送者的公鑰KUA來(lái)解密得到報(bào)文摘要,對(duì)后者用相同的散列算法生成新的報(bào)文摘要。兩個(gè)報(bào)文摘要相比較,如果兩者相匹配,則報(bào)文被接受。
2.?PGP軟件安裝
以發(fā)送者userA為例,接收者userB安裝相同
(1)在網(wǎng)上取得PGPDesktop32-982.exe并執(zhí)行,出現(xiàn)語(yǔ)言選擇界面,選擇“English”繼續(xù)安裝;
(2)在【LicenseAgreement】界面選擇“Iacceptthelicenseagreement”選項(xiàng),然后單擊“Next”按鈕繼續(xù)安裝;
(3)在【ReadmeInformation】界面單擊“Next”按鈕繼續(xù)安裝;
(4)在【InstallerInformation】界面單擊“Yes”按鈕重啟系統(tǒng)繼續(xù)安裝;
(5)計(jì)算機(jī)重新啟動(dòng)后在系統(tǒng)窗口右下角的工具欄里可以看到一個(gè)圖標(biāo),并出現(xiàn)【EnablingPGP】界面,因?yàn)槭堑谝淮伟惭b,所以選擇“Yes”按鈕,單擊“Next”按鈕繼續(xù)安裝;
(6)在【LicensingAssistant:EnableLicensedFunctionality】界面輸入相關(guān)信息,單擊“Next”按鈕繼續(xù)安裝;
(7)在【LicensingAssistant:EnterLicense】界面選擇License信息,本實(shí)驗(yàn)選擇“Usewithoutalicenseanddisablemostfunctionality”即安裝沒(méi)有License的簡(jiǎn)化版的PGP。單擊“下一步”按鈕繼續(xù)安裝。(如果是在PGP網(wǎng)站上填寫信息下載PGP,則網(wǎng)站會(huì)發(fā)送LicenseKey到注冊(cè)郵箱中,這時(shí)選擇“Enteryourlicensenumber”,輸入LicenseKey。如果沒(méi)有LicenseKey,則可選擇“Requestaone-time30dayEvaluationofPGPDesktop”安裝30天評(píng)估版的PGP。選擇“Purchasealicensenumbernow”則可立即購(gòu)買LicenseKey)。
(8)在【Licensing】界面中單擊“下一步”按鈕繼續(xù)安裝;
(9)在【UserType】界面中選擇“Iamanewuser”,單擊“下一步”按鈕繼續(xù)安裝;
(10)在【PGPKeyGenerationAssistant】界面單擊“下一步”按鈕創(chuàng)建新的PGP密鑰;
(11)在【NameandE-mailAssignment】界面中輸入使用者的名字和E-mail地址(本實(shí)驗(yàn)以創(chuàng)建發(fā)送者userA為例),用這個(gè)信息來(lái)標(biāo)識(shí)使用者的密鑰以使通信的另一方能夠清楚地識(shí)別使用者的公鑰。輸入完信息后,單擊“下一步”按鈕繼續(xù)安裝,出現(xiàn)【CreatePassphrase】界面,如圖2.32所示。圖2.32創(chuàng)建口令短語(yǔ)
(12)在【CreatePassphrase】界面中輸入口令短語(yǔ)。PGP在提取私鑰時(shí)要求使用者必須輸入口令短語(yǔ)才能使用私鑰進(jìn)行解密或簽名,這樣可以避免其他人隨便使用使用者的私鑰。注意密碼長(zhǎng)度至少要八個(gè)字符,最好不要是有意義的文字或數(shù)字,這樣才不容易被別人猜到。在文本框中輸入口令短語(yǔ)兩次后單擊“下一步”按鈕繼續(xù)安裝;
(13)在【CreatePGPSecurityQuestions】界面中單擊“下一步”進(jìn)入【CreateSecurityQuestion1to5】界面進(jìn)行安全問(wèn)題設(shè)定,以備遺忘密碼的時(shí)候可以通過(guò)回答安全問(wèn)題而提取密鑰。本實(shí)驗(yàn)選擇“Skip”跳過(guò)安全問(wèn)題設(shè)定繼續(xù)安裝;
(14)在【KeyGeneration
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)產(chǎn)品電商農(nóng)村電商發(fā)展手冊(cè)
- 三農(nóng)村新型城鎮(zhèn)化發(fā)展規(guī)劃綱要
- 電影行業(yè)在線選座購(gòu)票系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)方案
- 家居裝修行業(yè)智能設(shè)計(jì)與裝修管理方案
- 技改項(xiàng)目可行性報(bào)告
- 家庭太陽(yáng)能光伏發(fā)電
- 施工安全保障措施方案
- 新興文化消費(fèi)市場(chǎng)發(fā)展趨勢(shì)研究報(bào)告
- 三農(nóng)村合作社碳排放減少方案
- 乳制品行業(yè)風(fēng)味發(fā)酵乳生產(chǎn)技術(shù)研究與開(kāi)發(fā)方案
- 鸚鵡介紹課件教學(xué)課件
- 汽車檢測(cè)技術(shù)課件 任務(wù)一 認(rèn)識(shí)汽車檢測(cè)站
- 貴州省2025年初中學(xué)業(yè)水平考試英語(yǔ) 模擬試題卷(一)(含答案不含聽(tīng)力原文及聽(tīng)力音頻)
- 電力系統(tǒng)運(yùn)行維護(hù)預(yù)案
- GB/T 44561-2024石油天然氣工業(yè)常規(guī)陸上接收站液化天然氣裝卸臂的設(shè)計(jì)與測(cè)試
- 2024年國(guó)家公務(wù)員考試《行測(cè)》真題卷(副省級(jí))答案及解析
- 分子生物學(xué)教案
- 鋁板施工組織設(shè)計(jì)方案
- 一年級(jí)語(yǔ)文下冊(cè)專項(xiàng)閱讀專項(xiàng)復(fù)習(xí)課件(課時(shí))教學(xué)課件
- 天津市部分區(qū)2022-2023學(xué)年七下期中考試數(shù)學(xué)試卷(解析版)
- 統(tǒng)編版小學(xué)語(yǔ)文五年級(jí)下冊(cè)第二單元快樂(lè)讀書(shū)吧整本書(shū)閱讀課《西游記》課件
評(píng)論
0/150
提交評(píng)論