「マイクロソフト系技術情報 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 JSON Serializationの場合に必要らしい。
JWE Per-Recipient Unprotected Header  †
JWE JSON Serializationの場合に必要らしい。
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":"RSA1_5","enc":"A128CBC-HS256"}
{"alg":"A128KW","enc":"A128CBC-HS256"}
手順  †
暗号化  †
{"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アルゴリズムに初期化ベクターが必要でない場合
 
追加の認証データ暗号化パラメタ  †
※ AADとは、詳細不明だが、JWE JSON Serializationの場合に必要らしい。
- 平文を
- 必要ならzipのアルゴリズムで圧縮
 
- encのアルゴリズムで暗号化する。
 
 
Serialization  †
復号化  †
具体例  †
RSAES-OAEP and AES GCM  †
https://tools.ietf.org/html/rfc7516#appendix-A.1.1
RSAES-PKCS1-v1_5 and AES_128_CBC_HMAC_SHA_256  †
https://tools.ietf.org/html/rfc7516#appendix-A.2.1
AES Key Wrap and AES_128_CBC_HMAC_SHA_256  †
https://tools.ietf.org/html/rfc7516#appendix-A.3.1
自作ライブラリ  †
署名・暗号化アルゴリズム  †
ココの署名・暗号化アルゴリズムを使用すると良い。
参考サイト  †
-
検証サイト  †
-
参考  †
Tags: :認証基盤, :クレームベース認証, :暗号化