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.5</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="../">バージョン 2.5</a> > <a href="./">SSL/TLS</a></div><div id="page-content"><div id="preamble"><h1>SSL/TLS 暗号化: はじめに</h1>
21 <p><span>翻訳済み言語: </span><a href="../en/ssl/ssl_intro.html" hreflang="en" rel="alternate" title="English"> en </a> |
22 <a href="../fr/ssl/ssl_intro.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
23 <a href="../ja/ssl/ssl_intro.html" title="Japanese"> ja </a></p>
25 <div class="outofdate">この日本語訳はすでに古くなっている
27 最近更新された内容を見るには英語版をご覧下さい。
31 <p>標準規格の良い所は、たくさんの規格から選べるということだ。
32 そして、もし本当にどの規格も気に入らなければ、
33 一年待つだけで探していた規格が現れる。</p>
35 <p class="cite">-- <cite>A. Tanenbaum</cite>, "Introduction to
36 Computer Networks"</p>
40 入門ということで、この章は Web、HTTP、Apache に通じている
41 読者向けですが、セキュリティ専門家向けではありません。
42 SSL プロトコルの決定的な手引きであるつもりはありません。
43 また、組織内の認証管理のための特定のテクニックや、
44 特許や輸出規制などの重要な法的な問題についても扱いません。
45 むしろ、更なる研究への出発点として色々な概念、定義、例を並べることで
46 <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> のユーザに基礎知識を提供する事を目的としています。</p>
48 <p>ここに示された内容は主に、原著者の許可の下
49 The Open Group Research Institute の <a href="http://home.earthlink.net/~fjhirsch/">Frederick J. Hirsch</a>
50 氏の記事 <a href="http://home.earthlink.net/~fjhirsch/Papers/wwwj/">
51 Introducing SSL and Certificates using SSLeay</a> を基にしています。
52 氏の記事は <a href="http://www.ora.com/catalog/wjsum97/">Web Security: A Matter of
53 Trust</a>, World Wide Web Journal, Volume 2, Issue 3, Summer 1997
55 肯定的な意見は <a href="mailto:hirsch@fjhirsch.com">Frederick Hirsch</a> 氏
56 (元記事の著者) へ全ての苦情は <a href="mailto:rse@engelschall.com">Ralf S. Engelschall</a> (
57 <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> の作者) へお願いします。
58 <span class="transnote">(<em>訳注:</em> 訳については <a href="mailto:apache-docs@ml.apache.or.jp">
59 Apache ドキュメント翻訳プロジェクト</a>
62 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#cryptographictech">暗号化技術</a></li>
63 <li><img alt="" src="../images/down.gif" /> <a href="#certificates">証明書</a></li>
64 <li><img alt="" src="../images/down.gif" /> <a href="#ssl">Secure Sockets Layer (SSL)</a></li>
65 <li><img alt="" src="../images/down.gif" /> <a href="#references">参考文献</a></li>
67 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
69 <h2><a name="cryptographictech" id="cryptographictech">暗号化技術</a></h2>
71 <p>SSL を理解するには、暗号アルゴリズム、
72 メッセージダイジェスト関数(別名: 一方向関数、ハッシュ関数)、
75 (例えば [<a href="#AC96">AC96</a>] を参照)、
76 プライバシー、信用、認証などの技術の基礎となっています。</p>
78 <h3><a name="cryptographicalgo" id="cryptographicalgo">暗号アルゴリズム</a></h3>
80 <p>例えば、アリスが送金のために銀行にメッセージを送りたいとします。
82 アリスはそのメッセージを秘密にしたいと思います。
83 解決方法の一つは暗号アルゴリズムを使って、メッセージを
84 復号されるまで読むことができない暗号化された
87 メッセージは秘密の鍵によってのみ復号化することができます。
89 良い暗号アルゴリズムは、侵入者が元のテキストを解読することを
90 非常に難しくするため、努力が割に合わなくさせます。</p>
93 従来型と公開鍵の二つの種類があります。</p>
98 送信者と受信者が鍵を共有することが必要です。
99 鍵とは、メッセージを暗号化したり復号するのに使われる秘密
101 この鍵が秘密になっている限り、送信者と受信者以外は誰もメッセージを読
103 もしも、アリスと銀行が秘密の鍵を知っているなら、
104 彼らはお互いに秘密のメッセージを送ることができるでしょう。
105 ただし交信の前に、事前に内密に鍵を共有するという作業自体は難題かもしれません。</dd>
109 メッセージを暗号化することのできる二つの鍵
110 を使用するアルゴリズムを定義することで鍵のやり取りの問題を解決
114 この方式によって、一つの鍵を公表して(公開鍵)、
115 もう片方を秘密にしておく(秘密鍵)だけで、
116 安全なメッセージを受け取ることができます。</dd>
119 <p>公開鍵を使って誰もがメッセージを暗号化できますが、秘
120 密鍵の持ち主だけがそれを読むことができます。
121 この方法で、銀行の公開鍵を使って暗号化することで、
122 アリスは秘密のメッセージを送ることができます。
123 銀行のみが送られたメッセージを復号することができます。</p>
126 <h3><a name="messagedigests" id="messagedigests">メッセージダイジェスト</a></h3>
128 <p>アリスはメッセージを秘密にすることができますが、
129 誰かが例えば自分に送金するようにメッセージを変更したり、
130 別のものに置き換えてしまうかもしれないという問題があります。
131 アリスのメッセージだという信憑性を保証する方法の一つは、
132 メッセージの簡潔なダイジェストを作って、それも銀行に送るというものです。
133 メッセージを受け取ると銀行側でもダイジェストを作成し、
134 アリスが送ったダイジェストと比べます。もし一致したなら、
135 受け取ったメッセージは無傷だということになります。</p>
137 <p>このような要約は<dfn>メッセージダイジェスト</dfn>、
138 <em>一方行関数</em>、または<em>ハッシュ関数</em>と呼ばれます。
139 メッセージダイジェストは長い可変長のメッセージから
142 一意なダイジェストを生成するように作られています。
143 メッセージダイジェストはダイジェストから元のメッセージを
144 判定するのがとても難しいようにできていて、
145 同じ要約を作成する二つのメッセージを探すのは(理論上)不可能です。
146 これによって、要約を変更することなくメッセージを置き換えられる
149 <p>アリスへのもう一つの問題は、このダイジェストを安全に送る方法を探すことです。
150 ダイジェストが安全に送られればダイジェストの信憑性が保障されて、
151 ダイジェストの信憑性をもってオリジナルメッセージの信憑性を得ることができます。
152 ダイジェストを安全に送った場合にのみ、そのメッセージの
155 <p>ダイジェスト安全に送る方法の一つは、電子署名に含める方法です。</p>
158 <h3><a name="digitalsignatures" id="digitalsignatures">電子署名</a></h3>
159 <p>アリスが銀行にメッセージを送ったとき、
160 侵入者が彼女になりすまして彼女の口座への取引を申請できないように、
161 銀行側ではメッセージが本当に彼女からのものか確実に分かるようにしなければなりません。
162 アリスによって作成されて、メッセージに含まれた
163 <em>電子署名</em>がここで役に立ちます。</p>
165 <p>電子署名はメッセージのダイジェストやその他の情報(処理番号など)を
166 送信者の秘密鍵で暗号化することで作られます。
167 誰もが公開鍵を使って署名を<em>復号</em>することができますが、
169 これは送信者のみが署名しえたことを意味します。
171 その署名がそのメッセージのみに有効であることを意味します。
172 これは、誰もダイジェストを変えて署名をすることができないため、
175 <p>侵入者が署名を傍受して後日に再利用するのを防ぐため
177 これは、アリスがそんなメッセージは送っていないと言う詐欺
179 彼女だけが署名しえたからです。(否認防止)</p>
181 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
182 <div class="section">
183 <h2><a name="certificates" id="certificates">証明書</a></h2>
185 <p>アリスは秘密のメッセージを銀行に送り、
186 署名をして、メッセージの信用を保証することができるおうになりましたが、
187 通信している相手が本当に銀行なのか確かめなくてはいけません。
188 つまり彼女が使おうとしている公開鍵が、銀行の秘密鍵と対になっていて、
189 侵入者の秘密鍵と対になっているわけではないことを
190 確かめなくてはいけないことを意味しています。
191 同様に銀行は、メッセージの署名が本当にアリスの持っている
192 秘密鍵で署名された署名かを確認する必要があります。</p>
194 <p>もし両者に身元を証明し、公開鍵を確認し、また信頼された機関が署名
195 した証明書があれば、両者とも通信相手について正しい相手だと
197 そのような信頼された機関は<em>認証局</em>
198 (Certificate Authority または CA) と呼ばれ、
199 証明書 (certificate) が認証 (authentication) に使われます。</p>
201 <h3><a name="certificatecontents" id="certificatecontents">証明書の内容</a></h3>
203 <p>証明書は公開鍵と個人、サーバ、その他の主体の実在の身元を
205 <a href="#table1">表1</a>に示されるように証明対象の情報は
206 身元証明の情報(識別名)と公開鍵が含まれます。
207 証明書はまた、認証局の身元証明と署名、そして証明書の有効期間を
209 シリアルナンバーなどの認証局の管理上の情報や
210 その他の追加の情報が含まれているかもしれません。</p>
212 <h4><a name="table1" id="table1">表1: 証明書情報</a></h4>
217 <td>識別名、公開鍵</td></tr>
219 <td>識別名、公開鍵</td></tr>
221 <td>開始日、失効日</td></tr>
223 <td>バージョン、シリアルナンバー</td></tr>
225 <td>基本的な制約、ネットスケープフラッグ、その他</td></tr>
229 <p>識別名(ディスティングイッシュ・ネーム)は特定の状況における
230 身分証明を提供するのに使われています。例えば、ある人は
231 私用と会社とで別々の身分証明を持つかもしれません。
233 識別名は X.509 標準規格 [<a href="#X509">X509</a>] で定義されています。
234 X.509 標準規格は、項目、項目名、そして項目の略称を定義しています。(<a href="#table2">表
237 <h4><a name="table2" id="table2">表 2: 識別名情報</a></h4>
239 <table class="bordered">
245 <tr><td>Common Name (コモンネーム)</td>
249 <td>CN=www.example.com</td></tr>
250 <tr><td>Organization or Company (組織名)</td>
253 <td>O=Example Japan K.K.</td></tr>
254 <tr><td>Organizational Unit (部門名)</td>
257 <td>OU=Customer Service</td></tr>
258 <tr><td>City/Locality (市区町村)</td>
261 <td>L=Sapporo</td></tr>
262 <tr><td>State/Province (都道府県)</td>
265 <td>ST=Hokkaido</td></tr>
266 <tr><td>Country(国)</td>
268 <td>所在している国名の ISO コード<br />
275 <p>認証局はどの項目が省略可能でどれが必須かの方針を定義する
276 かもしれません。項目の内容についても認証局や証明書のユーザからの
278 例えばネットスケープのブラウザは、サーバの証明書の
279 Common Name (コモンネーム)がサーバのドメイン名の
280 <code>*.snakeoil.com</code>
281 というようなワイルドカードのパターンにマッチすること
284 <p>バイナリ形式の証明書は ASN.1 表記法
285 [<a href="#X208">X208</a>] [<a href="#PKCS">PKCS</a>] で
287 この表記法は内容をどのように記述するかを定義し、
288 符号化の規定がこの情報がどのようにバイナリ形式に変換されるかを
290 証明書のバイナリ符号化は Distinguished Encoding
291 Rules (DER) で定義され、それはより一般的な Basic Encoding Rules
293 バイナリ形式を扱うことのできない送信では、
294 バイナリ形式は Base64 符号化 [<a href="#MIME">MIME</a>] で
295 ASCII 形式に変換されることがあります。
296 開始デリミタ行と終了デリミタ行で囲まれた、この形式のことを
297 PEM ("Privacy Enhanced Mail") 符号化された証明書と言います。</p>
299 <div class="example"><h3>PEM 符号化された証明書の例 (example.crt)</h3><pre>-----BEGIN CERTIFICATE-----
300 MIIC7jCCAlegAwIBAgIBATANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCWFkx
301 FTATBgNVBAgTDFNuYWtlIERlc2VydDETMBEGA1UEBxMKU25ha2UgVG93bjEXMBUG
302 A1UEChMOU25ha2UgT2lsLCBMdGQxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhv
303 cml0eTEVMBMGA1UEAxMMU25ha2UgT2lsIENBMR4wHAYJKoZIhvcNAQkBFg9jYUBz
304 bmFrZW9pbC5kb20wHhcNOTgxMDIxMDg1ODM2WhcNOTkxMDIxMDg1ODM2WjCBpzEL
305 MAkGA1UEBhMCWFkxFTATBgNVBAgTDFNuYWtlIERlc2VydDETMBEGA1UEBxMKU25h
306 a2UgVG93bjEXMBUGA1UEChMOU25ha2UgT2lsLCBMdGQxFzAVBgNVBAsTDldlYnNl
307 cnZlciBUZWFtMRkwFwYDVQQDExB3d3cuc25ha2VvaWwuZG9tMR8wHQYJKoZIhvcN
308 AQkBFhB3d3dAc25ha2VvaWwuZG9tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
309 gQDH9Ge/s2zcH+da+rPTx/DPRp3xGjHZ4GG6pCmvADIEtBtKBFAcZ64n+Dy7Np8b
310 vKR+yy5DGQiijsH1D/j8HlGE+q4TZ8OFk7BNBFazHxFbYI4OKMiCxdKzdif1yfaa
311 lWoANFlAzlSdbxeGVHoT0K+gT5w3UxwZKv2DLbCTzLZyPwIDAQABoyYwJDAPBgNV
312 HRMECDAGAQH/AgEAMBEGCWCGSAGG+EIBAQQEAwIAQDANBgkqhkiG9w0BAQQFAAOB
313 gQAZUIHAL4D09oE6Lv2k56Gp38OBDuILvwLg1v1KL8mQR+KFjghCrtpqaztZqcDt
314 2q2QoyulCgSzHbEGmi0EsdkPfg6mp0penssIFePYNI+/8u9HT4LuKMJX15hxBam7
315 dUHzICxBVC1lnHyYGjDuAMhe396lYAn8bCld1/L4NMGBCQ==
316 -----END CERTIFICATE-----</pre></div>
319 <h3><a name="certificateauthorities" id="certificateauthorities">認証局</a></h3>
321 <p>証明書を承認する前に、証明書要求に記載されている情報を確認し、
323 例えば、アリスが個人証明書を申請したとすると、
324 認証局はアリスが証明書の申請が主張する通りの
325 当の本人だということを確認しなくてはいけません。</p>
327 <h4><a name="certificatechains" id="certificatechains">証明書の連鎖</a></h4>
329 <p>認証局は他の認証局への証明書を発行することができます。
330 未知の証明書を調べる時に、アリスはその証明書の発行者
332 その上位階層の認証局をたどって調べる必要があります。
334 彼女は限られた連鎖の発行者のみ信頼するように
338 <h4><a name="rootlevelca" id="rootlevelca">最上位認証局の作成</a></h4>
340 <p>前に述べたように、全ての証明書について、
341 最上位の認証局(CA)までそれぞれの発行者が
342 対象の身元証明の有効性を明らかにする必要があります。
343 問題は、誰がその最上位の認証機関の証明書を保証するのか、
345 このような場合に限り、証明書は「自己署名」されます。
346 ブラウザには、とてもよく知られている認証局が初期登録されていますが、
349 最上位認証局が公開鍵を広く公表することで、
350 その鍵を信頼するリスクを低くすることができます。
351 もし、他人がその認証局になりすました時に、それが露見しや
354 <p><a href="http://www.thawte.com/">Thawte</a>
355 や <a href="http://www.verisign.com/">VeriSign</a>
356 のような多くの会社が認証局として開設しました。
357 このような会社は以下のサービスを提供します:</p>
367 個人やサーバの身元証明が簡単に行える組織の
368 イントラネット内では役に立つかもしれません。</p>
371 <h4><a name="certificatemanagement" id="certificatemanagement">証明書管理</a></h4>
373 <p>認証局の開設は徹底した管理、技術、運用の体制を必要とする
377 具体的には、証明書がいつまで有効であり続けるかを決定し、更新し、
379 (Certificate Revocation Lists または CRL)
382 <p>例えばアリスが過去、会社の社員であることを証明する証明書を持っていたが、
383 現在は退職していた際、その証明書は失効されなければなりません。
384 証明書は次々と人に渡されていくものなので、
385 証明書そのものから、それが取り消されたか判断することは
388 認証局に連絡して CRL を照合する必要があります。
389 普通この過程は自動化されているものではありません。</p>
391 <div class="note"><h3>注意</h3>
392 <p>ブラウザに信用できる認証局としてデフォルトで登録されていない
395 ブラウザがその認証局によって署名されたサーバの証明書を
397 一度読み込まれると、その認証局によって署名された全ての
398 証明書を受け入れるため、危険を伴います。</p>
403 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
404 <div class="section">
405 <h2><a name="ssl" id="ssl">Secure Sockets Layer (SSL)</a></h2>
407 <p>Secure Sockets Layer プロトコルは信頼性のあるコネクション型の
408 ネットワーク層のプロトコル(例えば、TCP/IP)と
409 アプリケーション層のプロトコル(例えば、HTTP)
411 SSL は、相互認証によってサーバとクライアント間の安全な通信を、
413 そして暗号化によってプライバシを提供します。</p>
415 <p>SSL プロトコルは暗号化、ダイジェスト、電子署名について、
416 様々なアルゴリズムをサポートするようにできています。
417 こうすることで、法や輸出の規制を考慮に入れて、サーバに合わせた
418 アルゴリズムを選ぶことができ、また、新しいアルゴリズムを
420 アルゴリズムの選択はプロトコルセッション開始時に
421 サーバとクライアント間で取り決められます。</p>
423 <h3><a name="table4" id="table4">表4: SSL プロトコルのバージョン</a></h3>
425 <table class="bordered">
430 <th>ブラウザのサポート</th></tr>
431 <tr><td>SSL v2.0</td>
432 <td>Vendor Standard (Netscape Corp. より) [<a href="#SSL2">SSL2</a>]</td>
433 <td>実装が現存する初めての SSL プロトコル</td>
434 <td>- NS Navigator 1.x/2.x<br />
436 - Lynx/2.8+OpenSSL</td></tr>
437 <tr><td>SSL v3.0</td>
438 <td>Expired Internet Draft (Netscape Corp. より) [<a href="#SSL3">SSL3</a>]</td>
439 <td>特定のセキュリティ攻撃を防ぐための改訂、
440 非RSA 暗号の追加、証明書階層構造のサポート</td>
441 <td>- NS Navigator 2.x/3.x/4.x<br />
442 - MS IE 3.x/4.x<br />
443 - Lynx/2.8+OpenSSL</td></tr>
444 <tr><td>TLS v1.0</td>
445 <td>Proposed Internet Standard (IETF より) [<a href="#TLS1">TLS1</a>]</td>
446 <td>MAC レイヤを HMAC へ更新、ブロック暗号の block
447 padding、メッセージ順序の標準化、警告文の充実などのため
449 <td>- Lynx/2.8+OpenSSL</td></tr>
453 <p><a href="#table4">表4</a>に示されるとおり、SSL プロトコルには
455 表にも書かれているように、SSL 3.0 の利点の一つは
457 この機能によって、サーバは自分の証明書に加えて、
458 発行者の証明書をブラウザに渡すことができます。
460 ブラウザに発行者の証明書が直接登録されていなくても、
462 ブラウザはサーバの証明書を有効化することができます。
463 SSL 3.0 は現在 Internet Engineering Task Force (IETF)
464 によって開発されている Transport Layer Security
465 [<a href="#TLS1">TLS</a>] プロトコル標準規格の基礎となっています。</p>
467 <h3><a name="session" id="session">セッションの確立</a></h3>
469 <p><a href="#figure1">図1</a>で示されるように、
470 セッションの確立はクライアントとサーバ間の
471 ハンドシェークシークエンスによって行なわれます。
472 サーバが証明書を提供するか、クライアントの証明書をリクエストするか
473 というサーバの設定により、このシークエンスは異なるものとなります。
474 暗号情報の管理のために、追加のハンドシェーク過程が必要になる
477 全ての可能性についは、SSL 仕様書を参照してください。</p>
479 <div class="note"><h3>注意</h3>
480 <p>一度 SSL セッションが確立すると、セッションを再利用することで、
481 セッションを開始するための多くの過程を繰り返すという
483 そのため、サーバは全てのセッションに一意なセッション識別名を
484 割り当て、サーバにキャッシュし、クライアントは次回から
485 (識別名がサーバのキャッシュで期限切れになるまでは)
486 ハンドシェークなしで接続することができます。</p>
490 <img src="../images/ssl_intro_fig1.gif" alt="" width="423" height="327" /><br />
491 <a id="figure1" name="figure1"><dfn>図1</dfn></a>: SSL
495 ハンドシェークシークエンスの要素を以下に示します:</p>
498 <li>データ通信に使われる暗号スイートの取り決め</li>
499 <li>クライアントとサーバ間でのセッション鍵の確立と共有</li>
500 <li>オプションとして、クライアントに対するサーバの認証</li>
501 <li>オプションとして、サーバに対するクライアントの認証</li>
504 <p>第一ステップの暗号スイート取り決めによって、
507 SSL3.0 プロトコルの仕様書は 31 の暗号スイートを定義しています。
508 暗号スイートは以下のコンポーネントにより定義されています:</p>
513 <li>Message Authentication Code (MAC) 作成のための
517 <p>これらの三つの要素は以下のセクションで説明されています。</p>
520 <h3><a name="keyexchange" id="keyexchange">鍵の交換手段</a></h3>
522 <p>鍵の交換手段はアプリケーションのデータ通信に使われ、
523 共有される対称暗号鍵をどのようにがクライアントとサーバで
525 SSL 2.0 は RSA 鍵交換しか使いませんが、
526 SSL 3.0 は (証明書が使われるときの) RSA 鍵交換や、
527 (証明書無しの場合やクライアントとサーバの事前の通信が無い場合の)
529 など様々な鍵交換アルゴリズムをサポートします。</p>
531 <p>鍵の交換方法における一つの選択肢は電子署名です。
533 どの種類の署名を使うかという選択があります。
534 秘密鍵で署名することで共有鍵を保護し、情報交換する時の
535 マン・イン・ザ・ミドル攻撃を防ぐことができます。
536 [<a href="#AC96">AC96</a>, p516]</p>
539 <h3><a name="ciphertransfer" id="ciphertransfer">データ通信の暗号術</a></h3>
541 <p>SSL はセッションのメッセージの暗号化に前述した
543 暗号化しないという選択肢も含め九つの暗号方式の選択肢があります:</p>
549 <li>40-bit 鍵での RC4</li>
550 <li>128-bit 鍵での RC4</li>
553 <ul><li>40 bit 鍵での RC2</li>
554 <li>40 bit 鍵での DES</li>
555 <li>56 bit 鍵での DES</li>
556 <li>168 bit 鍵での Triple-DES</li>
557 <li>Idea (128 bit 鍵)</li>
558 <li>Fortezza (96 bit 鍵)</li>
562 <p>CBC とは暗号ブロック連鎖 (Cipher Block Chaining)
563 の略で、一つ前の暗号化された暗号文の一部が
564 ブロックの暗号化に使われることを意味します。
565 DES はデータ暗号化標準規格 (Data Encryption Standard)
566 [<a href="#AC96">AC96</a>, ch12] の略で、
567 DES40 や 3DES_EDE を含むいくつもの種類があります。
568 Idea は現在最高なものの一つで、暗号術的には現在ある中で
570 RC2 は RSA DSI による独占的なアルゴリズムです。
571 [<a href="#AC96">AC96</a>,
575 <h3><a name="digestfuntion" id="digestfuntion">ダイジェスト関数</a></h3>
578 ダイジェスト関数の選択はレコードユニットからどのようにダイジェストが生成されるかを決定します。
583 <li>MD5 (128-bit ハッシュ)</li>
584 <li>Secure Hash Algorithm (SHA-1) (160-bit ハッシュ)</li>
587 <p>メッセージダイジェストは Message Authentication Code (MAC)
588 の生成に使われ、メッセージと共に暗号化され、メッセージの信憑性を
592 <h3><a name="handshake" id="handshake">ハンドシェークシークエンスプロトコル</a></h3>
594 <p>ハンドシェークシークエンスは三つのプロトコルを使います:</p>
597 <li><dfn>SSL ハンドシェークプロトコル</dfn>は
598 クライアントとサーバ間での SSL セッションの確立に使われます。</li>
599 <li><dfn>SSL 暗号仕様変更プロトコル</dfn>は
600 セッションでの暗号スイートの取り決めに使われます。</li>
601 <li><dfn>SSL 警告プロトコル</dfn>は
602 クライアントサーバ間で SSL エラーを伝達するのに使われます。</li>
605 <p>三つのプロトコルは、アプリケーションプロトコルデータとともに、
606 <a href="#figure2">図2</a>に示すとおり <dfn>SSL レコードプロトコル</dfn>
608 カプセル化されたプロトコルはデータを検査しない
609 下層のプロトコルによってデータとして伝達されます。
610 カプセル化されたプロトコルは下層のプロトコルに関して一切関知しません。</p>
613 <img src="../images/ssl_intro_fig2.gif" alt="" width="428" height="217" /><br />
614 <a id="figure2" name="figure2"><dfn>図2</dfn></a>: SSL プロトコルスタック
618 レコードプロトコルで SSL コントロールプロトコルがカプセル化されているということは、
619 アクティブなセッション上で再ネゴシエーションされたときにも、
620 コントロールプロトコルは安全であることを意味します。
621 既存のセッションが無い場合は、Null 暗号スイートが使われ、
622 暗号化は行なわれず、セッションが確立するまでは
623 ダイジェストも無い状態となります。</p>
626 <h3><a name="datatransfer" id="datatransfer">データ通信</a></h3>
628 <p><a href="#figure3">図3</a>に示される SSL レコードプロトコル
629 はクライアントとサーバ間のアプリケーションや
630 SSL コントロールデータの通信に使われます。
631 必要に応じてこのデータはより小さいユニットに分けられたり、
632 いくつかの高級プロトコルをまとめて一ユニットとして通信が
634 データを圧縮し、ダイジェスト署名を添付して、
635 これらのユニットを暗号化したのち、ベースとなっている
636 信頼性のあるトランスポートプロトコルを用いるかもしれません。
637 (注意: 現在メジャーな SLL 実装で圧縮をサポートしているものはありません)</p>
640 <img src="../images/ssl_intro_fig3.gif" alt="" width="423" height="323" /><br />
641 <a id="figure3" name="figure3"><dfn>図 3</dfn></a>: SSL レコードプロトコル
645 <h3><a name="securehttp" id="securehttp">HTTP 通信の安全化</a></h3>
647 <p>よくある SSL の使い方はブラウザとウェブサーバ間の HTTP 通信
649 これは、従来の安全ではない HTTP の使用を除外するものではありません。
650 安全化されたもの (HTTPS と呼ばれます) は、SSL 上での普通の HTTP で、
651 URL スキームに <code>http</code> の代わりに <code>https</code>
652 を用い、サーバで別のポートを使うことです (デフォルトでは443)。
653 これが主に <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> が Apache
656 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
657 <div class="section">
658 <h2><a name="references" id="references">参考文献</a></h2>
661 <dt><a id="AC96" name="AC96">[AC96]</a></dt>
662 <dd>Bruce Schneier, <q>Applied Cryptography</q>, 2nd Edition, Wiley,
663 1996. See <a href="http://www.counterpane.com/">http://www.counterpane.com/</a> for various other materials by Bruce
666 <dt><a id="X208" name="X208">[X208]</a></dt>
667 <dd>ITU-T Recommendation X.208, <q>Specification of Abstract Syntax Notation
668 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>.
671 <dt><a id="X509" name="X509">[X509]</a></dt>
672 <dd>ITU-T Recommendation X.509, <q>The Directory - Authentication
673 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>.
676 <dt><a id="PKCS" name="PKCS">[PKCS]</a></dt>
677 <dd><q>Public Key Cryptography Standards (PKCS)</q>,
678 RSA Laboratories Technical Notes, See <a href="http://www.rsasecurity.com/rsalabs/pkcs/">http://www.rsasecurity.com/rsalabs/pkcs/</a>.</dd>
680 <dt><a id="MIME" name="MIME">[MIME]</a></dt>
681 <dd>N. Freed, N. Borenstein, <q>Multipurpose Internet Mail Extensions
682 (MIME) Part One: Format of Internet Message Bodies</q>, RFC2045.
683 See for instance <a href="http://ietf.org/rfc/rfc2045.txt">http://ietf.org/rfc/rfc2045.txt</a>.</dd>
685 <dt><a id="SSL2" name="SSL2">[SSL2]</a></dt>
686 <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>
688 <dt><a id="SSL3" name="SSL3">[SSL3]</a></dt>
689 <dd>Alan O. Freier, Philip Karlton, Paul C. Kocher, <q>The SSL Protocol
690 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>
692 <dt><a id="TLS1" name="TLS1">[TLS1]</a></dt>
693 <dd>Tim Dierks, Christopher Allen, <q>The TLS Protocol Version 1.0</q>,
694 1999. See <a href="http://ietf.org/rfc/rfc2246.txt">http://ietf.org/rfc/rfc2246.txt</a>.</dd>
697 <div class="bottomlang">
698 <p><span>翻訳済み言語: </span><a href="../en/ssl/ssl_intro.html" hreflang="en" rel="alternate" title="English"> en </a> |
699 <a href="../fr/ssl/ssl_intro.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
700 <a href="../ja/ssl/ssl_intro.html" title="Japanese"> ja </a></p>
701 </div><div id="footer">
702 <p class="apache">Copyright 2012 The Apache Software Foundation.<br />この文書は <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> のライセンスで提供されています。.</p>
703 <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>