<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><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> 
<dfn>JOSE</dfn>
は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON</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:">IETF</anchor> のグループです。</p><section><h1>仕様書</h1><p><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> 個別の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">仕様書</anchor>は各技術の項を参照。</p><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="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <cite>JSON Object Signing and Encryption (JOSE)</cite>, <time>2019-03-14 06:55:09 +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://www.iana.org/assignments/jose/jose.xhtml">https://www.iana.org/assignments/jose/jose.xhtml</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="142" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[142]</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-9">https://tools.ietf.org/html/rfc7515#section-9</anchor-external></li><li><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> 
<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-24T09:25:18.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-9">https://datatracker.ietf.org/doc/html/rfc7516#section-9</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</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-15T11:34:06.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-7">https://www.rfc-editor.org/rfc/rfc7517.html#section-7</anchor-external></li></ul></refs></section><section><h1>技術</h1><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:">JOSE</anchor> 技術は「<dfn>JW<var>○</var></dfn>」のような名称がついています。</p><figure class="short list"><figcaption><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSE</anchor></figcaption><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWA</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWT</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWE</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSEヘッダー</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSE鍵識別</anchor></li></ul></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</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:">JSON</anchor> である 
<dfn>JSON直列化</dfn>と独自<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">テキストファイル</anchor>である<dfn>簡潔直列化</dfn>の2種類に大別できる記述方法を提供しています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON直列化</anchor>しか提供していません。</p></section><section><h1>JWS と JWE</h1><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:">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:">JSON</anchor> 
形式の合計6種類の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">直列化</anchor>構文を規定しています。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>JWS</anchor>, <anchor>JWE</anchor> </sw-see></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:">JWS</anchor> か <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWE</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="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;9</anchor-internal></src></p><ul><li><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>は、
<code>.<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">FULL STOP</title></code> 2つで3部に分けられるのが <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor>、
<code>.<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">FULL STOP</title></code> 3つで4部に分けられるのが <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWE</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="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;9</anchor-internal></src></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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS JSON直列化</anchor>と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWE JSON直列化</anchor>は、<ul><li><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> <code>payload</code> があれば <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</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="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;9</anchor-internal></src></li><li><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> <code>ciphertext</code> があれば <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWE</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="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;9</anchor-internal></src></li></ul></li><li><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSEヘッダー</anchor>において
<code>alg</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:">MAC算法</anchor>か
<code>none</code>
なら、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor>
です。
<code>alg</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>、
<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:">JWE</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="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;9</anchor-internal></src></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSEヘッダー</anchor>において
<code>enc</code>
<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>
です。
<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="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;9</anchor-internal></src></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</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>は得られるのでしょうか?</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</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:">応用</anchor>は、
どちらであるかを明確に規定するべきです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</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:">応用</anchor>は、
どちらであるかを明確に区別する方法を定め、
実装がどのように出力するべきか、
実装がどのように入力を処理するべきかをエラー処理まで含めて明確に規定するべきです。</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="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> その方法は仕様書が提示するようなものでも構いませんし、
外部情報を使うようなものでも構いませんが、
確実な方法を1つだけ明確に定めるべきです。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</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:">ヒント</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><section><h1>MIME 型</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="145" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[145]</anchor-end> 
簡潔直列化の
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME型</anchor>は
<dfn><code>application/jose</code></dfn>
です。 <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> の簡潔直列化を表します。
<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="142" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;142</anchor-internal></src></p><figure class="data list middle"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME型</anchor></figcaption><dl><dt><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME型</anchor></dt><dd><code>application/jose</code></dd><dt>説明</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSE</anchor> 簡潔直列化</dd></dl></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="146" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[146]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON</anchor>
直列化の
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME型</anchor>は
<dfn><code>application/jose+json</code></dfn>
です。 <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> の JSON 直列化を表します。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSONオブジェクト</anchor>は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</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="142" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;142</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="147" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[147]</anchor-end> なぜ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</anchor> 以外の余地を残しているのか謎です。</comment-p><figure class="data list middle"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME型</anchor></figcaption><dl><dt><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME型</anchor></dt><dd><code>application/jose+json</code></dd><dt>説明</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSE</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON</anchor> 直列化</dd></dl></figure></section></section><section><h1>暗号化された JWK</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</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:">JWK</anchor> や 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK集合</anchor>は不正なアクセスから保護しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ならない</MUST>ということで、
<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> の組合せが規定されています。
<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="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;26</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> 
そのような場合に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">暗号化JWK</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">暗号化JWK集合</anchor>が<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">推奨<rt xmlns="http://www.w3.org/1999/xhtml">recommend</rt></rubyb>されます。
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ruby xmlns="http://www.w3.org/1999/xhtml">暗<rt>あん</rt></ruby><ruby xmlns="http://www.w3.org/1999/xhtml">号<rt>ごう</rt></ruby><ruby xmlns="http://www.w3.org/1999/xhtml">化<rt>か</rt></ruby>JWK<rt xmlns="http://www.w3.org/1999/xhtml">Encrypted JWK</rt></rubyb></dfn>や
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ruby xmlns="http://www.w3.org/1999/xhtml">暗<rt>あん</rt></ruby><ruby xmlns="http://www.w3.org/1999/xhtml">号<rt>ごう</rt></ruby><ruby xmlns="http://www.w3.org/1999/xhtml">化<rt>か</rt></ruby>JWK<ruby xmlns="http://www.w3.org/1999/xhtml">集<rt>しゅう</rt></ruby><ruby xmlns="http://www.w3.org/1999/xhtml">合<rt>ごう</rt></ruby><rt xmlns="http://www.w3.org/1999/xhtml">Encrypted JWK Set</rt></rubyb></dfn>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK</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:">RFC 3629</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</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> です。
<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="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;26</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> 
<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> <code>cty</code> は、 <code>jwk+json</code>
や
<code>jwk-set+json</code>
としなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
ただし、
<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:">JWK集合</anchor>を暗号化していると分かっているときは、
<code>cty</code> は<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">普通は<rt xmlns="http://www.w3.org/1999/xhtml">typically</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="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;26</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="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> 
なぜ非標準の方法を選択する余地があるのか謎です。
非標準の場合もその適切な <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME型</anchor>ではなく <code xmlns="http://www.w3.org/1999/xhtml">cty</code>
を省略するのが一般的だといいますが、そうすると
<code xmlns="http://www.w3.org/1999/xhtml">cty</code> の意義も薄れます。
<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:">JWE</anchor> を使う必然性も無いわけなのですが、
どういう用途が想定されていたのでしょう。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> <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:">JWE</anchor> の各種特性は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>ごとに定める必要があります.</p></section><section><h1>メモ</h1><p><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 7165</anchor> - Use Cases and Requirements for JSON Object Signing and Encryption (JOSE)</cite>
( (<time>2014-04-15 15:05:12 +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="http://tools.ietf.org/html/rfc7165">http://tools.ietf.org/html/rfc7165</anchor-external></p><ul><li><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> <cite xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7520</anchor> - Examples of Protecting Content Using JSON Object Signing and Encryption (JOSE)</cite>
(<time>2015-05-20 10:10:42 +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/rfc7520">https://tools.ietf.org/html/rfc7520</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <cite>RFC Errata Report » RFC Editor</cite>, <time>2022-11-24T13:29:55.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/errata_search.php?rfc=7520">https://www.rfc-editor.org/errata_search.php?rfc=7520</anchor-external></li></ul></li></ul><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> <cite xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JOSE</anchor> (Javascript Object Signing and Encryption) is a Bad Standard That Everyone Should Avoid - Paragon Initiative Enterprises Blog</cite>
( (<time>2017-04-13 19:35:33 +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://paragonie.com/blog/2017/03/jwt-json-web-tokens-is-bad-standard-that-everyone-should-avoid">https://paragonie.com/blog/2017/03/jwt-json-web-tokens-is-bad-standard-that-everyone-should-avoid</anchor-external></p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> <cite xml:lang="ja">XユーザーのTakashi Kawasakiさん: 「この識別子を1バイトでもケチる文化、90年代後半ぐらいから崩壊したんだっけなぁ。Javaとか、今までのケチケチはなんだったんだよと思うぐらいクラス名長くなったし、拡張子とかも。」 / X</cite>, <time>午後2:28 · 2024年6月18日<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2024-06-18T05:28:22.000Z</attrvalue></time>, <time>2024-06-19T03:14:15.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://x.com/espresso3389/status/1802936369632952726">https://x.com/espresso3389/status/1802936369632952726</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> <cite xml:lang="ja">Xユーザーのlef/HAYASHI, Tatsuyaさん: 「@espresso3389 それなのに!JWTに!謎の!3文字文化が!」 / X</cite>, <time>午後4:50 · 2024年6月18日<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2024-06-18T07:50:01.000Z</attrvalue></time>, <time>2024-06-19T03:14:15.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://x.com/lef/status/1802972019983880246">https://x.com/lef/status/1802972019983880246</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> <cite xml:lang="ja">XユーザーのTakashi Kawasakiさん: 「@lef 全部、HTTPが悪いのです。」 / X</cite>, <time>午後5:09 · 2024年6月18日<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2024-06-18T08:09:03.000Z</attrvalue></time>, <time>2024-06-19T03:14:15.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://x.com/espresso3389/status/1802976808113238277">https://x.com/espresso3389/status/1802976808113238277</anchor-external></li></ul></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> 
なんか謎に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> に流れ弾いってるけど <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> って別に省略文化ないよね。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 822</anchor> からの流れで<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー名</anchor>とかクッソ長いし。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 822</anchor> というか<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">インターネットメール</anchor>って太古の昔からあるし
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unix</anchor> 文化と同じ方面なのにわりと<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">富豪的</anchor>よね。)</p></section></body></html>