書名: 電子商務安全(第2版)作者名: 張波 朱艷娜編著本章字數: 3375字更新時間: 2020-09-18 18:20:09
3.2 PKI系統的常用信任模型
選擇信任模型(Trust Model)是構筑和運作PKI所必需的一個環節。選擇正確的信任模型以及與它相應的安全級別是非常重要的,同時也是部署PKI所要做的較早的和基本的決策之一。
信任模型主要闡述了以下幾個問題:
1)一個PKI用戶能夠信任的證書是怎樣被確定的?
2)這種信任是怎樣被建立的?
3)在一定的環境下,這種信任如何被控制?
為了進一步說明信任模型,首先需要闡明信任的概念。每個人對術語“信任(Trust)”的理解并不完全相同,在ITU-T推薦標準X.509規范(X.509,Section3.3.23)中給出的定義為:當實體A假定實體B嚴格地按A所期望的那樣行動,則A信任B。從這個定義可以看出,信任涉及假設、期望和行為,這意味著信任是不可能被定量測量的,信任是與風險相聯系的,并且信任的建立不可能總是全自動的。在PKI中,可以把這個定義具體化為:如果一個用戶假定CA可以把任一公鑰綁定到某個實體上,則他信任該CA。
本節將介紹目前常用的四種信任模型:認證機構的嚴格層次結構模型(Strict Hierarchy of Certification Authorities Model)、分布式信任結構模型(Distributed Trust Architecture Model)、Web模型(Web Model)和以用戶為中心的信任模型(User-Centric Trust Model)。
3.2.1 認證機構的嚴格層次結構模型
認證機構(CA)的嚴格層次結構可以被描繪為一棵倒立的樹,根在頂上,樹枝向下伸展,樹葉在下面。在這棵倒立的樹上,根代表一個對整個PKI系統的所有實體都有特別意義的CA,通常叫作根CA,它充當信任的根或“信任錨”,也就是認證的起點或終點。在根CA的下面是零層或多層中介CA,也被稱作子CA,因為它們從屬于根CA。子CA用中間節點表示,從中間節點再伸出分支。與非CA的PKI實體相對應的樹葉通常被稱作終端實體或被稱作終端用戶。在這個模型中,層次結構中的所有實體都信任唯一的根CA。這個層次結構按如下規則建立,如圖3-1所示。

圖3-1 嚴格層次結構模型
1)根CA認證直接連接在它下面的CA。
2)每個CA都認證零個或多個直接連接在它下面的CA。
3)由倒數第二層的CA認證終端實體。
在認證機構的嚴格層次結構中,每個實體(包括中介CA和終端實體)都必須擁有根CA的公鑰,該公鑰的安裝是在這個模型中為隨后進行的所有通信進行證書處理的基礎。因此,它必須通過一種安全的方式來完成。例如,一個實體可以通過物理途徑(如信件或電話)來取得這個密鑰,也可以選擇通過電子方式取得該密鑰,然后再通過其他機制來確認它,如將密鑰的散列值用信件發送、公布在報紙上或者通過電話告之。值得注意的是,在一個多層的嚴格層次結構中,終端實體直接被其上層的CA認證,但是它們的信任錨是另一個不同的CA。如果是沒有子CA的淺層次結構,則對所有終端實體來說,根和證書頒發者是相同的。這種層次結構被稱作可信頒發者層次結構。
例如,一個持有根CA公鑰的終端實體A可以通過下述方法檢驗另一個終端實體B的證書:假設B的證書是由CA2簽發的,而CA2的證書是由CA1簽發的,CA1的證書又是由根CA簽發的。A(擁有根CA的公鑰KR)能夠驗證CA1的公鑰K1,因此它可以提取出可信的CA1的公鑰。然后,這個公鑰可以被用作驗證CA2的公鑰,類似地就可以得到CA2的可信公鑰K2。公鑰K2能夠被用來驗證B的證書,從而得到B的可信公鑰KB。A現在就可以根據密鑰的類型來使用密鑰KB,例如,可用來對發給B的消息加密或者用來驗證據稱是B的數字簽名,從而實現A和B之間的安全通信。
3.2.2 分布式信任結構模型
與在PKI系統中的所有實體都信任唯一一個CA的嚴格層次結構相反,分布式信任結構把信任分散在兩個或多個CA上。也就是說,A把CA1作為它的信任錨,而B可以把CA2作為它的信任錨。因為這些CA都作為信任錨,因此相應的CA必須是整個PKI系統的一個子集所構成的嚴格層次結構的根CA(CA1是包括A在內的嚴格層次結構的根,CA2是包括B在內的嚴格層次結構的根)。
如果這些嚴格層次結構都是可信頒發者層次結構,那么該總體結構被稱作完全同位體結構,因為所有的CA實際上都是相互獨立的同位體(在這個結構中沒有子CA屬于分布式的)。另一方面,如果所有的嚴格層次結構都是多層結構,那么最終的結構就被稱為“滿樹結構”。事實上,根CA之間是同位體,但是每個根又是一個或多個子CA的上級。另外,具有若干個可信頒發者層次結構和若干個多層樹型結構的混合結構也是可能的。一般說來,完全同位體結構部署在某個組織內部,而滿樹結構和混合結構則是在原來相互獨立的PKI系統之間進行互聯的結果。盡管“PKI網絡”一詞用得越來越多(特別是對滿樹結構和混合結構),但是對等根CA的互聯過程通常被稱為“分布式交叉認證”。
3.2.3 Web模型
Web模型是在萬維網(WWW)上誕生的,而且依賴于流行的瀏覽器,如Microsoft公司的Internet Explorer。在這種模型中,許多CA的公鑰被預裝在標準的瀏覽器上。這些公鑰確定了一組瀏覽器用戶最初信任的CA。盡管這組根密鑰可以被用戶修改,然而幾乎沒有普通用戶對PKI和安全問題能精通到可以進行這種修改的程度。
這種模型初看似乎與分布式信任結構模型相似,但從根本上講,它更類似于認證機構的嚴格層次結構模型。因為在實際上,瀏覽器廠商起到了根CA的作用,而與被嵌入的密鑰相對應的CA就是它所認證的CA,當然這種認證并不是通過頒發證書實現的,而只是物理地把CA的密鑰嵌入瀏覽器。
Web模型在方便性和簡單互操作性方面有明顯的優勢,但是也存在許多安全隱患。例如,因為瀏覽器的用戶自動地信任預安裝的所有公鑰,所以只要這些根CA中有一個是“壞的”,安全性將被完全破壞。A將相信任何聲稱是B的證書都是B的合法證書,即使它實際上只是由其公鑰嵌入瀏覽器中的“壞的CA”簽署的掛在B名下的C的公鑰。所以,A就可能無意間向C透露機密或接受C偽造的數字簽名。這種假冒能夠成功的原因是:A一般不知道收到的證書是由哪一個根密鑰驗證的。在嵌入其瀏覽器中的多個根密鑰中,A可能只認可所給出的一些CA,但并不了解其他CA。然而在Web模型中,A的軟件平等而無任何疑問地信任這些CA,并接受它們中任何一個簽署的證書。
當然,在其他信任模型中也可能出現類似情況。例如,在分布式信任結構模型中,A或許不能認可一個特定的CA,但是其軟件在相關的交叉認證是有效的情況下,會信任該CA所簽署的證書。在分布式信任結構中,A在PKI安全方面明確地相信其局部CA“做正確的事”,例如,與可信的其他CA進行交叉認證等。而在Web模型中,A通常是因為與安全無關的原因而取得瀏覽器的,因此,從安全觀點來看,沒有任何理由相信這個瀏覽器是在信任“正確的”CA。
另外一個安全隱患是沒有實用的機制來撤銷嵌入瀏覽器中的根密鑰。如果發現一個根密鑰是“壞的”,或者與根的公鑰相應的私鑰被泄密了,要使全世界數百萬個瀏覽器都自動地廢止該密鑰的使用是不可能的,這是因為無法保證通報的報文能到達所有的瀏覽器,而且即使報文到達了瀏覽器,瀏覽器也沒有處理該報文的功能。因此,從瀏覽器中去除壞密鑰需要全世界的每個用戶都同時采取明確的動作,否則,一些用戶將是安全的,而其他用戶仍處于危險之中。但是,這樣一個全世界范圍內的同時動作是不可能實現的。
最后,該模型還缺少有效的方法在CA和用戶之間建立合法協議,該協議的目的是使CA和用戶共同承擔責任。因為,瀏覽器可以自由地從不同站點下載,也可以預裝在操作系統中;CA不知道它的用戶是誰,并且一般用戶對PKI也缺乏足夠的了解,因此不會主動與CA直接接觸。這樣。所有的責任最終或許都會由用戶承擔。
3.2.4 以用戶為中心的信任模型
在以用戶為中心的信任模型中,每個用戶自己決定信任哪些證書。通常,用戶的最初信任對象包括用戶的朋友、家人或同事,但是否信任某證書則被許多因素決定。
著名的安全軟件PGP最能說明以用戶為中心的信任模型的原理。在PGP中,一個用戶通過擔當CA(簽署其他實體的公鑰)并使其公鑰被其他人所認證來建立或參加所謂的“信任網”。例如,當A收到一個據稱屬于B的證書時,他將發現這個證書是由他不認識的D簽署的,但是D的證書是由他認識并且信任的C簽署的。在這種情況下,A可以決定信任B的密鑰,即信任從C到D再到B的密鑰鏈,也可以決定不信任B的密鑰,即認為“未知的”B與“已知的”C之間的“距離太遠”。
由于要依賴于用戶自身的行為和決策能力,因此以用戶為中心的模型在技術水平較高和利害關系高度一致的群體中是可行的,但是在一般的群體中是不現實的,因為它的許多用戶有極少或者沒有安全及PKI的概念。而且,這種模型一般不適合用在貿易、金融或政府環境中,因為在這些環境下,通常希望或需要對用戶的信任實行某種控制,顯然這樣的信任策略在以用戶為中心的模型中是不可能實現的。