4. 主体公钥字段 (Subject Public Key Fields)
在 X.509 证书中, subjectPublicKeyInfo 字段具有 SubjectPublicKeyInfo 类型, 其 ASN.1 语法如下:
SubjectPublicKeyInfo {PUBLIC-KEY: IOSet} ::= SEQUENCE {
algorithm AlgorithmIdentifier {PUBLIC-KEY, {IOSet}},
subjectPublicKey BIT STRING
}
SubjectPublicKeyInfo 中各字段含义如下:
-
algorithm 是 public key 的算法标识符和参数, 见上文.
-
subjectPublicKey 包含 public key 的字节流.
对于每个 ML-KEM 参数集 (见表 1), 本文档定义如下 PUBLIC-KEY ASN.1 类型:
pk-ml-kem-512 PUBLIC-KEY ::= {
IDENTIFIER id-alg-ml-kem-512
-- KEY no ASN.1 wrapping; 800 octets --
PARAMS ARE absent
CERT-KEY-USAGE { keyEncipherment }
PRIVATE-KEY ML-KEM-512-PrivateKey -- defined in Section 6
}
pk-ml-kem-768 PUBLIC-KEY ::= {
IDENTIFIER id-alg-ml-kem-768
-- KEY no ASN.1 wrapping; 1184 octets --
PARAMS ARE absent
CERT-KEY-USAGE { keyEncipherment }
PRIVATE-KEY ML-KEM-768-PrivateKey -- defined in Section 6
}
pk-ml-kem-1024 PUBLIC-KEY ::= {
IDENTIFIER id-alg-ml-kem-1024
-- KEY no ASN.1 wrapping; 1568 octets --
PARAMS ARE absent
CERT-KEY-USAGE { keyEncipherment }
PRIVATE-KEY ML-KEM-1024-PrivateKey -- defined in Section 6
}
ML-KEM-512-PublicKey ::= OCTET STRING (SIZE (800))
ML-KEM-768-PublicKey ::= OCTET STRING (SIZE (1184))
ML-KEM-1024-PublicKey ::= OCTET STRING (SIZE (1568))
当 ML-KEM public key 在使用 ASN.1 编码的环境中出现在 SubjectPublicKeyInfo 类型之外时, 可以使用与正确密钥大小对应的 ML-KEM-512-PublicKey, ML-KEM-768-PublicKey 和 ML-KEM-1024-PublicKey 类型, 将其编码为 OCTET STRING.
[RFC5958] 描述了 Asymmetric Key Package 的 OneAsymmetricKey 类型, 用于编码非对称密钥对.当 ML-KEM private key 或密钥对编码为 OneAsymmetricKey 时, 它遵循第 6 节中的描述.
当 ML-KEM private key 在使用 ASN.1 编码的环境中出现在 Asymmetric Key Package 之外时, 可以使用第 6 节定义的 ML-KEM-PrivateKey CHOICE 格式之一进行编码.推荐使用 seed 格式, 因为它能够高效存储 private key 和 public key.
附录 C.2 包含使用 [RFC7468] 所定义文本编码方式编码的 ML-KEM public key 示例.