メインコンテンツまでスキップ

4. JOSE Header (JOSEヘッダー)

JWEの場合、JOSE Headerを表すJSONオブジェクトのメンバーは、平文に適用される暗号化と、オプションでJWEの追加プロパティを記述します。JOSE Header内のHeader Parameter名は、[JWS]のセクション4で指定されているように、一意でなければなりません (MUST)。実装が理解できないHeader Parametersの処理に関するルールも同じです。Header Parameter名のクラスも同様です。

4.1 Registered Header Parameter Names (登録済みヘッダーパラメータ名)

JWEで使用する以下のHeader Parameter名は、[JWS]によって確立されたIANA "JSON Web Signature and Encryption Header Parameters"レジストリに登録されており、以下に定義される意味を持ちます。

共通レジストリが示すように、JWSとJWEは共通のHeader Parameter空間を共有します。パラメータが両方の仕様で使用される場合、その使用法は仕様間で互換性がなければなりません。

4.1.1 "alg" (Algorithm) Header Parameter (アルゴリズムヘッダーパラメータ)

"alg" Header Parameterの意味、構文、および処理規則は、[JWS]のセクション4.1.1で定義されたものと同じですが、Header ParameterはCEKの値を暗号化または決定するために使用される暗号化アルゴリズムを識別する点が異なります。"alg"値がサポートされているアルゴリズムを表していない場合、または受信者がそのアルゴリズムで使用できる鍵を持っていない場合、暗号化されたコンテンツを復号化できません。

この用途で定義された"alg"値のリストは、[JWA]によって確立されたIANA "JSON Web Signature and Encryption Algorithms"レジストリにあります。このレジストリの初期内容は、[JWA]のセクション4.1で定義された値です。

4.1.2 "enc" (Encryption Algorithm) Header Parameter (暗号化アルゴリズムヘッダーパラメータ)

"enc" (encryption algorithm、暗号化アルゴリズム) Header Parameterは、平文に認証付き暗号化を実行して暗号文とAuthentication Tagを生成するために使用されるコンテンツ暗号化アルゴリズムを識別します。このアルゴリズムは、指定された鍵長を持つAEADアルゴリズムでなければなりません (MUST)。"enc"値がサポートされているアルゴリズムを表していない場合、暗号化されたコンテンツを復号化できません。"enc"値は、[JWA]によって確立されたIANA "JSON Web Signature and Encryption Algorithms"レジストリに登録されるか、Collision-Resistant Nameを含む値である必要があります。"enc"値は、StringOrURI値を含む大文字と小文字を区別するASCII文字列です。このHeader Parameterは存在しなければならず (MUST)、実装によって理解および処理されなければなりません (MUST)。

この用途で定義された"enc"値のリストは、[JWA]によって確立されたIANA "JSON Web Signature and Encryption Algorithms"レジストリにあります。このレジストリの初期内容は、[JWA]のセクション5.1で定義された値です。

4.1.3 "zip" (Compression Algorithm) Header Parameter (圧縮アルゴリズムヘッダーパラメータ)

"zip" (compression algorithm、圧縮アルゴリズム)は、暗号化前の平文に適用されます(ある場合)。本仕様で定義されている"zip"値は以下の通りです:

  • "DEF" - DEFLATE [RFC1951]アルゴリズムによる圧縮

他の値を使用してもかまいません (MAY)。圧縮アルゴリズム値は、[JWA]によって確立されたIANA "JSON Web Encryption Compression Algorithms"レジストリに登録できます。"zip"値は大文字と小文字を区別する文字列です。"zip"パラメータが存在しない場合、暗号化前の平文に圧縮は適用されません。使用する場合、このHeader Parameterは完全性保護されなければなりません (MUST)。したがって、JWE Protected Header内にのみ出現しなければなりません (MUST)。このHeader Parameterの使用はオプションです (OPTIONAL)。このHeader Parameterは実装によって理解および処理されなければなりません (MUST)。

4.1.4 "jku" (JWK Set URL) Header Parameter

"jku" Header Parameterの意味、構文、および処理規則は、[JWS]のセクション4.1.2で定義されたものと同じですが、JWK Setリソースには、JWEが暗号化された公開鍵が含まれている点が異なります。これは、JWEを復号化するために必要な秘密鍵を決定するために使用できます。

4.1.5 "jwk" (JSON Web Key) Header Parameter

"jwk" Header Parameterの意味、構文、および処理規則は、[JWS]のセクション4.1.3で定義されたものと同じですが、鍵は、JWEが暗号化された公開鍵である点が異なります。これは、JWEを復号化するために必要な秘密鍵を決定するために使用できます。

4.1.6 "kid" (Key ID) Header Parameter

"kid" Header Parameterの意味、構文、および処理規則は、[JWS]のセクション4.1.4で定義されたものと同じですが、鍵ヒントは、JWEが暗号化された公開鍵を参照している点が異なります。これは、JWEを復号化するために必要な秘密鍵を決定するために使用できます。このパラメータにより、発信者はJWE受信者に鍵の変更を明示的に通知できます。

4.1.7 "x5u" (X.509 URL) Header Parameter

"x5u" Header Parameterの意味、構文、および処理規則は、[JWS]のセクション4.1.5で定義されたものと同じですが、X.509公開鍵証明書または証明書チェーン[RFC5280]には、JWEが暗号化された公開鍵が含まれている点が異なります。これは、JWEを復号化するために必要な秘密鍵を決定するために使用できます。

4.1.8 "x5c" (X.509 Certificate Chain) Header Parameter

"x5c" Header Parameterの意味、構文、および処理規則は、[JWS]のセクション4.1.6で定義されたものと同じですが、X.509公開鍵証明書または証明書チェーン[RFC5280]には、JWEが暗号化された公開鍵が含まれている点が異なります。これは、JWEを復号化するために必要な秘密鍵を決定するために使用できます。

"x5c"値の例については、[JWS]の付録Bを参照してください。

4.1.9 "x5t" (X.509 Certificate SHA-1 Thumbprint) Header Parameter

"x5t" Header Parameterの意味、構文、および処理規則は、[JWS]のセクション4.1.7で定義されたものと同じですが、サムプリントによって参照される証明書には、JWEが暗号化された公開鍵が含まれている点が異なります。これは、JWEを復号化するために必要な秘密鍵を決定するために使用できます。証明書のサムプリントは、証明書のフィンガープリントとも呼ばれることに注意してください。

4.1.10 "x5t#S256" (X.509 Certificate SHA-256 Thumbprint) Header Parameter

"x5t#S256" Header Parameterの意味、構文、および処理規則は、[JWS]のセクション4.1.8で定義されたものと同じですが、サムプリントによって参照される証明書には、JWEが暗号化された公開鍵が含まれている点が異なります。これは、JWEを復号化するために必要な秘密鍵を決定するために使用できます。証明書のサムプリントは、証明書のフィンガープリントとも呼ばれることに注意してください。

4.1.11 "typ" (Type) Header Parameter

"typ" Header Parameterの意味、構文、および処理規則は、[JWS]のセクション4.1.9で定義されたものと同じですが、typeはこの完全なJWEのタイプである点が異なります。

4.1.12 "cty" (Content Type) Header Parameter

"cty" Header Parameterの意味、構文、および処理規則は、[JWS]のセクション4.1.10で定義されたものと同じですが、typeは保護されたコンテンツ(平文)のタイプである点が異なります。

4.1.13 "crit" (Critical) Header Parameter

"crit" Header Parameterの意味、構文、および処理規則は、[JWS]のセクション4.1.11で定義されたものと同じですが、JWSのHeader ParametersではなくJWEのHeader Parametersが参照されている点が異なります。

4.2 Public Header Parameter Names (公開ヘッダーパラメータ名)

JWEを使用する人々は、追加のHeader Parameter名を定義できます。ただし、衝突を防ぐために、新しいHeader Parameter名は、[JWS]によって確立されたIANA "JSON Web Signature and Encryption Header Parameters"レジストリに登録されるか、Public Name(Collision-Resistant Nameを含む値)である必要があります。いずれの場合も、名前または値の定義者は、Header Parameter名を定義するために使用する名前空間の部分を管理していることを確認するために、合理的な予防措置を講じる必要があります。

新しいHeader Parametersは、相互運用できないJWEを生じる可能性があるため、慎重に導入する必要があります。

4.3 Private Header Parameter Names (プライベートヘッダーパラメータ名)

JWEの生産者と消費者は、Private Names(Registered Header Parameter names(セクション4.1)またはPublic Header Parameter names(セクション4.2)ではない名前)であるHeader Parameter名を使用することに同意できます。Public Header Parameter Namesとは異なり、Private Header Parameter Namesは衝突の対象となり、慎重に使用する必要があります。