1.1. Conventions and Terminology (约定与术语)
1.1. Conventions and Terminology (约定与术语)
本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", "OPTIONAL" 按 BCP 14 [RFC2119] [RFC8174] 所述解释, 且仅当它们以全大写形式出现时适用.
术语 "HTTP message", "HTTP request", "HTTP response", "target URI", "gateway", "header field", "intermediary", "request target", "trailer field", "sender", "method", "recipient" 按 [HTTP] 中的定义使用.
为简洁起见, 本文档单独使用术语 "signature (签名)" 时兼指数字签名 (使用非对称密码学) 与带密钥的 MAC (使用对称密码学). 类似地, 动词 "sign (签名)" 指在给定签名基上生成数字签名或带密钥 MAC. 限定术语 "digital signature (数字签名)" 专指非对称密码学签名操作的输出.
本文档使用 [STRUCTURED-FIELDS] 第 3 节中的下列数据类型术语: List, Inner List, Dictionary, Item, String, Integer, Byte Sequence, Boolean.
本文档使用 ABNF [ABNF] 定义若干字符串构造, 并使用下列 ABNF 规则: VCHAR, SP, DQUOTE, LF. 本文档使用来自 [STRUCTURED-FIELDS] 的下列 ABNF 规则: sf-string, inner-list, parameters. 本文档使用来自 [HTTP] 与 [HTTP/1.1] 的下列 ABNF 规则: field-content, obs-fold, obs-text.
除上述所列外, 本文档还使用下列术语:
HTTP Message Signature (HTTP 消息签名): 覆盖 HTTP 消息一个或多个部分的数字签名或带密钥 MAC. 注意给定 HTTP 消息可以包含多个 HTTP 消息签名.
Signer (签名者): 正在生成或已生成 HTTP 消息签名的实体. 注意多个实体可以充当签名者并对给定 HTTP 消息应用各自的 HTTP 消息签名.
Verifier (验证者): 正在针对 HTTP 消息验证或已验证 HTTP 消息签名的实体. 注意 HTTP 消息签名可以被多次验证, 可能由不同实体执行.
HTTP Message Component (HTTP 消息组成部分): 能够被 HTTP 消息签名覆盖的 HTTP 消息的一部分.
Derived Component (派生组成部分): 通过指定算法或过程从 HTTP 消息派生出的 HTTP 消息组成部分. 见第 2.2 节.
HTTP Message Component Name (HTTP 消息组成部分名称): 标识 HTTP 消息组成部分来源的 String, 例如字段名或派生组成部分名称.
HTTP Message Component Identifier (HTTP 消息组成部分标识符): HTTP 消息组成部分名称与任意参数的组合. 该组合相对于特定 HTTP 消息签名及其所适用的 HTTP 消息唯一标识一个 HTTP 消息组成部分.
HTTP Message Component Value (HTTP 消息组成部分值): 在特定 HTTP 消息上下文中与给定组成部分标识符关联的值. 组成部分值从 HTTP 消息派生, 通常需经过规范化过程.
Covered Components (被覆盖组成部分):
HTTP 消息组成部分标识符的有序集合, 针对字段 (第 2.1 节) 与派生组成部分 (第 2.2 节), 指示签名所覆盖的消息组成部分集合, 绝不包括 @signature-params 标识符本身. 该集合的顺序在签名者与验证者之间保留并传递, 以便重构签名基.
Signature Base (签名基): 签名者与验证者使用被覆盖组成部分集合与 HTTP 消息生成的字节序列. 签名基由密码学算法处理以生成或验证 HTTP 消息签名.
HTTP Message Signature Algorithm (HTTP 消息签名算法): 描述签名与验证过程的密码学算法, 以第 3.3 节所述 HTTP_SIGN 与 HTTP_VERIFY 原语定义.
Key Material (密钥材料): 创建或验证签名所需的密钥材料. 密钥材料通常与显式密钥标识符关联, 使签名者能向验证者指明所用密钥.
Creation Time (创建时间): 表示签名生成时刻的时间戳, 由签名者声明.
Expiration Time (过期时间): 表示签名不应再被验证者接受的时刻之后的时间戳, 由签名者声明.
Target Message (目标消息): 应用 HTTP 消息签名的 HTTP 消息.
Signature Context (签名上下文): 绘制 HTTP 消息组成部分值的数据源. 上下文包括目标消息以及签名者或验证者可能拥有的任何附加信息, 例如请求的完整目标 URI 或响应的相关请求消息.
术语 "UNIX timestamp" 指 [POSIX.1] 第 4.16 节所称 "seconds since the Epoch".
本文档包含部分与完整 HTTP 消息的非规范性示例. 某些示例对长值使用单个尾部反斜杠 () 表示按 [RFC8792] 换行. \ 字符与续行上的前导空格不是值的一部分.