跳到主要内容

1. Introduction (简介)

互联网上使用的几个安全相关标准定义了 ASN.1 数据格式, 这些格式通常使用基本编码规则 (Basic Encoding Rules, BER) 或可分辨编码规则 (Distinguished Encoding Rules, DER) [X.690] 进行编码, 这些都是二进制的、面向八位字节的编码。本文档涉及以下格式的文本编码 (textual encodings):

  1. 互联网 X.509 公钥基础设施证书和证书吊销列表 (Certificate Revocation Lists, CRLs) 配置文件 [RFC5280] 中的证书 (Certificates)、证书吊销列表 (CRLs) 和主体公钥信息 (Subject Public Key Info) 结构。

  2. PKCS #10: 证书请求语法 (Certification Request Syntax) [RFC2986]。

  3. PKCS #7: 密码消息语法 (Cryptographic Message Syntax) [RFC2315]。

  4. 密码消息语法 (Cryptographic Message Syntax) [RFC5652]。

  5. PKCS #8: 私钥信息语法 (Private-Key Information Syntax) [RFC5208], 在非对称密钥包 (Asymmetric Key Package) [RFC5958] 中重命名为单个非对称密钥 (One Asymmetric Key), 以及同一文档中的加密私钥信息语法 (Encrypted Private-Key Information Syntax)。

  6. 授权互联网属性证书配置文件 (An Internet Attribute Certificate Profile for Authorization) [RFC5755] 中的属性证书 (Attribute Certificates)。

二进制数据格式的一个缺点是它无法在文本传输中进行交换, 例如电子邮件或文本文档。基于文本的编码的一个优点是它们易于使用常见的文本编辑器进行修改; 例如, 用户可以使用复制粘贴操作将多个证书连接在一起以形成证书链。

RFC 系列中的传统可以追溯到增强隐私邮件 (Privacy-Enhanced Mail, PEM) [RFC1421], 它基于 Marshall Rose 在消息封装 (Message Encapsulation) [RFC934] 中的提议。最初称为 "PEM 封装机制" (PEM encapsulation mechanism)、"封装的 PEM 消息" (encapsulated PEM message) 或 (可以说) "PEM 可打印编码" (PEM printable encoding), 今天这种格式有时被称为 "PEM 编码" (PEM encoding)。变体包括 OpenPGP ASCII armor [RFC4880] 和 OpenSSH 密钥文件格式 [RFC4716]。

由于基本上归结为缺乏协调或疏忽的原因, 许多 PKIX、PKCS 和 CMS 库实现了一种基于文本的编码, 该编码与 PEM 编码相似但不完全相同。本文档指定了文本编码 (textual encoding) 格式, 阐述了大多数实现所遵循的事实标准规则, 并提供了将促进未来互操作性的建议。本文档还为语法元素提供了通用术语, 反映了这种事实标准格式的演变。Peter Gutmann 的 "X.509 Style Guide" [X.509SG] 包含一个 "base64 Encoding" 部分, 其中描述了这些格式并包含与本文档中类似的建议。所有图示都是真实的、功能性的示例, 其密钥长度和内部内容选择尽可能小。

本文档中的关键词 "MUST" (必须)、"MUST NOT" (绝对不能)、"REQUIRED" (必需)、"SHALL" (应)、"SHALL NOT" (不应)、"SHOULD" (应该)、"SHOULD NOT" (不应该)、"RECOMMENDED" (推荐)、"NOT RECOMMENDED" (不推荐)、"MAY" (可以) 和 "OPTIONAL" (可选) 应按 RFC 2119 [RFC2119] 中的描述进行解释。