🔑
JWK:RFC7517(JWK)とRFC7518(JWA)以外の関連項目
はじめに
- RFC7517(原文)では,暗号鍵のJSONデータ構造であるJWK(Json Web Key),および複数のJWKセットであるJWK Setの仕様が策定されており,JWKに関しては各フィールド値の仕様が定義されています.
- また,関連のRFC7518:JSON Web Algorithms (JWA)には,JWKで用いられる暗号アルゴリズムおよびその識別子の仕様が策定されています(例:EC:楕円曲線暗号, RSA:rsa暗号,oct:対称鍵)
- JWKをいくつかのサイトで閲覧した時,RFC7517(JWK)やRFC7518(JWA)で定義されているフィールド値以外の値にみかけることがあったため,調べてみることにしました.どうやら,これら二つの仕様で定義されているフィールド値や識別子以外にもjwkで設定できる値が存在し, 関連仕様が策定されているそうです.**
RFC7638:JSON Web Key (JWK) Thumbprint
- jwkのハッシュ値を計算する方法が策定されている.
- 生成されたハッシュ値は,JWK識別または選択のために用いることができる.
- 具体的な方法として,ハッシュ値をbase64urlエンコード化したものを,JWKs内のJWKの
kid
として用いる方法がある.
- 具体的な方法として,ハッシュ値をbase64urlエンコード化したものを,JWKs内のJWKの
RFC8037:CFRG Elliptic Curve Diffie-Hellman (ECDH) and Signatures in JSON Object Signing and Encryption (JOSE)
- Diffie-Hellmanアルゴリズムである「X25519」・「X448」と,その署名アルゴリズム「Ed25519」・「Ed448」をJOSEで使用するための仕様.
- Diffie-Hellmanアルゴリズム:鍵共有のアルゴリズム
パラメータ | 説明 |
---|---|
kty(key type) | "OKP" でなければならない. |
crv | 必須.キーペアのサブタイプ.例:"Ed25519","Ed448","X25519", "X448" |
x | 必須.公開鍵をbase64urlエンコーディングで表現したもの。 |
d | 秘密鍵の場合は必須.秘密鍵をbase64urlエンコーディングで表現したもの.公開鍵の場合,このパラメータは存在しない. |
- 署名時の
alg
(JWT・JWS)設定例:
{"alg": "EdDSA"}
※CFRG:Crypto Forum Research Group
"ext":「W3C:Web Cryptography API」で定義されたJWKのパラメーター
- ext:対象のjwkが,エクスポートできるかどうかを表す.値は,
true
かfalse
のブール値
{"ext": true}
W3C:Web Cryptography API
- ウェブアプリケーションにおける基本的な暗号操作(ハッシュ化、署名の生成と検証、暗号化と復号化,鍵生成および管理)を実行するためのJavaScript APIの仕様
- "ext"詳細
Parameter Name: "ext"
Parameter Description: Extractable
Used with "kty" Value(s): *
Parameter Information Class: Public
Change Controller: W3C Web Cryptography Working Group
Specification Document(s): [[ This Document ]]
OpenID Federation 1.0
-
Open ID ConnectまたはOAuth 2.0プロトコルを使用して,直接信頼関係にない(同じフェデレーションに属していない)2者(組織,サービス)が,信頼できる共通の第三者(Trust Anchor)を介してやり取りを行えるよう信頼関係を構築するための仕様.(間違っていたら,すいません)
-
Autlete社による説明
- Authlete社代表取締役 川崎氏の資料(上記の図解を日本語バージョンにした資料)
- この仕様では,従来のjwkで設定できる値の他に下記の値がjwkのフィールド値として設定されます.
iat
やexp
は,JWTでも見慣れてますね.
フィールド | 説明 |
---|---|
iat | オプション.対象の鍵が発行された時刻. |
exp | 必須.鍵の有効期限. |
revoked | オプション. JSONオブジェクト.対象の鍵の失効に関する情報が格納されている. |
- revoked
フィールド | 説明 |
---|---|
revoked_at | 必須 .鍵が失効,または失効と見なされた時刻. |
reason | オプション. 鍵の失効理由を識別する文字列.仕様のセクション8.7.3で定義されている.例:unspecified等 |
- 2024年に開かれたOpenIdのサミットにて,この仕様が紹介されている動画です.
OpenID Federation
の仕様では,JWKを従来のx509証明書みたいに扱おうとしているみたいですね.
{
"iss": "https://trust-anchor.federation.example.com",
"iat": 123972394272,
"keys":
[
{
"kty":"RSA",
"n":"5s4qi …",
"e":"AQAB",
"kid":"2HnoFS3YnC9tjiCaivhWLVUJ3AxwGGz_98uRFaqMEEs",
"iat": 123972394872,
"exp": 123974395972
},
{
"kty":"RSA",
"n":"ng5jr …",
"e":"AQAB",
"kid":"8KnoFS3YnC9tjiCaivhWLVUJ3AxwGGz_98uRFaqMJJr",
"iat": 123972394872,
"exp": 123974394972,
"revoked": {
"revoked_at": 123972495172,
"reason": "compromised",
}
}
]
}
参考・関連資料
- IANA:JSON Object Signing and Encryption (JOSE)
- RFC7517:JSON Web Key(JWK)
- RFC7517:JSON Web Key(JWK)日本語訳資料
- RFC7518:JSON Web Algorithms (JWA)
- RFC7638:JSON Web Key (JWK) Thumbprint
- RFC7638:JSON Web Key (JWK) Thumbprint日本語訳資料
- RFC8037:CFRG Elliptic Curve Diffie-Hellman (ECDH) and Signatures in JSON Object Signing and Encryption (JOSE)
- W3C:Web Cryptography API
- Web Crypto API - Web API | MDN
- OpenID Federation 1.0 - draft 39
Discussion