公钥密码标准PKCS

PKCS(Public-Key Cryptography Standards)是由 RSA 实验室发布的一系列公钥密码学标准,定义了在公钥基础设施(PKI)中广泛使用的数据格式、算法和协议。以下是对 PKCS #1 及后续主要 PKCS 标准的介绍:

一、目前在用的PKCS标准

PKCS #1 – RSA Cryptography Standard RSA算法标准

  • 主要内容:定义了 RSA 公钥和私钥的数学定义、结构(ASN.1语法)以及使用RSA算法进行加密和签名的方案。

  • 核心用途

    1. RSA密钥表示:规定了如何编码RSA公钥(模数n和公钥指数e)和私钥。

    2. 加密方案:如RSAES-PKCS1-v1_5(旧版)和更安全的RSAES-OAEP。

    3. 签名方案:如RSASSA-PKCS1-v1_5(旧版)和更安全的RSASSA-PSS。

  • 在GM/T文件中的关联:在 GM/T 0014-2023 中,明确规定“凡涉及 RSA 密钥算法的,其密钥结构应符合 PKCS #1 的规定”。它是构建数字签名和数字信封(当使用RSA算法时)的基础。

PKCS #7 – Cryptographic Message Syntax (CMS) 密码消息语法

  • 主要内容:定义了一种通用的密码消息语法标准,用于对任意内容(如数据、证书、CRL)进行数字签名、摘要、加密或封装。

  • 核心用途

    1. 数字签名:创建签名的数据结构(SignedData)。

    2. 数字信封:创建加密的数据结构(EnvelopedData),用接收者的公钥加密会话密钥。

    3. 数据封装:可以嵌套多种操作(如先签名后加密)。

  • 在GM/T文件中的关联GM/T 0014-2023 中规定,“其封装结构应符合 PKCS #7 的规定”。它常用于证书(如附件中的证书链)、CRL的封装传输,以及安全协议报文(如CMC)的底层封装格式。

PKCS #8 – Private-Key Information Syntax Standard 私钥信息语法

  • 主要内容:定义了私钥信息的语法,包括私钥本身以及可选的属性集。私钥通常会被加密保护。

  • 核心用途:安全地存储和传输私钥。它是许多系统(如OpenSSL)导出和导入私钥的默认格式。

  • 特点:可以封装各种算法(如RSA、DSA、EC)的私钥。

PKCS #10 – Certification Request Syntax Standard 证书请求语法

  • 主要内容:定义了向证书认证机构(CA)申请数字证书时使用的数据格式。

  • 核心结构:一个认证请求(CertificationRequest)包含:待签发的证书信息(公钥、主体名称等)、请求者信息,并由请求者使用自己的私钥对整个请求进行签名

  • 核心用途:证书签名请求(CSR)的标准格式。RA或终端实体向CA提交CSR以申请证书。

  • 在GM/T文件中的关联:在 GM/T 0014-2023 附录C(RA与CA间协议) 中,PKIBody 的选项之一就是 p10cr [4] CertificationRequest,即PKCS #10格式的证书请求。

PKCS #11 – Cryptographic Token Interface Standard (Cryptoki) 密码令牌接口

  • 主要内容:定义了一个与硬件密码设备(如智能卡、USB Key、HSM)进行交互的通用API接口,独立于具体设备。

  • 核心用途:为应用程序提供一套统一的函数来调用硬件密码设备中的密码服务(如密钥生成、签名、加密),而无需关心底层设备的差异。

PKCS #12 – Personal Information Exchange Syntax Standard 个人信息交换语法

  • 主要内容:定义了用于安全存储和传输用户个人身份信息(如私钥、对应证书、其他秘密)的文件格式。文件通常使用密码(口令)进行保护。

  • 核心用途:将用户的私钥和证书链打包成一个受密码保护的 .p12 或 .pfx 文件,方便在客户端(如浏览器、操作系统)之间备份、恢复或导入数字身份。

  • 特点:支持基于口令的加密,是Windows系统、浏览器等广泛支持的证书/密钥对分发格式。

其他相关说明

  • PKCS #15:定义了密码令牌上存储的加密对象的通用格式,旨在促进不同厂商令牌的互操作性。

  • 与国密标准的关系:在中国的密码体系中,与PKCS #1和PKCS #7功能对应的是 GM/T 0009 (SM2算法规范) 和 GM/T 0010 (SM2加密签名消息语法规范)。GM/T标准规定了国产SM2算法对应的密钥结构、签名和加密信封的格式。在 GM/T 0014-2023 中明确要求:凡涉及SM2算法的,需符合GM/T 0009和0010;凡涉及RSA算法的,则需符合PKCS #1和#7。这体现了在支持国际通用算法(RSA)的同时,对国产密码算法的标准化要求。

总结表格

标准编号核心名称与用途在GM/T体系中的角色
PKCS #1RSA算法标准(密钥结构、加密/签名方案)RSA算法的基础遵从标准(密钥结构、签名/信封基础)
PKCS #7密码消息语法(通用签名/加密封装格式)RSA算法的封装遵从标准(证书链、CRL、协议报文封装)
PKCS #8私钥信息语法(私钥存储格式)通用私钥存储和传输格式
PKCS #10证书请求语法(CSR标准格式)RA/用户向CA申请证书的标准请求格式之一
PKCS #11密码令牌接口(硬件密码设备API)调用硬件密码设备的通用编程接口
PKCS #12个人信息交换语法(.p12/.pfx文件格式)用户证书和私钥的分发、备份标准格式
GM/T 0009/0010SM2算法及消息语法规范国密对标标准,在涉及SM2算法时取代PKCS #1和#7的角色

这些标准共同构成了构建和运营一个互操作性强、安全可靠的PKI系统(如GM/T 0034所描述的证书认证系统)所必需的技术基础。

二、已合并或废弃的PKCS标准

  1. PKCS #2 – RSA Encryption of Message Digests

    • 内容:专门定义了如何使用 RSA 算法来加密消息摘要(即数字签名)。

    • 现状:其功能被完全合并并纳入到 PKCS #1 中。现在 PKCS #1 中的 RSASSA-PKCS1-v1_5 和 RSASSA-PSS 签名方案就是它的继承者。因此#2已被撤销。

  2. PKCS #4 – RSA Key Syntax

    • 内容:专门定义了 RSA 公钥和私钥的语法(ASN.1 结构)。

    • 现状:其内容同样被完全合并到 PKCS #1 中。现在 PKCS #1 的第7章 “语法” 明确定义了 RSA 公钥 (RSAPublicKey) 和私钥 (RSAPrivateKey) 的结构。因此#4也被撤销。

  3. PKCS #6 – Extended-Certificate Syntax Standard

    • 内容:定义了一种“扩展证书”格式,它在 X.509 证书的基础上增加了一组可被签名的属性。

    • 现状:这个标准试图解决证书携带额外属性(如发证策略)的需求。然而,这项功能后来被更灵活、更通用的 X.509 v3 证书的扩展项机制 完美取代。因此 PKCS #6 已被淘汰和废弃。

三、已被其他标准和技术取代的PKCS标准

  1. PKCS #3 – Diffie-Hellman Key Agreement Standard

    • 内容:定义了 Diffie-Hellman 密钥协商协议的参数和密钥的 ASN.1 语法。

    • 现状:虽然 DH 协议本身仍然重要且在使用,但其标准化工作已被纳入更广泛的框架中。例如,在 RFC 3279 (Algorithms and Identifiers for PKIX) 和 RFC 7919 (Negotiated FF DHE for TLS) 等 IETF 标准中对其进行了定义。作为独立的 PKCS 标准,它已不再活跃。

  2. PKCS #5 – Password-Based Cryptography Standard

    • 内容:定义了一系列基于口令(密码)的密码学标准,核心是 PBKDF1 和 PBKDF2 (Password-Based Key Derivation Function) 算法。

    • 现状PKCS #5 v2.1 仍然是一个重要且被广泛引用的标准,尤其是在从弱口令生成强加密密钥的场景。然而,它后来被采纳为 IETF 的 RFC 8018。所以,虽然它的思想和算法依然至关重要,但“PKCS #5”这个标签在最新语境下可能不如“RFC 8018”或直接说“PBKDF2”常见。它并未消失,而是“升级”并融入了更广泛的互联网标准体系。

  3. PKCS #9 – Selected Attribute Types

    • 内容:定义了一组在 PKCS #6, #7, #8, #10 等标准中通用的、可选的属性类型(如 challengePasswordunstructuredNamecontentType 等)。

    • 现状:这些属性定义非常有用,被广泛实现。后来,这些属性的绝大部分被吸收并标准化到了 IETF 的 PKIX 工作组 的相关文档中。例如,在 RFC 2985 (PKCS #9) 中仍有定义,但它已更多地被视为 PKIX (X.509) 标准体系的一部分,而非独立的 PKCS 标准。

总结表格

缺失编号标准名称现状与原因
PKCS #2RSA消息摘要加密被合并,功能纳入 PKCS #1(签名方案)。
PKCS #3DH密钥协商被取代,由 IETF RFC 标准(如RFC 3279, 7919)定义。
PKCS #4RSA密钥语法被合并,内容纳入 PKCS #1(密钥结构)。
PKCS #5基于口令的密码学被采纳升级,成为 IETF RFC 8018,PBKDF2算法仍极重要。
PKCS #6扩展证书语法被淘汰,被 X.509 v3 证书扩展项 完全取代。
PKCS #9选定属性类型被吸收,属性定义融入 IETF PKIX (X.509) 标准体系。

结论
PKCS 标准系列在90年代初期推出时编号连续,但随着密码学技术和公钥基础设施(PKI)的快速发展,部分标准因功能重叠、技术过时或被更优方案取代而自然消亡。其核心思想和技术要么被合并到更基础的标准(如#1),要么被更广泛的国际标准(如IETF RFC)所吸收和演进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

courniche

鼓励就是动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值