<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> <strong><cite xml:lang="en">RFC 5246 - The Transport Layer Security (TLS) Protocol Version 1.2</cite> (<time>2015-02-19 08:58:15 +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/rfc5246#section-7.1">http://tools.ietf.org/html/rfc5246#section-7.1</anchor-external></strong></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">RFC 5246 - The Transport Layer Security (TLS) Protocol Version 1.2</cite> (<time>2015-02-19 08:58:15 +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/rfc5246#section-7.3">http://tools.ietf.org/html/rfc5246#section-7.3</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:">change cipher spec protocol</anchor> は、 <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">cipher 戦略<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">ciphering stragegy</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></src>。</p></section><section><h1>プロトコル</h1><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> <dfn><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ChangeCipherSpec</anchor></code></dfn> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージ</anchor>は、<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">型<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">type</rt></rubyb>として値
1 (<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">change_cipher_spec</anchor></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></src>。</p><figure class="list members"><figcaption><p><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ChangeCipherSpec</anchor></code></p></figcaption><dl><dt><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">type</anchor></code></dt><dd><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">change_cipher_spec</anchor></code> (<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</anchor></code>)</dd></dl></figure><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> 本<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:">write pending state</anchor> を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">write current state</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="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:">メッセージ</anchor>を受信した者は、受信後直ちに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">記録層</anchor>において
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">read pending state</anchor> を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">read current state</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>。
その後 <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ChangeCipherSpec</anchor></code> <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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> ですから、最初の <code xmlns="http://www.w3.org/1999/xhtml"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ChangeCipherSpec</anchor></code> は元の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">接続状態</anchor>に従い暗号化・圧縮されて送信され、
その返信となる <code xmlns="http://www.w3.org/1999/xhtml"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ChangeCipherSpec</anchor></code> は pending から複製された新しい<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="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ChangeCipherSpec</anchor></code> は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">handshake</anchor> において<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">セキュリティー引数</anchor>を合意した後
<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Finished</anchor></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></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><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ChangeCipherSpec</anchor></code> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS Handshake Protocol</anchor> の最後、
<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Finish</anchor></code> の直前に送受信されます。</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="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:">TLS Handshake Protocol</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:">stall</anchor> を防ぐため <src><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> です。</comment-p></section></body></html>