本文へスキップ
ecdsa.com

JWE(JSON Web Encryption)

暗号化されたコンテンツのための RFC 7516 の JOSE 形式で、コンパクト形式はヘッダー、暗号化された鍵、IV、暗号文、タグの 5 つの部分からなり、鍵管理(alg)とコンテンツ暗号化(enc)を分離しています。
別表記JSON Web EncryptionRFC 7516encrypted JWT

ランダムなコンテンツ暗号化鍵(CEK)が、A256GCM や A128CBC-HS256 などの AEAD(enc)でペイロードを暗号化します。CEK は鍵管理アルゴリズム(alg)によって受信者に届けられます。RSA-OAEP-256、ECDH-ES(直接の鍵共有で、暗号化された鍵の部分は空)または ECDH-ES+A256KW、共有鍵を使う A256KW、事前共有された CEK を使う dir などです。保護ヘッダーは AEAD の関連データになるため、改ざんできません。

JWE は受信者に対する機密性を提供しますが、ECDH-ES や RSA-OAEP では送信者を認証できません。公開鍵を持っていれば誰でも JWE を作成できるからです。ネストされた JWT では先に署名し、cty を JWT に設定したうえで、署名済みの JWT を暗号化します。よく知られた落とし穴は、ECDH-ES における無効曲線上の点(epk を検証してください)、サービス拒否の手段となる、反復回数が巨大な PBES2、RSA1_5 のパディングオラクルです。対策は RFC 8725 にまとめられています。

TLS がすでに通信路を保護しているため、ほとんどの API では JWE は必要ありません。JWE が役立つのは、信頼できない中継者を経由するトークンや、クライアントに保存されるトークンです。JWE インスペクターでは、復号せずにヘッダーと構造を確認できます。

規格と参考文献

すべての用語