《現(xiàn)代密碼學(xué)原理與實(shí)踐》課件第6章_第1頁(yè)
《現(xiàn)代密碼學(xué)原理與實(shí)踐》課件第6章_第2頁(yè)
《現(xiàn)代密碼學(xué)原理與實(shí)踐》課件第6章_第3頁(yè)
《現(xiàn)代密碼學(xué)原理與實(shí)踐》課件第6章_第4頁(yè)
《現(xiàn)代密碼學(xué)原理與實(shí)踐》課件第6章_第5頁(yè)
已閱讀5頁(yè),還剩95頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第7章密鑰管理和密碼協(xié)議6.1密鑰管理

6.2密鑰共享(密鑰分配問(wèn)題)

6.3密碼協(xié)議

6.4零知識(shí)證明

6.5公鑰基礎(chǔ)設(shè)施(PKI)習(xí)題6

實(shí)踐練習(xí)6-1

實(shí)踐練習(xí)6-2

密鑰是現(xiàn)代密碼體系中最關(guān)鍵的一些數(shù)據(jù),對(duì)整個(gè)系統(tǒng)的安全起著至關(guān)重要的作用。在一個(gè)龐大的通信網(wǎng)絡(luò)中,存在大量不同級(jí)別不同權(quán)限的用戶,有著形形色色的密鑰需要分配和認(rèn)證,這無(wú)疑是一個(gè)非常復(fù)雜的問(wèn)題,需要有效地加以管理。本章主要討論密鑰的產(chǎn)生、密鑰的分配、密鑰共享和密碼協(xié)議等問(wèn)題。最后作為實(shí)例討論公鑰基礎(chǔ)設(shè)施PKI。6.1密鑰管理[4]

6.1.1概述

現(xiàn)代密碼體系的一個(gè)基本概念是算法可以公開(kāi),而私有密鑰則必須是保密的。不管算法多么強(qiáng)有力,一旦密鑰丟失或出錯(cuò),不但合法用戶不能提取信息,而且可能導(dǎo)致非法用戶竊取信息,甚至系統(tǒng)遭到破壞。一個(gè)安全系統(tǒng),不僅要阻止侵入者竊取密鑰,還要避免密鑰的未授權(quán)使用、有預(yù)謀的修改和其他形式的操作,并且希望當(dāng)這些不利的情況發(fā)生時(shí),系統(tǒng)應(yīng)能及時(shí)察覺(jué)。密鑰管理應(yīng)解決密鑰自產(chǎn)生到最終銷(xiāo)毀的整個(gè)過(guò)程中所涉及的各種問(wèn)題,包括產(chǎn)生、裝入、存儲(chǔ)、備份、分配、更新、吊銷(xiāo)和銷(xiāo)毀。其中最棘手的是分配和存儲(chǔ)。1.密鑰的種類(lèi)

(1)基本密鑰(BaseKey)

基本密鑰也稱(chēng)初始密鑰(PrimaryKey),由用戶自選,或由系統(tǒng)分配給用戶,在較長(zhǎng)時(shí)間內(nèi)由該用戶所專(zhuān)用,以k0表示。

(2)會(huì)話密鑰(SessionKey)

會(huì)話密鑰是兩個(gè)通信終端在一次通話時(shí)所采用的密鑰,由用戶雙方預(yù)先約定或動(dòng)態(tài)地產(chǎn)生,以k1表示。它的作用是使我們不必頻繁地更換基本密鑰,同時(shí)又能增加安全性。

(3)密鑰加密密鑰(KeyEncryptingKey)

在交換會(huì)話密鑰時(shí),需要加密傳送,用來(lái)加密會(huì)話密鑰的密鑰,就是密鑰加密密鑰,用ke表示。一般各終端各有一把相互不同的ke與主機(jī)交換會(huì)話密鑰,而主機(jī)則不僅需要與各終端交換會(huì)話密鑰,還要與其他主機(jī)之間交換密鑰。(4)主機(jī)主密鑰(HostMasterKey)

主機(jī)主密鑰是對(duì)密鑰加密密鑰進(jìn)行加密的密鑰,用于主機(jī)給各用戶分配ke,用km表示。其他還有一些特殊用途的密鑰,如用戶選擇密鑰(CustomOptionKey)、族密鑰(FamilyKey)、算法更新密鑰(AlgorithmChangingKey)等。

2.密鑰的產(chǎn)生

靠人工產(chǎn)生和管理密鑰的方法已被時(shí)代所淘汰,目前已有多種密鑰產(chǎn)生器為大型系統(tǒng)提供各類(lèi)密鑰。主機(jī)主密鑰通常用諸如擲硬幣、骰子或從隨機(jī)數(shù)表中選數(shù)等隨機(jī)方式產(chǎn)生,以保證密鑰的隨機(jī)性,避免可預(yù)測(cè)性。

密鑰加密密鑰可由機(jī)器自動(dòng)產(chǎn)生,見(jiàn)圖6.1。常用的密鑰產(chǎn)生器有隨機(jī)比特發(fā)生器(如噪聲二極管振蕩器)或偽隨機(jī)數(shù)發(fā)生器,也可由主密鑰控制下的某種算法產(chǎn)生。會(huì)話密鑰可通過(guò)某種加密算法動(dòng)態(tài)地產(chǎn)生,如用初始密鑰控制下的非線性移位寄存器或主密鑰控制下的DES算法產(chǎn)生。初始密鑰的產(chǎn)生與主機(jī)主密鑰或密鑰加密密鑰產(chǎn)生的方法相同。實(shí)踐表明,增加密鑰長(zhǎng)度固然很必要,然而更重要的是它的產(chǎn)生算法和選擇方法。有的人喜歡使用一些單詞為密鑰,為的是容易記憶,但是采用字典攻擊常能奏效,按字典上的詞匯一一進(jìn)行嘗試,這樣25%的密鑰可被猜到。因此我們建議:(1)采用真正隨機(jī)等概的序列為密鑰,如擲硬幣的結(jié)果。

(2)避免使用特定算法的弱密鑰。

(3)采用揉搓和雜湊技術(shù),將易記的詞組句子經(jīng)過(guò)單向函數(shù)處理變成偽隨機(jī)數(shù)串。

3.密鑰的更換

密鑰使用時(shí)間越長(zhǎng),泄露的機(jī)會(huì)就越大。所以密鑰,特別是會(huì)話密鑰要經(jīng)常更換,使對(duì)手無(wú)法捉摸或難以搜索。密鑰被更換的頻率依據(jù)如下幾點(diǎn)確定:

(1)被保護(hù)數(shù)據(jù)的敏感性。

(2)被保護(hù)數(shù)據(jù)的有效期。

(3)密碼算法的強(qiáng)度。圖6.1數(shù)據(jù)加密密鑰的產(chǎn)生4.密鑰的存儲(chǔ)密鑰的存儲(chǔ)必須保障密鑰的機(jī)密性、認(rèn)證性和完整性。應(yīng)防止密鑰泄露和被篡改。比較好的存儲(chǔ)方式是將密鑰存于磁條卡,或嵌入ROM芯片中,這樣用戶在使用時(shí)自己都不知道密鑰是什么。還可將密鑰分為兩半,卡上和終端機(jī)中各一半。另外一個(gè)辦法就是對(duì)密鑰加密,使密鑰永遠(yuǎn)不以未加密的方式出現(xiàn)在設(shè)備之外。

5.密鑰的銷(xiāo)毀不用的舊密鑰必須銷(xiāo)毀,否則可能造成危害。別人可能用它讀取曾用它加密的文件,分析加密體系。對(duì)于寫(xiě)在紙上的密鑰要用碎紙機(jī)粉碎,對(duì)于存在于介質(zhì)上的密鑰,要多次沖寫(xiě)。6.密鑰的吊銷(xiāo)在密鑰使用期內(nèi),發(fā)生丟失或其他不安全事件時(shí),就需要從所使用的密鑰集合中將其除去,并且通知系統(tǒng)防范。證書(shū)形式的公鑰,可通過(guò)注銷(xiāo)公鑰證書(shū)的方式吊銷(xiāo)。6.1.2密鑰分配協(xié)議

密鑰分配(KeyDistribution)指的是這樣一種機(jī)制:系統(tǒng)中某一個(gè)成員選擇了一個(gè)秘密密鑰,系統(tǒng)有能力將它安全地傳送給另一個(gè)成員;設(shè)想有一個(gè)n用戶的不安全網(wǎng)絡(luò),當(dāng)某兩位用戶想保密通信時(shí),先向可信任中心TA提出申請(qǐng),TA為他們選擇一個(gè)會(huì)話密鑰,通過(guò)安全信道(不在網(wǎng)絡(luò)上進(jìn)行)傳給他們;這樣就需要n條信道;若系統(tǒng)中兩兩都要通信,則每人須保存(n-1)個(gè)密鑰,而TA則須保存n(n-1)個(gè)密鑰;顯然當(dāng)n較大時(shí),代價(jià)是十分昂貴的。這稱(chēng)為n2問(wèn)題。1.對(duì)稱(chēng)系統(tǒng)的密鑰分配

對(duì)稱(chēng)系統(tǒng)指通信雙方使用同一把密鑰的保密系統(tǒng)。這種系統(tǒng)又有在線和離線之分。前面所述的有n個(gè)安全通道的系統(tǒng)就是離線系統(tǒng),而在線系統(tǒng)則不必保存那么多密鑰。想利用網(wǎng)絡(luò)通信的用戶臨時(shí)向TA申請(qǐng)一個(gè)會(huì)話密鑰,每次都可以不同,以確保密鑰的新鮮性(KeyFreshness),這是TA的義務(wù)。

Kerberos協(xié)議是一個(gè)基于對(duì)稱(chēng)密鑰的流行的密鑰服務(wù)系統(tǒng)。在此系統(tǒng)中,每個(gè)用戶U和可信任中心(對(duì)稱(chēng)密鑰分發(fā)中心)共享一個(gè)DES密鑰。密鑰交換協(xié)議如下:

(1)用戶U為了與用戶V通信,先向TA申請(qǐng)一個(gè)會(huì)話密鑰。

(2)可信任中心TA隨機(jī)地選取一個(gè)會(huì)話密鑰K,一個(gè)時(shí)戳T和生存期L。(3)可信任中心用自己與U的密鑰kU加密ID(V)等信息:

m1=EU(K,ID(V),T,L)(6-1)再用自己與V的密鑰kV加密ID(U)等信息:

m2=EV(K,ID(U),T,L)(6-2)

最后將m1和m2發(fā)送給U。這里,ID(U)是關(guān)于U的某些識(shí)別信息。

(4)用戶U首先解密m1以獲得K、ID(U)、T和L,接著U就可以通過(guò)T和L來(lái)驗(yàn)證密鑰K是否在有效期內(nèi),然后用會(huì)話密鑰K加密:

m3=EK(ID(U),T)(6-3)

將m3和m2一起發(fā)給V。(5)用戶V首先解密m2以獲得ID(U)、K、T和L,然后用K解密m3獲得ID(U)和T。通過(guò)判斷兩個(gè)ID(U)是否一致,從而驗(yàn)證了會(huì)話密鑰的正確性。此后用K計(jì)算:

m4=EK(T+1)(6-4)并發(fā)給U。

(6)用戶U用K解密m4,以驗(yàn)證T+1的正確性,表明V已收到K。以上協(xié)議中,m1和m2用來(lái)提供會(huì)話密鑰在傳輸中的秘密性;m3和m4用來(lái)使U和V確信收到了同一把會(huì)話密鑰;而T和L用來(lái)防止主動(dòng)攻擊者用存儲(chǔ)的舊消息進(jìn)行重復(fù)攻擊。

Kerberos協(xié)議的缺點(diǎn)之一是系統(tǒng)必須統(tǒng)一時(shí)鐘,另一個(gè)缺點(diǎn)是仍不能解決對(duì)稱(chēng)密鑰普遍存在的n2問(wèn)題。2.非對(duì)稱(chēng)系統(tǒng)的密鑰分配

1)Blom方案①公開(kāi)一個(gè)素?cái)?shù)p,每個(gè)用戶公開(kāi)一個(gè)元素rU∈Zp,各用戶的rU必須互不相同。②可信任中心隨機(jī)選擇三個(gè)隨機(jī)元素a,b,c∈Zp(未必不同),構(gòu)成多項(xiàng)式:

f(x,y)=(a+b(x+y)+cxy)modp (6-5)顯然,它對(duì)于x和y對(duì)稱(chēng):

f(x,y)=f(y,x) (6-6)③對(duì)用戶U,可信任中心計(jì)算:

aU=a+brU,bU=b+crU(6-7)由此構(gòu)造函數(shù):

gU(x)=f(x,rU)=(a+bx+brU+crUx)modp=(aU+bUx)modp(6-8)并用安全信道將此線性函數(shù)傳給用戶U。同樣,每個(gè)用戶都從可信任中心獲得自己的gi(x)。④如果U想與V通信,U計(jì)算KUV=gU(rV),而V計(jì)算KVU=gV(rU),不難得知:

KUV=KVU=f(rU,rV)=(a+brU)+(b+crU)rVmodp=a+b(rU+rV)+crUrVmodp(6-9)于是U和V便有共同的密鑰,是各自通過(guò)計(jì)算得到的。問(wèn)題是其他用戶,比如W能得知KUV嗎?假設(shè)W已經(jīng)有了來(lái)自可信任中心的函數(shù):

gW(x)=(aW+bWx)modp(6-10)他想要推知KUV。

現(xiàn)在,rU和rV是公開(kāi)的,而a、b、c是保密的。顯然,W由方程組:(6-11)是無(wú)法確定三個(gè)變量a、b、c的。他得不到a、b、c也就求不出KUV。然而如果任何兩個(gè)用戶合作,卻可以唯一地確定a、b、c。因?yàn)橛陕?lián)立方程:(6-12)就可以確定a、b、c,從而求出任何一個(gè)用戶的密鑰。此方案的安全性如此脆弱是因?yàn)檫@只是規(guī)模k=1的Blom方案?,F(xiàn)將協(xié)議第②步做如下改動(dòng),信任中心即可使用如下形式的多項(xiàng)式:(6-13)這里aij∈Zp(0≤i≤k,0≤j≤k),并對(duì)所有的i和j,有aij=aji。這樣便構(gòu)成規(guī)模為k(≠1)的Blom方案,此時(shí),任何少于k個(gè)的用戶合作,均無(wú)法破譯系統(tǒng)密鑰,只有k+1個(gè)用戶合作才可以破譯密鑰。2)Diffie-Hellman密鑰預(yù)分配方案①公開(kāi)一個(gè)素?cái)?shù)p和一個(gè)本原元素α∈。②ID(U)表示網(wǎng)絡(luò)中用戶U的某些信息,每個(gè)用戶有一個(gè)秘密指數(shù)aU和一個(gè)相應(yīng)的公鑰:

(6-14)③可信任中心有一個(gè)簽名方案SigTA,當(dāng)用戶U入網(wǎng)時(shí),可信任中心給U發(fā)一個(gè)簽名的證書(shū):

C(U)={ID(U),bU,SigTA(ID(U),bU)}(6-15)

可信任中心無(wú)須知道aU的值,證書(shū)可以放在公開(kāi)的數(shù)據(jù)庫(kù)中,也可以由U自己存儲(chǔ)。④V使用自己的私鑰aV和從U的證書(shū)中獲得的公鑰bU計(jì)算:

(6-16)⑤U使用自己的私鑰aU及從V的證書(shū)中獲得的公鑰bV計(jì)算:

(6-17)

于是,通過(guò)不對(duì)稱(chēng)密鑰體系,使U和V得到了相同的密鑰。算法的安全性是基于離散對(duì)數(shù)的復(fù)雜性的。6.2密鑰共享(密鑰分配問(wèn)題)[2]

6.2.1問(wèn)題的提出

有一項(xiàng)絕密文件鎖在保險(xiǎn)柜里,為安全起見(jiàn),規(guī)定課題組6人中至少4人在場(chǎng)方可打開(kāi)柜子,同時(shí)也可避免萬(wàn)一某一位丟失鑰匙而造成嚴(yán)重事故。究竟應(yīng)當(dāng)怎樣配備鎖子和鑰匙呢?不妨這樣考慮鎖子的數(shù)量:6人中3人到場(chǎng)的情況是=20種,這時(shí)至少還有一把鎖不能打開(kāi),最不利的情況是這20種組合中的不能打開(kāi)的鎖是各不相同的,所以至少應(yīng)有20把鎖。然后考慮鑰匙的數(shù)量:先任意指定1人必須在場(chǎng),6人當(dāng)中的4人在場(chǎng)等價(jià)于非指定的5人中3人在場(chǎng),這樣的情況是=10種,這10種組合中每種都尚有一把鎖必須等指定的那個(gè)人到場(chǎng)才能打開(kāi)。而最不利的情況是10種組合中的最后一把鎖是各不相同的,因此指定的人至少應(yīng)當(dāng)有10把不同的鑰匙去一一配合這10把不同的鎖。無(wú)論先指定誰(shuí)都一樣。由此可見(jiàn),每個(gè)人至少應(yīng)持有10把不同的鑰匙。6個(gè)人共應(yīng)有60把鑰匙,平均每把鎖配有3把鑰匙。這60把鑰匙在6個(gè)人中被恰當(dāng)?shù)胤峙?。把這個(gè)問(wèn)題用到密鑰分享方面,就相當(dāng)于取一個(gè)20位的數(shù)字串,分給6個(gè)人保管,每人保管其中不相同的10位。任意3人組合,一定有一位并且只有一位數(shù)字是3個(gè)人都不掌握的,所以3個(gè)人不能得到完整的密鑰。第四個(gè)人如果參與,雖然他與原來(lái)3個(gè)人中的任何兩人可構(gòu)成三種3人組合,但各組合都仍然各缺一個(gè)數(shù)位且只缺一位。設(shè)缺的分別是第i、j、k位,而原來(lái)的3人組合所空缺的位是第l位,因?yàn)椴煌?人組合的缺位是不同的,i、j、k都不是l,所以l一定掌握在第四個(gè)人手里,4人組合后,l位必然不空缺,這就保證了4人組合必然得到完整的密鑰。例如,密鑰是(a1a2a3…a19a20),且:

A1掌握(a11a12a13a14a15a16a17a18a19a20);

A2掌握(a5a6a7a8a9a10a17a18a19a20)

A3掌握(a2a3a4a8a9a10a14a15a16a20);

A4掌握(a1a3a4a6a7a10a12a13a16a19)

A5掌握(a1a2a4a5a7a8a11a13a15a18);

A6掌握(a1a2a3a5a6a8a11a12a14a17)則第一種3人組合A1A2A3缺少a1位,第二種3人組合A1A2A4缺少a2位,第i種3人組合缺少ai位,直到第二十種3人組合A4A5A6缺少a20位。共有=20種不同的3人組合,每種都缺一個(gè)不同的位。

普遍地說(shuō),如果系統(tǒng)的安全性最終取決于一個(gè)主密鑰,若這個(gè)主密鑰偶然或蓄意地被暴露,整個(gè)系統(tǒng)就會(huì)受到致命攻擊;若主密鑰丟失或損壞,則系統(tǒng)中所有信息也就用不成了。在這種情況下就要使用密鑰共享(SecretKeyShareScheme)方案:主密鑰k分成了n個(gè)子密鑰k1k2…kn,由n個(gè)人分別保管,要求:(1)已知其中任意t個(gè)子密鑰(t<n),容易算出k。

(2)已知任意t-1或更少的子密鑰,則不能算出k。這種方案叫做(t,n)門(mén)限(Threshold)密鑰共享方案。6.2.2Shamir門(mén)限方案

1979年,Shamir基于拉格朗日內(nèi)插多項(xiàng)式算法,提出了一個(gè)(t,n)門(mén)限方案。設(shè)GF(q)是一有限域,共享密鑰k∈GF(q)??尚湃沃行慕on(n<q)個(gè)共享者Ai(1≤i≤n)分配共享密鑰的過(guò)程如下:

(1)可信任中心隨機(jī)選擇一個(gè)t-1次多項(xiàng)式:

h(x)=at-1xt-1+at-2xt-2+…+a2x2+a1x+a0(6-18)

其中,h(x)∈GF(q)[x],a0=k就是主密鑰。

(2)可信任中心在GF(q)中選擇n個(gè)非零的、互不相同的元素x1,x2,…,xn,分別計(jì)算:

yi=h(xi)i=1,2,…,n(6-19)

也就是找出曲線h(x)上的n個(gè)點(diǎn)。(3)把第i個(gè)點(diǎn),即子密鑰(xi,yi)分配給第i個(gè)共享者Ai,其中xi是公開(kāi)的,yi是屬于Ai的私有子密鑰,i=1,2,…,n。由于h(x)是t-1次曲線,因此如果知道了t個(gè)點(diǎn)(xs,ys)(1≤s≤t),曲線h(x)就可以按拉格朗日插值公式表達(dá)出來(lái):(6-20)而h(x)在x=0點(diǎn)的值就是密鑰:(6-21)式中:(6-22)由于各xi的值是公開(kāi)的,因此bs可以預(yù)先算出來(lái),以加快運(yùn)算速度。

【例1】由拉格朗日多項(xiàng)式h(x)=(7x2+2x+11)mod19設(shè)計(jì)一個(gè)(3,5)門(mén)限方案。若選擇x1=1,x2=2,x3=3,x4=4,x5=5,試為這5個(gè)用戶分配密鑰,并分析重構(gòu)密鑰k的過(guò)程。

解:根據(jù)已知的xi,可算出:

y1=h(1)=1,y2=h(2)=5,y3=h(3)=4,y4=h(4)=17,y5=h(5)=6

這樣就可以把這5對(duì)子密鑰分配給5個(gè)用戶保管。當(dāng)其中任意3個(gè)用戶到場(chǎng),比如已知3個(gè)子密鑰(x2,y2)、(x3,y3)和(x5,y5)時(shí),則可以重構(gòu)h(x)。式(6-20)的三項(xiàng)分別為所以所以k=11。6.2.3AsmuthBloom門(mén)限方案

1980年,Asmush和Bloom基于中國(guó)剩余定理提出了一個(gè)門(mén)限方案。在這個(gè)方案中,欲共享的是與密鑰相聯(lián)系的一個(gè)同余類(lèi)。令p,d1,d2,…,dn是滿足下列條件的一組正整數(shù):

(1)p>k(k是欲共享的密鑰)。

(2)d1<d2<…<dn。

(3)對(duì)所有的i,有g(shù)cd(p,di)=1;對(duì)所有的i≠j,有g(shù)cd(di,dj)=1。

(4)d1d2…dt>pdndn-1…dn-t+2,于是,若M=d1d2…dt,則大于任意t-1個(gè)di之積。(因它大于最大的t-1個(gè)di之積。)

令γ是區(qū)間中的一個(gè)隨機(jī)整數(shù),表示不大于的最大整數(shù)。p和γ,計(jì)算k′=k+γp,則k′∈[0,M-1]。將k′分為n個(gè)共享密鑰:ki=k′moddi(i=1,2…n)。將ki分配給用戶i。為了恢復(fù)k′,只需求解中國(guó)剩余定理的聯(lián)立方程組即可(6-23)t個(gè)方程聯(lián)立,便可得到唯一解k′,于是密鑰k=k′-γp,即k=k′modp。若只有t-1個(gè)方程,則有無(wú)數(shù)多個(gè)解。有了(4),就制約了n與t之間并不獨(dú)立。

【例2】密鑰k=5,要分配給n=3個(gè)終端,要求若少于t=2個(gè)終端就無(wú)法得到k。設(shè)計(jì)一個(gè)Asmuth-Bloom方案。

解:取常數(shù)p=7(>k),并找3個(gè)與p互素且自相互素的數(shù),此處找d1=11,d2=12,d3=17,且滿足:

d1d2=11×12=132>pd3=7×17=119任意選γ=14,滿足:于是有

k′=k+γp=5+14×7=103在[0,131]區(qū)間內(nèi)求出子密鑰,分配給第一個(gè)終端:

k1=103mod11=4分配給第二個(gè)終端和第三個(gè)終端的子密鑰是:

k2=103mod12=7

k3=103mod17=1現(xiàn)在,若有兩個(gè)終端k1=4,k2=7在場(chǎng),則k′滿足同余方程:

解同余方程的辦法是先求M=d1d2=11×12=132,由此:則由

y1M1=1mod11

可求出y1=1;由y2M2=1mod12可求出y2=11。所以k′=k1M1y1+k2M2y2=4×12×1+7×11×11=895mod132=103最后k=k′-γp=103-14×7=103-98=5【例3】數(shù)據(jù)庫(kù)可簡(jiǎn)單地看做是記錄的集合,記錄由字段構(gòu)成。若對(duì)記錄加密,而個(gè)別字段又可獨(dú)立解密而不涉及其他字段的安全性,則可采取共享密鑰方案。

(1)請(qǐng)為此設(shè)計(jì)一個(gè)AsmuthBloom密鑰方案。

(2)如一條記錄R有4字段:f1=5,f2=7,f3=8,f4=12,試根據(jù)(1)中方案分析加密、解密過(guò)程。

解:(1)設(shè)記錄有n個(gè)字段f1f2…

fn,各個(gè)字段都是0,1符號(hào)串,可看做是一個(gè)二進(jìn)制數(shù)。選n個(gè)不同的素?cái)?shù)p1p2…pn使pi>fi(i=1,2,…,n),整個(gè)記錄的密文滿足同余方程組:

C=fi

modpi

i=1,2,…,n(6-24)

令(6-25)若yiMi=1modpii=1,2,…,n(6-26)則令

ei=Miyii=1,2,…,n(6-27)

為n個(gè)共享子密鑰。當(dāng)n個(gè)ei都齊全時(shí),可求出整條記錄的密文為

0≤C<M(6-28)

若想只檢索C中第i個(gè)字段,則可由C=fimodpi求出fi。(2)如一條記錄R有4個(gè)字段,分別為f1=5,f2=7,f3=8,f4=12,選4個(gè)素?cái)?shù),分別為p1=7,p2=11,p3=13,p4=17,滿足pi>fi。若C為密文,則同余方程是:根據(jù)中國(guó)剩余定理,有

M=7×11×13×17=17017而根據(jù)模逆元關(guān)系:

yiMi=1modpi

不難求出:

y1=4,y2=8,y3=3,y4=8于是4個(gè)寫(xiě)入子密鑰為

e1=y1M1=2431×4=9724

e2=y2M2=1547×8=12376

e3=y3M3=1309×3=3927

e4=y4M4=1001×8=8008所以若只對(duì)f2解密,只要用讀出子密鑰p2=11即可:

f2=7509mod11=7若只對(duì)解密,只要用讀出子密鑰即可:6.3密碼協(xié)議隨著網(wǎng)絡(luò)應(yīng)用普及到各個(gè)領(lǐng)域,人們?cè)絹?lái)越清楚地認(rèn)識(shí)到協(xié)議在網(wǎng)絡(luò)環(huán)境下的重要性。協(xié)議是雙方(或多方)為了共同完成某項(xiàng)任務(wù)而預(yù)先設(shè)定的一系列步驟,像程序一樣按順序執(zhí)行,包括當(dāng)遇到不同情況時(shí)的處理方法和分支路線。協(xié)議是具體的,靠通信系統(tǒng)的硬件與軟件來(lái)實(shí)現(xiàn),不管是友善雙方還是敵對(duì)雙方,為了完成通信過(guò)程,都必須遵守協(xié)議。協(xié)議是系統(tǒng)的靈魂,系統(tǒng)所有軟、硬件設(shè)備都是按照協(xié)議的步驟來(lái)工作的,因此協(xié)議應(yīng)當(dāng)先于系統(tǒng)軟、硬件進(jìn)行設(shè)計(jì)。密碼協(xié)議是設(shè)計(jì)保密體制的核心,協(xié)議首先應(yīng)當(dāng)邏輯嚴(yán)密,科學(xué)合理,必須盡量周密、完備,一旦考慮不周,出現(xiàn)疏漏,就會(huì)留下安全隱患,成為攻擊者成功的突破口。其次,也要考慮實(shí)際可行性與方便簡(jiǎn)潔性,以節(jié)省成本。本節(jié)從分析一些已知協(xié)議的漏洞入手,提出若干具有實(shí)用價(jià)值和理論意義的協(xié)議,供參考。6.3.1RSA協(xié)議用RSA公鑰密碼進(jìn)行可認(rèn)證的保密通信,協(xié)議如下:

(1)A先用自己的私鑰對(duì)信息進(jìn)行加密,得s=DA(m)。

(2)A再用B的公鑰對(duì)s進(jìn)行加密,得c=EB(s)=EB(DA(m))。

(3)A將得到的密文c發(fā)給收信人B。

(4)B先用自己的私鑰解密密文DB(c)=DB(EB(s))=s=DA(m)。(5)B再用A的公鑰對(duì)s解密,得EA(s)=EA(DA(m))=m。

為了使A了解B是否完整地收到了他發(fā)的消息,協(xié)議為

(1)A發(fā)送給B密文c1,c1=EB(DA(m))。

(2)B收到密文后,作EA(DB(c1))=m運(yùn)算。

(3)B送回A密文c2,c2=EA(DB(m))。

(4)A收到c2后,作EB(DA(c2))=運(yùn)算。

(5)A比較和m,若二者相同,則表明B確已完整地收到m。其實(shí)這個(gè)協(xié)議是不安全的,比如F截獲了A送給B的密文c1=EB(DA(m))后,將c1送給B,并稱(chēng)是F發(fā)給B的,如果B盲目地按協(xié)議執(zhí)行第(2)步,就得到

EF(DB(c1))=EF(DB(EB(DA(m))))=EF(DA(m))=xx實(shí)際是亂碼,但是如果B不假思索地按習(xí)慣再執(zhí)行第(3)步,就得到

EF(DB(x))=EFDB(EFDA(m))=y

并將它送回F,則F只用自己的私鑰和A、B的公鑰就可得到A發(fā)給B的明文:

EADFEBDF(y)=EADFEBDF(EFDBEFDA(m))=m

因此,B收到密文后,一定不要盲目地進(jìn)行“回執(zhí)”,而是要觀察解密的結(jié)果是否有意義,閱讀明文后再?zèng)Q定是否“回執(zhí)”,這樣就可避免F的攻擊。6.3.2沙米爾(Shamir)協(xié)議

用Shamir協(xié)議進(jìn)行保密通信的協(xié)議如下:

(1)A先用自己的加密密鑰對(duì)明文進(jìn)行加密,得EA(m),并將它發(fā)送給B。

(2)B用自己的加密密鑰再加一次密,得EB(EA(m)),并發(fā)回給A。

(3)如果二次加密是可以交換的,即EB(EA(m))=EA(EB(m)),則A可將自己的加密解開(kāi),即DA(EA(EB(m)))=EB(m),并將結(jié)果發(fā)回給B。

(4)B用自己的解密密鑰解出明文,即DB(EB(m))=m。

在此協(xié)議中,雙方都不需要公開(kāi)或交換任何密鑰,即使加、解密使用的是同一把對(duì)稱(chēng)密鑰也行。就如同A把東西放進(jìn)箱子后上了鎖,B再上另一把鎖,然后A打開(kāi)自己的鎖,B再打開(kāi)自己的鎖。顯然此系統(tǒng)只能用于保密,不能進(jìn)行認(rèn)證。而且要求二次加密的可交換性,這并非總能成立的。指數(shù)運(yùn)算方案是可交換的,因而也可用于Shamir協(xié)議:

取p為大素?cái)?shù),φ(p)=p-1,各用戶選與p互素的e,并計(jì)算其逆元ed=1modφ(p),(e,d)均由用戶自己保管,這樣就可用Shamir協(xié)議進(jìn)行通信了。

若一次一密體系是可交換的,則用于沙米爾協(xié)議上會(huì)得到不安全的結(jié)果。設(shè)A的密鑰是:

kA=k1k2…kn…

B的密鑰是:

kB=k1′k2′…kn′…(各位都是0或1)明文是:m=m1m2…mn…

于是密文為式中:A將c1發(fā)給B,B做如下運(yùn)算:B將c2發(fā)回A,A將c2與k按位模2加:攻擊者可將c1、c2、c3作按位模2加,即可得到m:

因自己與自己的模2加必為0,所以上式的結(jié)果為m。這表明簡(jiǎn)單的模2加用于Shamir協(xié)議是不安全的。6.3.3不可否認(rèn)簽名協(xié)議不可否認(rèn)簽名在驗(yàn)證時(shí)要求發(fā)信人必須參與,A不參加驗(yàn)證時(shí),B便不能向第三者證明簽名的正確性。在第5章中,我們已經(jīng)給出了一個(gè)不可否認(rèn)簽名的協(xié)議,現(xiàn)在再展示一個(gè)與之算法不同的不可否認(rèn)簽名協(xié)議。前提:p為大素?cái)?shù),g是本原元素,p、g公開(kāi),A的秘密私鑰為x。公開(kāi)密鑰為y=gxmodp,明文為m,簽名為z=mxmodp。

B收到A發(fā)送來(lái)的明文m和簽名z后,驗(yàn)證z是A對(duì)m的簽名的步驟為

(1)B選擇兩個(gè)小于p的隨機(jī)數(shù)a和b,計(jì)算:

c=magbmodp(6-29)并發(fā)給A。(2)A選擇小于p的隨機(jī)數(shù)q,計(jì)算:

s1=cgqmodp和s2=(cgq)xmodp(6-30)并將s1、s2發(fā)送回B。

(3)B得到s1、s2后,將a、b送給A以證明步驟(1)不曾欺騙A。(4)A將q送給B,B驗(yàn)證:

s1=cgq

modp和s2=yb+qzamodp(6-31)

是否成立,若成立則簽名有效,否則無(wú)效。實(shí)際上有:

s2=yb+qza=(gx)b+q(mx)a=(gbma)x(gq)x=(cgq)xmodp

6.3.4電子投票協(xié)議設(shè)計(jì)電子投票系統(tǒng)時(shí)應(yīng)考慮到:①只有合法的投票人才可以投票(身份認(rèn)證)。②投的票必須保密。③每人只投一次。④每張有效票應(yīng)確保被統(tǒng)計(jì)在結(jié)果中。每一投票人送交秘密身份數(shù)據(jù)及選票后,應(yīng)有所顯示,讓投票人放心,同時(shí)又不能暴露這是他的選擇。協(xié)議假定有兩個(gè)機(jī)構(gòu)L和C,L負(fù)責(zé)審查身份,C負(fù)責(zé)統(tǒng)計(jì)結(jié)果。L送給C所有投票人的身份數(shù),此外別無(wú)聯(lián)系。協(xié)議如下:

(1)A發(fā)給L一條“我是A”的信息。(2)L進(jìn)行審查,若A是合法投票人,則L送給A一個(gè)身份數(shù)I(A),并將A從投票人集合中刪去,之后L送給C身份數(shù)表格N,它只包含A的身份數(shù)I(A),不含A的真實(shí)信息。若A不是合法的投票人(原集合中沒(méi)有),則給A送出“拒絕”信息。

(3)A自己選擇一個(gè)秘密身份數(shù)s(A),將三元組{I(A),s(A),v(A)}送給C,其中v(A)是A投的票,而s(A)用于將來(lái)公布結(jié)果時(shí)代替I(A),為的是不暴露A。

(4)C從身份表N中找是否有I(A),若有,則從N中取出I(A)加入到投v(A)票的集合中去。若N中無(wú)I(A),則什么也不做。

(5)C計(jì)算并通過(guò)網(wǎng)絡(luò)公布結(jié)果,包括公布每個(gè)人的秘密身份數(shù)s(A)和他所投的票。本協(xié)議能實(shí)現(xiàn)電子投票協(xié)議應(yīng)具備的①~④條要求,但不能抵御L和C聯(lián)合作弊。6.4零知識(shí)證明

近代密鑰學(xué)中一個(gè)十分引人入勝的問(wèn)題是零知識(shí)證明。上節(jié)其實(shí)也已經(jīng)提到。如果P掌握了一些機(jī)密信息,它需要向V證明他確實(shí)掌握了這個(gè)機(jī)密,但證明過(guò)程又不能暴露任何信息,該怎么辦?比如P能分解一個(gè)大數(shù)n,他找到了因子p和q,如果他直接向V公開(kāi)p和q,固然可以證明他所言的真實(shí)性,然而V也就知道了n=pq的秘密。這就不是零知識(shí)證明。對(duì)此問(wèn)題,可以設(shè)計(jì)如下的零知識(shí)證明協(xié)議:

(1)P請(qǐng)V隨機(jī)選擇一個(gè)大數(shù)x,計(jì)算出x4modn,將結(jié)果告訴P。(2)因?yàn)镻掌握n=pq,就能夠算出(x2)2modn的結(jié)果x2,將結(jié)果告訴V。(3)V知道求x2=modn是二次同余問(wèn)題,其難度等價(jià)于分解n,P若不掌握p和q是寫(xiě)不出x2的。于是V相信P確實(shí)掌握p和q。在這個(gè)過(guò)程中,P只是告訴Vx2是多少,這對(duì)于分解n一點(diǎn)用途也沒(méi)有,因?yàn)閂原來(lái)就知道x。除了大數(shù)分解的零知識(shí)證明外,存在許多零知識(shí)證明問(wèn)題,如迷宮路線問(wèn)題、三色地圖問(wèn)題、子群成員問(wèn)題等。根據(jù)問(wèn)題中隨機(jī)變量的性質(zhì),零知識(shí)證明可分為完全零知識(shí)證明、計(jì)算零知識(shí)證明和統(tǒng)計(jì)零知識(shí)證明;再根據(jù)驗(yàn)證者是否誠(chéng)實(shí),又可分為誠(chéng)實(shí)驗(yàn)證者零知識(shí)證明和不誠(chéng)實(shí)驗(yàn)證者零知識(shí)證明。6.4.1身份證明問(wèn)題

智能卡、信用卡、計(jì)算機(jī)的口令等身份鑒別技術(shù),都要求證明者P直接或間接地顯示他的身份I(P),于是,不誠(chéng)實(shí)的驗(yàn)證者V就有可能從中獲取P的I(P)信息,進(jìn)而復(fù)制或冒充P從事非法勾當(dāng)。因此P需要以零知識(shí)方式證明自己的身份,使V相信它是P,同時(shí)又不暴露1比特信息。設(shè)I(P)包含有關(guān)P的身份的k個(gè)保密數(shù)c1c2…ck(1<ci<p),為了使V相信P是I(P)的主人,但又不能告訴他c1c2…ck,其辦法是構(gòu)造另外k個(gè)數(shù)d1d2…dk(1≤di<p),它們滿足(6-32)將n和d1d2…dk告知驗(yàn)證者V或加以公開(kāi)。

協(xié)議首先假定存在一可信賴(lài)機(jī)構(gòu),它的職責(zé)在于公布模數(shù)n,n=pq,而保密p和q。這里p和q都是模4余3的大素?cái)?shù)。零知識(shí)證明協(xié)議如下:

(1)P選一隨機(jī)數(shù)r,計(jì)算±r2modn,P取其中之一告訴V,稱(chēng)之為x。

(2)V從{1,2,…,k}中選一個(gè)子集S告訴P。

(3)P計(jì)算:(6-33)并把y告訴V。(4)V計(jì)算:(6-34)后,驗(yàn)證:

x=±y2Tdmodn(6-35)

是否成立,若等號(hào)成立,則可進(jìn)行新的一輪驗(yàn)證或停止,否則予以拒絕。實(shí)際上,不難推知:例如,可信賴(lài)機(jī)構(gòu)公開(kāi)宣布n=2773。P的機(jī)密身份I(P)包含:

c1=1901,c2=2114,c3=1509,c4=1044,c5=2501,c6=119

P公開(kāi)的數(shù)據(jù)是(由=±1modn):

d1=81,d2=2678,d3=1207,

4=1183,d5=2681,d6=2595P假設(shè)選擇r=1221,計(jì)算:

-r2≡-1490841≡1033mod2773令x=1033,P將x告訴V。V選擇子集{1,4,5,6}告訴P。P計(jì)算:

Tc=1901×1044×2501×119=96mod2773y=rTcmodn=1221×96mod2773=117216mod2773=750V收到y(tǒng)后,計(jì)算:

Td=81×1183×2681×2595mod2773=1116mod2773

y2Td=7502×1116=627750000mod2773=1033mod2773驗(yàn)證得知y2Td=1033=x,從而通過(guò)。6.4.2多方遠(yuǎn)程計(jì)算問(wèn)題

A想求出能使gy=xmodp成立的y,苦于無(wú)力計(jì)算離散對(duì)數(shù)y=logg

x,求助于B,因?yàn)锽有足夠大的計(jì)算能力。然而A卻不想暴露x,為此制定協(xié)議如下:

(1)A選擇隨機(jī)數(shù)γ<p,計(jì)算

ξ=gγxmodp(用gγ掩蓋了x)(6-36)(2)A請(qǐng)求B算出η,使

gη=ξmodp(即η=loggξmodp)(6-37)(3)B將計(jì)算結(jié)果η告訴A后,由于

gη=gγx=gγgy=g(γ+y)modp(6-38)

因此A很容易算出:

y=(η-γ)modp(6-39)6.5公鑰基礎(chǔ)設(shè)施(PKI)

6.5.1數(shù)字證書(shū)和認(rèn)證中心

1.數(shù)字證書(shū)[24,25,26]

公鑰密碼技術(shù)不僅為信息安全提供了一種強(qiáng)大的加密機(jī)制,而且還提供了一種識(shí)別和認(rèn)證個(gè)體的方式。然而在浩瀚如海的網(wǎng)絡(luò)世界里,大多數(shù)人并無(wú)能力生成自己的公、私密鑰對(duì)。他們從何處獲取密鑰?互不相識(shí)的個(gè)體又從哪里找到對(duì)方的公鑰?網(wǎng)絡(luò)上得到的公鑰是否可靠?彼此之間的信任怎樣建立?所有這些問(wèn)題表明,公鑰密碼技術(shù)在實(shí)用化過(guò)程中,首先需要解決公鑰的真實(shí)性和所有權(quán)問(wèn)題,需要解決密鑰的管理和分發(fā)問(wèn)題。于是,公鑰數(shù)字證書(shū)出現(xiàn)了,它提供了一種系統(tǒng)化的、可擴(kuò)展的、統(tǒng)一的公鑰分發(fā)方法。

數(shù)字證書(shū)是一個(gè)包含公鑰以及公鑰持有者(當(dāng)然也是相應(yīng)的私鑰擁有者)信息的文件,它由可信任的、公正的第三方機(jī)構(gòu)——認(rèn)證中心(CA)簽名頒發(fā),被各類(lèi)實(shí)體(持卡人/個(gè)人、商戶/企業(yè)、網(wǎng)關(guān)/銀行等)所持有,是在網(wǎng)上進(jìn)行信息交流及商務(wù)活動(dòng)的身份證明。數(shù)字證書(shū)中最重要的信息是個(gè)體名稱(chēng)、個(gè)體的公鑰以及CA的簽名。通過(guò)CA的簽名,數(shù)字證書(shū)可以把公鑰與密鑰所屬個(gè)體(用戶名和電子郵件地址等標(biāo)識(shí)信息)可靠地捆綁在一起。證書(shū)中還可以包含公鑰加密算法、用途、公鑰有效期限等信息,為用戶提供一系列的認(rèn)證和鑒別機(jī)制。數(shù)字證書(shū)可用來(lái)完成信息加密、數(shù)字簽名、用戶身份識(shí)別三項(xiàng)任務(wù)??梢哉f(shuō),證書(shū)是網(wǎng)絡(luò)上安全交易的用戶身份證和通行證。

互不相識(shí)的人為什么能夠相信對(duì)方提供的數(shù)字證書(shū)?這是基于對(duì)認(rèn)證中心CA的數(shù)字簽名的信任。假若有人對(duì)某個(gè)CA有懷疑,則可以查閱該CA的數(shù)字證書(shū),該證書(shū)是它的上級(jí)CA頒發(fā)的,有它的上級(jí)CA的數(shù)字簽名。如果還不放心,則繼續(xù)追查,直到查閱最頂級(jí)CA的證書(shū),叫做根證書(shū),它以最高權(quán)威(人或機(jī)構(gòu))的信譽(yù)擔(dān)保,其可信度無(wú)疑是全社會(huì)都認(rèn)可的。正如你相信微軟總公司,就相信它所指派的下屬部門(mén)一樣,對(duì)證書(shū)鏈中根證書(shū)的信任,就保證了對(duì)它簽發(fā)的一級(jí)級(jí)證書(shū)的信任。由于網(wǎng)絡(luò)應(yīng)用于異構(gòu)環(huán)境中,因此證書(shū)的格式在所使用的范圍內(nèi)必須統(tǒng)一。從證書(shū)遵循的標(biāo)準(zhǔn)和格式來(lái)看,CA頒發(fā)的數(shù)字證書(shū)有X.509公鑰證書(shū)、簡(jiǎn)單PKI(SimplePublicKeyInfrastructure)證書(shū),PGP(PrettyGoodPrivacy)證書(shū)、屬性(Attribute)證書(shū)等。在所有格式的證書(shū)中,X.509證書(shū)應(yīng)用范圍最廣,如S/MIME、IPSec、SSL/TLS等都應(yīng)用了X.509證書(shū)。

X.509是由國(guó)際電信聯(lián)盟(ITUT)制定的數(shù)字證書(shū)標(biāo)準(zhǔn),它提供了一種非常通用的證書(shū)格式,是一些標(biāo)準(zhǔn)字段和擴(kuò)展項(xiàng)的集合,包含用戶及其相應(yīng)公鑰的信息。X.509目前有三個(gè)版本,X.509第1、2版證書(shū)所包含的主要內(nèi)容如表6.1所示。

X.509第3版證書(shū)在第2版的基礎(chǔ)上增加了擴(kuò)展項(xiàng),使證書(shū)能夠附帶額外信息。任何人都可以向權(quán)威機(jī)構(gòu)申請(qǐng)注冊(cè)擴(kuò)展項(xiàng)。如果它們應(yīng)用廣泛,以后可能會(huì)列入標(biāo)準(zhǔn)擴(kuò)展集中。表6.1X.509第1、2版證書(shū)的內(nèi)容2.認(rèn)證中心(CA)

認(rèn)證中心CA是數(shù)字證書(shū)的頒發(fā)者,是可信任的第三方權(quán)威機(jī)構(gòu),通常是一個(gè)被稱(chēng)為安全域(SecurityDomain)的有限群體。它提供密鑰管理機(jī)制、身份認(rèn)證機(jī)制以及各種應(yīng)用協(xié)議,它的公鑰公開(kāi)。創(chuàng)建證書(shū)的時(shí)候,用戶首先提出申請(qǐng),CA審查用戶信息,特別是驗(yàn)證用戶的公鑰是否與用戶的私鑰配對(duì)。若檢查通過(guò),則生成證書(shū)并用CA的私鑰簽名,然后發(fā)給用戶。領(lǐng)到證書(shū)的用戶、實(shí)體或應(yīng)用程序可以使用CA的公鑰對(duì)證書(shū)進(jìn)行檢驗(yàn),以確認(rèn)證書(shū)的可靠性。因?yàn)樽C書(shū)只有具有CA的數(shù)字簽名,才能保證證書(shū)的合法性和權(quán)威性(同時(shí)也就保證了持有者的公鑰的真實(shí)性),所以CA必須確保證書(shū)簽發(fā)過(guò)程的安全,以確保簽名私鑰的高度機(jī)密,防止他人偽造證書(shū)。

一個(gè)典型的CA系統(tǒng)由安全服務(wù)器、注冊(cè)機(jī)構(gòu)(RA)、CA服務(wù)器、目錄服務(wù)器(LDAP)和數(shù)據(jù)庫(kù)服務(wù)器等組成,如圖6.2所示。

·CA服務(wù)器:CA服務(wù)器是整個(gè)證書(shū)機(jī)構(gòu)的核心,負(fù)責(zé)證書(shū)的簽發(fā)。CA首先產(chǎn)生自身的私鑰和公鑰(密鑰長(zhǎng)度至少為1024bit),然后生成數(shù)字證書(shū),并且將數(shù)字證書(shū)傳輸給安全服務(wù)器。

·安全服務(wù)器:安全服務(wù)器面向普通用戶,提供證書(shū)的申請(qǐng)、瀏覽,證書(shū)下載以及已撤銷(xiāo)證書(shū)的查詢(xún)等安全服務(wù)。它與用戶之間的所有通信均以安全服務(wù)器的密鑰加密傳輸。圖6.2CA系統(tǒng)的組成

·注冊(cè)機(jī)構(gòu)(RA):注冊(cè)機(jī)構(gòu)在CA體系結(jié)構(gòu)中起承上啟下的作用,一方面向CA轉(zhuǎn)發(fā)安全服務(wù)器傳輸過(guò)來(lái)的證書(shū)申請(qǐng)請(qǐng)求,另一方面向目錄服務(wù)器和安全服務(wù)器轉(zhuǎn)發(fā)CA頒發(fā)的數(shù)字證書(shū)和證書(shū)撤銷(xiāo)列表。

·目錄服務(wù)器:目錄服務(wù)器提供目錄瀏覽服務(wù),負(fù)責(zé)將注冊(cè)機(jī)構(gòu)服務(wù)器傳輸過(guò)來(lái)的用戶信息以及數(shù)字證書(shū)加入到服務(wù)器上,供用戶下載和查詢(xún)。

·數(shù)據(jù)庫(kù)服務(wù)器:數(shù)據(jù)庫(kù)服務(wù)器用于存儲(chǔ)和管理所有的數(shù)據(jù)(如密鑰和用戶信息等)、日志和統(tǒng)計(jì)信息。

CA的核心功能是對(duì)證書(shū)進(jìn)行簽發(fā)、更新、撤銷(xiāo)和管理,具體如下:

(1)接收數(shù)字證書(shū)申請(qǐng),驗(yàn)證、核查并標(biāo)識(shí)申請(qǐng)者的身份(2)審批證書(shū),決定是否受理用戶數(shù)字證書(shū)的申請(qǐng)。

(3)簽發(fā)或拒絕發(fā)放數(shù)字證書(shū)。

(4)檢查證書(shū)的有效期,定期或根據(jù)用戶請(qǐng)求對(duì)證書(shū)更新。(5)接收用戶對(duì)證書(shū)的查詢(xún)、撤銷(xiāo)。

(6)產(chǎn)生和發(fā)布、維護(hù)證書(shū)廢止列表CRL(CertificateRevocationLists)。

(7)對(duì)過(guò)期數(shù)字證書(shū)、密鑰等歸檔。

(8)其他管理功能,如CA的遠(yuǎn)程管理、維護(hù),以及上級(jí)CA對(duì)下級(jí)CA的管理等。6.5.2PKI概述[25][26]

PKI(PublicKeyInfrastructure)是公鑰基礎(chǔ)設(shè)施的縮寫(xiě)。所謂基礎(chǔ)設(shè)施,指的是為某類(lèi)應(yīng)用提供基本物質(zhì)條件與技術(shù)支持的硬、軟環(huán)境。如遍及城鄉(xiāng)的電力基礎(chǔ)設(shè)施使任何電器只要接通電線就能方便地獲得電能;又如覆蓋全球的通信基礎(chǔ)設(shè)施使每部電話都能互通,使每一臺(tái)入網(wǎng)的電腦都能上網(wǎng)。同樣,基于公鑰密碼體制的信息安全基礎(chǔ)設(shè)施則應(yīng)能方便地為每個(gè)網(wǎng)絡(luò)上的個(gè)體提供信息安全的技術(shù)保障與最佳服務(wù)。認(rèn)證中心與公鑰證書(shū)無(wú)疑是安全基礎(chǔ)設(shè)施的兩個(gè)重要組成部分,但不是PKI的全部。PKI應(yīng)當(dāng)是一種信息安全的綜合解決方案,是一套軟、硬件系統(tǒng)和安全策略的集合,它遵循標(biāo)準(zhǔn)的密鑰管理平臺(tái),結(jié)合技術(shù)和管理兩方面因素,確保證書(shū)中信息的真實(shí)性,并對(duì)證書(shū)提供全程管理。

利用PKI系統(tǒng)可以使網(wǎng)絡(luò)上的組織或?qū)嶓w建立安全域,并在其中生成密鑰和證書(shū)。在安全域內(nèi),PKI頒發(fā)密鑰和證書(shū),提供密鑰管理(包括密鑰更新、密鑰恢復(fù)和密鑰委托等)、證書(shū)管理(包括證書(shū)產(chǎn)生、更新和撤銷(xiāo)等)和策略管理等服務(wù)。PKI系統(tǒng)也允許一個(gè)組織通過(guò)證書(shū)級(jí)別或直接交換認(rèn)證等方式,同其他安全域建立信任關(guān)系。通過(guò)提供一整套安全機(jī)制,使用戶在不知道對(duì)方身份或分布地域很廣的情況下,以證書(shū)為基礎(chǔ),通過(guò)一系列的信任關(guān)系進(jìn)行安全通信。鑒于PKI為各種網(wǎng)絡(luò)應(yīng)用提供互信憑據(jù),因此也可以說(shuō)它是一個(gè)信任管理設(shè)施。PKI能為電子商務(wù)的應(yīng)用提供如下的安全保障:

(1)消息來(lái)源認(rèn)證:使之信任證書(shū)所屬實(shí)體的合法身份(2)消息完整性認(rèn)證:使之相信證書(shū)持有者所簽名的文件真實(shí)無(wú)誤。

(3)機(jī)密性:使之相信PKI采用的加密算法能夠?qū)崿F(xiàn)數(shù)據(jù)的機(jī)密傳輸。

(4)不可否認(rèn):使之確保發(fā)送實(shí)體和接收實(shí)體雙方均不得否認(rèn)自己的行為。通過(guò)PKI的支持,公鑰密碼技術(shù)被廣泛地應(yīng)用于許多領(lǐng)域。如:

(1)S/MIME采用PKI標(biāo)準(zhǔn)實(shí)現(xiàn)了安全電子郵件,使用了數(shù)字簽名技術(shù)并支持消息和附件的加密,無(wú)需收發(fā)雙發(fā)共享相同密鑰。(2)安全套接層協(xié)議SSL和傳輸層安全協(xié)議TLS是Internet網(wǎng)絡(luò)中訪問(wèn)Web服務(wù)器的重要安全協(xié)議,它們依賴(lài)PKI為通信的客戶機(jī)和服務(wù)器發(fā)放證書(shū),并認(rèn)證雙方(或者一方)的身份,在此基礎(chǔ)上還可以基于服務(wù)器的公鑰協(xié)商會(huì)話密鑰,保護(hù)后續(xù)的通信過(guò)程。

(3)IP層安全協(xié)議IPSec利用網(wǎng)絡(luò)層安全協(xié)議和建立在PKI上的加密與簽名技術(shù)來(lái)保證通信的安全性,提供了加密和認(rèn)證過(guò)程的密鑰管理功能。同時(shí),IPSec還用于構(gòu)建虛擬專(zhuān)用網(wǎng)VPN。6.5.3PKI的組成[27][28][WT]1995年10月,因特網(wǎng)工程任務(wù)組(IETF-InternetEngineeringTaskForce)成立了PKIX工作組。該組織基于X.509證書(shū),開(kāi)發(fā)了適用于因特網(wǎng)的多個(gè)PKI標(biāo)準(zhǔn),其內(nèi)容由一系列RFC文檔組成,稱(chēng)為PKIX(即X.509認(rèn)證的PKI)規(guī)范。根據(jù)RFC2501和RFC4210,PKI組件模型如圖6.3所示。雖然基于不同的標(biāo)準(zhǔn)和應(yīng)用場(chǎng)合,PKI體系會(huì)有不同的結(jié)構(gòu),但是,作為一個(gè)能為互不相識(shí)的實(shí)體建立并保證信任關(guān)系的服務(wù)體系,PKI系統(tǒng)應(yīng)當(dāng)包括認(rèn)證中心、注冊(cè)中心、證書(shū)庫(kù)/證書(shū)撤銷(xiāo)列表庫(kù)、PKI策略和終端實(shí)體五部分。圖6.3PKI系統(tǒng)的組成(1)認(rèn)證中心(CA):負(fù)責(zé)簽發(fā)證書(shū)和證書(shū)吊銷(xiāo)列表,是證書(shū)和密鑰生存周期管理過(guò)程中的核心功能部件,也是整個(gè)PKI系統(tǒng)的核心部件(雖然對(duì)于特殊的PKI系統(tǒng),比如依據(jù)PGP模型建立的以用戶為中心的PKI系統(tǒng),CA不是一個(gè)必須部分)。CA所管轄的證書(shū)系統(tǒng)被稱(chēng)為一個(gè)“域”。終端實(shí)體在某個(gè)域注冊(cè)后,當(dāng)不同域中的實(shí)體需要通信時(shí),它們通過(guò)域之間的信任關(guān)系能夠建立可信任的信息交換。

(2)注冊(cè)中心(RA—RegistrationAuthority):RA提供了一個(gè)用戶與CA之間的接口。在CA為實(shí)體發(fā)放證書(shū)以前,RA負(fù)責(zé)收集用戶信息,對(duì)用戶身份進(jìn)行驗(yàn)證,并在PKI系統(tǒng)中為用戶注冊(cè)。RA是可選的管理組件,假如沒(méi)有RA,CA則必須承擔(dān)RA的功能。(3)證書(shū)庫(kù)/證書(shū)撤銷(xiāo)列表庫(kù)(CertRepository/CRLRepository):通常是一個(gè)目錄服務(wù)器,用于存儲(chǔ)CA簽發(fā)的證書(shū)和證書(shū)撤銷(xiāo)列表,并響應(yīng)用戶的查詢(xún)請(qǐng)求,便于用戶方便地查詢(xún)證書(shū)和已吊銷(xiāo)證書(shū)的信息。當(dāng)用戶的身份改變或密鑰遭到破壞時(shí),需要發(fā)布該證書(shū)已被撤銷(xiāo)、廢除的信息。證書(shū)撤銷(xiāo)列表(CRL-CertificateRevocationList)為此提供了一種機(jī)制。CRL是由CA簽名的一組電子文檔,包括了被吊銷(xiāo)證書(shū)的唯一標(biāo)識(shí)(即證書(shū)序列號(hào))。

(4)PKI策略:定義了證書(shū)管理過(guò)程和證書(shū)使用過(guò)程中的規(guī)則和約束。制定明確、合理的策略可以保證PKI系統(tǒng)正常運(yùn)行。PKI在實(shí)際應(yīng)用中的性能很大程度上取決于策略的制定。一般情況下,PKI中包括兩類(lèi)策略:證書(shū)策略(CP-CertificatePolicy)和證書(shū)操作管理規(guī)范(CPS-CertificationPracticeStatement)。CP用于管理證書(shū)的使用,在X.509證書(shū)中,證書(shū)策略由唯一識(shí)別符標(biāo)識(shí),該識(shí)別符置于證書(shū)擴(kuò)展項(xiàng)的“證書(shū)策略”域中。正是通過(guò)該項(xiàng),將本證書(shū)系統(tǒng)所要遵循的具體操作規(guī)則與具體的策略對(duì)應(yīng)起來(lái)。CPS則是描述如何在實(shí)踐中增強(qiáng)和支持安全策略及相應(yīng)操作的過(guò)程,包括CA的建立和運(yùn)作、證書(shū)的發(fā)放和吊銷(xiāo)以及密鑰的長(zhǎng)度和產(chǎn)生過(guò)程等。

(5)終端實(shí)體(EE-EndEntity):終端實(shí)體指數(shù)字證書(shū)持有者,也稱(chēng)之為用戶。用戶包括證書(shū)的主人和使用證書(shū)的用戶。其中使用證書(shū)的用戶不僅包括人類(lèi)用戶,還包括使用證書(shū)的某種應(yīng)用,比如IPSec應(yīng)用。嚴(yán)格地講,用戶不是PKI體系的組成部分,但它們的操作和PKI的功能流程密切相關(guān)。6.5.4PKI中密鑰和證書(shū)的管理[29~32]證書(shū)管理和密鑰管理是PKI的中心任務(wù)。密鑰/證書(shū)從產(chǎn)生到廢除將經(jīng)歷一個(gè)完整的生命周期,CA必須具備生命周期全過(guò)程的管理功能。密鑰和證書(shū)生命周期可分為初始化階段、分發(fā)階段和撤銷(xiāo)階段,各階段又由若干過(guò)程構(gòu)成,如圖6.4所示。

1.證書(shū)的初始化階段終端實(shí)體想加入這個(gè)安全域,申請(qǐng)獲得PKI服務(wù),最先要做的事情應(yīng)該是查閱CA的證書(shū),甚至是查閱直至根證書(shū)的證書(shū)鏈,因?yàn)槭紫葢?yīng)當(dāng)確認(rèn)自己所申請(qǐng)的CA是合法的、可信賴(lài)的,這樣才能決定是否向這個(gè)CA申請(qǐng)。一般CA會(huì)在自己的門(mén)戶網(wǎng)站上發(fā)布自己的證書(shū),用戶只需登錄該網(wǎng)站即可獲取CA根證書(shū)。圖6.4密鑰/證書(shū)生命周期的各階段組成

初始化包括多個(gè)步驟,概括起來(lái)主要有三個(gè)過(guò)程,分別是申請(qǐng)證書(shū)、頒發(fā)證書(shū)和備份密鑰。

1)證書(shū)申請(qǐng)過(guò)程終端實(shí)體任何時(shí)候都可以向CA發(fā)送申請(qǐng)證書(shū)的請(qǐng)求。該過(guò)程做三件事:

(1)用戶注冊(cè)。終端用戶首先到注冊(cè)中心申請(qǐng)注冊(cè),注冊(cè)的目的是建立公鑰擁有者(實(shí)際上是與公鑰相對(duì)應(yīng)的私鑰的擁有者)與證書(shū)所聲明身份的對(duì)應(yīng)關(guān)系。注冊(cè)可以通過(guò)兩種方式進(jìn)行,一種是離線注冊(cè),即用戶持相關(guān)有效證件到注冊(cè)中心進(jìn)行書(shū)面申請(qǐng);另一種是在線注冊(cè),即用戶登錄CA提供的網(wǎng)站,輸入身份信息進(jìn)行證書(shū)申請(qǐng)。注冊(cè)中心則應(yīng)根據(jù)相應(yīng)的策略審核用戶申請(qǐng)信息。(2)產(chǎn)生密鑰對(duì)。密鑰對(duì)的產(chǎn)生有兩種方式。一是由用戶產(chǎn)生,用戶通過(guò)客戶端軟件或使用Web瀏覽器生成。二是由CA產(chǎn)生,因?yàn)镃A具有高度的權(quán)威性和可信性,通過(guò)CA生成密鑰對(duì)的安全性較高。一般用戶都應(yīng)當(dāng)有兩對(duì)密鑰對(duì),一對(duì)是用于簽名,另一對(duì)用于加密,每對(duì)密鑰都有相應(yīng)的數(shù)字證書(shū)。由于數(shù)字簽名具有不可否認(rèn)性,因此簽名用的密鑰應(yīng)由CA產(chǎn)生,而加密用的密鑰可以使用上述兩種方式中的任一種產(chǎn)生。無(wú)論哪種方式產(chǎn)生的密鑰對(duì),其中私鑰均由用戶保管,公鑰和其他用戶信息送交CA進(jìn)行簽名,以產(chǎn)生公鑰證書(shū)。

(3)驗(yàn)證密鑰對(duì)。驗(yàn)證密鑰對(duì)的目的是確認(rèn)申請(qǐng)者確實(shí)擁有與正在注冊(cè)的公開(kāi)密鑰相應(yīng)的私鑰。用戶只有向權(quán)威機(jī)構(gòu)證明了自己確實(shí)擁有這個(gè)密鑰對(duì),才能獲得認(rèn)證機(jī)構(gòu)頒發(fā)的公鑰證書(shū)。PKI把確認(rèn)密鑰所有權(quán)的步驟稱(chēng)為擁有證明(POP-ProofofPossession)。根據(jù)證書(shū)請(qǐng)求中是簽名密鑰還是加密密鑰而不同。最簡(jiǎn)單的驗(yàn)證方法是CA給用戶一個(gè)隨機(jī)數(shù),要求他用私鑰加密,CA則拿用戶聲明的公鑰解密,結(jié)果相符表明配對(duì)有效。

2)證書(shū)頒發(fā)過(guò)程

CA把經(jīng)過(guò)驗(yàn)證的用戶公鑰與用戶的其他信息用自己的私鑰簽名,形成證書(shū)文件。證書(shū)通過(guò)物理存儲(chǔ)介質(zhì)完整地頒發(fā)到合法申請(qǐng)人手中,或者通過(guò)通信網(wǎng)絡(luò)用加密方式傳送給合法申請(qǐng)人。領(lǐng)到證書(shū)的用戶、實(shí)體或應(yīng)用程序可以使用CA的公鑰對(duì)證書(shū)進(jìn)行驗(yàn)證,以確認(rèn)證書(shū)的可靠性和完整性。3)密鑰備份過(guò)程為了避免密鑰丟失造成嚴(yán)重后果,當(dāng)用戶證書(shū)生成時(shí),加密密鑰即被CA或信任第三方備份存儲(chǔ)。但為了確保數(shù)字簽名的不可否認(rèn)性,不對(duì)用于簽名的密鑰作備份。為防止管理人員濫用權(quán)限造成密鑰泄露的危險(xiǎn),可以采用秘密共享方案,將備份密鑰分為若干部分,由多人共同管理,任何一個(gè)管理人員都無(wú)法獨(dú)自恢復(fù)該私鑰。這種方法尤其適合對(duì)安全性要求特別高的情況,如CA根密鑰的備份。對(duì)于普通用戶來(lái)說(shuō),通常只對(duì)密鑰加密保存即可。2.證書(shū)的分發(fā)階段一旦密鑰對(duì)產(chǎn)生且公鑰證書(shū)被頒發(fā),密鑰及證書(shū)的生命周期即已開(kāi)始。PKI提供的各項(xiàng)安全服務(wù)大都需要訪問(wèn)證書(shū),或通過(guò)證書(shū)索取公鑰,分發(fā)證書(shū)就成了CA頻繁的日常工作。所謂證書(shū)分發(fā),就是指交互所需證書(shū)的過(guò)程。證書(shū)的分發(fā)包括CA與終端實(shí)體之間的交互以及各個(gè)不同終端實(shí)體之間的交互。CA和終端實(shí)體之間的證書(shū)分發(fā),主要是CA證書(shū)的分發(fā),通常CA的證書(shū)是通過(guò)自己的門(mén)戶網(wǎng)站來(lái)發(fā)布的,用戶可以通過(guò)網(wǎng)絡(luò)下載CA證書(shū),并安裝到瀏覽器的CA證書(shū)庫(kù)中。終端實(shí)體之間的證書(shū)分發(fā)通常發(fā)生于以下兩種情況,一是用戶之間為了進(jìn)行安全通信,需要使用對(duì)方的公鑰證書(shū)(證書(shū)實(shí)際上是公鑰的封裝);二是當(dāng)?shù)玫綄?duì)方的證書(shū)后,需要驗(yàn)證對(duì)方的證書(shū)。這些情況下證書(shū)分發(fā)可通過(guò)物理媒介傳送,或向集中存儲(chǔ)用戶證書(shū)的公共資料庫(kù)查詢(xún)獲取,或者通過(guò)某些安全協(xié)議,如SSL等來(lái)交換。證書(shū)分發(fā)階段存在四個(gè)過(guò)程:

(1)證書(shū)檢索:即通過(guò)遠(yuǎn)程資料庫(kù)訪問(wèn)、讀取證書(shū)。

(2)證書(shū)驗(yàn)證:在使用對(duì)方提供的證書(shū)前,應(yīng)當(dāng)確認(rèn)該證書(shū)的完整性和有效性。其中包括交易對(duì)方證書(shū)的驗(yàn)證,認(rèn)證中心證書(shū)的驗(yàn)證,以及證書(shū)鏈上所有證書(shū)的數(shù)字簽名及有效期的驗(yàn)證。

(3)密鑰恢復(fù):當(dāng)用戶不能正常訪問(wèn)密鑰資料時(shí),由于留有密鑰備份,因此只需向CA或信任第三方處提出申請(qǐng),托管方就會(huì)為用戶自動(dòng)進(jìn)行恢復(fù)。但是,簽名密鑰是不能恢復(fù)的。(4)證書(shū)更新:當(dāng)一個(gè)合法的密鑰對(duì)即將過(guò)期時(shí),應(yīng)當(dāng)自動(dòng)產(chǎn)生新的公/私鑰對(duì)。與此同時(shí),相應(yīng)的證書(shū)也應(yīng)當(dāng)隨之更新。實(shí)際上,當(dāng)用戶注冊(cè)申請(qǐng)、撤銷(xiāo)證書(shū)、密鑰對(duì)更新時(shí)都會(huì)導(dǎo)致CA發(fā)布新證書(shū)。

3.證書(shū)的撤銷(xiāo)階段

在網(wǎng)絡(luò)環(huán)境中,證書(shū)在有效期內(nèi)也可能因多種原因需要撤銷(xiāo),密鑰/證書(shū)生命周期就此結(jié)束。此階段包括四方面內(nèi)容:(1)證書(shū)過(guò)期處理:證書(shū)生命周期的自然結(jié)束。

(2)證書(shū)撤銷(xiāo)處理:因?yàn)槊荑€泄露或證書(shū)持有者狀態(tài)改變等其他原因,CA宣布一個(gè)合法證書(shū)不再有效,并消除用戶與公鑰的綁定。

證書(shū)撤銷(xiāo)后,PKI系統(tǒng)應(yīng)及時(shí)通知終端實(shí)體使之了解證書(shū)撤銷(xiāo)情況。目前常用的證書(shū)撤銷(xiāo)機(jī)制有兩種:一種是周期性公布機(jī)制,如證書(shū)撤銷(xiāo)列表CRL;另一種是在線證書(shū)查詢(xún)機(jī)制,如在線證書(shū)狀態(tài)協(xié)議(OCSP-OnlineCertificateStateProtocol)。PKI的X標(biāo)準(zhǔn)采用CRL作為證書(shū)有效期的控制機(jī)制。

CRL的發(fā)布周期由證書(shū)操作管理規(guī)范CPS規(guī)定,公布間隔可能是一天也可能是一周。在CRL中包含

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論