PKCS是由美國RSA數據安全公司及其合作伙伴制定的一組公鑰密碼學(xué)標準,其中包括證書(shū)申請、證書(shū)更新、證書(shū)作廢表發(fā)布、擴展證書(shū)內容以及數字簽名、數字信封的格式等方面的一系列相關(guān)協(xié)議。到1999年底,PKCS已經(jīng)公布了以下標準:
11.3 PKCS標準
公鑰密碼標準(PKCS)最初是為推進(jìn)公鑰密碼系統的互操作性,由RSA實(shí)驗室與工業(yè)界、學(xué)術(shù)界和政府代表合作開(kāi)發(fā)的。在RSA帶領(lǐng)下,PKCS的研究隨著(zhù)時(shí)間不斷發(fā)展,它涉及了不斷發(fā)展的PKI格式標準、算法和應用程序接口。PKCS標準提供了基本的數據格式定義和算法定義,它們實(shí)際是今天所有PKI實(shí)現的基礎。
11.3.1 PKCS標準的內容
PKCS標準如下:
(1)PKCS#1:RSA加密標準。PKCS#1定義了RSA公鑰函數的基本格式標準,特別是數字簽名。它定義了數字簽名如何計算,包括待簽名數據和簽名本身的格式;它也定義了PSA公/私鑰的語(yǔ)法。
(2)PKCS#2:涉及了RSA的消息摘要加密,這已被并入PKCS#1中。
(3)PKCS#3:Diffie-Hellman密鑰協(xié)議標準。PKCS#3描述了一種實(shí)現Diffie- Hellman密鑰協(xié)議的方法。
(4)PKCS#4:最初是規定RSA密鑰語(yǔ)法的,現已經(jīng)被包含進(jìn)PKCS#1中。
(5)PKCS#5:基于口令的加密標準。PKCS#5描述了使用由口令生成的密鑰來(lái)加密8位位組串并產(chǎn)生一個(gè)加密的8位位組串的方法。PKCS#5可以用于加密私鑰,以便于密鑰的安全傳輸(這在PKCS#8中描述)。
(6)PKCS#6:擴展證書(shū)語(yǔ)法標準。PKCS#6定義了提供附加實(shí)體信息的X.509證書(shū)屬性擴展的語(yǔ)法(當PKCS#6第一次發(fā)布時(shí),X.509還不支持擴展。這些擴展因此被包括在X.509中)。
(7)PKCS#7:密碼消息語(yǔ)法標準。PKCS#7為使用密碼算法的數據規定了通用語(yǔ)法,比如數字簽名和數字信封。PKCS#7提供了許多格式選項,包括未加密或簽名的格式化消息、已封裝(加密)消息、已簽名消息和既經(jīng)過(guò)簽名又經(jīng)過(guò)加密的消息。
(8)PKCS#8:私鑰信息語(yǔ)法標準。PKCS#8定義了私鑰信息語(yǔ)法和加密私鑰語(yǔ)法,其中私鑰加密使用了PKCS#5標準。
(9)PKCS#9:可選屬性類(lèi)型。PKCS#9定義了PKCS#6擴展證書(shū)、PKCS#7數字簽名消息、PKCS#8私鑰信息和PKCS#10證書(shū)簽名請求中要用到的可選屬性類(lèi)型。已定義的證書(shū)屬性包括 E-mail地址、無(wú)格式姓名、內容類(lèi)型、消息摘要、簽名時(shí)間、簽名副本(counter signature)、質(zhì)詢(xún)口令字和擴展證書(shū)屬性。
(10)PKCS#10:證書(shū)請求語(yǔ)法標準。PKCS#10定義了證書(shū)請求的語(yǔ)法。證書(shū)請求包含了一個(gè)唯一識別名、公鑰和可選的一組屬性,它們一起被請求證書(shū)的實(shí)體簽名(證書(shū)管理協(xié)議中的PKIX證書(shū)請求消息就是一個(gè)PKCS#10)。
(11)PKCS#11:密碼令牌接口標準。 PKCS#11或“Cryptoki”為擁有密碼信息(如加密密鑰和證書(shū))和執行密碼學(xué)函數的單用戶(hù)設備定義了一個(gè)應用程序接口(API)。智能卡就是實(shí)現Cryptoki的典型設備。注意:Cryptoki定義了密碼函數接口,但并未指明設備具體如何實(shí)現這些函數。而且Cryptoki只說(shuō)明了密碼接口,并未定義對設備來(lái)說(shuō)可能有用的其他接口,如訪(fǎng)問(wèn)設備的文件系統接口。
(12)PKCS#12:個(gè)人信息交換語(yǔ)法標準。PKCS#12定義了個(gè)人身份信息(包括私鑰、證書(shū)、各種秘密和擴展字段)的格式。PKCS#12有助于傳輸證書(shū)及對應的私鑰,于是用戶(hù)可以在不同設備間移動(dòng)他們的個(gè)人身份信息。
(13)PDCS#13:橢圓曲線(xiàn)密碼標準。PKCS#13標準當前正在完善之中。它包括橢圓曲線(xiàn)參數的生成和驗證、密鑰生成和驗證、數字簽名和公鑰加密,還有密鑰協(xié)定,以及參數、密鑰和方案標識的ASN.1語(yǔ)法。
(14)PKCS#14:偽隨機數產(chǎn)生標準。 PKCS#14標準當前正在完善之中。為什么隨機數生成也需要建立自己的標準呢?PKI中用到的許多基本的密碼學(xué)函數,如密鑰生成和Diffie- Hellman共享密鑰協(xié)商,都需要使用隨機數。然而,如果“隨機數”不是隨機的,而是取自一個(gè)可預測的取值集合,那么密碼學(xué)函數就不再是絕對安全了,因為它的取值被限于一個(gè)縮小了的值域中。因此,安全偽隨機數的生成對于PKI的安全極為關(guān)鍵。
(15)PKCS#15:密碼令牌信息語(yǔ)法標準。 PKCS#15通過(guò)定義令牌上存儲的密碼對象的通用格式來(lái)增進(jìn)密碼令牌的互操作性。在實(shí)現PKCS#15的設備上存儲的數據對于使用該設備的所有應用程序來(lái)說(shuō)都是一樣的,盡管實(shí)際上在內部實(shí)現時(shí)可能所用的格式不同。PKCS#15的實(shí)現扮演了翻譯家的角色,它在卡的內部格式與應用程序支持的數據格式間進(jìn)行轉換。
11.3.2 PKCS主要用途
以上標準主要用于用戶(hù)實(shí)體通過(guò)RA的證書(shū)申請、用戶(hù)的證書(shū)更新過(guò)程。當證書(shū)作廢時(shí),RA通過(guò)CA向目錄服務(wù)器中發(fā)布證書(shū)撤銷(xiāo)列表CRL,用于擴展證書(shū)內容,以及數字簽名與驗簽過(guò)程和實(shí)現數字信封格式定義等一系列相關(guān)協(xié)議。