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" は, 非対称暗号を用いる電子署名 (digital signature) と対称暗号を用いる鍵付き MAC (keyed MAC) の両方を指す. 同様に, 動詞 "sign" は, 与えられた署名ベース (signature base) に対する電子署名または鍵付き 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 メッセージの 1 つ以上の部分を被覆する電子署名または鍵付き MAC. 所与の HTTP メッセージに複数の HTTP メッセージ署名を含めてよい.
Signer: HTTP メッセージ署名を生成している, または生成した実体. 複数の実体が署名者として振る舞い, 所与の HTTP メッセージに別々の HTTP メッセージ署名を適用してよい.
Verifier: HTTP メッセージ署名を HTTP メッセージに対して検証している, または検証した実体. HTTP メッセージ署名は複数回, 異なる実体によって検証されてもよい.
HTTP Message Component: HTTP メッセージ署名によって被覆可能な HTTP メッセージの一部.
Derived Component: 指定されたアルゴリズムまたはプロセスにより HTTP メッセージから導出される HTTP メッセージ構成要素. セクション 2.2 を参照.
HTTP Message Component Name: フィールド名または派生コンポーネント名など, HTTP メッセージ構成要素のソースを識別する String.
HTTP Message Component Identifier: HTTP メッセージ構成要素名と任意のパラメータの組. この組は, 特定の HTTP メッセージ署名およびそれが適用される HTTP メッセージに関して, 特定の HTTP メッセージ構成要素を一意に識別する.
HTTP Message Component Value: 特定の HTTP メッセージの文脈において, 所与のコンポーネント識別子に関連付けられる値. コンポーネント値は HTTP メッセージから導出され, 通常は正規化 (canonicalization) 過程の対象となる.
Covered Components:
フィールド (セクション 2.1) および派生コンポーネント (セクション 2.2) の HTTP メッセージ構成要素識別子の順序付き集合で, 署名によって被覆されるメッセージ構成要素の集合を示す. @signature-params 識別子自身は決して含めない. この集合の順序は保存され, 署名者と検証者の間で伝達され, 署名ベースの再構成を容易にする.
Signature Base: 被覆コンポーネント集合と HTTP メッセージを用いて署名者および検証者が生成するバイト列. 署名ベースは暗号アルゴリズムによって処理され, HTTP メッセージ署名を生成または検証する.
HTTP Message Signature Algorithm: 署名の署名および検証過程を記述する暗号アルゴリズムで, セクション 3.3 で記述する HTTP_SIGN および HTTP_VERIFY プリミティブの観点で定義される.
Key Material: 署名の作成または検証に必要な鍵素材. 鍵素材はしばしば明示的な鍵識別子 (key identifier) と関連付けられ, 署名者がどの鍵を用いたかを検証者に示せる.
Creation Time: 署名が生成された時点を表すタイムスタンプで, 署名者が主張する.
Expiration Time: その後は検証者が署名を受け入れないべき時点を表すタイムスタンプで, 署名者が主張する.
Target Message: HTTP メッセージ署名が適用される HTTP メッセージ.
Signature Context: HTTP メッセージ構成要素の値が取り出されるデータソース. コンテキストにはターゲットメッセージおよび署名者または検証者が保持しうる追加情報 (リクエストの完全な target URI やレスポンスに対する関連リクエストメッセージなど) が含まれる.
"UNIX timestamp" という用語は, [POSIX.1] のセクション 4.16 が "seconds since the Epoch" と呼ぶものを指す.
本書には, 部分的および完全な HTTP メッセージの参考例が含まれる. 一部の例では, 長い値の行折り返しを示すために末尾の単一バックスラッシュ () を用いる ([RFC8792] に従う). \ 文字および折り返し行の先頭の空白は値の一部ではない.