PKI基本原理概述
在商用密碼應用方案的設計和研討中,證書相關內容幾乎在每個方案中都要碰到。在日常工作討論中,密小白發現,PKI是一個讓不少人感到困擾的概念,公鑰、證書、CA和PKI的含義是什么,他們之間的關系是什么?用公鑰就必須證書嗎?我們的國密CA和書上介紹的通用PKI相比有什么特點?下面,我們就來捋一捋這些基本概念,希望對大家理解PKI和用好PKI進行商用密碼保障系統設計有所幫助。
一、中間人攻擊與公鑰真實性問題
密碼技術起源于軍事應用,在一戰和二戰的態勢發展中起到關鍵作用,那時加密通信離不開一個關鍵的用來傳遞密鑰信息的密碼本,解密方必須獲得加密方在加密時采用的密鑰,才能順利解密信息。直到1976年Diffie和Hellman發表《密碼學的新動向》,證明了在發送端和接收端無需傳輸密鑰也可進行保密通訊,從此開啟了公鑰密碼學的新紀元。隨后RSA公鑰密碼算法發表,公鑰密碼得到廣泛應用,不僅用于保密通信,提供信息的機密性功能(如圖1所示),也用于數字簽名,提供信息的完整性、真實性和不可否認功能(如圖2所示)。

在圖1的加解密通信過程中,發送端A采用接收端B公鑰對消息進行加密,接收端B收到密文后,用自己的私鑰進行解密即可得到明文。在基于公鑰體制的保密通信中,通過公鑰無法推出私鑰,公鑰可以公開給任何人,不必擔心密文被知道公鑰的人解密。
雖然公鑰不用保密,但是,如何保證公鑰的真實性也是一個難題。如果發送方A事先并沒有接收方B的公鑰,需要從網絡上獲取公鑰時,主動攻擊者Eve就有機會發起攻擊,對雙方通信進行竊聽。針對公鑰密鑰的中間人攻擊過程如圖3所示。

(抱歉上圖第7步有誤,SKe應為PKe),攻擊者Eve在網絡中截獲Alice和Bob間的所有通信報文,并按需要進行轉發或者替換,就能用自己的公鑰PKe替換Bob的公鑰PKb,進而解密Alice發給Bob的消息,并偽造出Bob能正常解密的消息。
同樣,在圖2的簽名驗證過程中,簽名方A用自己的私鑰對消息進行了簽名,驗證方B收到簽名后,需要用A的公鑰對簽名值進行運算,以判斷簽名值是否真正由A產生。如果在不知情的情況下采用了攻擊者Eve的公鑰,那攻擊者偽造的任何簽名都能通過驗證了。
因此,在基于公鑰體制的安全通信中,無論是消息的加解密過程,還是消息的簽名驗證過程,得到真實的公鑰就顯得非常重要了。也就是說,在公鑰密碼體制中,雖然公鑰不需要保密,但是在使用公鑰的時候,必須要保證公鑰的真實性,知道公鑰屬于哪個主體。
二、為什么需要證書、PKI?
證書就是為了解決公鑰真實性而提出的技術手段。
認證機構CA將主體的身份信息及其公鑰放在一起,用自己的私鑰進行簽名后發放的文件就是證書。基于證書建立的公鑰真實性信任鏈條如圖4所示。

圖4 基于證書建立的公鑰真實性信任鏈
驗證者使用自己信任的認證機構CA的公鑰PKca,經過驗證運算可以判斷一張證書的真實性;通過一張真實的證書,可以相信證書中實體公鑰的真實性。在這個信任鏈條中,使用認證機構的真實公鑰是信任的源頭。
為了解決公鑰的真實性問題,引入了證書,由認證機構來進行簽名。但是,認證機構為什么可信,證書如何頒發,私鑰泄露后證書如何作廢,證書如何查詢,這些問題需要建立系列規范來解決,否則,公鑰的真實性仍然無法在網絡系統中得到確認。PKI就由此而生了。
三、PKI的三個基本組成要素
PKI全稱為公鑰基礎設施(Public-Key Infrastructure),是為了有效運用公鑰而制定的一系列規范和規格的總稱。它是總稱,而不是一個單獨的標準或規格。RSA公司的PKCS系列,某些IETF RFC標準,ITU-T的X.509,都是PKI的標準,根據具體所采用的規格,PKI有很多變種。雖然PKI涉及的內容似乎很多,但其基本組成可以總結為三個部分,如下圖所示:

圖5 PKI的三個基本組成要素
1:PKI用戶(實體)
如上圖5所示,PKI包括兩類用戶,一類是注冊公鑰的PKI用戶,另一類是使用公鑰的PKI用戶。
注冊公鑰的PKI用戶在PKI系統中的主要操作包括:
—向認證機構注冊公鑰,申請證書。公鑰可以自己產生后提交給認證機構,也可以由認證機構產生。
—根據需要申請作廢已注冊的公鑰,表示自己不再使用該公鑰。
—用私鑰解密接收到的密文。
—用私鑰對消息進行數字簽名。
使用公鑰的PKI用戶在PKI系統中的主要操作包括:
—查找某個實體的證書。
—對查找或獲取的證書進行驗證(驗證內容包括:證書的真實性,證書的有效期,證書是否撤銷)獲取可信的公鑰。
—用對方的公鑰將消息加密后發送給接收者。
—用對方的公鑰驗證數字簽名。
2:認證機構(CA)
認證機構(CA:Certification Authority)負責審核注冊公鑰的PKI用戶提交的身份信息,并為用戶頒發證書。其在PKI系統中的主要操作包括:
—生成密鑰對(也可由用戶生成)
—在注冊公鑰時對用戶身份及信息進行認證
—生成并頒發證書
—作廢證書(CRL:Certificate Revocation List )
其中,公鑰注冊和用戶身份認證這部分工作可以由注冊機構(RA)來分擔。
3:證書庫
證書庫也叫證書目錄,是樹形的數據庫DB。PKI用戶在需要時從其中獲取證書。查找證書的標準協議有LDAP和OCSP兩類。LDAP(輕型目錄訪問協議,Lightweight Directory Access Protocol),用戶通過LDAP服務可以直接查到需要的證書和CRL。OCSP(在線證書狀體協議,Online Certificate Status Protocol):用戶通過OCSP服務可以查詢到某個證書的狀態(有效/注銷/未知)。
到此為止,我們講解了公鑰機制的中間人攻擊風險,以及為了解決公鑰真實性問題而出現的證書和PKI體系。希望對于大家理解公鑰、證書和PKI的基本原理有所幫助。