PKCS
PKCS 全稱是 Public-Key Cryptography Standards ,是由 RSA 實(shí)驗(yàn)室與其它安全系統(tǒng)開發(fā)商為促進(jìn)公鑰密碼的發(fā)展而制訂的一系列標(biāo)準(zhǔn)。
What is PKCS? http://www.rsa.com/rsalabs/node.asp?id=2308
PKCS 目前共發(fā)布過 15 個標(biāo)準(zhǔn):
(1)PKCS#1:RSA加密標(biāo)準(zhǔn)。PKCS#1定義了RSA公鑰函數(shù)的基本格式標(biāo)準(zhǔn),特別是數(shù)字簽名。它定義了數(shù)字簽名如何計算,包括待簽名數(shù)據(jù)和簽名本身的格式;它也定義了PSA公/私鑰的語法。
(2)PKCS#2:涉及了RSA的消息摘要加密,這已被并入PKCS#1中。
(3)PKCS#3:Diffie-Hellman密鑰協(xié)議標(biāo)準(zhǔn)。PKCS#3描述了一種實(shí)現(xiàn)Diffie- Hellman密鑰協(xié)議的方法。
(4)PKCS#4:最初是規(guī)定RSA密鑰語法的,現(xiàn)已經(jīng)被包含進(jìn)PKCS#1中。
(5)PKCS#5:基于口令的加密標(biāo)準(zhǔn)。PKCS#5描述了使用由口令生成的密鑰來加密8位位組串并產(chǎn)生一個加密的8位位組串的方法。PKCS#5可以用于加密私鑰,以便于密鑰的安全傳輸(這在PKCS#8中描述)。
(6)PKCS#6:擴(kuò)展證書語法標(biāo)準(zhǔn)。PKCS#6定義了提供附加實(shí)體信息的X.509證書屬性擴(kuò)展的語法(當(dāng)PKCS#6第一次發(fā)布時,X.509還不支持?jǐn)U展。這些擴(kuò)展因此被包括在X.509中)。
(7)PKCS#7:密碼消息語法標(biāo)準(zhǔn)。PKCS#7為使用密碼算法的數(shù)據(jù)規(guī)定了通用語法,比如數(shù)字簽名和數(shù)字信封。PKCS#7提供了許多格式選項(xiàng),包括未加密或簽名的格式化消息、已封裝(加密)消息、已簽名消息和既經(jīng)過簽名又經(jīng)過加密的消息。
(8)PKCS#8:私鑰信息語法標(biāo)準(zhǔn)。PKCS#8定義了私鑰信息語法和加密私鑰語法,其中私鑰加密使用了PKCS#5標(biāo)準(zhǔn)。
(9)PKCS#9:可選屬性類型。PKCS#9定義了PKCS#6擴(kuò)展證書、PKCS#7數(shù)字簽名消息、PKCS#8私鑰信息和PKCS#10證書簽名請求中要用到的可選屬性類型。已定義的證書屬性包括E-mail地址、無格式姓名、內(nèi)容類型、消息摘要、簽名時間、簽名副本(counter signature)、質(zhì)詢口令字和擴(kuò)展證書屬性。
(10)PKCS#10:證書請求語法標(biāo)準(zhǔn)。PKCS#10定義了證書請求的語法。證書請求包含了一個唯一識別名、公鑰和可選的一組屬性,它們一起被請求證書的實(shí)體簽名(證書管理協(xié)議中的PKIX證書請求消息就是一個PKCS#10)。
(11)PKCS#11:密碼令牌接口標(biāo)準(zhǔn)。PKCS#11或“Cryptoki”為擁有密碼信息(如加密密鑰和證書)和執(zhí)行密碼學(xué)函數(shù)的單用戶設(shè)備定義了一個應(yīng)用程序接口(API)。智能卡就是實(shí)現(xiàn)Cryptoki的典型設(shè)備。注意:Cryptoki定義了密碼函數(shù)接口,但并未指明設(shè)備具體如何實(shí)現(xiàn)這些函數(shù)。而且Cryptoki只說明了密碼接口,并未定義對設(shè)備來說可能有用的其他接口,如訪問設(shè)備的文件系統(tǒng)接口。
(12)PKCS#12:個人信息交換語法標(biāo)準(zhǔn)。PKCS#12定義了個人身份信息(包括私鑰、證書、各種秘密和擴(kuò)展字段)的格式。PKCS#12有助于傳輸證書及對應(yīng)的私鑰,于是用戶可以在不同設(shè)備間移動他們的個人身份信息。
(13)PDCS#13:橢圓曲線密碼標(biāo)準(zhǔn)。PKCS#13標(biāo)準(zhǔn)當(dāng)前正在完善之中。它包括橢圓曲線參數(shù)的生成和驗(yàn)證、密鑰生成和驗(yàn)證、數(shù)字簽名和公鑰加密,還有密鑰協(xié)定,以及參數(shù)、密鑰和方案標(biāo)識的ASN.1語法。
(14)PKCS#14:偽隨機(jī)數(shù)產(chǎn)生標(biāo)準(zhǔn)。PKCS#14標(biāo)準(zhǔn)當(dāng)前正在完善之中。為什么隨機(jī)數(shù)生成也需要建立自己的標(biāo)準(zhǔn)呢?PKI中用到的許多基本的密碼學(xué)函數(shù),如密鑰生成和Diffie-Hellman共享密鑰協(xié)商,都需要使用隨機(jī)數(shù)。然而,如果“隨機(jī)數(shù)”不是隨機(jī)的,而是取自一個可預(yù)測的取值集合,那么密碼學(xué)函數(shù)就不再是絕對安全了,因?yàn)樗娜≈当幌抻谝粋€縮小了的值域中。因此,安全偽隨機(jī)數(shù)的生成對于PKI的安全極為關(guān)鍵。
(15)PKCS#15:密碼令牌信息語法標(biāo)準(zhǔn)。PKCS#15通過定義令牌上存儲的密碼對象的通用格式來增進(jìn)密碼令牌的互操作性。在實(shí)現(xiàn)PKCS#15的設(shè)備上存儲的數(shù)據(jù)對于使用該設(shè)備的所有應(yīng)用程序來說都是一樣的,盡管實(shí)際上在內(nèi)部實(shí)現(xiàn)時可能所用的格式不同。PKCS#15的實(shí)現(xiàn)扮演了翻譯家的角色,它在卡的內(nèi)部格式與應(yīng)用程序支持的數(shù)據(jù)格式間進(jìn)行轉(zhuǎn)換。
X509
X.509是常見通用的證書格式。所有的證書都符合為Public Key Infrastructure (PKI) 制定的 ITU-T X509 國際標(biāo)準(zhǔn)。X.509是國際電信聯(lián)盟-電信(ITU-T)部分標(biāo)準(zhǔn)和國際標(biāo)準(zhǔn)化組織(ISO)的證書格式標(biāo)準(zhǔn)。作為ITU-ISO目錄服務(wù)系列標(biāo)準(zhǔn)的一部分,X.509是定義了公鑰證書結(jié)構(gòu)的基本標(biāo)準(zhǔn)。1988年首次發(fā)布,1993年和1996年兩次修訂。當(dāng)前使用的版本是X.509 V3,它加入了擴(kuò)展字段支持,這極大地增進(jìn)了證書的靈活性。X.509 V3證書包括一組按預(yù)定義順序排列的強(qiáng)制字段,還有可選擴(kuò)展字段,即使在強(qiáng)制字段中,X.509證書也允許很大的靈活性,因?yàn)樗鼮榇蠖鄶?shù)字段提供了多種編碼方案.
PKCS#7 常用的后綴是: .P7B .P7C .SPC
PKCS#12 常用的后綴有: .P12 .PFX
X.509 DER 編碼(ASCII)的后綴是: .DER .CER .CRT
X.509 PAM 編碼(Base64)的后綴是: .PEM .CER .CRT
.cer/.crt是用于存放證書,它是2進(jìn)制形式存放的,不含私鑰。
.pem跟crt/cer的區(qū)別是它以Ascii來表示。
pfx/p12用于存放個人證書/私鑰,他通常包含保護(hù)密碼,2進(jìn)制方式
p10是證書請求
p7r是CA對證書請求的回復(fù),只用于導(dǎo)入
p7b以樹狀展示證書鏈(certificate chain),同時也支持單個證書,不含私鑰。
一 用openssl創(chuàng)建CA證書的RSA密鑰(PEM格式):
openssl genrsa -des3 -out ca.key 1024
二用openssl創(chuàng)建CA證書(PEM格式,假如有效期為一年):
openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config openssl.cnf
openssl是可以生成DER格式的CA證書的,最好用IE將PEM格式的CA證書轉(zhuǎn)換成DER格式的CA證書。
三 x509到pfx
pkcs12 -export –in keys/client1.crt -inkey keys/client1.key -out keys/client1.pfx
四 PEM格式的ca.key轉(zhuǎn)換為Microsoft可以識別的pvk格式。
? pvk -in ca.key -out ca.pvk -nocrypt -topvk
五 PKCS#12 到 PEM 的轉(zhuǎn)換
openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem
驗(yàn)證 openssl pkcs12 -clcerts -nokeys -in cert.p12 -out cert.pem
六 從 PFX 格式文件中提取私鑰格式文件 (.key)
openssl pkcs12 -in mycert.pfx -nocerts -nodes -out mycert.key
七 轉(zhuǎn)換 pem 到到 spc
openssl crl2pkcs7 -nocrl -certfile venus.pem? -outform DER -out venus.spc
用 -outform -inform 指定 DER 還是 PAM 格式。例如:
openssl x509 -in Cert.pem -inform PEM -out cert.der -outform DER
八 PEM 到 PKCS#12 的轉(zhuǎn)換,
openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem
密鑰庫文件格式【Keystore】
?格式???? :? JKS
?擴(kuò)展名? : .jks/.ks
?描述???? : 【Java Keystore】密鑰庫的Java實(shí)現(xiàn)版本,provider為SUN
?特點(diǎn)???? :? 密鑰庫和私鑰用不同的密碼進(jìn)行保護(hù)
?
?格式???? :? JCEKS
?擴(kuò)展名? :? .jce
?描述???? :?【JCE Keystore】密鑰庫的JCE實(shí)現(xiàn)版本,provider為SUN JCE
?特點(diǎn)???? :? 相對于JKS安全級別更高,保護(hù)Keystore私鑰時采用TripleDES
?
?格式???? :? PKCS12
?擴(kuò)展名? :? .p12/.pfx
?描述???? :?【PKCS #12】個人信息交換語法標(biāo)準(zhǔn)
?特點(diǎn)???? :? 1、包含私鑰、公鑰及其證書
???????????????2、密鑰庫和私鑰用相同密碼進(jìn)行保護(hù)
?
?格式???? :? BKS
?擴(kuò)展名? : .bks
?描述???? :? Bouncycastle Keystore】密鑰庫的BC實(shí)現(xiàn)版本,provider為BC
?特點(diǎn)???? :? 基于JCE實(shí)現(xiàn)
?
?格式???? : UBER
?擴(kuò)展名? : .ubr
?描述???? : 【Bouncycastle UBER Keystore】密鑰庫的BC更安全實(shí)現(xiàn)版本,provider為BC
證書文件格式【Certificate】
格式??????????:? DER
擴(kuò)展名???????:? .cer/.crt/.rsa
描述??????????: 【ASN .1 DER】用于存放證書
特點(diǎn)??????????:? 不含私鑰、二進(jìn)制
格式??????????:? PKCS7
擴(kuò)展名???????: .p7b/.p7r
描述??????????: 【PKCS #7】加密信息語法標(biāo)準(zhǔn)
特點(diǎn)??????????: 1、p7b以樹狀展示證書鏈,不含私鑰
????????????????? 2、p7r為CA對證書請求簽名的回復(fù),只能用于導(dǎo)入
格式??????????:? CMS
擴(kuò)展名???????:? .p7c/.p7m/.p7s
描述??????????: 【Cryptographic Message Syntax】
特點(diǎn)??????????: 1、p7c只保存證書
??????????????????2、p7m:signature with enveloped data
????????????????? 3、p7s:時間戳簽名文件
?
格式??????????:? PEM
擴(kuò)展名???????: .pem
描述??????????: 【Printable Encoded Message】
特點(diǎn)????????? : 1、該編碼格式在RFC1421中定義,其實(shí)PEM是【Privacy-Enhanced Mail】的簡寫,但他也同樣廣泛運(yùn)用于密鑰管理
??????????????????2、ASCII文件
??????????????????3、一般基于base 64編碼
格式?????????: ?PKCS10
擴(kuò)展名??????:?.p10/.csr
描述???????? : 【PKCS #10】公鑰加密標(biāo)準(zhǔn)【Certificate Signing Request】
特點(diǎn)???????? :? 1、證書簽名請求文件
????????????????? 2、ASCII文件
????????????????? 3、CA簽名后以p7r文件回復(fù)
格式???????? :? SPC
擴(kuò)展名????? :?.pvk/.spc
描述???????? : 【Software Publishing Certificate】
特點(diǎn)???????? :? 微軟公司特有的雙證書文件格式,經(jīng)常用于代碼簽名,其中
????????????????? 1、pvk用于保存私鑰
????????????????? 2、spc用于保存公鑰
轉(zhuǎn)自http://blog.csdn.net/hansel/article/details/4447631
X509和PKCS的關(guān)系討論:http://topic.csdn.net/u/20071015/18/37a2bffb-2354-493e-b5a9-b96ab28063ae.html