JWA
RFC 7518 JSON Web Algorithms (JWA) 他の規格と独立させることでJWAのみの更新でアルゴリズムの追加や廃止が可能
RFC 8037 ECDH, EdDSA in JOSE
RFC 8812 CBOR Object Signing and Encryption (COSE) and JSON Object Signing and Encryption (JOSE) Registrations for Web Authentication (WebAuthn) Algorithms
ECDSA secp256k1 の追加
RFC 9864 Fully-Specified Algorithms for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE) ECDSA, EdDSAなどの個別のIDの定義とか
6.2.1.1 と 7.6 "crv"
table:JSON Web Key Elliptic Curve
P-256 RFC 7518 6.2.1.1 推奨+
P-384 RFC 7518 6.2.1.1 オプション
P-521 RFC 7518 6.2.1.1 オプション
Ed25519 RFC 8037 3.1 EdDSA
Ed448 RFC 8037 3.1 EdDSA
X25519 RFC 8037 3.2 ECDH-ES
X448 RFC 8037 3.2 ECDH-ES
secp256k1 RFC 8812 (COSE) 3.1 RFC 7518
概要
この仕様は、JSON Web Signature (JWS)、JSON Web Encryption (JWE)、およびJSON Web Key (JWK) 仕様で使用される暗号化アルゴリズムと識別子を登録するものです。これらの識別子用の複数のIANAレジストリを定義します。
1. はじめに
本仕様は、JSON Web Signature (JWS) JWS、JSON Web Encryption (JWE) JWE、およびJSON Web Key (JWK) JWK 仕様で使用される暗号化アルゴリズムと識別子を登録します。 これらの識別子用に複数のIANAレジストリを定義します。これらの仕様はすべて、JSONベースのRFC 7159データ構造を利用しています。本仕様では、これらのアルゴリズムと鍵の種類に固有のセマンティクスと操作についても説明します。 アルゴリズムと識別子をJWS、JWE、およびJWK仕様ではなく本仕様に登録することで、必須、推奨、オプション、および非推奨のアルゴリズムが時間の経過とともに変更されても、それらを変更せずに維持することができます。また、これにより、本仕様を変更することなく、JWS、JWE、およびJWK仕様を変更することもできます。
本仕様で定義される名前は短くなっています。これは、結果として得られる表現を簡潔にすることが主な目標であるためです。
1.1. 表記規則
本文書におけるキーワード「MUST(しなければならない)」「MUST NOT(してはならない)」「REQUIRED(必須)」「SHALL(するべき)」「SHALL NOT(するべきではない)」「SHOULD(すべきではない)」「SHOULD NOT(すべきではない)」「RECOMMENDED(推奨される)」「NOT RECOMMENDED(推奨されない)」「MAY(してもよい)」「OPTIONAL(任意)」は、「RFCで要件レベルを示すキーワード」RFC 2119に記述されているとおりに解釈されます。 この解釈は、用語がすべて大文字で表記されている場合にのみ適用されます。
BASE64URL(OCTETS) は、JWS のセクション 2 に従い、OCTETS の base64url エンコードを表します。 UTF8(STRING) は、STRING の UTF-8 RFC3629 表現のオクテットを表します。ここで、STRING は 0 個以上の Unicode UNICODE 文字のシーケンスです。 ASCII(STRING) は、STRING の ASCII RFC20 表現のオクテットを表します。ここで、STRING は 0 個以上の ASCII 文字のシーケンスです。 2 つの値 A と B の連結は、A || B と表されます。
2. 用語
「JSON Web Signature (JWS)」、「Base64url Encoding」、「Header Parameter」、「JOSE Header」、「JWS Payload」、「JWS Protected Header」、「JWS Signature」、「JWS Signing Input」、「Unsecured JWS」という用語は、JWS 仕様 JWS で定義されています。 「JSON Web Encryption (JWE)」、「Additional Authenticated Data (AAD)」、「Authentication Tag」、「Content Encryption Key (CEK)」、「Direct Encryption」、「Direct Key Agreement」、「JWE Authentication Tag」、「JWE Ciphertext」、「JWE Encrypted Key」、「JWE Initialization Vector」、「JWE Protected Header」、「Key Agreement with Key Wrapping」、「Key Encryption」、「Key Management Mode」、「Key Wrapping」という用語は、JWE 仕様 JWE で定義されています。 「JSON Web Key (JWK)」および「JWKセット」という用語は、JWK仕様 JWK で定義されています。 「暗号文」、「デジタル署名」、「初期化ベクトル」、「メッセージ認証コード (MAC)」、「平文」という用語は、「インターネットセキュリティ用語集 バージョン2」 RFC4949 で定義されています。 この用語は、本仕様で以下のように定義されています。
Base64urlUInt
正またはゼロの整数値を、その値の符号なしビッグエンディアン表現をオクテットシーケンスとしてbase64urlエンコードしたものとして表現します。オクテットシーケンスは、値を表すために必要な最小限のオクテット数を使用する必要があります。ゼロはBASE64URL(単一のゼロ値オクテット)として表現され、「AA」となります。
3. デジタル署名とMACのための暗号アルゴリズム
JWSは、暗号アルゴリズムを使用して、JWS保護ヘッダーとJWSペイロードの内容にデジタル署名するか、MACを作成します。
3.1. JWS の「alg」(アルゴリズム)ヘッダーパラメータ値
以下の表は、本仕様で JWS で使用するために定義されている「alg」(アルゴリズム)ヘッダーパラメータ値のセットです。各パラメータについては、以降のセクションで詳しく説明します。
table:JWSのalg
"alg" 識別子 アルゴリズム XML DSIG OID
HS256 HMAC using SHA-256 1.2.840.113549.2.9 必須 HS384 HMAC using SHA-384 1.2.840.113549.2.10 オプション
HS512 HMAC using SHA-512 1.2.840.113549.2.11 オプション
RS256 RSASSA-PKCS1-v1_5 using SHA-256 1.2.840.113549.1.1.11 推奨 RS384 RSASSA-PKCS1-v1_5 using SHA-384 1.2.840.113549.1.1.12 オプション
RS512 RSASSA-PKCS1-v1_5 using SHA-512 1.2.840.113549.1.1.13 オプション
ES256 ECDSA using P-256 and SHA-256 1.2.840.10045.4.3.2 推奨+ ES384 ECDSA using P-384 and SHA-384 1.2.840.10045.4.3.3 オプション ES512 ECDSA using P-521 and SHA-512 1.2.840.10045.4.3.4 オプション PS256 RSASSA-PSS using SHA-256 and MGF1 with SHA-256 1.2.840.113549.1.1.10 オプション PS384 RSASSA-PSS using SHA-384 and MGF1 with SHA-384 1.2.840.113549.1.1.10 オプション
PS512 RSASSA-PSS using SHA-512 and MGF1 with SHA-512 1.2.840.113549.1.1.10 オプション
none デジタル署名なしまたはMAC performed オプション
EdDSA EdDSA RFC 8037 3.1 crv が必要 1.3.101.112 1.3.101.113
ES256K ECDSA using secp256k1 curve and SHA-256 RFC 8812 1.3.132.0.10 実装要件の列に「+」が使用されている場合、仕様の将来のバージョンで要件の強度が強化される可能性があることを示しています。
本仕様で定義されているJWSデジタル署名およびMAC「alg」(アルゴリズム)値と、他の標準およびソフトウェアパッケージで使用されている同等の識別子の相互参照表については、付録A.1を参照してください。
3.2 HMAC with SHA-2機能
Hashベースのメッセージ認証コード(HMAC)は、秘密鍵と暗号ハッシュ関数を用いてMACを生成することを可能にします。これにより、MACを生成した人物がMAC鍵を所有していることを証明できます。HMACの実装と検証のためのアルゴリズムは、RFC 2104 RFC2104 で規定されています。 このアルゴリズムでは、ハッシュ出力と同じサイズ(例えば「HS256」の場合は256ビット)以上の鍵を使用する必要があります。 (この要件は、NIST SP 800-117 NIST.800-107 のセクション 5.3.4(HMAC 鍵のセキュリティ効果)に基づいています。このセクションでは、有効なセキュリティ強度は、鍵のセキュリティ強度と内部ハッシュ値の 2 倍のどちらか小さい方であると規定されています。) HMAC SHA-256 MAC は、RFC 2104 に従って、ハッシュアルゴリズム「H」として SHA-256 を使用し、JWS 署名入力を「テキスト」値として、共有鍵を使用して生成されます。HMAC 出力値が JWS 署名です。
以下の「alg」(アルゴリズム)ヘッダーパラメータ値は、JWS 署名が対応するアルゴリズムを使用して計算された HMAC 値であることを示します。
table:alg
"alg" パラメータ値 MACアルゴリズム
HS256 HMAC using SHA-256
HS384 HMAC using SHA-384
HS512 HMAC using SHA-512
JWSのHMAC SHA-256 MACは、RFC 2104に従ってHMAC値を計算すること(ハッシュアルゴリズム「H」としてSHA-256を使用し、受信したJWS署名入力を「テキスト」値として、共有鍵を使用)によって検証されます。計算されたHMAC値は、受信したエンコードされたJWS署名値をbase64urlデコードした結果と比較されます。計算されたHMAC値とJWS署名値の比較は、タイミング攻撃を阻止するため、定数時間で実行する必要があります。あるいは、計算されたHMAC値をbase64urlエンコードし、受信したエンコードされたJWS署名値と比較することもできます(これも定数時間で実行されます)。この比較は、エンコードされていない値を比較した場合と同じ結果になります。どちらの場合も、値が一致すれば、HMACは検証済みとなります。
HMAC SHA-384 および HMAC SHA-512 アルゴリズムによるコンテンツのセキュリティ保護と検証は、HMAC SHA-256 の場合とまったく同じ手順で実行されます。ただし、対応するハッシュアルゴリズムを使用し、最小キーサイズと結果値がそれぞれ大きくなります。HMAC SHA-384 ではそれぞれ384ビット、HMAC SHA-512 ではそれぞれ512ビットです。
このアルゴリズムの使用例は、JWS の付録 A.1 に示されています。 3.3 RSASSA-PKCS1-v1_5 によるデジタル署名
このセクションでは、RFC 3447 RFC3447 のセクション 8.2 で定義されている RSASSA-PKCS1-v1_5 デジタル署名アルゴリズム(一般に PKCS #1 として知られる)を、SHA-2 SHS ハッシュ関数を用いて使用する方法を定義します。 これらのアルゴリズムでは、2048 ビット以上の鍵を使用する必要があります。
RSASSA-PKCS1-v1_5 SHA-256 デジタル署名は、以下のように生成されます。RSASSA-PKCS1-v1_5-SIGN と、必要な秘密鍵を用いた SHA-256 ハッシュ関数を用いて、JWS 署名入力のデジタル署名を生成します。これが JWS 署名値です。
以下の「alg」(アルゴリズム)ヘッダーパラメータ値は、JWS 署名が対応するアルゴリズムを用いて計算されたデジタル署名値であることを示すために使用されます。
table:alg
"alg"バラメータ値 デジタル署名アルゴリズム
RS256 RSASSA-PKCS1-v1_5 using SHA-256
RS384 RSASSA-PKCS1-v1_5 using SHA-384
RS512 RSASSA-PKCS1-v1_5 using SHA-512
JWS の RSASSA-PKCS1-v1_5 SHA-256 デジタル署名は、以下のように検証されます。JWS 署名入力、JWS 署名、および署名者が使用した秘密鍵に対応する公開鍵を、SHA-256 をハッシュ関数として RSASSA-PKCS1-v1_5-VERIFY アルゴリズムに渡します。
RSASSA-PKCS1-v1_5 SHA-384 および RSASSA-PKCS1-v1_5 SHA-512 アルゴリズムによる署名と検証は、RSASSA-PKCS1-v1_5 SHA-256 の場合とまったく同じ手順で実行されます。ただし、SHA-256 の代わりに対応するハッシュアルゴリズムを使用します。
このアルゴリズムの使用例は、JWS の付録 A.2 に示されています。 3.4 ECDSAによるデジタル署名
楕円曲線デジタル署名アルゴリズム (ECDSA) DSS は、楕円曲線暗号の使用を規定しています。楕円曲線暗号は、RSA暗号と同等のセキュリティを提供しながら、鍵サイズが短く、多くの演算において処理速度が高速です。つまり、ECDSAデジタル署名は、同等の強度を持つRSAデジタル署名よりも大幅に長さが短くなります。 本仕様は、P-256曲線とSHA-256暗号ハッシュ関数を用いたECDSA、P-384曲線とSHA-384ハッシュ関数を用いたECDSA、およびP-521曲線とSHA-512ハッシュ関数を用いたECDSAの使用を定義します。P-256、P-384、およびP-521曲線はDSSで定義されています。 ECDSA P-256 SHA-256 デジタル署名は、以下のように生成されます。
1. 必要な秘密鍵を用いて、ECDSA P-256 SHA-256 を用いて、JWS 署名入力のデジタル署名を生成します。出力は (R, S) のペアになります。ここで、R と S は 256 ビットの符号なし整数です。
2. R と S をビッグエンディアン順のオクテットシーケンスに変換します。各配列の長さは 32 オクテットです。オクテットシーケンスの表現は、値に含まれる先頭のゼロオクテットを省略するために短縮してはなりません。
3. 2 つのオクテットシーケンスを R、S の順に連結します。(多くの ECDSA 実装では、この連結がそのまま出力として生成されることに注意してください。)
4. 結果として得られる 64 オクテットシーケンスが JWS 署名値です。
次の「alg」(アルゴリズム)ヘッダー パラメータ値は、JWS 署名が対応するアルゴリズムを使用して計算されたデジタル署名値であることを示すために使用されます。
table:alg
"alg"パラメータ値 デジタル署名アルゴリズム
ES256 ECDSA using P-256 and SHA-256
ES384 ECDSA using P-384 and SHA-384
ES512 ECDSA using P-521 and SHA-512
JWS の ECDSA P-256 SHA-256 デジタル署名は、以下のように検証されます。
1. JWS 署名値は 64 オクテットのシーケンスでなければなりません。64 オクテットのシーケンスでない場合、検証は失敗です。
2. 64 オクテットのシーケンスを 2 つの 32 オクテットのシーケンスに分割します。最初のオクテットシーケンスは R を表し、2 番目のオクテットシーケンスは S を表します。R と S の値は、SEC1 SEC 1 のセクション 2.3.7 で定義されている整数からオクテット文字列への変換を使用して、オクテットシーケンスとして表現されます(ビッグエンディアンのオクテット順)。 3. JWS 署名入力、R、S、および公開鍵 (x, y) を ECDSA P-256 SHA-256 検証器(validator)に送信します。
ECDSA P-384 SHA-384 および ECDSA P-521 SHA-512 アルゴリズムによる署名と検証は、ECDSA P-256 SHA-256 の手順とまったく同じです。ただし、対応するハッシュアルゴリズムを使用し、結果値がそれぞれ大きくなります。ECDSA P-384 SHA-384 の場合、R と S はそれぞれ 384 ビットとなり、96 オクテットのシーケンスになります。ECDSA P-521 SHA-512 の場合、R と S はそれぞれ 521 ビットとなり、132 オクテットのシーケンスになります。 (SEC1 SEC 1 のセクション2.3.7で定義されている整数からオクテット文字列への変換は、RとSをオクテット列として表現するために使用され、サイズを8ビットの倍数に切り上げる必要がある場合に、ゼロ値の上位パディングビットを追加します。したがって、521ビットの整数はそれぞれ66オクテットの528ビットを使用して表現されます。) これらのアルゴリズムを使用した例は、JWS の付録A.3およびA.4に示されています。 3.5. RSASSA-PSS によるデジタル署名
このセクションでは、RFC 3447 RFC3447 のセクション 8.1 で定義されている RSASSA-PSS デジタル署名アルゴリズムを、MGF1 マスク生成関数および SHA-2 ハッシュ関数と共に使用する方法を定義します。RSASSA-PSS ハッシュ関数と MGF1 ハッシュ関数の両方に常に同じハッシュ関数を使用します。ソルト値のサイズはハッシュ関数の出力と同じサイズです。その他のアルゴリズムパラメータはすべて、RFC 3447 の付録 A.2.3 で指定されているデフォルトを使用します。 このアルゴリズムでは、2048 ビット以上の鍵を使用する必要があります。
RSASSA-PSS SHA-256 デジタル署名は、次のように生成されます。
RSASSA-PSS-SIGN、SHA-256 ハッシュ関数、および必要な秘密鍵を使用した SHA-256 による MGF1 マスク生成関数を使用して、JWS 署名入力のデジタル署名を生成します。これが JWS 署名値です。
次の「alg」(アルゴリズム)ヘッダー パラメータ値は、JWS 署名が対応するアルゴリズムを使用して計算されたデジタル署名値であることを示すために使用されます。
table:alg
"alg" パラメータ値 デジタル署名アルゴリズム
PS256 RSASSA-PSS using SHA-256 and MGF1 with SHA-256
PS384 RSASSA-PSS using SHA-384 and MGF1 with SHA-384
PS512 RSASSA-PSS using SHA-512 and MGF1 with SHA-512
JWSのRSASSA-PSS SHA-256デジタル署名は、以下のように検証されます。JWS署名入力、JWS署名、および署名者が使用した秘密鍵に対応する公開鍵を、SHA-256をハッシュ関数として、MGF1をSHA-256のマスク生成関数として用いるRSASSA-PSS-VERIFYアルゴリズムに渡します。
RSASSA-PSS SHA-384およびRSASSA-PSS SHA-512アルゴリズムによる署名と検証は、RSASSA-PSS SHA-256の場合と全く同じ手順で実行されます。ただし、どちらの場合も代替ハッシュアルゴリズムが使用されます。
3.6. アルゴリズム「none」の使用
整合性保護を提供しないJWSも作成される場合があります。このようなJWSは、非セキュアJWSと呼ばれます。非セキュアJWSは「alg」値として「none」を使用し、他のJWSと同一のフォーマットとなりますが、JWS署名値として空のオクテットシーケンスを使用する必要があります。受信者は、JWS署名値が空のオクテットシーケンスであることを検証する必要があります。
非セキュアJWSをサポートする実装は、アプリケーションが特定のオブジェクトが整合性保護されないことを許容すると指定しない限り、そのようなオブジェクトを有効なものとして受け入れてはなりません。実装は、非セキュアJWSをデフォルトで受け入れてはなりません。ダウングレード攻撃を軽減するため、アプリケーションは非セキュアJWSの受け入れをグローバルレベルで通知してはならず、オブジェクトごとに通知する必要があります(SHOULD)。このアルゴリズムの使用に関連するセキュリティ上の考慮事項については、セクション8.5を参照してください。
4. 鍵管理のための暗号化アルゴリズム
JWE は、コンテンツ暗号化鍵 (CEK) を暗号化または決定するために暗号化アルゴリズムを使用します。
4.1. JWE の「alg」(アルゴリズム)ヘッダーパラメータ値
以下の表は、JWE で使用するために本仕様で定義されている「alg」(アルゴリズム)ヘッダーパラメータ値のセットです。これらのアルゴリズムは、CEK を暗号化して JWE 暗号化鍵を生成するため、または鍵共有を用いて CEK を合意するために使用されます。
鍵は公開鍵だったり楕円だったり別のAESの鍵だったりパスワードだったり
table:JWEの鍵管理 A.2
"alg" 識別子 アルゴリズム 付加ヘッダ 鍵 要求度
RSA1_5 RSAES-PKCS1-v1_5 RSA2048 推奨- RSA-OAEP RSAES-OAEP デフォルトパラメータ使用 RSA2048 推奨+ RSA-OAEP-256 RSAES-OAEP using SHA-256 and MGF1 with SHA-256 RSA2048 オプション A128KW AES Key Wrap with default initial value using 128-bit key AES鍵 推奨 A192KW AES Key Wrap with default initial value using 192-bit key AES鍵 オプション
A256KW AES Key Wrap with default initial value using 256-bit key AES鍵 推奨
dir CEK 共通鍵の直接使用 推奨
ECDH-ES Elliptic Curve Diffie-Hellman Ephemeral Static key agreement using Concat KDF "epk","apu","apv" EC 推奨+ ECDH-ES+A128KW ECDH-ES using Concat KDF and CEK wrapped with "A128KW" "epk","apu","apv" EC 推奨
ECDH-ES+A192KW ECDH-ES using Concat KDF and CEK wrapped with "A192KW" "epk","apu","apv" EC オプション
ECDH-ES+A256KW ECDH-ES using Concat KDF and CEK wrapped with "A256KW" "epk","apu","apv" EC 推奨
A128GCMKW key wrapping with AES GCM using 128-bit key "iv","tag" AES鍵 オプション
A192GCMKW key wrapping with AES GCM using 192-bit key "iv","tag" AES鍵 オプション
A256GCMKW key wrapping with AES GCM using 256-bit key "iv","tag" AES鍵 オプション
PBES2-HS256+A128KW PBES2 with HMAC SHA-256 and "A128KW" wrapping "p2s","p2c" password オプション PBES2-HS384+A192KW PBES2 with HMAC SHA-384 and "A192KW" wrapping "p2s","p2c" password オプション
PBES2-HS512+A256KW PBES2 with HMAC SHA-512 and "A256KW" wrapping "p2s","p2c" password オプション
「付加ヘッダーパラメータ」列は、すべてのアルゴリズムで使用される「alg」以外に、アルゴリズムで使用される追加のヘッダーパラメータを示します。「dir」と「ECDH-ES」を除くすべてのパラメータは、JWE暗号化鍵値も生成します。
「実装要件」列で「+」が使用されている場合、要件の強度が仕様の将来のバージョンで強化される可能性があることを示します。「-」が使用されている場合、要件の強度が仕様の将来のバージョンで低下する可能性があることを示します。
本仕様で定義されているJWE「alg」(アルゴリズム)値と、他の標準およびソフトウェアパッケージで使用されている同等の識別子の相互参照表については、付録A.2を参照してください。
AxxxGCMKW は cekをAES-GCMで暗号化するだけ iv, tag はJWE本体とは別
PBES2-HSxxx+AxxxKW はその中で使われるPBKDF2にAxxxKWを重ねる形、 JWE自体がPBES2相当 cek が encrypted key に変換される前提のつくりなので、鍵生成系のアルゴリズム(ECDH-ES, PBES2)はAES Key Wrap をくぐらせてcekを暗号化する形に変換している
table:JWEの本文認証付き暗号 A.3
A128CBC-HS256 AES_128_CBC_HMAC_SHA_256 認証付き暗号アルゴリズム Section 5.2.3で定義 必須 A192CBC-HS384 AES_192_CBC_HMAC_SHA_384 認証付き暗号アルゴリズム Section 5.2.4で定義 オプション
A256CBC-HS512 AES_256_CBC_HMAC_SHA_512 認証付き暗号アルゴリズム Section 5.2.5で定義 必須
A128GCM AES GCM using 128-bit key 推奨 A192GCM AES GCM using 192-bit key オプション
A256GCM AES GCM using 256-bit key 推奨
5.2 AES_CBC_HMAC_SHA2 アルゴリズム
RFC 5652 Section 7 PKCS #7 Padding AEAD-CBC-SHA IVと認証タグは別
認証タグT 次を順にHMACにかけたもの キーはMAC_KEY
AAD A
初期化ベクトル IV
暗号化本文 E
AL は Aのビット数 64bit符号なし
6. 鍵暗号化
6.1. "kty" 鍵の種類
table:kty 鍵の種類
EC Elliptic Eurve DSS RFC 7518 6.2 推奨+
RSA RSA RFC 3447 RFC 7518 6.3 必須
oct オクテットシーケンス RFC 7518 6.4 必須
OKP オクテットキーペア RFC 8037 2. オプション
6.2. 楕円曲線鍵のパラメータ
JWK は楕円曲線 DSS 鍵を表すことができます。この場合、"kty" メンバの値は "EC" です。 6.2.1. 楕円曲線公開鍵のパラメータ
楕円曲線公開鍵は、有限体から抽出された2つの座標で表され、これらの座標は楕円曲線上の点を定義します。すべての楕円曲線公開鍵には、以下のメンバがなければなりません。
"crv"
"x"
以下のセクションで定義される3つの曲線の楕円曲線公開鍵には、以下のメンバもなければなりません。
"y"
6.2.1.1. "crv"(曲線)パラメータ
"crv"(曲線)パラメータは、鍵で使用される暗号曲線を識別します。本仕様で使用されるDSSの曲線値は次のとおりです。 "P-256"
"P-384"
"P-521"
これらの値は、セクション7.6で定義されているIANA「JSON Web Key Elliptic Curve」レジストリに登録されています。追加の「crv」値は、他の仕様によって登録できます。追加の曲線を登録する仕様では、登録された曲線の鍵を表すために使用するパラメータを定義する必要があります。「crv」値は大文字と小文字が区別される文字列です。
SEC1 SEC 1 ポイント圧縮は、これら3つの曲線のいずれにおいてもサポートされていません。 6.2.1.2. "x" (X座標) パラメータ
"x" (X座標) パラメータには、楕円曲線上の点のX座標が含まれます。これは、SEC1 SEC 1 のセクション2.3.5で定義されているように、座標のオクテット文字列表現をBase64URLエンコードして表します。このオクテット文字列の長さは、"crv" パラメータで指定された曲線の座標の全長でなければなりません。例えば、"crv" の値が "P-521" の場合、オクテット文字列の長さは66オクテットでなければなりません。 6.2.1.3. "y" (Y座標) パラメータ
"y" (Y座標) パラメータには、楕円曲線上の点のY座標が含まれます。これは、SEC1 SEC 1 のセクション2.3.5で定義されているように、座標のオクテット文字列表現をBase64URLエンコードして表します。このオクテット文字列の長さは、「crv」パラメータで指定された曲線の座標の全長でなければなりません。例えば、「crv」の値が「P-521」の場合、オクテット文字列の長さは66オクテットでなければなりません。 6.2.2. 楕円曲線秘密鍵のパラメータ
楕円曲線公開鍵を表すために使用されるメンバーに加えて、以下のメンバーが存在しなければなりません。
6.2.2.1. 「d」(ECC秘密鍵)パラメータ
「d」(ECC秘密鍵)パラメータには、楕円曲線秘密鍵の値が含まれます。これは、SEC1 SEC 1 のセクション2.3.7で定義されているように、秘密鍵値のオクテット文字列表現をBase64URLエンコードしたものとして表されます。このオクテット文字列の長さは、ceiling(log-base-2(n)/8)オクテット(nは曲線の次数)でなければなりません。 6.3. RSA鍵のパラメータ
JWKはRSA RFC3447鍵を表すことができます。この場合、「kty」メンバーの値は「RSA」です。以下に定義されるパラメータの意味は、RFC 3447のセクション3.1および3.2で定義されているものと同じです。 6.3.1. RSA公開鍵のパラメータ
RSA公開鍵には、以下のメンバーが必要です。
6.3.1.1. 「n」(係数)パラメータ
「n」(係数)パラメータには、RSA公開鍵の係数値が含まれます。これはBase64urlUIntエンコードされた値として表されます。
実装者によると、一部の暗号ライブラリは、返す係数表現の前にゼロ値のオクテットを追加することが分かっています。例えば、2048ビットの鍵に対して、256オクテットではなく257オクテットを返します。このようなライブラリを使用する実装では、base64urlエンコードされた表現からこの追加のオクテットを省略するように注意する必要があります。
6.3.1.2. 「e」(指数)パラメータ
「e」(指数)パラメータには、RSA公開鍵の指数値が含まれます。これはBase64urlUIntエンコードされた値として表現されます。
例えば、値65537を表現する場合、base64urlエンコードされるオクテットシーケンスは、3つのオクテット1, 0, 1で構成されている必要があります。 この値の最終的な表現は「AQAB」です。