* 仕様書

[REFS[
- [1] [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.4>
- [8] 
[CITE@en[[[RFC 7516]] - JSON Web Encryption (JWE)]], [TIME[2022-11-23T08:39:26.000Z]] <https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.6>
- [13] 
[CITE@en[[[RFC 7517]]: JSON Web Key (JWK)]], [TIME[2022-12-01T12:45:44.000Z]] <https://www.rfc-editor.org/rfc/rfc7517.html#section-4.5>


]REFS]

* 意味

[2] 
[[JWS]] の
[DFN[[CODE[kid]]]]
([RUBYB[key ID][鍵識別子]])
[[ヘッダー引数]]は、
[[JWS]]
の保安に用いた[[鍵]]を示す[[ヒント]]を表します。
[SRC[>>1]]

[9] 
[[JWE]]
の
[CODE[kid]]
([RUBYB[key ID][鍵識別子]])
[[ヘッダー引数]]は、
それに対して [[JWE]]
が[[暗号化]]された[[公開鍵]]を示す[[ヒント]]を表します。
[[JWE]] を[[解読]]するために必要な[[秘密鍵]]の決定に使えます。
[SRC[>>8]]

[14] 
[[JWK]]
の
[CODE[kid]]
([RUBYB[key ID][鍵識別子]])
[[鍵引数]]は、
特定の[[鍵]]に[[一致]]するために使います。
例えば[[鍵ロールオーバー]]中に
[[JWK集合]]中の[[鍵]]の[[集合]]から[[鍵]]を選ぶために使います。
[SRC[>>13]]


[3] 
[[JWS]]
の[RUBYB[起案者][originator]]は、
[CODE[kid]]
[[ヘッダー引数]]によって[[受信者]]に対して[[鍵]]の変更を明示的に信号できます。
[SRC[>>1, >>8]]


[6] 
[[JWS]] や [[JWE]] と [[JWK]]
と併用する時、
[[JWS]]
の
[CODE[kid]]
の値は
[[JWK]] や [[JWE]]
の
[CODE[kid]]
の値との照合に用いられます。
[SRC[>>1, >>13]]


* 値

[4] 
[CODE[kid]]
値の構造は、
[RUBYB[規定されていません][unspecified]]。
[SRC[>>1, >>13]]
[[大文字・小文字区別あり]]の[[文字列]] [SRC[>>13]] でなければ[MUST[なりません]]
[SRC[>>1]]。

;; [7] [[仕様書]]のいう構造がない、規定されていないというのは、
特定の構文が規定されず任意の[[文字列]]を使っていいということです。
[[大文字]]と[[小文字]]を区別しなければならない、
完全一致しないといけないとしたら、
それはそれで[[不透明]]な構造と規定されているといえなくもないですが...

[10] 
[[RFC 7520]]
の
[[JWS]] や [[JWE]] や [[JWK]] 
の
[CODE[kid]]
の利用例では、
[[UUID]]
のように見える[[文字列]]や、
[[メールアドレス]]のように見える[[文字列]]が使われています。

[11] 
当事者が[[鍵]]を特定する[[ヒント]]として付与する[[文字列]]で、
[[プロトコル]]としてはその内容に関知しないので、何でもいいのでしょう。
[[UUID]] も[[メールアドレス]]も大域的に固有な値ですが、
そこまでする必要すらなく、
[[鍵]]を区別する必要のある[[系]]内部で十分に特定可能ならそれで良いものです。

[12] 
といっても [[JWS]] や [[JWE]] や [[JWK]] を使う[[応用]]によっては、
具体的にどのように使うか規定しているかもしれません。


[15] 
[[JWK集合]]中の [CODE[kid]] 値は、
[[鍵]]ごとに違う値を使う[SHOULD[べきです]]。
[SRC[>>13]]

[16] 
しかし [CODE[kty]] が違うものの[[応用]]にとって等価な[[鍵]]とみなせるようなときには、
同じ [CODE[kid]] を使うこともできます。
[SRC[>>13]]





* 文脈

[5] 
[CODE[kid]]
[[ヘッダー引数]]の利用は[MAY[任意]]です。
[SRC[>>1, >>13]]


* 処理

[SEE[ [[JOSE鍵識別]] ]]

* メモ