インターネット上で買物をするときに、クレジットカード の番号などを入力する場合に、ブラウザの下の方に 「鍵のしまった錠前」の絵が表示されることがあります。 これは「通信が暗号化されている」ので盗聴されても内容は洩れない、 ということを表しています。
ブラウザ | 暗号化なしの場合 | 暗号化ありの場合 |
---|---|---|
IE | ||
netscape |
この『暗号化』で使われているのが SSL (Secure Socket Layer)です。 SSLは Netscape Communications社によって開発されたもので、 TCP/IP上の通信を暗号化できます。
SSL Ver 3.0 までは Netscape Communications社で開発されましたが、 現在ではSSLの開発・管理はIETF (Internet Engineering Task Force) に移管されています。 SSLの後継となる TLS 1.0 (Transport Layer Security) は RFC2246 として標準化されています。
ちなみに、WebブラウザがSSLによる暗号通信を行う場合は 「https:」という表記でプロトコルを指定します。
SSLが実現する機能は3つあります。
SSL2.0 | SSL3.0 | |
---|---|---|
鍵の交換 | 公開鍵暗号 (RSA) | 公開鍵暗号(RSA,DH,Fortezza) |
認証 | 公開鍵暗号 (RSA) | 公開鍵暗号(RSA,DSS/DSA) |
データの暗号化 | 共通鍵暗号 (RC4, RC2, DES, Triple-DES, IDEA) | 共通鍵暗号 (RC4, RC2, DES, Triple-DES) |
メッセージ認証 | ハッシュ関数 (MD5) | ハッシュ関数 (SHA1, MD5) |
アプリケーション | プロトコル名 (サービス名) |
ポート番号 |
---|---|---|
WWW | http | 80 |
https | 443 | |
POP | pop3 | 110 |
pop3s | 995 |
SSLにおける通信の手順は以下のようになります。
「デジタル署名」は「情報の同一性」を保証します。 すなわち、「偽造された情報ではない」ことを示すことが できます。
デジタル署名
上記ではデータが改竄されていないことはわかりますが、本人である ことの証明はどうやればいいのでしょうか? たとえば 「インターネット上の存在であるwww.tsuda.ac.jp が、 現実世界の『津田塾大学』と関係がある」ことをどうやって 示せばいいのでしょうか。 そのためには認証局(CA, Certificate Authority)を使います。
たとえば、 インターネット上で商取り引きを行うサーバを運用する場合、 そのサーバがいい加減なものではないことをクライアントに 納得してもらう必要があります。 信用できない WWW サーバにクレジットカードの番号を打ち込んで もらえるわけがありませんから。 したがって、そのような信用が必要なサーバを運用する組織は、 認証局に『サーバ証明書』を発行してもらいます。 認証局は、以下の手順で『証明書 (certificates)』を発行します。
X.509証明書に含まれる情報には以下のものがあります。
インターネット上には認証局がいくつもあります。 「認証局」はさらに上位の「認証局」によって認証される 階層構造を取っています。 階層構造の下部にある認証局の証明書の正当性を 調べるためには、階層構造のトップまで認証の 依存関係をたどる必要があります。 階層構造のトップにある認証局が正しいものである ことを証明する 『ルート証明書』は、大手の認証局に関しては 一般的なWEBブラウザには既に組み込まれています。 WEBブラウザに組み込まれていない認証局からの 証明書には警告がでることがあります。
WWW閲覧中にIEが出す警告 セキュリティの警告: このサイトと取り交わす情報は、ほかの人から読み取られたり変更されたり することはありません。しかし、このサイトのセキュリティ証明書には問題が あります。 このセキュリティ証明書は、信頼する会社から発行されていません。 証明書を表示して、この証明機関を信頼するかどうか決定して下さい。 続行しますか? はい(Y) いいえ(N) 証明書の表示(V)
WWWサイトとの通信にSSLを使っているからといって 油断してはいけません。 確かにSSLを使えばネットワーク上は暗号化してデータが 流れますが、WWWサーバ上ではデータは復号化され、 おそらくデータは平文としてファイルに保存されることでしょう。 そのWWWサーバが侵入されると、クレジットカード番号などの 個人情報が洩れる危険性があります。
セキュリティはシステム全体で考えることが大切です。 システムの一部だけのセキュリティ・レベルを上げても、 必ず一番弱い部分を攻撃されることになります。