PKI技術(shù)專題:3、PKI系統(tǒng)的常用信任模型
選擇信任模型(Trust Model)是構(gòu)筑和運作PKI所必需的一個環(huán)節(jié)。選擇正確的信任模型以及與它相應(yīng)的安全級別是非常重要的,同時也是部署PKI所要做的較早和基本的決策之一。
信任模型主要闡述了以下幾個問題:
● 一個PKI用戶能夠信任的證書是怎樣被確定的?
● 這種信任是怎樣被建立的?
● 在一定的環(huán)境下,這種信任如何被控制?
為了進一步說明信任模型,我們首先需要闡明信任的概念。每個人對術(shù)語信任(Trust)的理解并不完全相同,在這里我們只簡單地敘述在ITU-T推薦標(biāo)準(zhǔn)X.509 規(guī)范(X.509,Section3.3.23)中給出的定義:Entity A trusts entity B when Aassumes that B will behave exactly as A expects。如果翻譯成中文,這段話的意思是:當(dāng)實體A假定實體B嚴(yán)格地按A所期望的那樣行動,則A信任B。從這個定義可以看出,信任涉及假設(shè)、期望和行為,這意味著信任是不可能被定量測量的,信任是與風(fēng)險相聯(lián)系的并且信任的建立不可能總是全自動的。在PKI中,我們可以把這個定義具體化為:如果一個用戶假定CA可以把任一公鑰綁定到某個實體上,則他信任該CA。
本文將介紹目前常用的四種信任模型:認(rèn)證機構(gòu)的嚴(yán)格層次結(jié)構(gòu)模型(Strict Hierarchy of Certification Authorities Model)、分布式信任結(jié)構(gòu)模型(Distributed Trust Architecture Model)、Web模型(Web Model)和以用戶為中心的信任模型(User-Centric Trust Model)。
認(rèn)證機構(gòu)的嚴(yán)格層次結(jié)構(gòu)模型
認(rèn)證機構(gòu)(CA)的嚴(yán)格層次結(jié)構(gòu)可以被描繪為一棵倒轉(zhuǎn)的樹,根在頂上,樹枝向下伸展,樹葉在下面。在這棵倒轉(zhuǎn)的樹上,根代表一個對整個PKI系統(tǒng)的所有實體都有特別意義的CA——通常叫做根CA(root CA),它充當(dāng)信任的根或信任錨(trust anchor)——也就是認(rèn)證的起點或終點。在根CA的下面是零層或多層中介CA(intermediate CA),也被稱作子CA(subordinate CA),因為它們從屬于根CA。子CA用中間節(jié)點表示,從中間節(jié)點再伸出分支。與非CA的PKI實體相對應(yīng)的樹葉通常被稱作終端實體(end-entities)或被稱作終端用戶(end-users)。在這個模型中,層次結(jié)構(gòu)中的所有實體都信任唯一的根CA。這個層次結(jié)構(gòu)按如下規(guī)則建立:
* 根CA認(rèn)證(更準(zhǔn)確地說是創(chuàng)立和簽署證書)直接連接在它下面的CA。
* 每個CA都認(rèn)證零個或多個直接連接在它下面的CA。(注意:在一些認(rèn)證機構(gòu)的嚴(yán)格層次結(jié)構(gòu)中,上層的CA既可以認(rèn)證其他CA也可以認(rèn)證終端實體。雖然在現(xiàn)有的PKI標(biāo)準(zhǔn)中并沒有排除這一點,但是在文獻中層次結(jié)構(gòu)往往都是假設(shè)一個給定的CA要么認(rèn)證終端實體要么認(rèn)證其他CA,但不能兩者都認(rèn)證。我們將遵循這個慣例,但不應(yīng)該認(rèn)為這是有限制的。)
* 倒數(shù)第二層的CA認(rèn)證終端實體。
在認(rèn)證機構(gòu)的嚴(yán)格層次結(jié)構(gòu)中,每個實體(包括中介CA和終端實體)都必須擁有根CA的公鑰,該公鑰的安裝是在這個模型中為隨后進行的所有通信進行證書處理的基礎(chǔ)。因此,它必須通過一種安全的方式來完成。例如,一個實體可以通過物理途徑如信件或電話來取得這個密鑰;也可以選擇通過電子方式取得該密鑰,然后再通過其他機制來確認(rèn)它,如將密鑰的散列結(jié)果(有時被稱作密鑰的指紋 )用信件發(fā)送、公布在報紙上或者通過電話告之。
值得注意的是,在一個多層的嚴(yán)格層次結(jié)構(gòu)中,終端實體直接被其上層的CA認(rèn)證(也就是頒發(fā)證書),但是它們的信任錨是另一個不同的CA(根CA)。如果是沒有子CA的淺層次結(jié)構(gòu),則對所有終端實體來說,根和證書頒發(fā)者是相同的。這種層次結(jié)構(gòu)被稱作可信頒發(fā)者層次結(jié)構(gòu)(trusted-issuer hierarchies)。
這里有一個例子,說明在認(rèn)證機構(gòu)的嚴(yán)格層次結(jié)構(gòu)模型中進行認(rèn)證的過程。一個持有根CA公鑰的終端實體A可以通過下述方法檢驗另一個終端實體B的證書。假設(shè)B的證書是由CA2簽發(fā)的,而CA2的證書是由CA1簽發(fā)的,CA1的證書又是由根CA簽發(fā)的。A(擁有根CA的公鑰KR)能夠驗證CA1的公鑰K1,因此它可以提取出可信的CA1的公鑰。然后,這個公鑰可以被用作驗證CA2的公鑰,類似地就可以得到CA2的可信公鑰K2。公鑰K2能夠被用來驗證B的證書,從而得到B的可信公鑰KB。A現(xiàn)在就可以根據(jù)密鑰的類型來使用密鑰KB,如對發(fā)給B的消息加密或者用來驗證據(jù)稱是B的數(shù)字簽名,從而實現(xiàn)A和B之間的安全通信。
分布式信任結(jié)構(gòu)模型
與在PKI系統(tǒng)中的所有實體都信任唯一一個CA的嚴(yán)格層次結(jié)構(gòu)相反,分布式信任結(jié)構(gòu)把信任分散在兩個或多個CA上。也就是說,A把CA1作為他的信任錨,而B可以把CA2做為他的信任錨。因為這些CA都作為信任錨,因此相應(yīng)的CA必須是整個PKI系統(tǒng)的一個子集所構(gòu)成的嚴(yán)格層次結(jié)構(gòu)的根CA(CA1是包括A在內(nèi)的嚴(yán)格層次結(jié)構(gòu)的根,CA2是包括B在內(nèi)的嚴(yán)格層次結(jié)構(gòu)的根)。
如果這些嚴(yán)格層次結(jié)構(gòu)都是可信頒發(fā)者層次結(jié)構(gòu),那么該總體結(jié)構(gòu)被稱作完全同位體結(jié)構(gòu)(fully peered architecture),因為所有的CA實際上都是相互獨立的同位體(在這個結(jié)構(gòu)中沒有子CA)。另一方面,如果所有的嚴(yán)格層次結(jié)構(gòu)都是多層結(jié)構(gòu)(multi-level hierarchy),那么最終的結(jié)構(gòu)就被叫做滿樹結(jié)構(gòu)(fully treed architecture)。(注意,根CA之間是同位體,但是每個根又是一個或多個子CA的上級。)混合結(jié)構(gòu)(hybrid treed architecture)也是可能的(具有若干個可信頒發(fā)者層次結(jié)構(gòu)和若干個多層樹型結(jié)構(gòu))。一般說來,完全同位體結(jié)構(gòu)部署在某個組織內(nèi)部,而滿樹結(jié)構(gòu)和混合結(jié)構(gòu)則是在原來相互獨立的PKI系統(tǒng)之間進行互聯(lián)的結(jié)果。盡管PKI網(wǎng)絡(luò)(PKI networking)一詞用得越來越多(特別是對滿樹結(jié)構(gòu)和混合結(jié)構(gòu)),但是同位體根CA(peer root CA)的互連過程通常被稱為交叉認(rèn)證(cross-certification)。
Web模型
Web模型是在環(huán)球網(wǎng)(World Wide Web)上誕生的,而且依賴于流行的瀏覽器,如Netscape 公司的Navigator和Microsoft公司的Internet Explorer。在這種模型中,許多CA的公鑰被預(yù)裝在標(biāo)準(zhǔn)的瀏覽器上。這些公鑰確定了一組瀏覽器用戶最初信任的CA。盡管這組根密鑰可以被用戶修改,然而幾乎沒有普通用戶對于PKI和安全問題能精通到可以進行這種修改的程度。
初看之下,這種模型似乎與分布式信任結(jié)構(gòu)模型相似,但從根本上講,它更類似于認(rèn)證機構(gòu)的嚴(yán)格層次結(jié)構(gòu)模型。因為在實際上,瀏覽器廠商起到了根CA的作用,而與被嵌入的密鑰相對應(yīng)的CA就是它所認(rèn)證的CA,當(dāng)然這種認(rèn)證并不是通過頒發(fā)證書實現(xiàn)的,而只是物理地把CA的密鑰嵌入瀏覽器。
Web模型在方便性和簡單互操作性方面有明顯的優(yōu)勢,但是也存在許多安全隱患。例如,因為瀏覽器的用戶自動地信任預(yù)安裝的所有公鑰,所以即使這些根CA中有一個是壞的(例如,該CA從沒有認(rèn)真核實被認(rèn)證的實體),安全性將被完全破壞。A將相信任何聲稱是B的證書都是B的合法證書,即使它實際上只是由其公鑰嵌入瀏覽器中的CAbad簽署的掛在B名下的C的公鑰。所以,A就可能無意間向C透露機密或接受C偽造的數(shù)字簽名。這種假冒能夠成功的原因是:A一般不知道收到的證書是由哪一個根密鑰驗證的。在嵌入到其瀏覽器中的多個根密鑰中,A可能只認(rèn)可所給出的一些CA,但并不了解其他CA。然而在Web模型中,A的軟件平等而無任何疑問地信任這些CA,并接受它們中任何一個簽署的證書。
當(dāng)然,在其他信任模型中也可能出現(xiàn)類似情況。例如,在分布式信任結(jié)構(gòu)模型中,A或許不能認(rèn)可一個特定的CA,但是其軟件在相關(guān)的交叉認(rèn)證是有效的情況下,卻會信任該CA所簽署的證書。在分布式信任結(jié)構(gòu)中, A在PKI 安全方面明確地相信其局部CA做正確的事,例如,與可信的其他CA進行交叉認(rèn)證等。而在Web模型中,A通常是因為與安全無關(guān)的原因而取得瀏覽器的,因此,從他的安全觀點來看,沒有任何理由相信這個瀏覽器是在信任正確的CA。
另外一個潛在的安全隱患是沒有實用的機制來撤銷嵌入到瀏覽器中的根密鑰。如果發(fā)現(xiàn)一個根密鑰是壞的(就像前面所討論的那樣)或者與根的公鑰相應(yīng)的私鑰被泄密了,要使全世界數(shù)百萬個瀏覽器都自動地廢止該密鑰的使用是不可能的,這是因為無法保證通報的報文能到達所有的瀏覽器,而且即使報文到達了瀏覽器,瀏覽器也沒有處理該報文的功能。因此,從瀏覽器中去除壞密鑰需要全世界的每個用戶都同時采取明確的動作;否則,一些用戶將是安全的而其他用戶仍處于危險之中。但是這樣一個全世界范圍內(nèi)的同時動作是不可能實現(xiàn)的。
最后,該模型還缺少有效的方法在CA和用戶之間建立合法協(xié)議,該協(xié)議的目的是使CA和用戶共同承擔(dān)責(zé)任。因為,瀏覽器可以自由地從不同站點下載,也可以預(yù)裝在操作系統(tǒng)中;CA不知道(也無法確定)它的用戶是誰,并且一般用戶對PKI也缺乏足夠的了解,因此不會主動與CA直接接觸。這樣,所有的責(zé)任最終或許都會由用戶承擔(dān)。
以用戶為中心的信任模型
在以用戶為中心的信任模型中,每個用戶自己決定信任哪些證書。通常,用戶的最初信任對象包括用戶的朋友、家人或同事,但是否信任某證書則被許多因素所左右。
著名的安全軟件Pretty Good Privacy(PGP)最能說明以用戶為中心的信任模型。在PGP中,一個用戶通過擔(dān)當(dāng)CA(簽署其他實體的公鑰)并使其公鑰被其他人所認(rèn)證來建立(或參加)所謂的信任網(wǎng)(web of trust)。例如,當(dāng)Alice收到一個據(jù)稱屬于Bob的證書時,她將發(fā)現(xiàn)這個證書是由她不認(rèn)識的David簽署的,但是David的證書是由她認(rèn)識并且信任的Catherine簽署的。在這種情況下,Alice可以決定信任Bob的密鑰(即信任從Catherine到David再到Bob的密鑰鏈),也可以決定不信任Bob的密鑰(認(rèn)為未知的 Bob與已知的Catherine之間的距離太遠)。
因為要依賴于用戶自身的行為和決策能力,因此以用戶為中心的模型在技術(shù)水平較高和利害關(guān)系高度一致的群體中是可行的,但是在一般的群體(它的許多用戶有極少或者沒有安全及PKI的概念)中是不現(xiàn)實的。而且,這種模型一般不適合用在貿(mào)易、金融或政府環(huán)境中,因為在這些環(huán)境下,通常希望或需要對用戶的信任實行某種控制,顯然這樣的信任策略在以用戶為中心的模型中是不可能實現(xiàn)的。
以上介紹的是目前比較流行的四種信任模型,重點強調(diào)了它們的相似點和差別,希望對讀者更深刻地理解PKI及其他信息安全概念有所幫助。