PKCS #7 / Cryptographic Message Syntax (CMS)
标准编号:RFC 5652 (STD 70, 淘汰 RFC 3369) – 基础规范; 也作为 S/MIME (RFC 8551) 的一部分。
发布组织:IETF
摘要:Cryptographic Message Syntax (CMS) 是 PKCS #7 的后继标准,用于对任意消息进行数字签名、摘要、认证、加密等加密保护封装。它定义了多种数据结构(称为内容类型),如 SignedData, EnvelopedData, EncryptedData, DigestedData, AuthenticatedData 等。CMS 被广泛应用于 S/MIME 电子邮件加密、数字签名、带附件的 SOAP 消息、PDF 签名(PAdES)和代码签名等。该语法使用 ASN.1 描述,支持多种加密算法,可与 X.509 证书体系无缝集成。
主要内容类型:
- Data: 原始数据(任意八位元组)。
- SignedData: 包含零个或多个签名,以及可选的数据内容、证书链和证书撤销列表 (CRL)。
- EnvelopedData: 用接收者的公钥加密内容加密密钥,再用该密钥加密内容,实现保密性。
- DigestedData: 包含内容的哈希值,用于完整性校验。
- EncryptedData: 用对称密钥直接加密内容(无密钥传输)。
- AuthenticatedData: 提供数据源认证和完整性,使用 MAC(如 HMAC)。
常见使用场景:PKCS#7 签名常用于 Java 的 JAR 签名(jarsigner)、Windows 可执行文件签名(Authenticode),以及许多电子签名标准。
官方资源: RFC 5652 – CMS | RFC 8551 – S/MIME 4.0