Webアプリ開発事始 第15回

安全な通信を考える(1)
~暗号化と認証
長谷川裕行
有限会社 手國堂

SSLによる暗号化通信

安全な暗号化通信の前提には、確実な認証が必要になります。これを実現する機能としては、Netscape社の提唱したSSL(Secure Sockets Layer)と呼ばれるプロトコルが有名です。


- ブラウザに標準実装 -

SSLは、OSI※2の定める7階層モデル(基本参照モデル)のセッション層に位置し、通信相手の認証(正当性の証明)、データの暗号化、データ改ざんの有無を調べるメッセージ認証の3つの機能を提供しています。

Internet ExplorerやNetscape Navigatorなど代表的なブラウザにはSSLが標準で実装されているため、サーバー側でSSL対応の認証システムと暗号化システムを用意するだけで、安全な通信が可能となります。

SSLはHTTPの他、TELNETやFTPなどのプロトコルにも対応しています。標準の通信ポートは443番(https)なので、SSLによる暗号化通信では、通常の“http://www...”の代わりに“https://www...”という形のURL表記となります。

※2 Open Systems Interconnection(開放型システム間相互接続)の略。多種のプロトコルを階層的に配置し体系化したもの。開放型システムの相互接続に関するアーキテクチャの標準として、ISOが策定した。


《参考》OSIの7階層モデル

メーカーの異なる製品を組み合わせてネットワークを構築できるよう、システムの接続規格を標準化したものです。基本参照モデル(Basic Reference Model)とも呼ばれます。

1.物理層 2.データ・リンク層 3.ネットワーク層 4.トランスポート層 5.セション層 6.プレゼンテーション層 7.アプリケーション層の7つの層から構成されています。



- 認証から暗号化通信まで -

クライアントが接続したWebサーバー(これから暗号か通信を行う相手)を正当(な組織の運営するサーバー)であると確信し、暗号か通信を開始するまでの手順は、以下のようになります。

(1) クライアントからサーバーへ接続を要求する
(2) クライアントからサーバーへ使用可能な暗号化手段のリストを通知する
クライアントによって暗号化に使用できるビット長などが異なるため、サーバーは複数の暗号化手段に対応しています。
(3) サーバーは、受信したリストから最も堅牢な暗号化手段を採択する
サーバーは、クライアントの通知してきた暗号化手段の中から、ビット長の最も長い方式を採択します。
(4) サーバーは使用する暗号化手段をクライアントへ通知する
(5) サーバーは署名付き認証書をクライアントへ提示する
(6) クライアントがサーバーの認証書を確認する
この段階で、通信相手となるサーバーの正当性を確認します
(7) サーバーの認証書からサーバーの公開鍵を取得する
(8) クライアントが共通鍵を生成する
(9) クライアントは、サーバーの公開鍵を使って生成した共通鍵を暗号化する
(10) クライアントは、暗号化した共通鍵をサーバーへ送信する
(11) サーバーは、クライアントから送られてきた共通鍵を復号化する

これ以降、クライアントが生成した共通鍵を使って暗号化通信を行います。


あとがき

サーバー認証と暗号化について、概要を紹介してきました。実際に暗号化通信を行うWebサイトを作る場合、プログラミング言語レベルでこれらの機能を実現しなければなりません。

例えば、Javaには証明書へのアクセスとその情報群を管理するためのCertificate API(java.security.cert)が用意されています。しかし、SSL対応のサーブレット・コンテナを利用すれば、APIを直接扱うことなく、認証と暗号化通信を実現するサーブレットが作成できます。

次回は、Javaサーブレットによる認証と暗号化の概要を紹介します。


トップページ
情報の隠蔽と暗号化
暗号化通信の2方式
認証とSSL
SSLによる暗号化通信
ブラウザに標準実装
認証から暗号化通信まで
あとがき

Copyright © GrapeCity inc. All rights reserved.