* 仕様書

[REFS[
- [1] [CITE@en[[[RFC 7517]] - JSON Web Key (JWK)]]
([TIME[2015-05-20 09:55:17 +09:00]] 版)
<https://tools.ietf.org/html/rfc7517>
-- [14] 移転確認 [TIME[2022-11-25T08:11:12.100Z]]
-- [15] 
[CITE@en[[[RFC 7517]]: JSON Web Key (JWK)]], [TIME[2022-11-25T08:11:02.000Z]] <https://www.rfc-editor.org/rfc/rfc7517.html>
---
[16] 
[CITE@en[[[RFC 7517]]: JSON Web Key (JWK)]], [TIME[2022-11-25T08:35:10.000Z]] <https://www.rfc-editor.org/rfc/rfc7517.html#section-2>
--
[23] 
[CITE@en[[[RFC 7517]]: JSON Web Key (JWK)]], [TIME[2022-11-25T08:41:52.000Z]] <https://www.rfc-editor.org/rfc/rfc7517.html#section-4>
--
[12] 
[CITE[RFC Errata Report » [[RFC Editor]]]], [TIME[2022-11-25T08:08:58.000Z]] <https://www.rfc-editor.org/errata/rfc7517>
- [2] [CITE@en[RFC 7638 - JSON Web Key (JWK) Thumbprint]]
([TIME[2015-09-09 04:51:29 +09:00]] 版)
<https://tools.ietf.org/html/rfc7638>
- [18] [CITE@en[[[RFC 7518]] - JSON Web Algorithms ([[JWA]])]], [TIME[2019-11-27 04:11:14 +09:00]]
<https://tools.ietf.org/html/rfc7518#section-7.1>
- [20] [CITE[JSON Object Signing and Encryption (JOSE)]], [TIME[2019-03-14 06:55:09 +09:00]] <https://www.iana.org/assignments/jose/jose.xhtml#web-signature-encryption-algorithms>
- [5] [CITE@en[[[RFC 7515]] - JSON Web Signature (JWS)]], [TIME[2020-03-29 16:13:43 +09:00]] <https://tools.ietf.org/html/rfc7515#section-4.1.3>
- [9] 
[CITE@en[[[RFC 7516]] - JSON Web Encryption (JWE)]], [TIME[2022-11-23T08:37:24.000Z]] <https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.5>
- [34] 
[CITE@en[[[RFC 7517]]: JSON Web Key (JWK)]], [TIME[2022-12-15T11:45:52.000Z]] <https://www.rfc-editor.org/rfc/rfc7517.html#section-8.5.1>


]REFS]

* 構文

[35] 
[CODE[application/jwe+json]]
では
[[RFC 3629]] [[UTF-8]]
[[符号化]]する[SHOULD[べき]]とされます。
[SRC[>>34]]

[36] なぜか[MUST[必須]]ではなく、他の[[文字符号化]]の余地が残されています。

[37] 
[[暗号化JWK]]では [[RFC 3629]] [[UTF-8]] と定義されていて、他の選択肢は提供されていません。

* データモデル

[22] 
[DFN[JSON Web Key]] ([DFN[JWK]])
は、
[[暗号鍵]]を表現する[[JSONオブジェクト]]です。
[SRC[>>16, >>23]]

[24] 
[[JSONオブジェクト]]の[[メンバー]]が[[鍵]]の[[特性]]を表します。
[SRC[>>16, >>23]]


[25] 
[[JWK]] 本体仕様 [[RFC 7517]] は、
[[算法]]固有ではなく多くの[[鍵]]に共通の[[鍵引数]]を定義しています。
[[鍵型]] ([CODE[kty]]) に応じて他の引数も指定できます。
[[JWA]] は各[[算法]]用の[[鍵引数]]を定義しています。
(別の[[鍵型]]で同じ[[鍵引数]]の名前を共用することもあります。)
[SRC[>>23]]


[27] 
[[JWK]] 
にはその他の[[メンバー]]があるかもしれません。
実装は理解しない[[メンバー]]を無視しなければ[MUST[なりません]]。
[SRC[>>23]]

[28] 
[[JWK]] の[[メンバー]]の名前は、
[[IANA登録簿]]に登録された値か、
[[耐衝突名]]を含む値である[RUBYB[べき][should]]です。
[SRC[>>23]]

[26] 
[[メンバー]]の名前は、[[JWK]]
内で固有でなければ[MUST[なりません]]。
[[JWK]] [[構文解析器]]は、
[[JWK]]
が[[メンバー]]名の重複を含む時、
これを拒絶するか、
または重複するメンバー名について字句的に最後のもののみ採用する
[[JavaScript]] [CODE[JSON.parse]]
と同じ挙動の [[JSON]] [[構文解析器]]を使うかしなければ[MUST[なりません]]。
[SRC[>>23]]

;; [30] これは[[JOSEヘッダー]]や[[JWK集合]]と同等の規定です。

[FIG(list short)[ [29] [[JWK]] [[鍵引数]]
- [CODE[alg]]
- [CODE[key_ops]]
- [CODE[kid]]
- [CODE[kty]] (必須)
- [CODE[use][use (JWK)]]
- [CODE[x5c]]
- [CODE[x5t]]
- [CODE[x5t#S256]]
- [CODE[x5u]]
]FIG]


* 処理

[31] [[JWK集合]]においては、[[JWK集合]]中の [[JWK]] を無視するべき状況
([[エラー処理]])
がいくつか指定されています。

* アルゴリズム値

[FIG(short list)[ [3] [[JWK]] 用アルゴリズム値
- [CODE[RS1]]
- [CODE[A128CBC]]
- [CODE[A192CBC]]
- [CODE[A256CBC]]
- [CODE[A128CTR]]
- [CODE[A192CTR]]
- [CODE[A256CTR]]
- [CODE[HS1]]
]FIG]

[4] いずれも [[JOSE]] での利用が禁止されています [SRC[>>20]]。

[19] [[IANA登録簿]] [SRC[>>20]] があります。 [SRC[>>18]]

[21] 
[CODE[enc]] や [CODE[alg]] の登録簿と共通になっていますが、
種別で区別されており、
現時点で複数の場面で使えるものはありません。
[TIME[2019-12-06T04:44:58.100Z]]

* MIME型

[FIG(data list middle)[ [32] [[MIME型]]
:[[MIME型]]:[DFN[[CODE[application/jwk+json]]]]
:説明:[[JWK]]
:[[CTE]]:[CODE[8bit]]
]FIG]

[33] [CODE[cty]] では省略されて [DFN[[CODE[jwk+json]]]]
と書かれます。


* 応用

[FIG(short list)[ [17] [[JWK]] の[[応用]]
- [[JWK集合]]
- [[暗号化JWK]]
]FIG]

* ヘッダー引数 [CODE[jwk]] (JOSE ヘッダー)

[6] 
[[JWS]]
の[[ヘッダー引数]]
[DFN[[CODE[jwk]]]]
(JSON Web Key) 
は、
[[JWS]]
を
[[RFC 4949]] [[デジタル署名]]するため用いた[[鍵]]に対応する[[公開鍵]]を表します。
[SRC[>>5]]

[10] 
[[JWE]]
の[[ヘッダー引数]]
[CODE[jwk]]
は、
それに対して [[JWE]]
が[[暗号化]]された[[公開鍵]]を表します。
[[JWE]] を[[解読]]するため必要な[[秘密鍵]]を決定するため使えます。
[SRC[>>9]]


[7] 
[[公開鍵]]は、
[[JWK]]
で表します。
[SRC[>>1]]

[8] 
[CODE[jwk]]
[[ヘッダー引数]]の利用は[MAY[任意]]です。
[SRC[>>1]]

[11] [[JOSE鍵識別]]参照。

* 関連


[38] [[JWS]] や [[JWE]] とは違って[[簡潔直列化]]がなく、 [[JSON]] としてしか表せません。

* 歴史

[13] 
[TIME[西暦2015年5月][2015-05]]、
[[RFC Editor]]
は[[標準化過程RFC]]
[DFN[RFC 7517]]
を[[提案標準]]として出版しました。
[SRC[>>15]]





* メモ