JWA
RFC 7518 JSON Web Algorithms (JWA) 他の規格と独立させることでJWAのみの更新でアルゴリズムの追加や廃止が可能
3.デジタル署名とMAC
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 オプション
4.鍵管理の暗号アルゴリズム
4.1. "alg"
基本的に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 オプション
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 認証付き暗号 algorithm, as defined in Section 5.2.3 必須
A192CBC-HS384 オプション
A256CBC-HS512 必須
A128GCM 推奨
A192GCM オプション
A256GCM 推奨
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.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 8812 4.3. ES256K