RFC 9421 - HTTP Message Signatures (HTTP 消息签名)
- 状态: Proposed Standard
- 发布日期: February 2024
- Stream: IETF
- 勘误: 无勘误
Abstract (摘要)
本文档描述了一种对 HTTP 消息的若干组成部分创建, 编码和验证数字签名 (digital signature) 或消息认证码 (message authentication code, MAC) 的机制. 该机制适用于签名者可能无法获知完整 HTTP 消息, 以及消息在到达验证者之前可能被中间方转换 (例如由中间人代理) 的用例. 本文档还描述了一种在持续 HTTP 交换中请求对后续 HTTP 消息应用签名的方法.
Contents
- 1. Introduction (引言)
- 2. HTTP Message Components (HTTP 消息组成部分)
- 3. HTTP Message Signatures (HTTP 消息签名)
- 3.1. Creating a Signature (创建签名)
- 3.2. Verifying a Signature (验证签名)
- 3.3. Signature Algorithms (签名算法)
- 3.3.1. RSASSA-PSS Using SHA-512 (使用 SHA-512 的 RSASSA-PSS)
- 3.3.2. RSASSA-PKCS1-v1_5 Using SHA-256 (使用 SHA-256 的 RSASSA-PKCS1-v1_5)
- 3.3.3. HMAC Using SHA-256 (使用 SHA-256 的 HMAC)
- 3.3.4. ECDSA Using Curve P-256 DSS and SHA-256 (使用曲线 P-256 DSS 与 SHA-256 的 ECDSA)
- 3.3.5. ECDSA Using Curve P-384 DSS and SHA-384 (使用曲线 P-384 DSS 与 SHA-384 的 ECDSA)
- 3.3.6. EdDSA Using Curve edwards25519 (使用曲线 edwards25519 的 EdDSA)
- 3.3.7. JSON Web Signature (JWS) Algorithms (JSON Web Signature (JWS) 算法)
- 4. Including a Message Signature in a Message (在消息中包含消息签名)
- 5. Requesting Signatures (请求签名)
- 6. IANA Considerations (IANA 注意事项)
- 6.1. HTTP Field Name Registration (HTTP 字段名注册)
- 6.2. HTTP Signature Algorithms Registry (HTTP 签名算法注册表)
- 6.3. HTTP Signature Metadata Parameters Registry (HTTP 签名元数据参数注册表)
- 6.4. HTTP Signature Derived Component Names Registry (HTTP 签名派生组成部分名称注册表)
- 6.5. HTTP Signature Component Parameters Registry (HTTP 签名组成部分参数注册表)
- 7. Security Considerations (安全注意事项)
- 7.1. General Considerations (一般注意事项)
- 7.2. Message Processing and Selection (消息处理与选择)
- 7.2.1. Insufficient Coverage (覆盖不足)
- 7.2.2. Signature Replay (签名重放)
- 7.2.3. Choosing Message Components (选择消息组成部分)
- 7.2.4. Choosing Signature Parameters and Derived Components over HTTP Fields (相对 HTTP 字段选择签名参数与派生组成部分)
- 7.2.5. Signature Labels (签名标签)
- 7.2.6. Multiple Signature Confusion (多签名混淆)
- 7.2.7. Collision of Application-Specific Signature Tag (应用专用签名标签碰撞)
- 7.2.8. Message Content (消息内容)
- 7.3. Cryptographic Considerations (密码学注意事项)
- 7.3.1. Cryptography and Signature Collision (密码学与签名碰撞)
- 7.3.2. Key Theft (密钥窃取)
- 7.3.3. Symmetric Cryptography (对称密码学)
- 7.3.4. Key Specification Mixup (密钥规范混淆)
- 7.3.5. Non-deterministic Signature Primitives (非确定性签名原语)
- 7.3.6. Key and Algorithm Specification Downgrades (密钥与算法规范降级)
- 7.3.7. Signing Signature Values (对签名值签名)
- 7.4. Matching Signature Parameters to the Target Message (将签名参数与目标消息匹配)
- 7.5. HTTP Processing (HTTP 处理)
- 7.5.1. Processing Invalid HTTP Field Names as Derived Component Names (将无效 HTTP 字段名作为派生组成部分名称处理)
- 7.5.2. Semantically Equivalent Field Values (语义等价的字段值)
- 7.5.3. Parsing Structured Field Values (解析 Structured Field 值)
- 7.5.4. HTTP Versions and Component Ambiguity (HTTP 版本与组成部分歧义)
- 7.5.5. Canonicalization Attacks (规范化攻击)
- 7.5.6. Non-List Field Values (非列表字段值)
- 7.5.7. Padding Attacks with Multiple Field Values (多字段值的填充攻击)
- 7.5.8. Ambiguous Handling of Query Elements (查询元素处理的歧义)
- 8. Privacy Considerations (隐私注意事项)
- 9. References (参考文献)
- Appendix A. Detecting HTTP Message Signatures (附录 A. 检测 HTTP 消息签名)
- Appendix B. Examples (附录 B. 示例)
- B.1. Example Keys (示例密钥)
- B.2. Test Cases (测试用例)
- B.2.1. Minimal Signature Using rsa-pss-sha512 (使用 rsa-pss-sha512 的最小签名)
- B.2.2. Selective Covered Components Using rsa-pss-sha512 (使用 rsa-pss-sha512 的选择性被覆盖组成部分)
- B.2.3. Full Coverage Using rsa-pss-sha512 (使用 rsa-pss-sha512 的完全覆盖)
- B.2.4. Signing a Response Using ecdsa-p256-sha256 (使用 ecdsa-p256-sha256 签名响应)
- B.2.5. Signing a Request Using hmac-sha256 (使用 hmac-sha256 签名请求)
- B.2.6. Signing a Request Using ed25519 (使用 ed25519 签名请求)
- B.3. TLS-Terminating Proxies (TLS 终止代理)
- B.4. HTTP Message Transformations (HTTP 消息转换)
- Acknowledgements (致谢)
- Authors' Addresses (作者地址)