<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7515</anchor> - JSON Web Signature (JWS)</cite>, <time>2020-03-29 16:13:43 +09:00</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc7515#section-4.1.4">https://tools.ietf.org/html/rfc7515#section-4.1.4</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> 
<cite xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7516</anchor> - JSON Web Encryption (JWE)</cite>, <time>2022-11-23T08:39:26.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.6">https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.6</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> 
<cite xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7517</anchor>: JSON Web Key (JWK)</cite>, <time>2022-12-01T12:45:44.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.rfc-editor.org/rfc/rfc7517.html#section-4.5">https://www.rfc-editor.org/rfc/rfc7517.html#section-4.5</anchor-external></li></ul></refs></section><section><h1>意味</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor> の
<dfn><code>kid</code></dfn>
(<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">key ID<rt xmlns="http://www.w3.org/1999/xhtml">鍵識別子</rt></rubyb>)
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor>
の保安に用いた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鍵</anchor>を示す<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヒント</anchor>を表します。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWE</anchor>
の
<code>kid</code>
(<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">key ID<rt xmlns="http://www.w3.org/1999/xhtml">鍵識別子</rt></rubyb>)
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>は、
それに対して <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWE</anchor>
が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">暗号化</anchor>された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">公開鍵</anchor>を示す<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヒント</anchor>を表します。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWE</anchor> を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">解読</anchor>するために必要な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">秘密鍵</anchor>の決定に使えます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK</anchor>
の
<code>kid</code>
(<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">key ID<rt xmlns="http://www.w3.org/1999/xhtml">鍵識別子</rt></rubyb>)
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鍵引数</anchor>は、
特定の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鍵</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一致</anchor>するために使います。
例えば<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鍵ロールオーバー</anchor>中に
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK集合</anchor>中の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鍵</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">集合</anchor>から<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鍵</anchor>を選ぶために使います。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor>
の<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起案者<rt xmlns="http://www.w3.org/1999/xhtml">originator</rt></rubyb>は、
<code>kid</code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>によって<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">受信者</anchor>に対して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鍵</anchor>の変更を明示的に信号できます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWE</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK</anchor>
と併用する時、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor>
の
<code>kid</code>
の値は
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWE</anchor>
の
<code>kid</code>
の値との照合に用いられます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p></section><section><h1>値</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 
<code>kid</code>
値の構造は、
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">規定されていません<rt xmlns="http://www.w3.org/1999/xhtml">unspecified</rt></rubyb>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字・小文字区別あり</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src> でなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">仕様書</anchor>のいう構造がない、規定されていないというのは、
特定の構文が規定されず任意の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>を使っていいということです。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小文字</anchor>を区別しなければならない、
完全一致しないといけないとしたら、
それはそれで<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">不透明</anchor>な構造と規定されているといえなくもないですが...</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7520</anchor>
の
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWE</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK</anchor> 
の
<code>kid</code>
の利用例では、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UUID</anchor>
のように見える<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>や、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メールアドレス</anchor>のように見える<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>が使われています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> 
当事者が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鍵</anchor>を特定する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヒント</anchor>として付与する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>で、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</anchor>としてはその内容に関知しないので、何でもいいのでしょう。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UUID</anchor> も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メールアドレス</anchor>も大域的に固有な値ですが、
そこまでする必要すらなく、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鍵</anchor>を区別する必要のある<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">系</anchor>内部で十分に特定可能ならそれで良いものです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> 
といっても <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWE</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK</anchor> を使う<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>によっては、
具体的にどのように使うか規定しているかもしれません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK集合</anchor>中の <code>kid</code> 値は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鍵</anchor>ごとに違う値を使う<SHOULD xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです</SHOULD>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> 
しかし <code>kty</code> が違うものの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>にとって等価な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鍵</anchor>とみなせるようなときには、
同じ <code>kid</code> を使うこともできます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p></section><section><h1>文脈</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> 
<code>kid</code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>の利用は<MAY xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">任意</MAY>です。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p></section><section><h1>処理</h1><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>JOSE鍵識別</anchor> </sw-see></p></section><section><h1>メモ</h1></section></body></html>