プロキシキャッシュ

「機密データの安全なキャッシングを可能とする Web 認証方式の開発と評価」
Development of a New HTTP Authentication Scheme Useful for Secure Proxy Caching
中野 裕彦、桑田 成規、松村 泰志、揚 振君、紀 山マイ、武田 裕
(第20回 医療情報学連合大会 抄録)
1、はじめに
電子カルテシステムが保持するデータを、他院からブラウザで閲覧できるシステムを計画している。
レスポンスの良い閲覧サービスを提供すると同時に、プライバシー保護も厳守したい。データのキャ
ッシングは、レスポンスの向上に有効であるが、キャッシュからデータが漏洩するおそれがある。我々
は、電子カルテ情報のような機密性の高いデータを安全にキャッシングする方法を検討した。
ブラウザには、アクセスしたデータをディスクにキャッシングする機能がある。しかし、ユーザが使
用するパソコンに電子カルテ情報を保存するのは危険である。SSL を用いて Web サーバにアクセスし
ても、キャッシングされるデータは暗号化されない。ディスクの内容を調べることで、容易にデータ
を覗き見ることができる。
電子カルテ情報のキャッシングには、プロキシサーバが有効である。プロキシサーバは、大量のデー
タをキャッシングすることができ、キャッシュを複数のブラウザで共有できる。キャッシュのセキュ
リティ管理を厳格に行うことも可能である。しかし、プロキシサーバのキャッシング機能を利用する
場合、パスワードや機密データを安全に送信する手段として SSL を利用できない。
我々は、
(1)パスワード漏れのないユーザ認証と、
(2)暗号化によるデータの保護と、(3)プロキ
シサーバによるデータのキャッシングを可能とする、HTTP の新しい認証方式を開発した。本認証技
術とプロキシサーバを利用することで、電子カルテ情報の安全で快適な閲覧サービスが実現できる。
本論文では、認証方式の概要と、実験システムを用いた性能評価を報告する。
2、認証方式の概要
本認証方式を実装したブラウザと Web サーバが行う処理内容を概説する。安全な通信を実現するため
に、本認証方式は、ハッシュ関数がもつ以下の性質を利用する:
秘密のデータ S と公表されているデータ P から構成されるデータに、ハッシュ関数を適用してダイジ
ェスト D を生成した時、
性質1: D と P から、S を推測できない。
性質2: P だけから、D を推測できない。
性質3: S と異なるsを用いて生成したダイジェストdが、D と等しい可能性はほぼゼロである。
2、1 パスワード漏れのないユーザ認証
ブラウザは、リクエストに Authorization ヘッダを添付して、Web サーバに送信する。Authorization
ヘッダには、認証方式名(X-Crypt)
、ユーザ名、レルム名、セッション ID、メソッド名、URL、ダイ
ジェストが含まれる。ダイジェストの計算には、ユーザが入力したパスワードと、ヘッダに含まれる
1
データを利用する。ハッシュ関数の性質1から、第 3 者がパスワードを推測するのは困難である。
Web サーバは、Authorization ヘッダに含まれるユーザ名とレルム名をキーとして、登録パスワード
を検索する。登録パスワードを利用して、ブラウザと同じ方法でダイジェストを計算する。
Authorization ヘッダのダイジェストと値が等しければ、ユーザが正しいパスワードを入力したことが
確認できる(性質3)。
2、2 データの暗号化と暗号鍵の配送
Web サーバは、データを暗号化して送信する。まず、データの暗号化に用いる鍵 EK と、EK の暗号
化に用いる鍵 SK を生成する。SK で EK を暗号化し、その値を Pragma ヘッダに記録してブラウザに
送信する。
EK には、Web サーバが保持する秘密の値 X とデータの ETag 値から計算されるダイジェストを利用
する。SK には、ユーザ名、レルム名、パスワード、セッション ID から計算されるダイジェストを利
用する。ハッシュ関数の性質2から、暗号鍵 EK を推測するのは困難である。同様に、パスワードを
知らない第 3 者が SK を推測するのは困難である。SK で EK を暗号化することで、安全に暗号鍵 EK
をブラウザに配送できる。
Web サーバは、まずレスポンスのヘッダ部分を送信し、引き続きデータの暗号化と送信を行う。デー
タを小さなブロックに分割し、暗号処理と送信処理をパイプライン化することで、データ転送に要す
る時間を削減する。ブラウザは、Web サーバと同じ方法で SK を計算し、暗号化された EK を復号化
する。そして、EK を用いてデータの復号化を行う。
2、3 プロキシサーバによるキャッシング
Web サーバは、"public"と"must-revalidate"指示子をレスポンスの Cache-Control ヘッダに設定する。
これにより、プロキシサーバにデータをキャッシングさせることができる。プロキシサーバは、必要
なデータがキャッシュに存在する場合でも、リクエストを Web サーバに転送する。
Web サーバは、ユーザ認証を行った後、前節で説明した方法で EK と SK を生成し、SK で EK を暗号
化した値を Pragma ヘッダに記録する。そして、ヘッダ部分のみのレスポンスをプロキシサーバに返
送する。プロキシサーバは、キャッシュに存在するデータをレスポンスに追加して、ブラウザに返送
する。ブラウザは、前節と同様に EK の復号化、EK を用いたデータの復号化を行う。
2、4 認証方式変換プロキシ
一般のブラウザでも本認証方式を利用できるようにするために、Basic 認証を本認証方式に変換するプ
ロキシを開発した。変換プロキシは、次のトリックを行う:(1)WWW-Authenticate ヘッダに含ま
れる認証方式名「X-Crypt」を「Basic」に書き換える。(2)ブラウザが作成した Basic 認証用の
(3)Web サーバが暗号化
Authorization ヘッダを、本認証方式の Authorization ヘッダに変換する。
したデータを復号化して、ブラウザに転送する。
2
3、実験システムの構築と性能評価
図1に、実験システムの構成を示す。3台の PC(Pentium3 500MHz、RAM:128MB、OS: Linux)
を、速度が異なる2つのハブで接続した。100Mbps は他院の LAN を、10Mbps は本院との接続回線
を想定している。Web サーバには、本認証方式を実装した Apache を使用した。暗号は DES、ハッシ
ュ関数は MD5 を使用した。プロキシサーバには Squid を使用した。ブラウザは、認証方式変換プロ
キシを経由してサーバにアクセスする。
1MB のデータアクセスに要する時間を測定した(表1)
。測定結果から、プロキシサーバによるキャ
ッシングはアクセス性能の向上に有効であり、本認証方式を利用してセキュリティ強化を図った場合
でも、そのオーバヘッドは小さいことが確認できた。
表1 アクセス性能の比較(データサイズ:1MB)
Proxy Caching 使用
Proxy
不使用
キャッシュ・ミス ヒット
認証なし 1150
ms 1190 ms 200 ms
認証あり 1150
ms 1190 ms 350 ms
4、結論
機密データを安全にキャッシングする技術を開発した。電子カルテ情報の閲覧サービスに適用したい。
電子カルテ情報の交換規約の成立には、まだ時間がかかる。Web による閲覧サービスの提供は、病院
間で電子カルテ情報を共有する方法として現実的であろう。
参考文献
[1] R. Fielding et al., "Hypertext Transfer Protocol -- HTTP/1.1", RFC2616, June 1999.
[2] J. Franks et al., "HTTP Authentication: Basic and Digest Access Authentication", RFC2617,
June 1999.
図1 実験システムの構成
X-Crypt 認証
Basic認証
ブラウザ
(Navigator)
認証方式
変換プロキシ
PC (OS: Linux)
Webサーバ
(Apache)
プロキシサーバ
(Squid)
PC (OS: Linux)
100Mbps
キャッシュ
3
PC (OS: Linux)
10Mbps
公開
データ