PKCS系列
PKCS是公钥密码标准(Public Key Cryptography Standards)的缩写,它是美国RSA实验室与遍布全球的安全系统开发者一起合作制定的一组规范,以推动公钥密码的发展。最早发布的PKCS文档是早期一群公钥技术使用者在1991年召开的一次会议的成果;目前PKCS规范已被广泛引用和实施,部分PKCS规范已经成为多个国际组织正式或事实上的标准,如ANSI X9文档系列、PKIX、SET、S/MIME、SSL等。PKCS系列主要包括以下标准。
PKCS #1: RSA Cryptography Standard(RSA密码标准);
PKCS #2: 已撤销,用以规范RSA Jju密摘要的转换方式,己并入PKCS#1;
PKCS #3:Diffie-Hellman Key Agreement Standard(DH密钥协商标准);
PKCS #4: 已撤销,用以定义RSA密钥的格式,已并入PKCS #1;
PKCS #5:Password-Based Cryptography Standard(基于口令的密码标准);
PKCS #6:Extended-Certificate Syntax Standard(扩展的证书语法标准);
PKCS #7:Cryptographic Message Syntax Standard(密码消息语法标准);
PKCS #8:Private-Key Information Syntax Standard(私钥信息语法标准);
PKCS #9:Selected Attribute Types(可供选择的属性类型);
PKCS #10:Certification Request Syntax Standard(证书请求语法标准);
PKCS #11:Cryptographic Token Interface Standard(密码Token接口标准);
PKCS #12:Personal Information Exchange Syntax Standard(个人信息交换语法标准);
PKCS #13:Elliptic Curve Cryptography Standard(椭圆曲线密码标准),正在制定中;
PKCS #14:Pseudo-random Number Generation(伪随机数生成算法PRNG),正在制定中;
PKCS #15:Cryptographic Token Information Format Standard(密码Token信息格式标准)。
1.PKCS #1:RSA Cryptography Standard(RSA密码标准)
PKCS #1 v2.1定义了基于RSA公钥算法的加密解密和签名验签机制,其最新跟踪标准为RFC 3447,主要包括以下内容。
① 密钥类型:包括公钥和私钥。
RSA公钥格式用ASN.1描述如下:
RSAPublicKey ::=SEQUENCE{
modulus INTEGER, -- n
publicExponent INTEGER -- e
}
RSA私钥格式用ASA.1描述如下:
RSAPrivateKey::=SEQUENCE{
version Version,
modulus INTEGER, -- n
publicExponent lNTEGER, -- e
privateExponent INTEGER, -- d
prime1 INTEGER, -- p
prime2 INTEGER, -- q
exponent1 INTEGER, -- d mod (p-1)
exponent2 INTEGER, -- d mod (q-1)
coefficient INTEGER, -- (inverse of q) mod p
otherPrimelnfos OtherPrimelnfos OPTIONAL
}
② 数据转换原子操作:包括I2OSP(Integer-to-Octet-String primitive)和OS2IP( Octet-String-to-Integer primitive)两种。
③ 密码原子操作:包括加密RSAEP、解密RSADP、签名RSASP1和验签RSAVP1等4种。
④ 加密解警方案:包括RSAES-OAEP和RSAES-PKCS-v1_5等两种。
⑤ 签名验签方案:包括RSASSA-PSS和RSASSA-PKCS-v1_5等两种。
⑥ 签名编码方法:包括EMSA-PSS和EMSA-PKCS-v1_5等两种。
2.PKCS #3:Diffie-Hellman Key Agreement Standard(DH密钥协商标准)
PKCS #3 v1.4描述了一种基于DH算法进行密钥协商的方法。无需预先沟通,交易双方就可以胁商出一个只有双方知道的秘密密钥,该密钥可以对后续双方的数据通信进行加密保护。
3.PKCS #5:Password-Based Cryptography Standard(基于口令的密码标准)
PKCS #5 v2.0描述了一种基口令产生对称密钥的方法;使用MD2或MD5从
口令中派生密钥,并采用DES的CBC模式加密。这个功能主要用于加密从一个计算机传送到另一个计算机的私人密钥,而不是用于加密消息。该方法在RFC 2898中重新发布,主括以下内容:
① 密钥获取函数:包括PBKDFI和PBKDF2。
② 加密解密方案:包括PBES1和PBES2。
③ 消息认证方案:包括MAC产生和MAC验证等。
4.PKCS #6:Extended-Certificate Syntax Standard(扩展的证书语法标准)
PKCS #6 v1.5描述扩展证书的语法格式。该扩展证书只是对X.509证书格式进行了扩展,并兼容X.509证书格式。扩展证书格式用 ASN.1描述如下:
ExtendedCertificateOrCertificate ::= CHOICE{
certificate Certificate,--X.509
extendedCertificate [0] IMPLICIT ExtendedCertificate
}
ExtendedCertificate ::= SEQUENCE{
extendedCertificatelnfo ExtendedCertificatelnfo,
signatureAlgorithm SignatureAlgorithmldentifier,
signature Signature
}
SignatureAlgorithmldentifer ::= Algorithmldentifier
Signature ::= BIT STRING
ExtendedCertificateInfo ::= SEQUENCE{
version Version,
certificate Certificate,
attributes Attributes
}
Version ::= INTEGER
Attributes ::= SET OF Attribute
5.PKCS #7:Cryptographic Message Syntax Standard(密码消息语法标准)
PKCS #7 v1.5描述了密码消息的通用语法。该语法允许嵌套,如一个数字信封可以包含另一个数字信封,或可以对已做数字信封的数据进行签名;该语法也允许扩展各种属性,还可以用于分发证书和CRL。PKCS #7与PEM兼容,可以直接将加密的消息转换成PEM消息,反之亦然。PKCS #7支持多种基于证书的管理系统,PEM就是其中之一。在RFC 5652中有增强定义。该标准主要包括消息通用语法和6种内容类型(明文、签名、信封、签名信封、摘要、密文)。
① 消息通用语法用ASN.1描述如下:
Contentlnfo::= SEQUENCE{
contentType ContentType,
content
[0] EXPLICIT ANY DEFINED BY contentType OPTIONAL
}
ContentType:= OBJECT IDENTIFIER
② 明文消息内容用ASN.1描述如下:
Data ::= OCTET STRNG
③ 签名消息内容用ASN.1描述如下:
SignedData ::= SEQUENCE {
version Version,
digestAlgorithms DigestAlgorithmldentifiers,
contentInfo Contentlnfo,
certificates [0] IMPLICIT ExtendedCertificatesAndCertificates
OPTIONAL,
Crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
signerlnfos Signerlnfos
}
DigestAlgorithmldentifiers ::= SET OF DigestAlgorithmldentifier
Signerlnfos ::= SET OF Signerlnfo
Signerlnfo ::= SEQUENCE {
version Version,
issuerAndSeriaINumber IssuerAndSerialNumber,
digestAlgorithm DigestAlgorithmldentifier,
authenticatedAttributes [0] IMPLICIT Attributes OPTIONA L,
digestEncryptionAlgorithm DigestEncryptionAIgorithmldentitler,
encryptedDigest EncryptedDigest,
unauthenticatedAttributes [1] IMPLJC.IT Attributes OPTIONAL
}
EncryptedDigest ::= OC.TET STRING
Digestlnfo ::= SEQUENCE {
digestAlgorithum DigestAlgorithmldentifier,
digest Digest
}
Digest ::= OCTET STRING
④ 信封消息内容用ASN.1描述如下:
EnvelopedData ::= SEQUENCE {
version Version,
recipientlnfos Recipientlnfos.
encryptedContentlnfo EncryptedContentlnfo
}
Recipientlnlos ::= SET OF Recipientlnfo
EncryptedContentInfo ::= SEQUENCE {
contentType ContentType,
contentEncryptionAlgorithm
ContentEncryptionAlgorithmldentifier,
encryptedContent [0] IMPLICLT EncryptedContent OPTIONAL
}
EncryptcdContenr ::= OCTET STRING
Recipientlnfo ::= SEQUENCE {
version Version,
issuerAndSerialNumber IssuerAndSerialNumber,
keyEncryptionAlgorithm
KeyEncryptionAlgorithmldentifier,
encryptedKey EncryptedKey
}
EncryptedKey ::= OCTET STRING
⑤ 签名信封消息内容用 ASN.1描述如下:
SignedAndEnvelopedData ::= SEQUENCE {
version Version,
recipientlnfos Recipientlnfos,
digestAlgorithms DigestAlgorithmldetifiers,
encryptedContentlnfo EncryptedComentlnfo,
certificates [0] IMPLICIT ExtendedCertificatesAndCertificates
OPTIONAL,
Crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
signerlnfos Signerlnfos
}
⑥ 摘要消息内容用 ASN.1描述如下:
DigestedData ::= SEQUENCE{
version Version,
digestAlgorithm DigestAlgorithmldentifier,
contentlnfo Contentlnfo,
digest Digest
}
Digest ::= OCTET STRING
⑦ 密文消息内容用ASN.1描述如下:
EncryptedData ::= SEQUENCE {
version Version,
encryptedContentlnfo EncryptedContentlnfo
}
6.PKCS #8: Private-Key Information Syntax Standard(私钥信息语法标准)
PKCS #8 v1.2描述私钥信息的语法格式。私钥信息包括私钥和一组属性。该标准还描述了私钥密文的语法,且允许使用基于口令的加密算法来加密私钥。在RFC 5208中又重新定义。
① 私钥信息格式用ASN.1描述如下:
PrivateKcylnfo ::= SEQUENCE {
version Version,
privateKeyAlgorithm PrivateKeyAlgorithmldentifler,
privateKcy PrivateKey,
attributes [0] IMPLICIT Attributes OPTIONAL
}
Version::=TNTEGER
PrivateKeyAlgorithmldentifier::=A1gorithmldentificr
PrivateKey::= OCTET STRING
Attributes::= SET OF Attribute
② 私钥密文格式用ASN.1描述如下:
EncryptedPrivateKeylnfo::= SEQUENCE {
encryptionAlgorithm EncryptionAlgorithmldentifier.
encryptedData EncryptedData
}
EncryptionAlgorithmldentifier::= Algorithmldentifier
EncryptedData::= OCTET STRING
7.PKCS #9: Selected Attribute Types(可供选择的属性类型)
PKCS #9 v2.0定义了两个新的辅助对象类和精选的属性类型(基于这两个对像类),
① 两个辅助对象类pkcsEntity和naturalPerson定义如下:
pkcsEntity OBJECT-CLASS ::= {
SUBCLASS OF { top }
KIND auxiliary
MAY CONTAIN { PKCSEntityAttributeSet }
ID pkcs-9-oc-pkcsEntity
}
PKCSEntityAttributeSet ATTRIBUTE ::= {
PKCS7PDU ¦ userPKCS12 ¦ pKCS15Token ¦ encryptedPrivateKeyInfo,
…-- For future extensions
}
naturaIPerson OBJECT-CLASS ::= {
SUBCLASS OF { top }
KIND auxilary
MAY CONTAIN { NaturaIPersonAttributeSet }
ID pkcs-9-oc-naturaIPerson
}
NaturaIPersonAttributeSet ATTRIBUTE ::= {
emaiIAddress ¦ unstructuredName ¦ unstructuredAddress ¦
dateOfBirth ¦ placeOfBirth ¦ gender ¦ countryOfCitizenship ¦
countryOfResidence ¦ pseudonym ¦ seriaINumber,
…-- For future extensions
}
② 基于 pkcsEntity对象类的属性类型定义如下:
pKCS7PDU ATTRIBUTE ::= {
WITH SYNTAX Contentlnfo
ID pkcs-9-at-pkcs7PDU
}
userPKCS12 ATTRIBUTE ::= {
WITH SYNTAX PFX
ID pkcs-9-at-userPKCS12
}
pKCS15Token ATTRIBUTE ::= {
WITH SYNTAX PKCS15Token
ID pkcs-9-at-pkcs15Token
}
encryptedPrivateKeylnfo ATTRIBUTE ::= {
WITH SYNTAX EncryptedPrivateKeylnfo
ID pkcs-9-at-encryptedPrivateKeylnfo
}
③ 基于 naturalPerson对象类的属性类型定义如下:
emaiIAddress ATTRIBUTE ::= {
WITH SYNTAX IA5String (SJZE (1..pkcs-9-ub-emaiIAddress))
EQUALITY MATCHING RULE pkcs9CaseIgnoreMatch
ID pkcs-9-at-emailAddress
}
unstructuredName ATTRIBUTE ::= {
WITH SYNTAX PKCS9String {pkcs-9-ub-unstructuredName}
EQUALITY MATCHING RULE pkcs9CaseIgnoreMatch
ID pkcs-9-at-unstructuredName
}
unstructuredAddress ATTRIBUTE ::= {
WITH SYNTAX DirectoryString {pkcs-9-ub-unstructuredAddress}
EQUALITY MATCHING RULE caselgnoreMatch
ID pkcs-9-at-unstructuredAddress
}
dateOfBirth ATTRIBUTE ::= {
WITH SYNTAX GeneralizedTime
EQUALLTY MATCHING RULE generalizedTimeMatch
SINGLE VALUE TRUE
ID pkcs-9-at-dateOfBirth
}
placeOfBirth ATTRIBUTE ::= {
WITH SYNTAX DirectoryString {pkcs-9-ub-placeOfBirth}
EQUALTTY MATCHING RULE caseExactMatch
SINGLE VALUE TRUE
ID pkcs-9-at-placeOfBirth
}
gender ATTRIBUTE ::= {
WITH SYNTAX PrintableString (SIZE (1) ^FROM ("M" ¦ "F" ¦ "m" ¦ "f"))
EQUALITY MATCHING RULE caselgnoreMatch
SINGLE VALUE TRUE
ID pkcs-9-at-gender
}
countryOfCitizenship ATTRIBUTE ::= {
WITH SYNTAX PrintableString ( SIZE (2) ^CONSTRAINED BY {
--Must be a two-letter country acronym in accordance with ISO/IEC 3166 --} )
EQUALITY MATCHING RULE caselgnoreMatch
ID pkcs-9-at-countryOfCitizenship
}
countryOfResidence ATTRIBUTE ::= {
WITH SYNTAX PrintableString (SIZE (2) ^ CONSTRAINED BY {
--Must be a Iwo-Ietter country acronym in accordance with ISO/IEC 3166 - F )
EQUALITY MATCHING RULE caselgnoreMaich
ID pkcs-9-at-countryOfResidence
}
pseudonym ATTRIBUTE ::= {
WITH SYNTAX DirectoryString {pkcs-9-ub-pseudonym}
EQUALITY MATCHING RULE caseExactMatch
ID id-at-pscudonym
}
④ 用于PKCS#7 的属性类型定义如下:
contentType ATTRIBUTE ::= {
WITH SYNTAX ContentType
EQUALITY MATCHING RULE objectIdentifierMatch
SINGLE VALUE TRUE
ID pkcs-9-at-contentType
}
ContentType ::= OBJECT IDENTIFIER
messageDigest ATTRIBUTE ::= {
WITH SYNTAX MessageDigest
EQUALITY MATCHING RULE octetStringMatch
SINGLE VALUE TRUE
ID pkcs-9-at-messageDigest
}
MessageDigest ::= OCTET STRING
signingTime ATTRIBUTE ::= {
WITH SYNTAX SigningTime
EQUALITY MATCHING RULE signingTimeMatch
SINGLE VALUE- TRUE
ID pkcs-9-at-signingTime
}
SigningTime ::= Time--imported from ISO/IEC 9594-8
randomNonce ATTRIBUTE ::= {
WITH SYNTAX RandomNonce
EQUALITY MATCHING RULE octetStringMatch
SINGLE VALUE TRUE
ID pkcs-9-at-randomNonce
}
RandomNonce ::= OCTET STRING (SIZE (4..MAX)) -- At least four bytes long
sequenceNumber ATTRIBUTE ::= {
WITH SYNTAX SequenceNumber
EQUALITY MATCHING RULE integerMatch
SINGLE VALUE TRUE
ID pkcs-9-at-sequenceNumber
}
SequenceNumber ::= INTEGER (1..MAX)
counterSignature ATTRIBUTE ::= {
WITH SYNTAX Signerlnfo
ID pkcs-9-at-counterSignature
}
⑤ 用于 PKCS #10的属性类型定义如下:
challengePassword ATTRlBUTE ::= {
WITH SYNTAX DirectoryString {pkcs-9-ub-challengePassword }
EQUALITY MATCHING RLiLE caseExactMatch
SINGLE VALUE TRUE
ID pkcs-9-at-challengePassword
}
extensionRequest ATTRIBUTE ::= {
WITH SYNTAX ExtensionRequest
SINGLE VALUE TRUE
ID pkcs-9-at-extensionRequest
}
ExtensionRequest ::= Extensions
extendedCertificateAttributes ATTRIBUTE ::= {
WITH SYNTAX SET OF Attribute
SINGLE VALUE TRUE
ID pkcs-9-at-extendedCertificateAttributes
}
⑥ 用于 PKCS#12或 PKCS #15的属性定义如下:
friendlyName ATTRIBUTE ::= {
WITH SYNTAX BMPString ( SIZE ( 1..pkcs-9-ub-friendlyName))
EQUALITY MATCHING RULE caselgnoreMatch
SINGLE VALUE TRUE
ID pkcs-9-at-friendlyName
}
locaIKeyld ATTRIBUTE ::= {
WITH SYNTAX OCTET STRING
EQUALITY MATCHING RULE octerStringMatch
SINGLE VALUE TRUE
ID pkcs-9-at-localKeyld
}
⑦ S/MIME规范中定义的属性如下:
signingDescription ATTRIBUTE ::= {
WITH SYNTAX DirectoryString {pkcs-9-ub signingDescription }
EQUALITY MATCHING RULE caselgnoreMatch
SINGLE VALUE TRUE
ID pkcs-9-at-signingDescription
}
smimeCapabilities ATTRIBUIE ::= {
WITH SYNTAX SMIMECapabilities
SINGLE VALUE
ID pkcs-9-at-smimeCapabilities
}
SMlMECapabilities ::= SEQUENCE OF SMIMECapability
SMIMECapability ::= SEQUENCE{
algorithm ALGORITHM.&id ({SMIMEv3Algorithms}).
parameters ALGORJTHM.&Type ({SMIMEv3AtgoriLhms} {@algorithm})
}
SMIMEv3Algorithms ALGORITHM::= {…--See RFC 2633--}
8.PKCS #10: Certification Request Syntax Standard(证书请求语法标准)
PKCS#10 v1.7描述了证书请求的语法格式。证书请求包括DN名称、公钥和一组可选属性,以及请求方对上述信息的签名。一个证书请求包括可辨别名、公开密钥和(可选的)一组属性,所有这些均由请求证书的用户签名。证书请求被发送给CA,由CA基于证书请求中的内容签发数字证书。在RFC 2986中重新定义。
① 证书请求信息格式用ASN.1描述如下:
CertificationRequestlnfo ::= SEQUENCE {
version INTEGER { v1 (0) } (v1,…),
subject Name,
subjectPKlnfo SubjectPublicKeylnfo {{PKln roAlgorithms}},
attributes [0] Attributes{{ CRIAttributes}}
}
SubjectPublicKeylnfo{ ALGORITHM: IOSet} ::= SEQUENCE {
algorithm Algorithmldentifier{ {IOSet}},
subjectPublicKey BIT STRING
}
PKlnfoAlgorithms ALGORITHM ::= {
. . . --add any locally defined algorithms here -- }
Attributes { ATTRIBUTE:IOSet} ::= SET OF Attribute{ { IOSet ) }
CRIAttrrbures ATTRIBUTE ::= {
. . . -- add any locally defined attributes here -- }
Attribute { ATTRIBUTE:IOSet} ::= SEQUENCE {
type ATTRIBUTE&id ( {IOSet} ),
values SET SIZE (1..MAX) OF ATTRIBUTE&Type ({IOSet}{@type})
}
② 证书请求格式用ASN.1描述如下:
CertificationRequest ::= SEQUENCE {
certificationRequestlnfo CertificationRequestlnfo,
signatureAlgorithm Algorithmldentifier{ { SignatureAlgorithms }}
signature BIT STRING
}
Algorithmldentifier {ALGORITHM:IOSet } ::= SEQUENCE {
algorithm ALGORITHM&id ( {IOSet}) ,
parameters ALGORITHM.&Type({IOSet}{@algorithm} ) OPTIONAL
}
SignatureAlgorithms ALGORITHM ::= {
... -- add any locally defined algorithms here --
}
9.PKCS #11: Cryptographic Token Interface Standard(密码Token接口标准)
PKCS#11 v2.2定义了一种与密码设备(如智能卡)无关的编程接口技术。主要包括以下内容:
(1) 通用数据类型( General Data Types)。主要分为7类。
① 通用信息类型:CK_VERSION、CK_INFO、CK_NOTIFICATION;
② Slot及Token类型:CK_SLOT_ ID、 CK_SLOT_INFO、 CK_TOKEN_INFO;
③ Session类型:CK_SESSION—HANDLE、 CK_USER_TYPE、 CK_STATE、 CK_SESSION_INFO;
④ 对象类型:CK_OBJECT_HANDLE、CK_OBJECT_CLASS、CK_HW_FEATURE_TYPE、CK—KEY_TYPE、CK_CERTIFICATE_TYPE、CK_ATTRIBUTE _TYPE、CK_ATTRIBUTE、CK_DATE;
⑤ 机制相关类型:CK_MECHANISM_TYPE、CK_MECHANISM、CK_MECHANTSM_INFO;
⑥ 函数类型:CK_RV、CK_NOTIFY、CK_C_XXX、CK_FUNCTION_LIST;
⑦ Locking相关类型:CK_CREATEMUTEX、CK_DESTROYMUTEX、CK_LOCK-MUTEX、CK_UN LOCKMUTEX、CK_C_INITIALIZE_ ARGS。
(2) 对象( Objects)。
主要分为以下几类:硬件特征对象、数据对象、证书对象、密钥对象、域参数对象和机制对象等。证书对象又分为X.509公钥证书对象、WTLS公钥证书对象和X.509属性证书对象。密钥对象又分为公钥对象、私钥对象和秘密密钥对象。
(3) 函数( Functions)。
主要分为以下几类:
① 通用功能函数。共4个:C_lnitialize、C_Finalize、C_Getlnfo、C_GetFunctionList;
② Slot及Token管理函数。共9个:C_GetSlotList、C_GetSlotInfo、C_GetTokenInfo、C_WaitForSlotEvent、C_GetMechanismList、C_GetMechanismlnfo、C_lnitToken、C_JnitPIN、C_SetPIN;
③ Session管理函数。共8个:C_OpenSession、C_CloseSession、C_CloseAIISessions、C_GetSessionjnfo、C_GetOperationState、C_SetOperationState、C_Login、C_Logout;
④ 对象管理函数。共9个:C_CreateObject、C_CopyObject、C_DestroyObject、C_GetObjectSize、C_GetAttributeValue、C_SetAttributeValue、C_FindObjectslnit、C_FindObjects、C_FindObjectsFinal;
⑤ 加密函数。共4个:C_Encryptlnit、C_Encrypt、C_EncryptUpdate、C_EncryptFinal;
⑥ 解密函数。共4个:C_Decryptlnit、C_Decrypt、C_DecryptUpdate、C_DecryptFinal;
⑦ 消息摘要函数。共5个:C_Digestlnit、C_Digest、C_DigestUpdate、C_DigestKey、C_DigestFinal;
⑧ 签名及MAC函数。共6个:C_Signlnit、C_Sign、C_SignUpdate、C_SignFinal、C_SignRecoverlnit、C_SignRecover;
⑨ 验证签名及MAC函数。共6个:C_VerifyInit、C_Verify、C_VerifyUpdate、C_VerifyFinal、C_VeriryRecoverInit、C_VerifyRecover;
⑩ 双功能(dual-purpose)密码函数。共4个:C_DigestEncryptUpdate、C_DecryptDigestUpdate、C_SignEncryptUpdate、C_DecryptVerifyUpdate;
⑪ 密钥管理函数。共5个:C_GenerateKey、C_GenerateKeyPair、C_WrapKey、C_UnwrapKey、C_DeriveKey;
⑫ 随机数生成函数。共2个:C_SeedRandom、C_GenerateRandom;
⑬ 并行函数管理函数。共2个:C-GetFunctionStatus、C_CancelFunction。
(4) 机制( Mechanisms)。
机制规定了特定的密码操作过程如何准确地执行。主要包括以下几类:
① RSA、DSA、Elliptic Curve、Diffle-Hellman、KEA、Wrapping/unwrapping
② private keys、Generic secret key、HMAC mechanisms、RC2、RC4、RC5、AES、
③ General block cipher、Key derivation by data encryption-DES&AES、Double andTriple-length DES、SKIPJACK、BATON、JUNIPER、MD2、MD5、SHA-1、SHA-256、SHA-384、SHA-512、FASTHASH、PKCS #5 and PKCS #5-style password-based encryption (PBE)、 PKCS #12 password-based、encryption/authentication mechanisms、RIPE-MD、SET、LYNKS、SSL、TLS、WTLS、Miscellaneous simple key derivation mechanisms、CMS、Blowfish、Twofish。
10.PKCS #12: Personal Information Exchange Syntax Standard(个人信息交换语法标准)
PKCS #12 v1.0描述了用于存储和传递个人身份信息的语法格式。个人身份信息包括私钥、证书、各种秘密及扩展等,支持本标准的机器设备、应用系统、浏览器、上网亭(Internet Kiosk)等应允许用户导入、导出和操作这种格式的个人身份信息。它的目标是为各种应用提供一个标准的单一密钥文件。常见的PFX文件就是遵循PKCS#12格式的文件。
个人身份信息格式用ASN.I描述如下:
PFX ::= SEQUENCE {
version INTEGER {v3 (3) } (v3,...),
authSafe Contentlnfo,
macData MacData OPTIONAL
}
MacData ::= SEQUENCE {
mac Digestlnfo,
macSalt OCTET STRING,
iterations INTEGER DEFAULT 1
-- Note: The default is for historical reasons and its use is
deprecated. A higher
-- value, like 1024, is recommended.
}
11.PKCS #15:Cryptographic Token Information Format Standard(密码Token 信息格式标准)
PKCS#15 v1.1描述了存储于密码Token中密码凭证的一种格式标准,允许密码令牌的用户向应用程序标识自己。次标准独立于PKCS#11接口或其他API。RSA已经放弃了这个标准的IC卡的相关部分。并提交给了ISO/IEC 7816-15。