在和CA進行一些接觸時,我們常常會聽到一個名詞: X.509。它是一種行業標準或者行業解決方案,在X.509方案中,默認的加密體制是公鑰密碼體制。為進行身份認證,X.509標準及公共密鑰加密系統提供了數字簽名的方案。用戶可生成一段信息及其摘要(亦稱作信息"指紋")。用戶用專用密鑰對摘要加密以形成簽名,接收者用發送者的公共密鑰對簽名解密,并將之與收到的信息"指紋"進行比較,以確定其真實性。
此問題的解決方案即X.509標準與公共密鑰證書。本質上,證書由公共密鑰加密鑰擁有者的用戶標識組成,整個字塊有可信賴的第三方簽名。典型的第三方即大型用戶群體(如政府機關或金融機構)所信賴的CA。
此外,X.509標準還提供了一種標準格式CRL,下面我們就來看一看 X.509標準下的證書格式極其擴展。
目前X.509有不同的版本,例如 X.509 V2和x.509 v3都是目前比較新的版本,但是都在原有版本(X.509 V1)的基礎上進行功能的擴充,其中每一版本必須包含下列信息:
(1) 版本號
(2) 序列號;
(3) 簽名算法標識符
(4) 認證機構
(5) 有效期限
(6) 主題信息
(7) 認證機構的數字簽名
(8) 公鑰信息
1、版本號:
用來區分X.509的不同版本號
2、序列號;
由CA給予每一個證書的分配唯一的數字型編號,當證書被取消時,實際上是將此證書的序列號放入由CA簽發的CRL中;這也是序列號唯一的原因。
3、簽名算法標識符:
用來指定用CA簽發證書時所使用的簽名算法。算法標識符用來指定CA簽發證書時所使用的公開密鑰算法和HASH算法,須向國際指明標準組織(如ISO)注冊。
4、認證機構:
即發出該證書的機構唯一的CA的x.500名字;
5、有效期限:
證書有效的時間包括兩個日期:證書開始生效期和證書失效的日期和時間。在所指定的這兩個時間之間有效;
6、主題信息:
證書持有人的姓名、服務處所等信息;
7、認證機構的數字簽名:
以確保這個證書在發放之后沒有被撰改過;
8、公鑰信息:
包括被證明有效的公鑰值和加上使用這個公鑰的方法名稱;
X.509的擴展(V3)
X.509標準第三版在V2的基礎上進行了擴展,V3引進一種機制。這種機制允許通過標準化和類的方式將證書進行擴展包括額外的信息,從而適應下面的一些要求一:
(1)一個證書主體可以有多個證書;
(2)證書主體可以被多個組織或社團的其他用戶識別;
(3)可按特定的應用名(不是X.500名)識別用戶,如將公鑰同EMAIL地址聯系起來;
(4)在不同證書政策和實用下會發放不同的證書,這就要求公鑰用戶要信賴證書;證書并不限于這些標準擴展,任何人都可以向適當的權利機構注冊一種擴展。將來會有更多的適于應用的擴展列入標準擴展集中。值得注意的是這種擴展機制應該是完全可以繼承的。
每一種擴展包括三個域:類型、可否缺省、值
類型字段定義了擴展值字段中的數據類型。這個類型可以是簡單的字符串,數值,日期,圖片或一個復雜的數據類型。為便于交互,所有的數據類型都應該在國際知名組織進行注冊。
是否可缺省字段是一比特標識位。當一擴展標識為不可缺省時,說明相應的擴展值非常重要,應用程序不能忽略這個信息。如果使用一特殊證書的應用程序不能處理該字段的內容,就應該拒絕此證書。
擴展值字段包含了這個擴展實際的數據。
公開密鑰證書的標準擴展可以分為以下幾組:
· 密鑰和政策信息,包括機構密鑰識別符、主體密鑰識別符、密鑰用途(如數字簽字,不可否認性、密鑰加密、數據加密、密鑰協商、證書簽字、CRL簽字等),密鑰使用期限等;
· 主體和發證人屬性,包括主體代用名、發證者代用名、主體檢索屬性等;
· 證書通路約束,包括基本約束,指明是否可以做證書機構。
· 與CRL有關的補充;
X.509是國際標準化組織CCITT建議作為X.500目錄檢索的一部分提供安全目錄檢索服務。一份X.509證書是一些標準字段的集合,這些字段包含有關用戶或設備及其相應公鑰的信息一種非常通用的證書格式,所有的證書都符合X.509 國際標準。目前X.509有不同的版本,例如 X.509 V2和x.509 v3都是目前比較新的版本,但是都在原有版本基礎上進行功能的擴充,其中每一版本必須包含下列信息:
(1) 用來區分X.509的不同版本號既版本號
(2) 由CA給予每一個證書的分配的編號即序列號;
(3) 用于產生證書所用的方法以及一切參數即簽名算法
(4) CA的x.500名字即發出該證書的認證機構
(5) 證書有效的時間包括兩個日期,在所指定的兩個時間之 間有效即有效期限
(6) 證書持有人的姓名、服務處所等信息即主題信息
(7) 認證機構的數字簽名
(8) 被證明的公鑰值,加上使用這個公鑰的方法名稱即公鑰信息
n PKI (Public-Key Infrastructure) 公鑰體系基礎框架。
n PKIX (Public-Key Infrastructure Using X.509)使用X.509的公鑰體系基礎框架。
n X.500 由ISO和ITU提出的用于為大型網絡提供目錄服務的標準體系。
n X.509 為X.500提供驗證(Authenticating)體系的標準。
n PKCS(Public Key Cryptography Standards)公鑰加密標準,為PKI提供一套完善的標準體系。
n 對于任何基于公鑰體系的安全應用,必須確立其PKI。而電子簽證機關(CA)是PKI中的一個關鍵的組成部分,它主要涉及兩方面的內容,即公鑰證書的發放和公鑰證書的有效性證明。在PKIX中,CA遵循X.509標準規范。
n X.509最早的版本X.509v1是在1988年提出的,到現在已升級到X.509v3,現將其涉及到的主要內容以及與前版本的比較列于下表。
X.509 PKI國際標準更新版本對照表
X.509 PKI 主要特性
X.509 v1 & 2 X.509 v3
證書信息 只有X.500 實體名,包括CA、證主(subject)名,證主公鑰及其有效期。 充分擴展,可包含任何信息。
CA 規范 CA體系鼓勵帶交叉的層狀樹型結構,無信任限制規范。 CA體系鼓勵帶交叉的層狀樹型結構,有信任限制規范。
CA "證主 " 用戶 CA、證主、用戶在概念上嚴格區分
CA "證主" 用戶信任關系 認為每個用戶至少信任一個CA。CA無法操縱與其它CA、證主及用戶間的信任關系。 認為每個用戶至少信任一個CA。CA可以規范與其它CA及證主間的信任關系。
證書有效性驗證方式 離線方式,通過檢查證書有效期及是否出現在最近的CRL(證書吊銷表)上。 支持離線與在線方式。
證書吊銷方法 簡單CRL。 復雜的CRL,通過功能擴展支持在線方式。
證書形式特點 身份形式的證書。 主要還是身份形式的證書,但支持信任委托形式的證書。
匿名性 匿名程度依賴于 X.500 條目的匿名程度。 擴展功能支持徹底的匿名服務。
X.509證書格式
X.509是另一種非常通用的證書格式。所有的證書都符合ITU-T X.509國際標準;因此(理論上)為一種應用創建的證書可以用于任何其他符合X.509標準的應用。但實際上,不同的公司對X.509證書進行了不同的擴展,不是所有的證書都彼此兼容。在一份證書中,必須證明公鑰及其所有者的姓名是一致的。對PGP證書來說,任何人都可以扮演認證者的角色。對X.509證書來說,認證者總是 CA或由CA指定的人(其實PGP證書也完全支持使用CA來確認證書的體系結構),一份X.509證書是一些標準字段的集合,這些字段包含有關用戶或設備及其相應公鑰的信息。X.509標準定義了證書中應該包含哪些信息,并描述了這些信息是如何編碼的(即數據格式),所有的X.509證書包含以下數據:
<>X.509版本號:指出該證書使用了哪種版本的X.509標準,版本號會影響證書中的一些特定信息。目前的版本是3。
<>證書持有人的公鑰:包括證書持有人的公鑰,算法(指明密鑰屬于哪種密碼系統)的標示符和其他相關的密鑰參數。
<>證書的序列號:創建證書的實體(組織或個人)有責任為該證書指定一個獨一無二的序列號,以區別于該實體發布的其他證書。序列號信息有許多用途;比如當一份證書被回收以后,它的序列號就被放入證書回收列表(CRL)之中。
<>證書持有人唯一的標示符:(或稱DN-distinguished name)這個名字在 Internet上應該是唯一的。DN由許多部分組成,看起來象這樣:
CN=Bob Allen, OU=Total Network Security Division,
O=Network Associates, Inc., C=US
這些信息指出該科目的通用名,組織單位,組織和國家
<>證書的有效期:證書起始日期和時間以及終止日期和時間;指明證書何時失效。
<>證書發布者的唯一名字:這是簽發該證書的實體的唯一名字。通常是CA。.使用該證書意味著信任簽發證書的實體。(注意:在某些情況下,比如根或頂級CA證書,發布者自己簽發證書)
<>發布者的數字簽名:這是使用發布者私鑰生成的簽名。
<>簽名算法的標示符:指明CA簽署證書所使用的算法。
X.509證書和PGP證書之間有許多不同,最明顯的如下所述:
<>用戶可以創建自己的PGP證書,但是必須向CA請求才能得到一份X.509證書。
<>X.509證書天生只支持密鑰擁有者的一個名字。
<>X.509證書只支持證明密鑰合法性的一個數字簽名。
要獲得一份X.509證書,必須請求CA發給你證書。用戶提供自己的公鑰,證明自己擁有相應的私鑰,并提供有關自己的某些特定信息。然后在這些信息上數字簽名,并將整個數據包(稱為證書請求)發給CA。CA做一些努力來驗證用戶提供的信息是正確的,然后就生成證書并返回給用戶。
一份X.509證書看起來很象一份帶公鑰的標準書面證書(類似于基礎急救班的結業證書)。證書中包含名字和一些有關的個人信息,加上頒發證書人的簽名。
當前X.509證書最廣泛的使用大概是在Web瀏覽器之中。