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