PKI和CA 介紹
公鑰基礎設施(Public Key Infrastructure,簡稱PKI)是目前網路安全建設的基礎與核心,是電子商務安全實施的基本保障,因 此,對PKI技術的研究和開發成為目前資訊保安領域的熱點。本文對PKI技術進行了全面的分析和總結,其中包括PKI組成、證照認證機構CA、PKI應 用、應用程式設計介面和PKI標準等,並對CA的開發做了簡要分析。本文對PKI,特別是CA的開發、應用和普及具有一定的促進作用。
1 前言
隨 著網路技術和資訊科技的發展,電子商務已逐步被人們所接受,並在得到不斷普及。但由於各種原因,國內電子商務的安全性仍不能得到有效的保障。在常規業務 中,交易雙方現場交易,可以確認購買雙方的身份。利用商場開具的發票和客戶現場支付商品費用,無須擔心發生糾紛和無憑證可依。但通過網上進行電子商務交易 時,由於交易雙方並不現場交易,因此,無法確認雙方的合法身份,同時交易資訊是交易雙方的商業祕密,在網上傳輸時必須保證安全性,防止資訊被竊取;雙方的 交易非現場交易,一旦發生糾紛,必須能夠提供仲裁。
因 此,在電子商務中,必須從技術上保證在交易過程中能夠實現身份認證、安全傳輸、不可否認性、資料完整性。在採用數字證照認證體系之前,交易安全一直未能真 正得到解決。由於數字證照認證技術採用了加密傳輸和數字簽名,能夠實現上述要求,因此在國內外電子商務中,都得到了廣泛的應用。
PKI 採用證照進行公鑰管理,通過第三方的可信任機構(認證中心,即CA),把使用者的公鑰和使用者的其他標識資訊捆綁在一起,其中包括使用者名稱和電子郵件地址等信 息,以在Internet網上驗證使用者的身份。PKI把公鑰密碼和對稱密碼結合起來,在Internet網上實現金鑰的自動管理,保證網上資料的安全傳 輸。
因 此,從大的方面來說,所有提供公鑰加密和數字簽名服務的系統,都可歸結為PKI系統的一部分,PKI的主要目的是通過自動管理金鑰和證照,為使用者建立起一 個安全的網路執行環境,使使用者可以在多種應用環境下方便的使用加密和數字簽名技術,從而保證網上資料的機密性、完整性、有效性。資料的機密性是指資料在傳 輸過程中,不能被非授權者偷看;資料的完整性是指資料在傳輸過程中不能被非法篡改;資料的有效性是指資料不能被否認。
一 個有效的PKI系統必須是安全的和透明的,使用者在獲得加密和數字簽名服務時,不需要詳細地瞭解PKI的內部運作機制。在一個典型、完整和有效的PKI系統 中,除證照的建立和釋出,特別是證照的撤銷,一個可用的PKI產品還必須提供相應的金鑰管理服務,包括金鑰的備份、恢復和更新等。沒有一個好的金鑰管理系 統,將極大影響一個PKI系統的規模、可伸縮性和在協同網路中的執行成本。在一個企業中,PKI系統必須有能力為一個使用者管理多對金鑰和證照;能夠提供安 全策略編輯和管理工具,如金鑰週期和金鑰用途等。
PKI發展的一個重要方面就是標準化問題,它也是建立互操作性的基礎。目前,PKI標準化主要有兩個方面:一是RSA公司的公鑰加密標準PKCS(Public Key Cryptography Standards),它定義了許多基本PKI部件,包括數字簽名和證照請求格式等;二是由Internet工程任務組IETF(Internet Engineering Task Force)和PKI工作組PKIX(Public Key Infrastructure Working Group)所定義的一組具有互操作性的公鑰基礎設施協議。在今後很長的一段時間內,PKCS和PKIX將會並存,大部分的PKI產品為保持相容性,也將會對這兩種標準進行支援。
PKI 的發展非常快,已經從幾年前的理論階段過渡到目前的產品階段,並且出現了大量成熟技術、產品和解決方案,正逐步走向成熟。PKI的發展受應用驅動的影響, 比如,早期的Internet商務和Web安全要求主要依賴於SSL,並要求應用首先對證照進行處理,所以,在很多公司的訊息和群組產品中都提供了公鑰和 證照系統,如Exchange和Notes等。另外,基於標準的基礎設施和應用也同樣促進了PKI的發展,它能夠保證基於Internet的安全訊息傳送 的可互動性,如S/MIME等。
目 前,PKI產品的生產廠家很多,比較有代表性的主要有VeriSign和Entrust。VeriSign作為RSA的控股公司,藉助RSA成熟的安全技 術,提供了PKI產品,為使用者之間的內部資訊互動提供安全保障。另外,VeriSign也提供對外的CA服務,包括證照的釋出和管理等功能,並且同一些大 的生產商,如Microsoft、Netscape和JavaSoft等,保持了夥伴關係,以在Internet上提供程式碼簽名服務。
Entrust作為北方電訊(Northern Telecom)的控股公司,從事PKI的研究與產品開發已經有很多年的歷史了,並一直在業界保持領先地位,擁有許多成熟的PKI及配套產品,並提供了有效的金鑰管理功能。
另外,一些大的廠商,如Microsoft、 Netscape和Novell等,都開始在自己的網路基礎設施產品中增加PKI功能。Netscape已經開始把證照伺服器作為了SuiteSpot的 一部分,雖然其證照伺服器沒有Entrust產品的功能全面和完善,但提供了基本的證照生成和管理功能。即使沒有金鑰管理功能,但由於Netscape把 證照伺服器同SuiteSpot伺服器和Communicator客戶端產品的整合,依靠廣泛的市場基礎,也取得的越來越多的市場份額。由SUN和 Netscape聯盟組成的iplanet公司(Sun|Netscape Alliance)也在PKI方面做了很大的努力,憑藉其在網路和電子商務方 面的優勢,發展了很多效能優越的PKI產品,如LDAP目錄伺服器和證照管理系統等。
2 PKI組成
PKI作為一組在分散式計算系統中利用公鑰技術和X.509證照所 提供的安全服務,企業或組織可利用相關產品建立安全域,並在其中釋出金鑰和證照。在安全域內,PKI管理加密金鑰和證照的釋出,並提供諸如金鑰管理(包括 金鑰更新,金鑰恢復和金鑰委託等)、證照管理(包括證照產生和撤銷等)和策略管理等。PKI產品也允許一個組織通過證照級別或直接交叉認證等方式來同其他 安全域建立信任關係。這些服務和信任關係不能侷限於獨立的網路之內,而應建立在網路之間和Internet之上,為電子商務和網路通訊提供安全保障,所以 具有互操作性的結構化和標準化技術成為PKI的核心
PKI在實際應用上是一套軟硬體系統和安全策略的集合,它提供了一整套安全機制,使使用者在不知道對方身份或分佈地很廣的情況下,以證照為基礎,通過一系列的信任關係進行通訊和電子商務交易。
圖 1 PKI組成
一個典型的PKI系統如圖1所示,其中包括PKI策略、軟硬體系統、證照機構CA、序號產生器構RA、證照釋出系統和PKI應用等。
1. PKI 安全策略建立和定義了一個組織資訊保安方面的指導方針,同時也定義了密碼系統使用的處理方法和原則。它包括一個組織怎樣處理金鑰和有價值的資訊,根據風險 的級別定義安全控制的級別。一般情況下,在PKI中有兩種型別的策略:一是證照策略,用於管理證照的使用,比如,可以確認某一CA是在Internet上 的公有CA,還是某一企業內部的私有CA;另外一個就是CPS(Certificate Practice Statement)。一些由商業證照發放機 構(CCA)或者可信的第三方操作的PKI系統需要CPS。這是一個包含如何在實踐中增強和支援安全策略的一些操作過程的詳細文件。它包括CA是如何建立 和運作的,證照是如何發行、接收和廢除的,金鑰是如何產生、註冊的,以及金鑰是如何儲存的,使用者是如何得到它的等等。
2. 證照機構CA是PKI的信任基礎,它管理公鑰的整個生命週期,其作用包括:發放證照、規定證照的有效期和通過釋出證照廢除列表(CRL)確保必要時可以廢除證照。後面將會在CA進行詳細介紹。
3. 注 冊機構RA提供使用者和CA之間的一個介面,它獲取並認證使用者的身份,向CA提出證照請求。它主要完成收集使用者資訊和確認使用者身份的功能。這裡指的使用者,是 指將要向認證中心(即CA)申請數字證照的客戶,可以是個人,也可以是集團或團體、某政府機構等。註冊管理一般由一個獨立的序號產生器構(即RA)來承擔。它 接受使用者的註冊申請,審查使用者的申請資格,並決定是否同意CA給其簽發數字證照。序號產生器構並不給使用者簽發證照,而只是對使用者進行資格審查。因此,RA可以 設定在直接面對客戶的業務部門,如銀行的營業部、機構認識部門等。當然,對於一個規模較小的PKI應用系統來說,可把註冊管理的職能由認證中心CA來完 成,而不設立獨立執行的RA。但這並不是取消了PKI的註冊功能,而只是將其作為CA的一項功能而已。PKI國際標準推薦由一個獨立的RA來完成註冊管理 的任務,可以增強應用系統的安全。
4. 證照釋出系統負責證照的發放,如可以通過使用者自己,或是通過目錄服務。目錄伺服器可以是一個組織中現存的,也可以是PKI方案中提供的。
PKI的應用非常廣泛,包括在web伺服器和瀏覽器之間的通訊、電子郵件、電子資料交換(EDI)、在Internet上的信用卡交易和虛擬私有網(VPN)等。
一 個簡單的PKI系統包括證照機構CA、序號產生器構RA和相應的PKI儲存庫。CA用於簽發並管理證照;RA可作為CA的一部分,也可以獨立,其功能包括個人 身份稽核、CRL管理、金鑰產生和金鑰對備份等;PKI儲存庫包括LDAP目錄伺服器和普通資料庫,用於對使用者申請、證照、金鑰、CRL和日誌等資訊進行 儲存和管理,並提供一定的查詢功能。
3 證照認證機構CA
3.1 數字證照基礎
數字證照是一種數字標識,可以說是Internet上的安全護照或身份證明。當人們到其他國家旅行時,使用者護照可以證實其身份,並被獲准進入這個國家。數字證照提供的是網路上的身份證明。
數 字證照是一個經證照授權中心數字簽名的包含公開金鑰擁有者資訊和公開金鑰的檔案。最簡單的證照包含一個公開金鑰、名稱以及證照授權中心的數字簽名。一般情 況下證照中還包括金鑰的有效時間,發證機關(證照授權中心)的名稱,該證照的序列號等資訊,證照的格式遵循ITUT X.509國際標準。
3.1.1 證照格式
在Internet網路中,應用程式使用的證照都來自不同的廠商或組織,為了實現可互動性,要求證照能夠被不同的系統識別,符合一定的 格式,並實現標準化。X.509為證照及其CRL格式提供了一個標準。但X.509本身不是Internet標準,而是國際電聯ITU標準,它定義了一個 開放的框架,並在一定的範圍內可以進行擴充套件。
為 了適應PKI技術的發展,IETF也必須制定在Internet上使用X.509和CRL的標準。PKIX工作組就提供了一個Internet草 案"Part I: X.509 Certificate and CRL Profile"(詳細內容可見:ftp://ftp.ietf.org /internet-drafts/draft-ietf-pkix-ipki-part1-11.txt),用於定義在Internet PKI中使用 X.509和CRL的方法和規範。該草案把X.509作為標準,並對各標準項和擴充套件做了說明,基本接收了X.509作為Internet中的證照標準,但 也定義了被PKI應用的X.509 V3和CRL V2標準格式的設定,這些設定包含了PKIX工作組對X.509所做的一些新的擴充套件。
X.509 目前有三個版本:V1、V2和V3,其中V3是在V2的基礎上加上擴充套件項後的版本,這些擴充套件包括由ISO文件(X.509-AM)定義的標準擴充套件,也包括 由其他組織或團體定義或註冊的擴充套件項。X.509由ITU-T X.509(前身為CCITT X.509)或ISO/IEC 9594-8定義,最早以 X.500目錄建議的一部分發表於1988年,並作為V1版本的證照格式。X.500於1993年進行了修改,並在V1基礎上增加了兩個額外的域,用於支 持目錄存取控制,從而產生了V2版本。
為了適應新的需求ISO/IEC和ANSI X9發展了X.509 V3版本證照格式,該版本證照通過增加標準擴充套件項對V1和V2證照進行了擴充套件。另外,根據實際需要,各個組織或團體也可以增加自己的私有擴充套件。
X.509 V1和V2證照所包含的主要內容如下:
· 證照版本號(Version):版本號指明X.509證照的格式版本,現在的值可以為0、1、2,也為將來的版本進行了預定義。
· 證照序列號(SerialNumber):序列號指定由CA分配給證照的唯一的數字型識別符號。當證照被取消時,實際上是將此證照的序列號放入由CA簽發的CRL中,這也是序列號唯一的原因。
· 簽名演算法識別符號(Signature):簽名演算法標識用來指定由CA簽發證照時所使用的簽名演算法。演算法識別符號用來指定CA簽發證照時所使用的公開金鑰演算法和hash演算法,須向國際知名標準組織(如ISO)註冊。
· 簽發機構名(Issuer):此域用來標識簽發證照的CA的X.500 DN名字。包括國家、省市、地區、組織機構、單位部門和通用名。
· 有效期(Validity):指定證照的有效期,包括證照開始生效的日期和時間以及失效的日期和時間。每次使用證照時,需要檢查證照是否在有效期內。
· 證照使用者名稱(Subject):指定證照持有者的X.500唯一名字。包括國家、省市、地區、組織機構、單位部門和通用名,還可包含email地址等個人資訊等
· 證照持有者公開金鑰資訊(subjectPublicKeyInfo):證照持有者公開金鑰資訊域包含兩個重要資訊:證照持有者的公開金鑰的值;公開金鑰使用的演算法識別符號。此識別符號包含公開金鑰演算法和hash演算法。
· 簽發者唯一識別符號(Issuer Unique Identifier):簽發者唯一識別符號在第2版加入證照定義中。此域用在當同一個X.500名字用於多個認證機構時,用一位元字串來唯一標識簽發者的X.500名字。可選。
· 證照持有者唯一識別符號(Subject Unique Identifier):持有證照者唯一識別符號在第2版的標準中加入X.509證照定義。此域用在當同一個X.500名字用於多個證照持有者時,用一位元字串來唯一標識證照持有者的X.500名字。可選。
· 簽名值(Issuer's Signature):證照籤發機構對證照上述內容的簽名值。
X.509 V3 證照是在v2的基礎上一標準形式或普通形式增加了擴充套件項,以使證照能夠附帶額外資訊。標準擴充套件是指由X.509 V3版本定義的對V2版本增加的具有廣泛 應用前景的擴充套件項,任何人都可以向一些權威機構,如ISO,來註冊一些其他擴充套件,如果這些擴充套件項應用廣泛,也許以後會成為標準擴充套件項。
3.1.2 CRL格式
證照廢除列表CRL(Certificate revocation lists,又稱證照黑名單)為應用程式和其它系統提供了一種檢 驗證照有效性的方式。任何一個證照廢除以後,證照機構CA會通過釋出CRL的方式來通知各個相關方。目前,同X.509 V3證照對對應的CRL為 X.509 v2 CRL,其所包含的內容格式如下:
· CRL的版本號:0表示X.509 V1 標準;1表示X.509 V2 標準;目前常用的是同X.509 V3證照對應的CRL V2版本。
· 簽名演算法:包含演算法標識和演算法引數,用於指定證照籤發機構用來對CRL內容進行簽名的演算法。
· 證照籤發機構名:簽發機構的DN名,由國家、省市、地區、組織機構、單位部門和通用名等組成。
· 此次簽發時間:此次CRL簽發時間,遵循ITU-T X.509 V2標準的CA在2049年之前把這個域編碼為UTCTime型別,在2050或2050年之後年之前把這個域編碼為GeneralizedTime型別。
· 下次簽發時間:下次CRL簽發時間,遵循ITU-T X.509 V2標準的CA在2049年之前把這個域編碼為UTCTime型別,在2050或2050年之後年之前把這個域編碼為GeneralizedTime型別。
· 使用者公鑰資訊,其中包括廢除的證照序列號和證照廢除時間。廢除的證照序列號是指要廢除的由同一個CA簽發的證照的一個唯一標識號,同一機構簽發的證照不會有相同的序列號。
· 簽名演算法:對CRL內容進行簽名的簽名演算法。
· 簽名值:證照籤發機構對CRL內容的簽名值。
另 外,CRL中還包含擴充套件域和條目擴充套件域。CRL擴充套件域用於提供與CRL有關的額外資訊部份,允許團體和組織定義私有的CRL擴充套件域來傳送他們獨有的信 息;CRL條目擴充套件域則提供與CRL條目有關的額外資訊部份,允許團體和組織定義私有的CRL條目擴充套件域來傳送他們獨有的資訊。
3.1.3 證照的存放
數字證照作為一種電子資料格式,可以直接從網上下載,也可以通過其他方式。
· 使用IC卡存放使用者證照。即把使用者的數字證照寫到IC卡中,供使用者隨身攜帶。這樣使用者在所有能夠讀IC卡證照的電子商務終端上都可以享受安全電子商務服務。
· 使用者證照直接存放在磁碟或自己的終端上。戶將從CA申請來的證照下載或複製到磁碟或自己的PC機或智慧終端上,當使用者使用自己的終端享受電子商務服務時,直接從終端讀入即可。
· 另外,CRL一般通過網上下載的方式儲存在使用者端。
3.2 CA框架模型
證照機構CA用於建立和釋出證照,它通常為一個稱為安全域(security domain)的有限群體發放證照。創 建證照的時候,CA系統首先獲取使用者的請求資訊,其中包括使用者公鑰(如果使用者端是個人使用或者測試用,則公鑰一般由使用者端產生,如電子郵件程式或瀏覽器等 或者使用第三方開發的具有獨立CSP的智慧終端如USBkey),CA將根據使用者的請求資訊產生證照,並用自己的私鑰對證照進行簽名。其他使用者、應用程式或實體將使用CA的公鑰對證照進行驗證。如果一個CA系統是可信的,則驗證證照的使用者可以確信,他所驗證的證照中的公鑰屬於證照所代表的那個實體。
CA 還負責維護和釋出證照廢除列表CRL(certificate revocation lists,又稱為證照黑名單)。當一個證照,特別是其中的公鑰因 為其他原因無效時(不是因為到期),CRL提供了一種通知使用者和其他應用的中心管理方式。CA系統生成CRL以後,要麼是放到LDAP伺服器中供使用者查詢 或下載,要麼是放置在Web伺服器的合適位置,以頁面超級連線的方式供使用者直接查詢或下載。
一個典型的CA系統包括安全伺服器、序號產生器構RA、CA伺服器、LDAP目錄伺服器和資料庫伺服器等。如圖2所示。
圖2 典型CA框架模型
安 全伺服器:安全伺服器面向普通使用者,用於提供證照申請、瀏覽、證照撤消列表以及證照下載等安全服務。安全伺服器與使用者的的通訊採取安全通道方式(如SSL 的方式,不需要對使用者進行身份認證)。使用者首先得到安全伺服器的證照(該證照由CA頒發),然後使用者與伺服器之間的所有通訊,包括使用者填寫的申請資訊以及 瀏覽器生成的公鑰均以安全伺服器的金鑰進行加密傳輸,只有安全伺服器利用自己的私鑰解密才能得到明文,這樣可以防止其他人通過竊聽得到明文。從而保證了證 書申請和傳輸過程中的資訊保安性。
CA 伺服器:CA伺服器使整個證照機構的核心,負責證照的簽發。CA首先產生自身的私鑰和公鑰(金鑰長度至少為1024位),然後生成數字證照,並且將數字證 書傳輸給安全伺服器。CA還負責為操作員、安全伺服器以及序號產生器構伺服器生成數字證照。安全伺服器的數字證照和私鑰也需要傳輸給安全伺服器。CA伺服器是 整個結構中最為重要的部分,存有CA的私鑰以及發行證照的指令碼檔案,出於安全的考慮,應將CA伺服器與其他伺服器隔離,任何通訊採用人工干預的方式,確保 認證中心的安全。
序號產生器構RA:登記中心伺服器面向登記中心操作員,在CA體系結構中起承上啟下的作用,一方面向CA轉發安全伺服器傳輸過來的證照申請請求,另一方面向LDAP伺服器和安全伺服器轉發CA頒發的數字證照和證照撤消列表。
LDAP伺服器:LDAP伺服器提供目錄瀏覽服務,負責將序號產生器構伺服器傳輸過來的使用者資訊以及數字證照加入到伺服器上。這樣其他使用者通過訪問LDAP伺服器就能夠得到其他使用者的數字證照。
資料庫伺服器:資料庫伺服器是認證機構中的核心部分,用於認證機構中資料(如金鑰和使用者資訊等)、日誌合統計資訊的儲存和管理。實際的的資料庫系統應採用多種措施,如磁碟陣列、雙機備份和多處理器等方式,以維護資料庫系統的安全性、穩定性、可伸縮性和高效能。
3.3 證照的申請和撤銷
證 書的申請有兩種方式,一是線上申請,另外一個就是離線申請。線上申請就是通過瀏覽器或其他應用系統通過線上的方式來申請證照,這種方式一般用於申請普通用 戶證照或測試證照。離線方式一般通過人工的方式直接到證照機構證照受理點去辦理證照申請手續,通過稽核後獲取證照,這種方式一般用於比較重要的場合,如服 務器證照和商家證照等。下面討論的主要是線上申請方式。
當證照申請時,使用者使用瀏覽器通過Internet訪問安全伺服器,下載CA的數字證照(又叫做根證照),然後序號產生器構伺服器對使用者進行身份稽核,認可後便批准使用者的證照申請,然後操作員對證照申請表進行數字簽名,並將申請及其簽名一起提交給CA伺服器。
CA 操作員獲得序號產生器構伺服器操作員簽發的證照申請,發行證照或者拒絕發行證照,然後將證照通過硬拷貝的方式傳輸給序號產生器構伺服器。序號產生器構伺服器得到使用者的 證照以後將使用者的一些公開資訊和證照放到LDAP伺服器上提供目錄瀏覽服務,並且通過電子郵件的方式通知使用者從安全伺服器上下載證照。使用者根據郵件的提示 到指定的網址下載自己的數字證照,而其他使用者可以通過LDAP伺服器獲得他的公鑰數字證照。
證照申請的步驟如下:
1. 使用者申請
使用者首先下載CA的證照,又叫根證照,然後在證照的申請過程中使用SSL安全方式與伺服器建立連線,使用者填寫個人資訊,瀏覽器生成私鑰 和公鑰對,將私鑰儲存客戶端特定檔案中,並且要求用口令保護私鑰,同時將公鑰和個人資訊提交給安全伺服器。安全伺服器將使用者的申請資訊傳送給序號產生器構服務 器。
2. 序號產生器構稽核
使用者與序號產生器構人員聯絡,證明自己的真實身份,或者請求代理人與序號產生器構聯絡。 序號產生器構操作員利用自己的瀏覽器與序號產生器構伺服器建立SSL安全通訊,該 伺服器需要對操作員進行嚴格的身份認證,包括操作員的數字證照、IP地址,為了進一步保證安全性,可以設定固定的訪問時間。操作員首先檢視目前系統中的申 請人員,從列表中找出相應的使用者,點選使用者名稱,核對使用者資訊,並且可以進行適當的修改,如果操作員同意使用者申請證照請求,必須對證照申請資訊進行數字籤 名。操作員也有權利拒絕使用者的申請。操作員與伺服器之間的所有通訊都採用加密和簽名,具有安全性、抗否認性,保證了系統的安全性和有效性。
3. CA發行證照
序號產生器構RA通過硬拷貝的方式向CA傳輸使用者的證照申請與操作員的數字簽名,CA操作員檢視使用者的詳細資訊,並且驗證操作員的數字簽名,如果簽名驗證通 過,則同意使用者的證照請求,頒發證照。然後CA將證照輸出。如果CA操作員發現簽名不正確,則拒絕證照申請, CA頒發的數字證照中包含關於使用者及CA自 身的各種資訊,如:能唯一標識使用者的姓名及其他標識資訊,如個人的email地址;證照持有者的公鑰。公鑰用於為證照持有者加密敏感資訊、簽發個人證照的 認證機構的名稱、個人證照的序列號和個人證照的有效期(證照有效起止日期)等
4. 序號產生器構證照轉發
序號產生器構RA操作員從CA處得到新的證照,首先將證照輸出到LDAP目錄伺服器以提供目錄瀏覽服務,最後操作員向使用者傳送一封電子郵件,通知使用者證照已經 發行成功,並且把使用者的證照序列號告訴使用者到指定的網址去下載自己的數字證照。並且告訴使用者如何使用安全伺服器上的LDAP配置,讓使用者修改瀏覽器的客戶 端配置檔案以便訪問LDAP伺服器,獲得他人的數字證照。
5. 使用者證照獲取
使用者使用證照申請時的瀏覽器到指定的網址,鍵入自己的證照序列號,伺服器要求使用者必須使用申請證照時的瀏覽器,因為瀏覽器需要用該證照相應的私鑰去驗證數字證照。只有儲存了相應私鑰的瀏覽器才能成功下載使用者的數字證照。
這時使用者開啟瀏覽器的安全屬性,就可以發現自己已經擁有了CA頒發的數字證照,可以利用該數字證照與其他人以及web伺服器(擁有相同CA頒發的證照)使用加密、數字簽名進行安全通訊。
認 證中心還涉及到CRL的管理。使用者向特定的操作員(僅負責CRL的管理)發一份加密簽名的郵件,申明自己希望撤消證照。操作員開啟郵件,填寫CRL註冊 表,並且進行數字簽名,提交給CA,CA操作員驗證序號產生器構操作員的數字簽名,批准使用者撤消證照,並且更新CRL,然後CA將不同格式的CRL輸出給註冊 機構,公佈到安全伺服器上,這樣其他人可以通過訪問伺服器得到CRL。
證照撤銷流程步驟如下:
1. 使用者向序號產生器構操作員CRLManager傳送一封簽名加密的郵件,宣告自己自願撤消證照。
2. 這冊機構同意證照撤消,操作員鍵入使用者的序列號,對請求進行數字簽名。
3. CA查詢證照撤消請求列表,選出其中的一個,驗證操作員的數字簽名,如果正確的話,則同意使用者的證照撤消申請,同時更新CRL列表,然後將CRL以多種格式輸出。
4. 序號產生器構轉發證照撤消列表。操作員匯入CRL,以多種不同的格式將CRL公佈於眾。
5. 使用者瀏覽安全伺服器,下載或瀏覽CRL。
在一個PKI,特別是CA中,資訊的儲存是一個非常核心的問題,它包括兩個方面:一是CA伺服器利用資料庫來備份當前金鑰和歸檔過期金鑰,該資料庫需高度安全和機密,其安全等級同CA本身相同;另外一個就是目錄伺服器,用於分發證照和CRL,一般採用LDAP目錄伺服器。
3.4 金鑰管理
金鑰管理也是PKI(主要指CA)中的一個核心問題,主要是指金鑰對的安全管理,包括金鑰產生、金鑰備份、金鑰恢復和金鑰更新等。
1. 金鑰產生
金鑰對的產生是證照申請過程中重要的一步,其中產生的私鑰由使用者保留,公鑰和其他資訊則交於CA中心進行簽名,從而產生證照。根據證照型別和應用的不同,金鑰對的產生也有不同的形式和方法。對普通證照和測試證照,一般由瀏覽器或固定的終端應用來產生,這樣產生的金鑰強度較小,不適合應用於比較重要的安全網路交易。而對於比較重要的證照,如商家證照和伺服器證照等,金鑰對一般由專用應用程式或CA中心直接產生,這樣產生的金鑰強度大,適合於重要的應用場合。
另外,根據金鑰的應用不同,也可能會有不同的產生方式。比如簽名金鑰可能在客戶端或RA中心產生,而加密金鑰則需要在CA中心直接產生。
2. 金鑰備份和恢復
在一個PKI系統中,維護金鑰對的備份至關重要,如果沒有這種措施,當金鑰丟失後,將意味著加密資料的完全丟失,對於一些重要資料,這將是災難性的。所以,金鑰的備份和恢復也是PKI金鑰管理中的重要一環。
使用PKI的企業和組織必須恩能夠得到確認:即使金鑰丟失,受密要加密保護的重要資訊也必須能夠恢復,並且不能讓一個獨立的個人完全控制最重要的主金鑰,否則將引起嚴重後果。
企業級的PKI產品至少應該支援用於加密的安全金鑰的儲存、備份和恢復。金鑰一般用口令進行保護,而口令丟失則是管理員最常見的安全疏漏之一。所以,PKI產品應該能夠備份金鑰,即使口令丟失,它也能夠讓使用者在一定條件下恢復該金鑰,並設定新的口令。
例如,在某些情況下使用者可能有多對金鑰,至少應該有兩個金鑰:一個用於加密,一個用於簽名。簽名密要不需要備份,因為用於驗證簽名的公鑰(或公鑰證照)廣 泛釋出,即使簽名私鑰丟失,任何用於相應公要的人都可以對已簽名的文件進行驗證。但PKI系統必須備份用於加密的金鑰對,並允許使用者進行恢復,否則,用於 解密的私鑰丟失將意味著加密資料的完全不可恢復。
另外,使用PKI的企業也應該考慮所使用金鑰的生命週期,它包括金鑰和證照的有效時間,以及已撤銷金鑰和證照的維護時間等。
3. 金鑰更新
對每一個由CA頒發的證照都會有有效期,金鑰對生命週期的長短由簽發證照的CA中心來確定,各CA系統的證照有效期限有所不同,一般大約為2-3年。
當使用者的私鑰被洩漏或證照的有效期快到時,使用者應該更新私鑰。這時使用者可以廢除證照,產生新的金鑰對,申請新的證照。
3.5 證照的使用
在實際應用中,為了驗證資訊的數字簽名,使用者首先必須獲取資訊傳送者的公鑰證照,以及一些額外需要的證照(如CA證照等,用於驗證傳送者證照的有效性)。
證照的獲取可以有多種方式,如傳送者傳送簽名資訊時附加傳送自己的證照,或以另外的單獨資訊傳送證照,或者可以通過訪問證照釋出的目錄伺服器來獲得,或者直接從證照相關的實體處獲得。在一個PKI體系中,可以採取某種或某幾種上述方式獲得證照。
在電子商務系統中,證照的持有者可以是個人使用者、企事業單位、商家、銀行等。無論是電子商務中的哪一方,在使用證照驗證資料時,都遵循同樣的驗證流程。一個完整的驗證過程有以下幾步:
1. 將客戶端發來的資料解密 (如解開數字信封)。
2. 將解密後的資料分解成原始資料,簽名資料和客戶證照三部分。
3. 用CA根證照驗證客戶證照的簽名完整性。
4. 檢查客戶證照是否有效 (當前時間在證照結構中的所定義的有效期內)。
5. 檢查客戶證照是否作廢 (OCSP方式或CRL方式)。
6. 驗證客戶證照結構中的證照用途。
7. 客戶證照驗證原始資料的簽名完整性。
如果以上各項均驗證通過,則接受該資料。
4 PKI應用
---PKI技術的廣泛應用能滿足人們對網路交易安全保障的需求。當然,作為一種基礎設施,PKI的應用範圍非常廣泛,並且在不斷髮展之中,下面給出幾個應用例項。
1. 虛擬專用網路(VPN)
VPN是一種架構在公用通訊基礎設施上的專用資料通訊網路,利用網路層安全協議(尤其是IPSec)和建立在PKI上的加密與簽名技術來獲得機密性保護。 基於PKI技術的IPSec協議現在已經成為架構VPN的基礎,它可以為路由器之間、防火牆之間或者路由器和防火牆之間提供經過加密和認證的通訊。雖然它 的實現會複雜一些,但其安全性比其他協議都完善得多。
2. 安全電子郵件
----作為Internet上最有效的應用,電子郵件憑藉其易用、低成本和高效已經成為現代商業中的一種標準資訊交換工具。隨著Internet的持續 增長,商業機構或政府機構都開始用電子郵件交換一些祕密的或是有商業價值的資訊,這就引出了一些安全方面的問題,包括:訊息和附件可以在不為通訊雙方所知 的情況下被讀取、篡改或截掉;發信人的身份無法確認。電子郵件的安全需求也是機密、完整、認證和不可否認,而這些都可以利用PKI技術來獲得。目前發展很 快的安全電子郵件協議是S/MIME (The Secure Multipurpose Internet Mail Extension),這是一個 允許傳送加密和有簽名郵件的協議。該協議的實現需要依賴於PKI技術。
3. Web安全
----瀏覽Web頁面是人們最常用的訪問Internet的方式。如果要通過Web 進行一些商業交易,該如何保證交易的安全呢?為了透明地解決Web 的安全問題,在兩個實體進行通訊之前,先要建立SSL連線,以此實現對應用層透明的安全通訊。利用PKI技術,SSL協議允許在瀏覽器和伺服器之間進行加 密通訊。此外伺服器端和瀏覽器端通訊時雙方可以通過數字證照確認對方的身份。-結合SSL協議和數字證照,PKI技術可以保證Web 交易多方面的安全需 求,使Web上的交易和麵對面的交易一樣安全。
5 應用程式設計介面API
協 議標準是系統具有可互動性的前提和基礎,它規範了PKI系統各部分之間相互通訊的格式和步驟。而應用程式設計介面 API(Application programming interfaces)則定義瞭如何使用這些協議,併為上層應用提供PKI服務。當應用需要使 用PKI服務,如獲取某一使用者的公鑰、請求證照廢除資訊或請求證照時將會都會用到API。目前API沒有統一的國際標準,大部分都是作業系統或某一公司產 品的擴充套件,並在其產品應用的框架內提供PKI服務。
目 前,有很多可以讓開發者選擇的API型別。IETF建議標準為通用安全服務API:GSS- API(Generic Security Service Application Program Interface),它提供了一種介面與網路機 制和網路協議相互獨立的實現。
歐 洲建立的SESAME(Secure European System for Applications in a Multi- Vendor Environment)定義了一些安全介面,並作為該組織發展的安全技術的一部分,該介面得到了歐洲許多著名廠商的支援,如 Bull SA、ICL和Seimens等,但沒有在美國得到支援,特別是一些大的廠商,如Microsoft和Netscape等。
Entrust 也為其產品提供了一套API,如Entrust證照管理服務 API(CMS API,Entrust's Certificate Management Services API),該API允許應用使用 Entrust的證照管理和分發服務。在1996年指定,並與1997年更新的PKIX Internet草 案"Architecture for Public Key Infrastructure"定義了PKI結構,並建議了許多標準,其中就包括 API。
目 前,在API市場處於領先地位的是Microsoft的CryptoAPI和Intel的公用資料安全框架 CDSA(Common Data Security Architecture),他們憑藉自己的產品優勢相互競爭。Microsoft利用其廣泛的操 作系統市場,而Intel則憑藉其PC晶片的優勢,並與其它廠商,如IBM、Entrust和Netscape等進行聯合,共同支援CDSA。現在也有很 多廠商的PKI產品同時支援這兩種API,如Entrust等。PKIX在很多情況下支援CDSA,並建議其 為"Architecture for Public Key Infrastructure"草案的標準。
除 此之外,Entrust、IBM、Intel、 Netscape和TIS等聯合向開放組織(Open Group)提議了一個基於CDSA的加密和證照 管理介面,並使用了Entrust的CMS API、IBM的金鑰恢復API。但開放組織同時也在考慮使用PKCS #11作為安全API介面。
下面介紹目前兩個比較常用的安全API介面:CryptoAPI和CDSA介面。
5.1 CryptoAPI
微 軟加密應用程式介面 CryptoAPI(Microsoft Cryptographic Application Programming Interface)為 Win32應用程式提供了認證、編碼、加密和簽名等安全處理,它可使使用者在對複雜的加密機制和加密演算法不瞭解的情況下,而對應用程式增加安全功能。這樣很 符合Windows的設計風格,就像使用者可是使用圖形庫而不需要了解圖形硬體一樣。
目前CryptoAPI的最新版本是2.0版,在包含CryptoAPI 1.0的全部功能外,還增加了證照管理功能,為網路身份認證提供的基本保證。
CryptoAPI通過一系列的庫函式來對應用程式提供PKI安全服務,其整體系統結構如圖3所示:
圖3 CryptoAPI結構圖
CryptoAPI 的程式設計模型同Windows系統的圖形裝置介面 GDI比較類似,其中加密服務提供者 CSP(Cryptographic Service Providers)等同於圖形裝置驅動程式 ,加密硬體(可選)等同於圖形硬體,其上層的應用程 序也類似,都不需要同裝置驅動程式和硬體直接打交道
CryptoAPI 共有五部分組成:簡單訊息函式(Simplified Message Functions)、低層訊息函式(Low- level Message Functions)、基本加密函式(Base Cryptographic Functions)、證照編解碼函式 (Certificate Encode/Decode Functions)和證照庫管理函式 (Certificate Store Functions)。其中前三者可用於對敏感資訊進行加密或簽名處理,可保證網路傳輸信心的私有性;後兩者通過 對證照的使用,可保證網路資訊交流中的認證性。
5.2 CDSA
CDSA(Common Data Security Architecture)為安全應用服務提供了一個整體框架和解決方案,提供了諸如證照管理等許多PKI功能。
同CryptoAPI類似,CDSA也是以一個分層的服務 提供者框架為基礎,其的應用模式可分為四層,最上層是應用程式,應用程式的下層是中介軟體,例如SSL、IPSEC介面、語言介面轉換器等,接下來是 CSSM層,CSSM層是CDSA的核心層,CSSM的下層是具體的服務提供者,如加密服務、證照服務、政策服務、資料儲存服務等,如圖4所示。
圖4 CDSA系統結構
--- CSSM 是CDSA的核心部分,它表現為一組公開的應用程式設計介面(API),為應用程式提供安全功能的呼叫,共包含4個基本的安全模組。
· 加密服務提供(Cryptographic Service Provider,CSP)模組。 CSP負責加/解密、數字簽名和私鑰儲存等工作,是整個CDSA結構的基礎。
· 信任策略(Trust Policy,TP)模組。TP負責信任策略的具體實施,判定特定行為(如開支票或訪問涉密資訊)所需的信任級別。由於具有模組化的結構,TP能夠對不同的機構應用不同的策略,比如,對商業銀行和政府機構運用的策略就有所不同。
· 證照庫(Certificate Library,CL)模組。CL提供證照的維護、撤銷和數字簽名等功能。
· 資料儲存庫(Data Storage Library,DL)模組。DL進行安全相關資料物件的儲存,包括證照、金鑰和信任規則物件等,而實際的儲存位置可能在大型資料庫、原始的檔案系統或某種特定的硬體裝置中。
---- 另外,任何軟、硬體廠商都可以建立自己的服務提供模組,無縫嵌入到CDSA的開放式框架中。在CDSA 2.0中又增加任選模組管理,支援更方便地增加模組。
另外,還可以對CSSM進行更高一層的抽象,提供高層的API,使開發者更容易使用CDSA提供的PKI安全功能。
6 PKI標準
隨著PKI的發展和應用的不斷普及,PKI的產品也越來越多,為了保持個產品之間的相容性,標準化成了PKI不可避免的發展趨勢。
PKI的標準可分為兩個部分:一類用於定義PKI,而另一類用於PKI的應用。
6.1 定義PKI的標準
在PKI技術框架中,許多方面都經過嚴格的定義,如使用者的註冊流程、數字證照的格式、CRL的格式、證照的申請格式以及數字簽名格式等。
國際電信聯盟ITU X.509協議,是PKI技術體系中應用最為廣泛、也是最為基礎的一個國際標準。它的主要目的在於定義一個規範的數字證照的格式,以便為基於X.500協議的目錄服務提供一種強認證手段。但該標準並非要定義一個完整的、可互操作的PKI認證體系。
PKCS是由美國RSA資料安全公司及其合作伙伴制定的一組公鑰密碼學標準,其中包括證照申請、證照更新、證照作廢表釋出、擴充套件證照內容以及數字簽名、數字信封的格式等方面的一系列相關協議。到1999年底,PKCS已經公佈了以下標準:
· PKCS#1:定義RSA公開金鑰演算法加密和簽名機制,主要用於組織PKCS#7中所描述的數字簽名和數字信封。
· PKCS#3:定義Diffie-Hellman金鑰交換協議。
· PKCS#5:描述一種利用從口令派生出來的安全金鑰加密字串的方法。使用MD2或MD5 從口令中派生金鑰,並採用DES-CBC模式加密。主要用於加密從一個計算機傳送到另一個計算機的私人金鑰,不能用於加密訊息。
· PKCS#6:描述了公鑰證照的標準語法,主要描述X.509證照的擴充套件格式。
· PKCS#7:定義一種通用的訊息語法,包括數字簽名和加密等用於增強的加密機制,PKCS#7與PEM相容,所以不需其他密碼操作,就可以將加密的訊息轉換成PEM訊息。
· PKCS#8:描述私有金鑰資訊格式,該資訊包括公開金鑰演算法的私有金鑰以及可選的屬性集等。
· PKCS#9:定義一些用於PKCS#6證照擴充套件、PKCS#7數字簽名和PKCS#8私鑰加密資訊的屬性型別。
· PKCS#10:描述證照請求語法。
· PKCS#11:稱為Cyptoki,定義了一套獨立於技術的程式設計介面,用於智慧卡和PCMCIA卡之類的加密裝置。
· PKCS#12:描述個人資訊交換語法標準。描述了將使用者公鑰、私鑰、證照和其他相關資訊打包的語法。
· PKCS#13:橢圓曲線密碼體制標準。
· PKCS#14:偽隨機數生成標準。
· PKCS#15:密碼令牌資訊格式標準。
另外,PKCS#2和PKCS#4已經合併到PKCS#1之中。PKIX是由IETF組織中的PKI工作小組制定的系列國際標準。此類標準主要定義基於X.509和PKCS的PKI模型框架。PKIX中定義的四個主要模型為使用者、認證中心CA、註冊中心RA和證照存取庫。
6.2 PKI應用標準
目前世界上已經出現了許多依賴於PKI的安全標準,即PKI的應用標準,如安全的套接層協議SSL、傳輸層安全協議TLS、安全的多用途互連網郵件擴充套件協議S/MIME和IP安全協議IPSEC等。
· S/MIME 是一個用於傳送安全報文的IETF標準。它採用了PKI數字簽名技術並支援訊息和附件的加密,無須收發雙方共享相同金鑰。S/MIME委員會採用PKI技 術標準來實現S/MIME,並適當擴充套件了PKI的功能。目前該標準包括密碼報文語法、報文規範、證照處理以及證照申請語法等方面的內容。
· SSL/TLS是互連網中訪問WEB伺服器最重要的安全協議。當然,他們也可以應用於基於客戶機/伺服器模型的非WEB型別的應用系統。SSL/TLS都利用PKI的數字證照來認證客戶和伺服器的身份。
· IPSEC是IETF制定的IP層加密協議,PKI技術為其提供了加密和認證過程的金鑰管理功能。IPSEC主要用於開發新一代的VPN。
另外,隨著PKI的進一步發展,新的標準也在不斷的增加和更新。
7 結論
從目前的發展來說,PKI的範圍非常廣,而不僅僅侷限於通常認為的CA機構,它還包括完整的安全策略和安全應用。因此,PKI的開發也從傳統的身份認證到各種與應用相關的安全場合,如企業安全電子商務和政府的安全電子政務等。
另外,PKI的開發也從大型的認證機構到與企業或政府應用相關的中小型PKI系統發展,既保持了相容性,又和特定的應用相關。在以後的文章中,我們會對PKI的原始碼工程OpenCA進行詳細分析,為PKI的開發提供借鑑。
相關文章
- PKI/CA與數字證書
- PKI
- HTTP介紹和HTML簡介HTTPHTML
- Lombok介紹和配置Lombok
- Redis介紹和使用Redis
- The Graph介紹和使用
- LayerMask 的介紹和使用
- XML和JSON的介紹XMLJSON
- HTTPS 和HTTP的介紹HTTP
- ddddocr基本使用和介紹
- Python JWT 介紹和使用PythonJWT
- BlockingQueue 的介紹和使用BloC
- iOS Runtime介紹和使用iOS
- MySQL MRR和ICP介紹MySql
- Tensorflow介紹和安裝
- fabric MSP 和 fabric-ca
- [網路/HTTPS/Java] PKI公鑰基礎設施體系、CA證書與認證工具(jre keytool / openssl)HTTPJava
- Spring Reactor基本介紹和案例SpringReact
- Sqoop的介紹和安裝OOP
- 【Linux】jq 命令介紹和使用Linux
- web worker的介紹和使用Web
- 容器技術和Docker介紹Docker
- Linux Boot,Kernel 和 Service 介紹Linuxboot
- HandlerMapping、Handler和HandlerAdapter的介紹APPAPT
- LVFS專案公告和介紹
- Charles 功能介紹和使用教程
- canvas描邊和填充介紹Canvas
- OutputStreamWriter介紹&程式碼實現和InputStreamReader介紹&程式碼實現
- ssr、ss和vpn介紹和區別
- Python介紹和基礎運用Python
- SAP ABAP MIME Repository 和 API 介紹API
- 介紹 Go 的陣列和切片Go陣列
- RK3288 dts和dtsi介紹
- Linux中重定向和管道介紹Linux
- 1- hive和sqoop元件介紹HiveOOP元件
- Oracle 備份和恢復介紹Oracle
- clang-format的介紹和使用ORM
- Web Storage API的介紹和使用WebAPI