1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head><!--
4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5 This file is generated from xml source: DO NOT EDIT
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8 <title>SSL/TLS 暗号化: はじめに - Apache HTTP サーバ</title>
9 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
12 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
13 <body id="manual-page"><div id="page-header">
14 <p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/directives.html">ディレクティブ</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p>
15 <p class="apache">Apache HTTP サーバ バージョン 2.3</p>
16 <img alt="" src="../images/feather.gif" /></div>
17 <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
19 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP サーバ</a> > <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> > <a href="../">バージョン
20 2.3</a> > <a href="./">SSL/TLS</a></div><div id="page-content"><div id="preamble"><h1>SSL/TLS 暗号化: はじめに</h1>
22 <p><span>言語: </span><a href="../en/ssl/ssl_intro.html" hreflang="en" rel="alternate" title="English"> en </a> |
23 <a href="../fr/ssl/ssl_intro.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
24 <a href="../ja/ssl/ssl_intro.html" title="Japanese"> ja </a></p>
26 <div class="outofdate">この日本語訳はすでに古くなっている可能性があります。
27 更新された内容を見るには英語版をご覧下さい。</div>
30 <p>標準規格の良い所は、たくさんの規格から選べるということだ。
31 そして、もし本当にどの規格も気に入らなければ、
32 一年待つだけで探していた規格が現れる。</p>
34 <p class="cite">-- <cite>A. Tanenbaum</cite>, "Introduction to
35 Computer Networks"</p>
39 入門ということで、この章は Web、HTTP、Apache に通じている
40 読者向けですが、セキュリティ専門家向けではありません。
41 SSL プロトコルの決定的な手引きであるつもりはありません。
42 また、組織内の認証管理のための特定のテクニックや、
43 特許や輸出規制などの重要な法的な問題についても扱いません。
44 むしろ、更なる研究への出発点として色々な概念、定義、例を並べることで
45 <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> のユーザに基礎知識を提供する事を目的としています。</p>
47 <p>ここに示された内容は主に、原著者の許可の下
48 The Open Group Research Institute の <a href="http://home.earthlink.net/~fjhirsch/">Frederick J. Hirsch</a>
49 氏の記事 <a href="http://home.earthlink.net/~fjhirsch/Papers/wwwj/">
50 Introducing SSL and Certificates using SSLeay</a> を基にしています。
51 氏の記事は <a href="http://www.ora.com/catalog/wjsum97/">Web Security: A Matter of
52 Trust</a>, World Wide Web Journal, Volume 2, Issue 3, Summer 1997
54 肯定的な意見は <a href="mailto:hirsch@fjhirsch.com">Frederick Hirsch</a> 氏
55 (元記事の著者) へ全ての苦情は <a href="mailto:rse@engelschall.com">Ralf S. Engelschall</a> (
56 <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> の作者) へお願いします。
57 <span class="transnote">(<em>訳注:</em> 訳については <a href="mailto:apache-docs@ml.apache.or.jp">
58 Apache ドキュメント翻訳プロジェクト</a>
61 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#cryptographictech">暗号化技術</a></li>
62 <li><img alt="" src="../images/down.gif" /> <a href="#certificates">証明書</a></li>
63 <li><img alt="" src="../images/down.gif" /> <a href="#ssl">Secure Sockets Layer (SSL)</a></li>
64 <li><img alt="" src="../images/down.gif" /> <a href="#references">参考文献</a></li>
66 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
68 <h2><a name="cryptographictech" id="cryptographictech">暗号化技術</a></h2>
70 <p>SSL を理解するには、暗号アルゴリズム、
71 メッセージダイジェスト関数(別名: 一方向関数、ハッシュ関数)、
74 (例えば [<a href="#AC96">AC96</a>] を参照)、
75 プライバシー、信用、認証などの技術の基礎となっています。</p>
77 <h3><a name="cryptographicalgo" id="cryptographicalgo">暗号アルゴリズム</a></h3>
79 <p>例えば、アリスが送金のために銀行にメッセージを送りたいとします。
81 アリスはそのメッセージを秘密にしたいと思います。
82 解決方法の一つは暗号アルゴリズムを使って、メッセージを
83 復号されるまで読むことができない暗号化された
86 メッセージは秘密の鍵によってのみ復号化することができます。
88 良い暗号アルゴリズムは、侵入者が元のテキストを解読することを
89 非常に難しくするため、努力が割に合わなくさせます。</p>
92 従来型と公開鍵の二つの種類があります。</p>
97 送信者と受信者が鍵を共有することが必要です。
98 鍵とは、メッセージを暗号化したり復号するのに使われる秘密
100 この鍵が秘密になっている限り、送信者と受信者以外は誰もメッセージを読
102 もしも、アリスと銀行が秘密の鍵を知っているなら、
103 彼らはお互いに秘密のメッセージを送ることができるでしょう。
104 ただし交信の前に、事前に内密に鍵を共有するという作業自体は難題かもしれません。</dd>
108 メッセージを暗号化することのできる二つの鍵
109 を使用するアルゴリズムを定義することで鍵のやり取りの問題を解決
113 この方式によって、一つの鍵を公表して(公開鍵)、
114 もう片方を秘密にしておく(秘密鍵)だけで、
115 安全なメッセージを受け取ることができます。</dd>
118 <p>公開鍵を使って誰もがメッセージを暗号化できますが、秘
119 密鍵の持ち主だけがそれを読むことができます。
120 この方法で、銀行の公開鍵を使って暗号化することで、
121 アリスは秘密のメッセージを送ることができます。
122 銀行のみが送られたメッセージを復号することができます。</p>
125 <h3><a name="messagedigests" id="messagedigests">メッセージダイジェスト</a></h3>
127 <p>アリスはメッセージを秘密にすることができますが、
128 誰かが例えば自分に送金するようにメッセージを変更したり、
129 別のものに置き換えてしまうかもしれないという問題があります。
130 アリスのメッセージだという信憑性を保証する方法の一つは、
131 メッセージの簡潔なダイジェストを作って、それも銀行に送るというものです。
132 メッセージを受け取ると銀行側でもダイジェストを作成し、
133 アリスが送ったダイジェストと比べます。もし一致したなら、
134 受け取ったメッセージは無傷だということになります。</p>
136 <p>このような要約は<dfn>メッセージダイジェスト</dfn>、
137 <em>一方行関数</em>、または<em>ハッシュ関数</em>と呼ばれます。
138 メッセージダイジェストは長い可変長のメッセージから
141 一意なダイジェストを生成するように作られています。
142 メッセージダイジェストはダイジェストから元のメッセージを
143 判定するのがとても難しいようにできていて、
144 同じ要約を作成する二つのメッセージを探すのは(理論上)不可能です。
145 これによって、要約を変更することなくメッセージを置き換えられる
148 <p>アリスへのもう一つの問題は、このダイジェストを安全に送る方法を探すことです。
149 ダイジェストが安全に送られればダイジェストの信憑性が保障されて、
150 ダイジェストの信憑性をもってオリジナルメッセージの信憑性を得ることができます。
151 ダイジェストを安全に送った場合にのみ、そのメッセージの
154 <p>ダイジェスト安全に送る方法の一つは、電子署名に含める方法です。</p>
157 <h3><a name="digitalsignatures" id="digitalsignatures">電子署名</a></h3>
158 <p>アリスが銀行にメッセージを送ったとき、
159 侵入者が彼女になりすまして彼女の口座への取引を申請できないように、
160 銀行側ではメッセージが本当に彼女からのものか確実に分かるようにしなければなりません。
161 アリスによって作成されて、メッセージに含まれた
162 <em>電子署名</em>がここで役に立ちます。</p>
164 <p>電子署名はメッセージのダイジェストやその他の情報(処理番号など)を
165 送信者の秘密鍵で暗号化することで作られます。
166 誰もが公開鍵を使って署名を<em>復号</em>することができますが、
168 これは送信者のみが署名しえたことを意味します。
170 その署名がそのメッセージのみに有効であることを意味します。
171 これは、誰もダイジェストを変えて署名をすることができないため、
174 <p>侵入者が署名を傍受して後日に再利用するのを防ぐため
176 これは、アリスがそんなメッセージは送っていないと言う詐欺
178 彼女だけが署名しえたからです。(否認防止)</p>
180 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
181 <div class="section">
182 <h2><a name="certificates" id="certificates">証明書</a></h2>
184 <p>アリスは秘密のメッセージを銀行に送り、
185 署名をして、メッセージの信用を保証することができるおうになりましたが、
186 通信している相手が本当に銀行なのか確かめなくてはいけません。
187 つまり彼女が使おうとしている公開鍵が、銀行の秘密鍵と対になっていて、
188 侵入者の秘密鍵と対になっているわけではないことを
189 確かめなくてはいけないことを意味しています。
190 同様に銀行は、メッセージの署名が本当にアリスの持っている
191 秘密鍵で署名された署名かを確認する必要があります。</p>
193 <p>もし両者に身元を証明し、公開鍵を確認し、また信頼された機関が署名
194 した証明書があれば、両者とも通信相手について正しい相手だと
196 そのような信頼された機関は<em>認証局</em>
197 (Certificate Authority または CA) と呼ばれ、
198 証明書 (certificate) が認証 (authentication) に使われます。</p>
200 <h3><a name="certificatecontents" id="certificatecontents">証明書の内容</a></h3>
202 <p>証明書は公開鍵と個人、サーバ、その他の主体の実在の身元を
204 <a href="#table1">表1</a>に示されるように証明対象の情報は
205 身元証明の情報(識別名)と公開鍵が含まれます。
206 証明書はまた、認証局の身元証明と署名、そして証明書の有効期間を
208 シリアルナンバーなどの認証局の管理上の情報や
209 その他の追加の情報が含まれているかもしれません。</p>
211 <h4><a name="table1" id="table1">表1: 証明書情報</a></h4>
216 <td>識別名、公開鍵</td></tr>
218 <td>識別名、公開鍵</td></tr>
220 <td>開始日、失効日</td></tr>
222 <td>バージョン、シリアルナンバー</td></tr>
224 <td>基本的な制約、ネットスケープフラッグ、その他</td></tr>
228 <p>識別名(ディスティングイッシュ・ネーム)は特定の状況における
229 身分証明を提供するのに使われています。例えば、ある人は
230 私用と会社とで別々の身分証明を持つかもしれません。
232 識別名は X.509 標準規格 [<a href="#X509">X509</a>] で定義されています。
233 X.509 標準規格は、項目、項目名、そして項目の略称を定義しています。(<a href="#table2">表
236 <h4><a name="table2" id="table2">表 2: 識別名情報</a></h4>
238 <table class="bordered">
244 <tr><td>Common Name (コモンネーム)</td>
248 <td>CN=www.example.com</td></tr>
249 <tr><td>Organization or Company (組織名)</td>
252 <td>O=Example Japan K.K.</td></tr>
253 <tr><td>Organizational Unit (部門名)</td>
256 <td>OU=Customer Service</td></tr>
257 <tr><td>City/Locality (市区町村)</td>
260 <td>L=Sapporo</td></tr>
261 <tr><td>State/Province (都道府県)</td>
264 <td>ST=Hokkaido</td></tr>
265 <tr><td>Country(国)</td>
267 <td>所在している国名の ISO コード<br />
274 <p>認証局はどの項目が省略可能でどれが必須かの方針を定義する
275 かもしれません。項目の内容についても認証局や証明書のユーザからの
277 例えばネットスケープのブラウザは、サーバの証明書の
278 Common Name (コモンネーム)がサーバのドメイン名の
279 <code>*.snakeoil.com</code>
280 というようなワイルドカードのパターンにマッチすること
283 <p>バイナリ形式の証明書は ASN.1 表記法
284 [<a href="#X208">X208</a>] [<a href="#PKCS">PKCS</a>] で
286 この表記法は内容をどのように記述するかを定義し、
287 符号化の規定がこの情報がどのようにバイナリ形式に変換されるかを
289 証明書のバイナリ符号化は Distinguished Encoding
290 Rules (DER) で定義され、それはより一般的な Basic Encoding Rules
292 バイナリ形式を扱うことのできない送信では、
293 バイナリ形式は Base64 符号化 [<a href="#MIME">MIME</a>] で
294 ASCII 形式に変換されることがあります。
295 開始デリミタ行と終了デリミタ行で囲まれた、この形式のことを
296 PEM ("Privacy Enhanced Mail") 符号化された証明書と言います。</p>
298 <div class="example"><h3>PEM 符号化された証明書の例 (example.crt)</h3><pre>-----BEGIN CERTIFICATE-----
299 MIIC7jCCAlegAwIBAgIBATANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCWFkx
300 FTATBgNVBAgTDFNuYWtlIERlc2VydDETMBEGA1UEBxMKU25ha2UgVG93bjEXMBUG
301 A1UEChMOU25ha2UgT2lsLCBMdGQxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhv
302 cml0eTEVMBMGA1UEAxMMU25ha2UgT2lsIENBMR4wHAYJKoZIhvcNAQkBFg9jYUBz
303 bmFrZW9pbC5kb20wHhcNOTgxMDIxMDg1ODM2WhcNOTkxMDIxMDg1ODM2WjCBpzEL
304 MAkGA1UEBhMCWFkxFTATBgNVBAgTDFNuYWtlIERlc2VydDETMBEGA1UEBxMKU25h
305 a2UgVG93bjEXMBUGA1UEChMOU25ha2UgT2lsLCBMdGQxFzAVBgNVBAsTDldlYnNl
306 cnZlciBUZWFtMRkwFwYDVQQDExB3d3cuc25ha2VvaWwuZG9tMR8wHQYJKoZIhvcN
307 AQkBFhB3d3dAc25ha2VvaWwuZG9tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
308 gQDH9Ge/s2zcH+da+rPTx/DPRp3xGjHZ4GG6pCmvADIEtBtKBFAcZ64n+Dy7Np8b
309 vKR+yy5DGQiijsH1D/j8HlGE+q4TZ8OFk7BNBFazHxFbYI4OKMiCxdKzdif1yfaa
310 lWoANFlAzlSdbxeGVHoT0K+gT5w3UxwZKv2DLbCTzLZyPwIDAQABoyYwJDAPBgNV
311 HRMECDAGAQH/AgEAMBEGCWCGSAGG+EIBAQQEAwIAQDANBgkqhkiG9w0BAQQFAAOB
312 gQAZUIHAL4D09oE6Lv2k56Gp38OBDuILvwLg1v1KL8mQR+KFjghCrtpqaztZqcDt
313 2q2QoyulCgSzHbEGmi0EsdkPfg6mp0penssIFePYNI+/8u9HT4LuKMJX15hxBam7
314 dUHzICxBVC1lnHyYGjDuAMhe396lYAn8bCld1/L4NMGBCQ==
315 -----END CERTIFICATE-----</pre></div>
318 <h3><a name="certificateauthorities" id="certificateauthorities">認証局</a></h3>
320 <p>証明書を承認する前に、証明書要求に記載されている情報を確認し、
322 例えば、アリスが個人証明書を申請したとすると、
323 認証局はアリスが証明書の申請が主張する通りの
324 当の本人だということを確認しなくてはいけません。</p>
326 <h4><a name="certificatechains" id="certificatechains">証明書の連鎖</a></h4>
328 <p>認証局は他の認証局への証明書を発行することができます。
329 未知の証明書を調べる時に、アリスはその証明書の発行者
331 その上位階層の認証局をたどって調べる必要があります。
333 彼女は限られた連鎖の発行者のみ信頼するように
337 <h4><a name="rootlevelca" id="rootlevelca">最上位認証局の作成</a></h4>
339 <p>前に述べたように、全ての証明書について、
340 最上位の認証局(CA)までそれぞれの発行者が
341 対象の身元証明の有効性を明らかにする必要があります。
342 問題は、誰がその最上位の認証機関の証明書を保証するのか、
344 このような場合に限り、証明書は「自己署名」されます。
345 ブラウザには、とてもよく知られている認証局が初期登録されていますが、
348 最上位認証局が公開鍵を広く公表することで、
349 その鍵を信頼するリスクを低くすることができます。
350 もし、他人がその認証局になりすました時に、それが露見しや
353 <p><a href="http://www.thawte.com/">Thawte</a>
354 や <a href="http://www.verisign.com/">VeriSign</a>
355 のような多くの会社が認証局として開設しました。
356 このような会社は以下のサービスを提供します:</p>
366 個人やサーバの身元証明が簡単に行える組織の
367 イントラネット内では役に立つかもしれません。</p>
370 <h4><a name="certificatemanagement" id="certificatemanagement">証明書管理</a></h4>
372 <p>認証局の開設は徹底した管理、技術、運用の体制を必要とする
376 具体的には、証明書がいつまで有効であり続けるかを決定し、更新し、
378 (Certificate Revocation Lists または CRL)
381 <p>例えばアリスが過去、会社の社員であることを証明する証明書を持っていたが、
382 現在は退職していた際、その証明書は失効されなければなりません。
383 証明書は次々と人に渡されていくものなので、
384 証明書そのものから、それが取り消されたか判断することは
387 認証局に連絡して CRL を照合する必要があります。
388 普通この過程は自動化されているものではありません。</p>
390 <div class="note"><h3>注意</h3>
391 <p>ブラウザに信用できる認証局としてデフォルトで登録されていない
394 ブラウザがその認証局によって署名されたサーバの証明書を
396 一度読み込まれると、その認証局によって署名された全ての
397 証明書を受け入れるため、危険を伴います。</p>
402 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
403 <div class="section">
404 <h2><a name="ssl" id="ssl">Secure Sockets Layer (SSL)</a></h2>
406 <p>Secure Sockets Layer プロトコルは信頼性のあるコネクション型の
407 ネットワーク層のプロトコル(例えば、TCP/IP)と
408 アプリケーション層のプロトコル(例えば、HTTP)
410 SSL は、相互認証によってサーバとクライアント間の安全な通信を、
412 そして暗号化によってプライバシを提供します。</p>
414 <p>SSL プロトコルは暗号化、ダイジェスト、電子署名について、
415 様々なアルゴリズムをサポートするようにできています。
416 こうすることで、法や輸出の規制を考慮に入れて、サーバに合わせた
417 アルゴリズムを選ぶことができ、また、新しいアルゴリズムを
419 アルゴリズムの選択はプロトコルセッション開始時に
420 サーバとクライアント間で取り決められます。</p>
422 <h3><a name="table4" id="table4">表4: SSL プロトコルのバージョン</a></h3>
424 <table class="bordered">
429 <th>ブラウザのサポート</th></tr>
430 <tr><td>SSL v2.0</td>
431 <td>Vendor Standard (Netscape Corp. より) [<a href="#SSL2">SSL2</a>]</td>
432 <td>実装が現存する初めての SSL プロトコル</td>
433 <td>- NS Navigator 1.x/2.x<br />
435 - Lynx/2.8+OpenSSL</td></tr>
436 <tr><td>SSL v3.0</td>
437 <td>Expired Internet Draft (Netscape Corp. より) [<a href="#SSL3">SSL3</a>]</td>
438 <td>特定のセキュリティ攻撃を防ぐための改訂、
439 非RSA 暗号の追加、証明書階層構造のサポート</td>
440 <td>- NS Navigator 2.x/3.x/4.x<br />
441 - MS IE 3.x/4.x<br />
442 - Lynx/2.8+OpenSSL</td></tr>
443 <tr><td>TLS v1.0</td>
444 <td>Proposed Internet Standard (IETF より) [<a href="#TLS1">TLS1</a>]</td>
445 <td>MAC レイヤを HMAC へ更新、ブロック暗号の block
446 padding、メッセージ順序の標準化、警告文の充実などのため
448 <td>- Lynx/2.8+OpenSSL</td></tr>
452 <p><a href="#table4">表4</a>に示されるとおり、SSL プロトコルには
454 表にも書かれているように、SSL 3.0 の利点の一つは
456 この機能によって、サーバは自分の証明書に加えて、
457 発行者の証明書をブラウザに渡すことができます。
459 ブラウザに発行者の証明書が直接登録されていなくても、
461 ブラウザはサーバの証明書を有効化することができます。
462 SSL 3.0 は現在 Internet Engineering Task Force (IETF)
463 によって開発されている Transport Layer Security
464 [<a href="#TLS1">TLS</a>] プロトコル標準規格の基礎となっています。</p>
466 <h3><a name="session" id="session">セッションの確立</a></h3>
468 <p><a href="#figure1">図1</a>で示されるように、
469 セッションの確立はクライアントとサーバ間の
470 ハンドシェークシークエンスによって行なわれます。
471 サーバが証明書を提供するか、クライアントの証明書をリクエストするか
472 というサーバの設定により、このシークエンスは異なるものとなります。
473 暗号情報の管理のために、追加のハンドシェーク過程が必要になる
476 全ての可能性についは、SSL 仕様書を参照してください。</p>
478 <div class="note"><h3>注意</h3>
479 <p>一度 SSL セッションが確立すると、セッションを再利用することで、
480 セッションを開始するための多くの過程を繰り返すという
482 そのため、サーバは全てのセッションに一意なセッション識別名を
483 割り当て、サーバにキャッシュし、クライアントは次回から
484 (識別名がサーバのキャッシュで期限切れになるまでは)
485 ハンドシェークなしで接続することができます。</p>
489 <img src="../images/ssl_intro_fig1.gif" alt="" width="423" height="327" /><br />
490 <a id="figure1" name="figure1"><dfn>図1</dfn></a>: SSL
494 ハンドシェークシークエンスの要素を以下に示します:</p>
497 <li>データ通信に使われる暗号スイートの取り決め</li>
498 <li>クライアントとサーバ間でのセッション鍵の確立と共有</li>
499 <li>オプションとして、クライアントに対するサーバの認証</li>
500 <li>オプションとして、サーバに対するクライアントの認証</li>
503 <p>第一ステップの暗号スイート取り決めによって、
506 SSL3.0 プロトコルの仕様書は 31 の暗号スイートを定義しています。
507 暗号スイートは以下のコンポーネントにより定義されています:</p>
512 <li>Message Authentication Code (MAC) 作成のための
516 <p>これらの三つの要素は以下のセクションで説明されています。</p>
519 <h3><a name="keyexchange" id="keyexchange">鍵の交換手段</a></h3>
521 <p>鍵の交換手段はアプリケーションのデータ通信に使われ、
522 共有される対称暗号鍵をどのようにがクライアントとサーバで
524 SSL 2.0 は RSA 鍵交換しか使いませんが、
525 SSL 3.0 は (証明書が使われるときの) RSA 鍵交換や、
526 (証明書無しの場合やクライアントとサーバの事前の通信が無い場合の)
528 など様々な鍵交換アルゴリズムをサポートします。</p>
530 <p>鍵の交換方法における一つの選択肢は電子署名です。
532 どの種類の署名を使うかという選択があります。
533 秘密鍵で署名することで共有鍵を保護し、情報交換する時の
534 マン・イン・ザ・ミドル攻撃を防ぐことができます。
535 [<a href="#AC96">AC96</a>, p516]</p>
538 <h3><a name="ciphertransfer" id="ciphertransfer">データ通信の暗号術</a></h3>
540 <p>SSL はセッションのメッセージの暗号化に前述した
542 暗号化しないという選択肢も含め九つの暗号方式の選択肢があります:</p>
548 <li>40-bit 鍵での RC4</li>
549 <li>128-bit 鍵での RC4</li>
552 <ul><li>40 bit 鍵での RC2</li>
553 <li>40 bit 鍵での DES</li>
554 <li>56 bit 鍵での DES</li>
555 <li>168 bit 鍵での Triple-DES</li>
556 <li>Idea (128 bit 鍵)</li>
557 <li>Fortezza (96 bit 鍵)</li>
561 <p>CBC とは暗号ブロック連鎖 (Cipher Block Chaining)
562 の略で、一つ前の暗号化された暗号文の一部が
563 ブロックの暗号化に使われることを意味します。
564 DES はデータ暗号化標準規格 (Data Encryption Standard)
565 [<a href="#AC96">AC96</a>, ch12] の略で、
566 DES40 や 3DES_EDE を含むいくつもの種類があります。
567 Idea は現在最高なものの一つで、暗号術的には現在ある中で
569 RC2 は RSA DSI による独占的なアルゴリズムです。
570 [<a href="#AC96">AC96</a>,
574 <h3><a name="digestfuntion" id="digestfuntion">ダイジェスト関数</a></h3>
577 ダイジェスト関数の選択はレコードユニットからどのようにダイジェストが生成されるかを決定します。
582 <li>MD5 (128-bit ハッシュ)</li>
583 <li>Secure Hash Algorithm (SHA-1) (160-bit ハッシュ)</li>
586 <p>メッセージダイジェストは Message Authentication Code (MAC)
587 の生成に使われ、メッセージと共に暗号化され、メッセージの信憑性を
591 <h3><a name="handshake" id="handshake">ハンドシェークシークエンスプロトコル</a></h3>
593 <p>ハンドシェークシークエンスは三つのプロトコルを使います:</p>
596 <li><dfn>SSL ハンドシェークプロトコル</dfn>は
597 クライアントとサーバ間での SSL セッションの確立に使われます。</li>
598 <li><dfn>SSL 暗号仕様変更プロトコル</dfn>は
599 セッションでの暗号スイートの取り決めに使われます。</li>
600 <li><dfn>SSL 警告プロトコル</dfn>は
601 クライアントサーバ間で SSL エラーを伝達するのに使われます。</li>
604 <p>三つのプロトコルは、アプリケーションプロトコルデータとともに、
605 <a href="#figure2">図2</a>に示すとおり <dfn>SSL レコードプロトコル</dfn>
607 カプセル化されたプロトコルはデータを検査しない
608 下層のプロトコルによってデータとして伝達されます。
609 カプセル化されたプロトコルは下層のプロトコルに関して一切関知しません。</p>
612 <img src="../images/ssl_intro_fig2.gif" alt="" width="428" height="217" /><br />
613 <a id="figure2" name="figure2"><dfn>図2</dfn></a>: SSL プロトコルスタック
617 レコードプロトコルで SSL コントロールプロトコルがカプセル化されているということは、
618 アクティブなセッション上で再ネゴシエーションされたときにも、
619 コントロールプロトコルは安全であることを意味します。
620 既存のセッションが無い場合は、Null 暗号スイートが使われ、
621 暗号化は行なわれず、セッションが確立するまでは
622 ダイジェストも無い状態となります。</p>
625 <h3><a name="datatransfer" id="datatransfer">データ通信</a></h3>
627 <p><a href="#figure3">図3</a>に示される SSL レコードプロトコル
628 はクライアントとサーバ間のアプリケーションや
629 SSL コントロールデータの通信に使われます。
630 必要に応じてこのデータはより小さいユニットに分けられたり、
631 いくつかの高級プロトコルをまとめて一ユニットとして通信が
633 データを圧縮し、ダイジェスト署名を添付して、
634 これらのユニットを暗号化したのち、ベースとなっている
635 信頼性のあるトランスポートプロトコルを用いるかもしれません。
636 (注意: 現在メジャーな SLL 実装で圧縮をサポートしているものはありません)</p>
639 <img src="../images/ssl_intro_fig3.gif" alt="" width="423" height="323" /><br />
640 <a id="figure3" name="figure3"><dfn>図 3</dfn></a>: SSL レコードプロトコル
644 <h3><a name="securehttp" id="securehttp">HTTP 通信の安全化</a></h3>
646 <p>よくある SSL の使い方はブラウザとウェブサーバ間の HTTP 通信
648 これは、従来の安全ではない HTTP の使用を除外するものではありません。
649 安全化されたもの (HTTPS と呼ばれます) は、SSL 上での普通の HTTP で、
650 URL スキームに <code>http</code> の代わりに <code>https</code>
651 を用い、サーバで別のポートを使うことです (デフォルトでは443)。
652 これが主に <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> が Apache
655 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
656 <div class="section">
657 <h2><a name="references" id="references">参考文献</a></h2>
660 <dt><a id="AC96" name="AC96">[AC96]</a></dt>
661 <dd>Bruce Schneier, <q>Applied Cryptography</q>, 2nd Edition, Wiley,
662 1996. See <a href="http://www.counterpane.com/">http://www.counterpane.com/</a> for various other materials by Bruce
665 <dt><a id="X208" name="X208">[X208]</a></dt>
666 <dd>ITU-T Recommendation X.208, <q>Specification of Abstract Syntax Notation
667 One (ASN.1)</q>, 1988. See for instance <a href="http://www.itu.int/rec/recommendation.asp?type=items&lang=e&parent=T-REC-X.208-198811-I">http://www.itu.int/rec/recommendation.asp?type=items&lang=e&parent=T-REC-X.208-198811-I</a>.
670 <dt><a id="X509" name="X509">[X509]</a></dt>
671 <dd>ITU-T Recommendation X.509, <q>The Directory - Authentication
672 Framework</q>. See for instance <a href="http://www.itu.int/rec/recommendation.asp?type=folders&lang=e&parent=T-REC-X.509">http://www.itu.int/rec/recommendation.asp?type=folders&lang=e&parent=T-REC-X.509</a>.
675 <dt><a id="PKCS" name="PKCS">[PKCS]</a></dt>
676 <dd><q>Public Key Cryptography Standards (PKCS)</q>,
677 RSA Laboratories Technical Notes, See <a href="http://www.rsasecurity.com/rsalabs/pkcs/">http://www.rsasecurity.com/rsalabs/pkcs/</a>.</dd>
679 <dt><a id="MIME" name="MIME">[MIME]</a></dt>
680 <dd>N. Freed, N. Borenstein, <q>Multipurpose Internet Mail Extensions
681 (MIME) Part One: Format of Internet Message Bodies</q>, RFC2045.
682 See for instance <a href="http://ietf.org/rfc/rfc2045.txt">http://ietf.org/rfc/rfc2045.txt</a>.</dd>
684 <dt><a id="SSL2" name="SSL2">[SSL2]</a></dt>
685 <dd>Kipp E.B. Hickman, <q>The SSL Protocol</q>, 1995. See <a href="http://www.netscape.com/eng/security/SSL_2.html">http://www.netscape.com/eng/security/SSL_2.html</a>.</dd>
687 <dt><a id="SSL3" name="SSL3">[SSL3]</a></dt>
688 <dd>Alan O. Freier, Philip Karlton, Paul C. Kocher, <q>The SSL Protocol
689 Version 3.0</q>, 1996. See <a href="http://www.netscape.com/eng/ssl3/draft302.txt">http://www.netscape.com/eng/ssl3/draft302.txt</a>.</dd>
691 <dt><a id="TLS1" name="TLS1">[TLS1]</a></dt>
692 <dd>Tim Dierks, Christopher Allen, <q>The TLS Protocol Version 1.0</q>,
693 1999. See <a href="http://ietf.org/rfc/rfc2246.txt">http://ietf.org/rfc/rfc2246.txt</a>.</dd>
696 <div class="bottomlang">
697 <p><span>言語: </span><a href="../en/ssl/ssl_intro.html" hreflang="en" rel="alternate" title="English"> en </a> |
698 <a href="../fr/ssl/ssl_intro.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
699 <a href="../ja/ssl/ssl_intro.html" title="Japanese"> ja </a></p>
700 </div><div id="footer">
701 <p class="apache">Copyright 2011 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
702 <p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/directives.html">ディレクティブ</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p></div>