密码学标准与编码

最后更新: 2025-07-16 20:55:34 +0800 +0800
原文以英文撰写。您正在阅读AI翻译版本。

密码学名称通常标识发布组织和文档系列。协议必须明确其实现的确切版本、算法标识符、参数和编码规则;“PKCS”或“X.509”这类宽泛标签并不足够。

ITU-T X 系列与 X.509 #

国际电信联盟电信标准化部门(ITU-T)以字母系列发布建议。X 系列涵盖数据网络、开放系统通信和安全。ITU-T X.509 定义公钥证书框架和 ASN.1 证书结构。IETF 在 RFC 5280 中规定了供互联网使用的 X.509 证书配置。

X.509 本身并不定义 TLS 主机名验证、HTTP 使用方式或特定的证书颁发机构策略。协议规范和依赖方软件负责应用这些语义。

PKCS 文档 #

公钥密码学标准起源于 RSA Laboratories,涵盖不同的格式和算法:

  • PKCS #1 定义 RSA 原语和编码。
  • PKCS #3 描述 Diffie–Hellman 密钥协商。
  • PKCS #5 定义基于密码的密码学,包括 PBKDF2。
  • PKCS #7 演变为加密消息语法(CMS)。
  • PKCS #8 定义私钥信息语法。
  • PKCS #10 定义证书请求。
  • PKCS #12 打包私钥和证书。

部分 PKCS 文档属于历史规范,而 IETF RFC 或其他标准组织维护当前规范。例如,CMS 对应 RFC 5652,PKCS #1 v2.2 对应 RFC 8017。

ASN.1、DER 与 PEM #

ASN.1 定义抽象数据类型,但不选择字节编码。基本编码规则(BER)允许对值使用多种编码。可辨识编码规则(DER)选择一种规范化的 BER 编码;当签名必须恰好覆盖一个字节序列时,就需要使用 DER。

PEM 是一种 ASCII 装甲约定:将经过 base64 编码的 DER 字节放在类似 -----BEGIN CERTIFICATE----- 的标签之间。PEM 是编码容器,而不是证书类型。一个文件可以包含一个或多个 PEM 块,标签决定编码对象的预期类型。

参考资料 #

评论

在 GitHub 上阅读或评论(发表评论需要登录)