「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
JWEは、暗号化のオプション(暗号化されたJWT)。
- 暗号化されたデータを JSON (の Base64 URL Encode) 形式で表現するための仕様
- 暗号化されたSAML アサーションを Connect に移行するユースケースなどが想定される。
構成要素 †
JOSEヘッダ †
JOSEヘッダは、以下のメンバの和集合。
JWE Protected Header †
認証された暗号化を利用して、完全性を保証。
- alg : 暗号化キーの値を暗号化または決定するために使用される暗号アルゴリズムを識別
- enc : 暗号文と認証タグを生成するために「平文で認証された暗号化を実行するために」使用されるコンテンツ暗号化アルゴリズムを識別
- zip : 暗号化の前に平文に適用される「圧縮」アルゴリズム
- 例
- {"alg":"RSA-OAEP","enc":"A256GCM"}
JWE Shared Unprotected Header †
JWE Per-Recipient Unprotected Header †
JWKをサポートする場合 †
JWE暗号化キー †
"enc"の暗号化キーは、"alg"によって暗号化または決定される。
JWE初期化ベクター †
"enc"によって決定される。
"enc"によって、平文から暗号化される。
JWE認証タグ †
"enc"によって、平文と追加認証データから暗号化される。
詳細 †
表現(エンコード) †
JWE Compact Serialization †
- のデータを JSON (の Base64 URL Encode) 形式で表現する。
- 「Base64」ではなく「Base64 URL」なので「=」は含まれない。
- 例
JWE JSON Serialization †
アルゴリズム †
手順 †
作成 †
以下、
{"alg":"RSA-OAEP","enc":"A256GCM"}
の場合の例。
{"alg":"RSA-OAEP","enc":"A256GCM"}の場合、
eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ
= BASE64URL(UTF8({"alg":"RSA-OAEP","enc":"A256GCM"}))
- ランダムなコンテンツ暗号化キーを生成。
乱数を生成する際の考慮事項については、RFC 4086を参照
- alg
- Key Wrapping, Key Encryption, or Key Agreement with Key Wrapping
- alg:RSAES-OAEPの場合、受信者の公開鍵で暗号化キーを暗号化したバイト列
- Direct Encryption
- alg:XXXXXの場合、共有対称鍵のバイト列とする。
※ JWE JSON Serializationを使用している場合は、上記を繰り返す。
- encアルゴリズムに初期化ベクターが必要な場合
- ランダムなコンテンツ暗号化の初期化ベクターを生成。
- encアルゴリズムに初期化ベクターが必要でない場合
[[暗号文>]]の生成 †
- 平文を
- 必要ならzipのアルゴリズムで圧縮
- encのアルゴリズムで暗号化する。
[[認証タグ>]]の生成 †
- 追加認証データと平文から認証タグを生成する。
- Base64urlエンコードする。
検証 †
自作ライブラリ †
署名・暗号化アルゴリズム †
ココの署名・暗号化アルゴリズムを使用すると良い。
参考サイト †
検証サイト †
-
参考 †
Tags: :認証基盤, :クレームベース認証, :暗号化