2011年7月7日 星期四

x509,pkcs7和Pkcs12之間關係


x.509,是x500那套網絡協議(好像是目錄協議吧)的一個子集,專門定義了在目錄訪問中需要身份認證的證書的格式。後來被rfc收錄3280。

PKCS#12是“個人信息交換語法”。它可以用來將x.509的證書和證書對應的私鑰打包,進行交換。比如你在windows下,可以將IE裡的證書連帶私鑰導出,並設置一個口令保護。這個pfx格式的文件,就是按照pkcs#12的格式打包的。當然pkcs#12不僅僅只是作以上用途的。它可以用來打包交換任何信息。你可以和張三李四用PKCS#12來交換私人數據,包括x.509證書和私鑰。
你在交換x.509證書和私鑰可以採用任何數據格式,例如PKCS#12。

PKCS#7麼,舉個例子,你給張三李四發了一封籤名郵件,同時你將你的個人證書隨郵件一起發給了張三李四,這個時候,你可以按照PKCS#7的格式來打包。

P7一般是把證書分成兩個文件,一個公鑰一個私鑰,有PEM和DER兩種編碼方式。PEM比較多見,就是純文本的,P7一般是分發公鑰用,看到的就是一串可見字符串,擴展名經常是.crt,.cer,.key等。 DER是二進制編碼。
P12是把證書壓成一個文件,.pfx 。主要是考慮分發證書,私鑰是要絕對保密的,不能隨便以文本方式散播。所以P7格式不適合分發。 .pfx中可以加密碼保護,所以相對安全些。
在實踐中要中,用戶證書都是放在USB Key中分發,服務器證書經常還是以文件方式分發。服務器證書和用戶證書,都是X509證書,就是裡面的屬性有區別.


X509 是證書規範
PKCS#7 是消息語法(常用於數字簽名與加密)
PKCS#12 個人消息交換與打包語法(如.PFX .P12)打包成帶公鑰與私鑰
還有其它常用的是PKCS#10 是證書請求語法。

通過CA產生的出來的證書格式文件一般是以PFX P12格式發布給使用者(公鑰與私鑰),用戶拿到證書後,
可以通過IE來導入或直接雙擊嚮導安裝證書,此時私鑰安裝到系統的私有密鑰庫中。使用時系統會自動查找到
私鑰。而最安全的方式還是使用其它USB硬件來存儲,私鑰將無法再從硬件鎖只導出,並且支持硬件訪問需要
用戶的密鑰才能訪問到硬件內的私鑰,永遠保證了私鑰不出硬件鎖!提高了安全性,靈活性,且可以移動的方便性。如ETOKEN產品,一些硬件信息可參考www.dztech.cn.
而相互雙方通迅時使用且​​交換的是帶公鑰的證書如CER文件。




PKI標準可以分為第一代和第二代標準[12]。

第一代PKI標準主要包括美國RSA公司的公鑰加密標準(Public Key Cryptography Standards,PKCS)系列、國際電信聯盟的ITU-T X.509、IETF組織的公鑰基礎設施X.509(Public Key Infrastructure X .509,PKIX)標準系列、無線應用協議(Wireless Application Protocol ,WAP)論壇的無線公鑰基礎設施(Wireless Public Key Infrastructure,WPKI)標準等。第一代PKI標準主要是基於抽象語法符號(Abstract Syntax Notation One,ASN.1)編碼的,實現比較困難,這也在一定程度上影響了標準的推廣。
第二代PKI標準是在2001年,由微軟、VeriSign和webMethods三家公司發布了XML密鑰管理規範(XML Key Management Specification,XKMS),被稱為第二代PKI標準。 XKMS由兩部分組成:XML密鑰信息服務規範(XML Key Information Service Specification,X-KISS)和XML密鑰註冊服務規範(XML Key Registration Service Specification,X-KRSS)。 X-KISS定義了包含在XML-SIG元素中的用於驗證公鑰信息合法性的信任服務規範;使用X-KISS規範,XML應用程序可通過網絡委託可信的第三方CA處理有關認證簽名、查詢、驗證、綁定公鑰信息等服務。 X-KRSS則定義了一種可通過網絡接受公鑰註冊、撤銷、恢復的服務規範;XML應用程序建立的密鑰對,可通過X-KRSS規範將公鑰部分及其它有關的身份信息發給可信的第三方CA註冊。 X-KISS和X-KRSS規範都按照XML Schema 結構化語言定義,使用簡單對象訪問協議(SOAP V1.1)進行通信,其服務與消息的語法定義遵循Web服務定義語言(WSDL V1.0)。目前XKMS已成為W3C的推薦標準,並已被微軟、VeriSign等公司集成於他們的產品中(微軟已在ASP.net中集成了XKMS,VeriSign已發布了基於Java的信任服務集成工具包TSIK)。
CA中心普遍採用的規範是X.509[13]系列和PKCS系列,其中主要應用到了以下規範:
1. X.209(1988)
ASN.1是描述在網絡上傳輸信息格式的標準方法。它有兩部分:第一部份(ISO 8824/ITU X.208)描述信息內的數據、數據類型及序列格式,也就是數據的語法;第二部分(ISO 8825/ITU X.209)描述如何將各部分數據組成消息,也就是數據的基本編碼規則。
ASN.1原來是作為X.409的一部分而開發的,後來才獨立地成為一個標準。這兩個協議除了在PKI體系中被應用外,還被廣泛應用於通信和計算機的其他領域。
2. X.500(1993)
X.500是一套已經被國際標準化組織(ISO)接受的目錄服務系統標準,它定義了一個機構如何在全局範圍內共享其名字和與之相關的對象。 X.500是層次性的,其中的管理域(機構、分支、部門和工作組)可以提供這些域內的用戶和資源信息。在PKI體系中,X.500被用來惟一標識一個實體,該實體可以是機構、組織、個人或一台服務器。 X.500被認為是實現目錄服務的最佳途徑,但X.​​500的實現需要較大的投資,並且比其他方式速度慢;而其優勢具有信息模型、多功能和開放性。
3. X.509(1993)
X.509是由國際電信聯盟(ITU-T)制定的數字證書標準。在X.500確保用戶名稱惟一性的基礎上,X.509為X.500用戶名稱提供了通信實體的鑑別機制,並規定了實體鑑別過程中廣泛適用的證書語法和數據接口。
X.509的最初版本公佈於1988年。 X.509證書由用戶公共密鑰和用戶標識符組成。此外還包括版本號、證書序列號、CA標識符、簽名算法標識、簽發者名稱、證書有效期等信息。這一標準的最新版本是X.509 v3,它定義了包含擴展信息的數字證書。該版數字證書提供了一個擴展信息字段,用來提供更多的靈活性及特殊應用環境下所需的信息傳送。
4. PKCS系列標準
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:密碼令牌信息格式標準。
5. OCSP在線證書狀態協議
OCSP(Online Certificate Status Protocol)[14]是IETF頒布的用於檢查數字證書在某一交易時刻是否仍然有效的標準。該標準提供給PKI用戶一條方便快捷的數字證書狀態查詢通道,使PKI體系能夠更有效、更安全地在各個領域中被廣泛應用。
6. LDAP 輕量級目錄訪問協議
LDAP規範(RFC1487)簡化了笨重的X.500目錄訪問協議,並且在功能性、數據表示、編碼和傳輸方面都進行了相應的修改。 1997年,LDAP第3版本成為互聯網標準。目前,LDAP v3已經在PKI體系中被廣泛應用於證書信息發布、CRL信息發布、CA政策以及與信息發布相關的各個方面。


source:

沒有留言: