...

X.509、PKCS公钥密码学标准及常见RFC

简介

  • X.509: 公钥证书的格式标准,应用于包括TLS/SSL在内的众多网络协议;
  • PKCS:即Public Key Cryptography Standards-公钥密码学标准。是由美国 RSA 数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议,PKCS目前包含了 PKCS#1~ PKCS#15 15项标准,其中PKCS#2及PKCS#4由于已被纳入PKCS#1中已弃用。
  • RFC:即Request For Comments-网络标准协议草案,目前已包含了上千种协议草案。

X.509及PKCS公钥密码学标准

标准 简介 对应RFC协议 编码格式 常见扩展名 应用
X.509 公钥证书标准 rfc5280 PEM / DER .crt、.cer、.ca 证书、CA证书、通用公钥
PKCS#1 RSA密码标准 rfc2437 PEM / DER .key、.pem、.rsa RSA私钥、RSA公钥、RSA签名
PKCS#3 DH密钥交换协议 rfc2631 TLS握手
PKCS#5 私钥加密标准 rfc2898 私钥加密
PKCS#6 证书扩展项标准 rfc2315 X.509证书扩展项
PKCS#7 签名及签名数据标准 rfc2315 PEM / DER .p7b、.p7r、.p7c、.p7m、.p7s 签名、签名数据、证书吊销列表
PKCS#8 通用私钥标准 rfc5208 PEM / DER .key、.pem、.der 通用私钥
PKCS#9 扩展属性标准 rfc2985 .key、.pem 证书扩展项、私钥、签名
PKCS#10 证书签名请求标准 rfc2986 PEM / DER .csr、.p10 证书签名请求(CSR)
PKCS#11 硬件加密接口标准 硬件加密机
PKCS#12 个人消息交换标准(私钥+证书) rfc7292 .p12、.pfx 加密私钥+证书
PKCS#13 椭圆曲线密码标准 rfc5915 .key、.pem 椭圆曲线(EC)私钥
PKCS#14 拟随机数生成标准 加密、签名中的随机数
PKCS#15 密码令牌信息格式标准 ISO/IEC 7816-15 硬件加密接口

协议标准与证书、私钥、公钥大致关系

X.509_PKCS_RFC

PKCS公钥密码学标准

OID: 1.2.840.113549.1

PKCS#1

公钥密码学标准#1 OID: 1.2.840.113549.1.1

相关编码

rfc2437

RSA私钥编码格式

RSAPrivateKey ::= SEQUENCE {
    version           Version,
    modulus           INTEGER,  -- n
    publicExponent    INTEGER,  -- 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
    otherPrimeInfos   OtherPrimeInfos OPTIONAL
}

RSA公钥编码格式

RSAPublicKey ::= SEQUENCE {
    modulus           INTEGER,  -- n
    publicExponent    INTEGER,  -- e
}

相关对象标识

名称 OID
1.2.840.113549.1.1 pkcs-1 公钥密码标准#1
1.2.840.113549.1.1.1 rsaEncryption RSA加密及签名
1.2.840.113549.1.1.2 md2WithRSAEncryption 结合MD2的消息摘要的RSA加密
1.2.840.113549.1.1.3 md4withRSAEncryption 结合MD4的消息摘要的RSA加密
1.2.840.113549.1.1.4 md5WithRSAEncryption 结合MD5的消息摘要的RSA加密
1.2.840.113549.1.1.5 sha1-with-rsa-signature 结合SHA1哈希算法和RSA的签名
1.2.840.113549.1.1.6 rsaOAEPEncryptionSET 结合最佳非对称加密填充(OAEP)的RSA加密集
1.2.840.113549.1.1.7 id-RSAES-OAEP 结合最佳非对称加密填充的(OAEP)RSA公钥加密方案
1.2.840.113549.1.1.8 id-mgf1 结合掩码生成器函数 (MGF1)的RSA算法
1.2.840.113549.1.1.9 id-pSpecified 基于RSA算法的特性方案
1.2.840.113549.1.1.10 rsassa-pss RSA带附录的概率签名方案
1.2.840.113549.1.1.11 sha256WithRSAEncryption 结合SHA256哈希算法的RSA加密
1.2.840.113549.1.1.12 sha384WithRSAEncryption 结合SHA348哈希算法的RSA加密
1.2.840.113549.1.1.13 sha512WithRSAEncryption 结合SHA512哈希算法的RSA加密
1.2.840.113549.1.1.14 sha224WithRSAEncryption 结合SHA224哈希算法的RSA加密

PKCS#8

rfc5208

相关编码

PrivateKeyInfo ::= SEQUENCE {
    version              VERSION,
    privateKeyAlgorithm  SEQUENCE {
      algorithm   OBJECT IDENTIFIER,
      parameters  ANY
    },
    privateKey           OCTET STRING,
    attributes           SET OF OPTIONAL
}

例如

PrivateKeyInfo:
 version=v1
 privateKeyAlgorithm=AlgorithmIdentifier:
  algorithm=1.2.840.10045.2.1
  parameters=0x06082a8648ce3d030107

privateKey=0x306b0201010420b6fd5d544f09a3e0b6604b4dfbac6264c307300258420c3fb1b8eedb544a0719a1440342000420be56c478e4ff209ccc43e533170b49262ab0eb38ba11b396ad05427231e2e26bbc3688aba86dfad753d950277c34cd6f286425659f082a5ef667952108fa85

PKCS#13

rfc5915

相关编码

椭圆曲线私钥编码格式

ECPrivateKey ::= SEQUENCE {
    version         INTEGER,
    privateKey      OCTET STRING,
    parameters      CHOICE OPTIONAL,
    publicKey       BIT STRING OPTIONAL
}

例如:

ECPrivateKey:
 version=ecPrivkeyVer1
 privateKey=0xb6fd5d544f09a3e0b6604b4dfbac6264c307300258420c3fb1b8eedb544a0719
 parameters=ECParameters:
   namedCurve=1.2.840.10045.3.1.7

publicKey=55346148566235007019366148145582934212029111162400636479433293193372440464815863465406199677738031681986384378401592422838283150086311760450437229027326597

参考

注:其中X.509中也包含了证书中公钥扩展项的标准,也可以作为公钥格式标准,PKCS#14拟随机数并不仅限于签名生成,PKCS#15页并不仅限于硬件加密机接口。

posted @ 2024-07-17 21:11  韩志超  阅读(224)  评论(0编辑  收藏  举报