<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="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:">JWE</anchor>
の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>
<dfn><code>zip</code></dfn>
(<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">compression algorithm<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>に適用する <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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">圧縮</anchor>算法を指定するものです。</p><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 7518</anchor> - JSON Web Algorithms (JWA)</cite>, <time>2019-11-27 04:11:14 +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/rfc7518#section-7.3">https://tools.ietf.org/html/rfc7518#section-7.3</anchor-external></li><li>
<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> 
<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:22:47.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.3">https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.3</anchor-external></li><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>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#web-encryption-compression-algorithms">https://www.iana.org/assignments/jose/jose.xhtml#web-encryption-compression-algorithms</anchor-external></li></ul></refs></section><section><h1>値</h1><p><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>します。
<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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src></p><figure class="short list"><figcaption><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> <code>zip</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>の値</figcaption><ul><li><code>DEF</code></li></ul></figure><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>DEF</code> は、 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 1591</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DEFLATE</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="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</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:">IANA登録簿</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="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src> があります。 <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="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> 
令和4年時点で登録されているのは <code>DEF</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="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src></p></section><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> 
<code>zip</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>です。
<code>zip</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>を適用しないことを表します。
<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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</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> 
<code>zip</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:">JWE被保護ヘッダー</anchor>でのみ使わなければ<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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src></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:">JWE</anchor> の実装は、
<code>zip</code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>を理解し処理しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>ヘッダー引数</anchor> </sw-see>
<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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src></p><hr></hr><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:">圧縮</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">暗号化</anchor>の組合せは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BREACH</anchor> のような重大な攻撃が可能な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">脆弱性</anchor>となり得ることが知られています。
<code>zip</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="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;15</anchor-internal></src>。</p><p><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:">Web</anchor> 業界で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CRIME</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BREACH</anchor> が報告されて深刻な問題となったのが<time>西暦2012年<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2012</attrvalue></time>から<time>西暦2013年<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2013</attrvalue></time>頃のことで、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWE</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</anchor> 化が<time>西暦2015年<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2015</attrvalue></time>なのに、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</anchor> がこの問題をスルーしているのは不審です。</p><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> 
<code>zip</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>zip</code>
は避けるべきです。</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:">応用</anchor>は、 <code>zip</code> を使うべきではありません。
実装は、既存の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>との互換性のために必要な場合を除き、
<code>zip</code> を使うべきではありません。
可能なら、 <code>zip</code> が使われた入力は拒絶するべきです。</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="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <cite xml:lang="en">7 Best Practices for JSON Web Tokens - DEV Community 👩‍💻👨‍💻</cite>, <time>2022-12-15T11:03:09.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://dev.to/neilmadden/7-best-practices-for-json-web-tokens">https://dev.to/neilmadden/7-best-practices-for-json-web-tokens</anchor-external></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> <cite xml:lang="en-US">Detailing a CRIME/BREACH-like attack against <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWT</anchor>: the REJECTS attack – rick osborne .org</cite>, <time>2022-12-15T11:01: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://rickosborne.org/blog/2019/11/rejects/">https://rickosborne.org/blog/2019/11/rejects/</anchor-external></li></ul></refs></section><section><h1>メモ</h1><p><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> 
zip って<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一般名詞</anchor>なんでしょうけど、どうしても <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZIP</anchor> を連想してしまうわけで...
なんでこの語を選んだし</p></section></body></html>