Skip to main content

Appendix A. ASN.1 Syntax (ASN.1语法)

本附录总结了本文档中使用的ASN.1语法. 附录C包含完整的ASN.1模块.

A.1. RSA Key Representation (RSA密钥表示)

本节定义RSA公钥和私钥的ASN.1语法.

A.1.1. RSA Public Key Syntax (RSA公钥语法)

RSA公钥应表示为ASN.1类型RSAPublicKey:

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

字段说明:

  • modulus: RSA模数n
  • publicExponent: RSA公钥指数e

在有效的RSA公钥中,模数n的值应该是u个不同奇素数r_i (i = 1, 2, ..., u)的乘积,其中u >= 2,公钥指数e应该是介于3和n - 1之间的整数,满足GCD(e, λ(n)) = 1.

A.1.2. RSA Private Key Syntax (RSA私钥语法)

RSA私钥应表示为ASN.1类型RSAPrivateKey:

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
}

Version ::= INTEGER { two-prime(0), multi(1) }
(CONSTRAINED BY {
-- version must be multi if otherPrimeInfos present --
})

OtherPrimeInfos ::= SEQUENCE SIZE(1..MAX) OF OtherPrimeInfo

OtherPrimeInfo ::= SEQUENCE {
prime INTEGER, -- r_i
exponent INTEGER, -- d_i
coefficient INTEGER -- t_i
}

字段说明:

  • version: 版本号 (two-prime表示两素数RSA,multi表示多素数RSA)
  • modulus: RSA模数n
  • publicExponent: RSA公钥指数e
  • privateExponent: RSA私钥指数d
  • prime1: 第一个素因子p
  • prime2: 第二个素因子q
  • exponent1: d mod (p-1)
  • exponent2: d mod (q-1)
  • coefficient: CRT系数qInv, (q^-1) mod p
  • otherPrimeInfos: 可选,用于多素数RSA的额外素因子信息

A.2. Scheme Identification (方案标识)

本节定义本文档中定义的各种方案的对象标识符 (Object Identifiers).

A.2.1. RSAES-OAEP

RSAES-OAEP加密方案的对象标识符为:

id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 }

RSAES-OAEP的算法参数类型为:

RSAES-OAEP-params ::= SEQUENCE {
hashFunc [0] AlgorithmIdentifier DEFAULT sha1,
maskGenFunc [1] AlgorithmIdentifier DEFAULT mgf1SHA1,
pSourceFunc [2] AlgorithmIdentifier DEFAULT pSpecifiedEmpty
}

A.2.2. RSAES-PKCS1-v1_5

RSAES-PKCS1-v1_5加密方案的对象标识符为:

id-RSAES-PKCS1-v1_5 OBJECT IDENTIFIER ::= { pkcs-1 1 }

该方案没有关联的参数.

A.2.3. RSASSA-PSS

RSASSA-PSS签名方案的对象标识符为:

id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 }

RSASSA-PSS的算法参数类型为:

RSASSA-PSS-params ::= SEQUENCE {
hashAlgorithm [0] AlgorithmIdentifier DEFAULT sha1,
maskGenAlgorithm [1] AlgorithmIdentifier DEFAULT mgf1SHA1,
saltLength [2] INTEGER DEFAULT 20,
trailerField [3] INTEGER DEFAULT 1
}

A.2.4. RSASSA-PKCS1-v1_5

RSASSA-PKCS1-v1_5签名方案使用以下对象标识符用于不同的哈希函数:

sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 }
sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 }
sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 }

这些对象标识符与特定的哈希函数关联.