インターネットにおける パーソナルネットワークの構築 光来健一* 千葉滋**,*** *東京大学 **東京工業大学 ***さきがけ21
ネットワーク利用形態の変化 複数のネットワークを利用 P2P(peer-to-peer)通信を利用 大学、自宅、出張先… それぞれのネットワークは閉鎖的 P2P(peer-to-peer)通信を利用 Gnutellaなど 公開サーバとの通信だけではない インターネット PC ネットワークA ネットワークB
位置情報に基づくアクセス制御 従来は位置情報(IPアドレス)に基づいてアクセス制御を行っていた 組織毎のアクセス制御に適する ユーザが複数のネットワークを利用する場合に問題が生じる リモートログインして利用するのは不便 アクセス制御には固定のグローバルIPが必要 DHCPによる動的割り当てやプライベートアドレス
ユーザ中心のネットワークの必要性 ユーザ情報に基づいてネットワークの利用を制御すべき ユーザの概念はOSの他の部分では使われている ネットワークトポロジに縛られず、利用できるネットワークの全ての能力を使える あたかもそのネットワーク内にいるかのように IPよりきめ細かなアクセス制御ができる 一台のホストを複数ユーザで使う場合など
ユーザ中心のネットワークで 実現できる世界 リモートネットワークのサービスを使える ローカル・ウェブページの参照 高速ネットワークの利用 ユーザに基づく新たなネットワークを構築できる 別々のファイアウォール内のホスト同士の通信 複数ユーザで仮想サブネットを構築 リモートネットワーク ウェブサーバ 低速ネットワーク ネットワークA 仮想サブネット PC ユーザA ユーザB PC ネットワークB
パーソナルネットワークの提案 仮想プライベートネットワーク(VPN)にユーザの概念を取り入れたもの ユーザ専用の仮想ネットワークを構築 ユーザ毎にネットワーク資源を割り当てる ユーザ毎にネットワークの設定を行える 経路上のホストはユーザ毎に異なる中継をする ゲートウェイ サーバ1 ユーザA B C サーバ2 拒否 クライアント リモートネットワーク
ネットワーク資源のパーソナライズ 特定のユーザにしか使えない仮想ネットワークを張ることができる ユーザID、ユーザの証明書で利用を制限 ユーザ毎に通信路を暗号化 組織内の通信路も暗号化する 通信相手ごとにネットワークポートに割り当てるサービスを変更できる 同一のポート80番で別々のウェブサーバ
ネットワーク設定のパーソナライズ ユーザ毎(プロセス毎)に異なるネットワーク設定ができる ルーティングテーブル ユーザが最適な経路を選択できる IPアドレス、ホスト名、ドメイン名 構成する仮想ネットワークに合わせて変更できる サーバ設定、ドメイン名の検索順序 ユーザレベルでのネットワーク関連処理も変更できる
ゲートウェイのパーソナライズ ユーザ認証に基づいてパケットを中継する 通信相手によってパケットの中継先を変える 同一ポートであっても別々のサービスに中継可能 許可されたユーザからのパケットはファイアウォールを超えられる 仮想的にリモートユーザの役割を演じる パケットの送信元アドレスを変換する ゲートウェイのアドレスまたはユーザ専用の内部アドレス 従来のIPによるアクセス制御が使える
信頼できないユーザとの通信 通信相手ごとに異なるパーソナルネットワークを使うことができる 安全性への配慮 通信相手ごとに異なる仮想ネットワークを使う 通信に関与しているプロセスを他のプロセスやネットワークから分離する 盗聴できる ホストA ホストB
信頼できないユーザとの通信 通信相手ごとに異なるパーソナルネットワークを使うことができる 安全性への配慮 通信相手ごとに異なる仮想ネットワークを使う 通信に関与しているプロセスを他のプロセスやネットワークから分離する 干渉できない 盗聴できない ホストA ホストB
実装 パーソナルネットワークを使って直接通信できないホスト間のプライベート通信を実現 実装した機能 双方共にファイアウォール内にある、または、プライベートアドレスしか持たない場合 実装した機能 SSLのカーネルサポート ゲートウェイでのユーザ認証に基づく中継
SSLのカーネルサポート 機能 API 証明書を用いたユーザ認証 通信路の暗号化 setsockopt(SO_USE_SSL) ...SSL利用宣言 certctl …証明書登録 connect/accept ...SSLネゴシエーション write/read, send/recv ...暗号化・復号化
カーネルサポートの利点 アプリケーション透過にできる ユーザ単位でSSLセッションを再利用できる セッション確立の性能改善 fork/execしてもSSLセッションを継続できる forkしてもセッション管理の整合性がとれる ライブラリレベルでの対応ではexecによってセッション情報が失われる
acceptの実装 サーバ側はカーネルスレッドを使ってSSLネゴシエーションを行う acceptは確立したコネクションをキューから取り出す コネクション確立と同時に別の通信を行う場合に対応 UNIXではacceptを発行しなくてもコネクションが確立する カーネルスレッド ユーザスレッド connect(s) (SSLconnect) SSLaccept write(s0) read(s0) accept(s) クライアント サーバ
ゲートウェイのSSLルーティング ユーザ認証に基づいてSSLセッションを中継する 内部ユーザが中継ルールを登録できる ユーザ証明書による制限つき ゲートウェイ kourai 10080 80 セッション1 復号化 暗号化 セッション2 host B host A 登録 port 10080 hostB:80 user kourai
2つのSSLセッションの結合 クライアント-ゲートウェイ間、ゲートウェイ- サーバ間のセッションを1つに結合 復号化・暗号化のオーバヘッドを減らす ゲートウェイで通信内容の解析を行える ①セッション1の情報を送る セッションID 暗号方式 マスター鍵 : セッション1 セッション2 クライアント ゲートウェイ サーバ セッション1 ②仮想セッションを作る 復号も可能
実験 パーソナルネットワークを通してSSLを使った場合の性能を測定した 実験環境 SSLセッションの再利用による性能改善 OpenSSL 0.9.6 SSLv3, RSA 1024bit, 3DES, SHA1 PentiumIII 733MHz 3台 100Mbpsイーサネット Linux 2.4.2上のユーザプログラム
実験結果 SSLセッションの再利用による性能改善 SSLセッションの結合による性能改善 大幅な改善 コネクションが頻繁に張られる場合に有効 1.7倍の性能向上 復号化・暗号化が大きなボトルネック 表1:セッションを確立するまでに かかる時間 表2:セッション結合の有無による スループットの差 msec 再利用しない 60 再利用する 1 Mbps 結合しない 3.9 結合する 6.5
関連研究(1/2) IPsec [RFC 2401] PPTP [RFC 2637] SSLプロキシ/sshポート・フォワーディング ホスト全体がリモートネットワークに参加し、ユーザ単位での制限はできない PPTP [RFC 2637] PPP接続時にはユーザ認証を行うが、その後は誰でも使えるネットワークになる SSLプロキシ/sshポート・フォワーディング 暗号化通信路の確立時にはユーザ認証を行うが、その後は誰でも使えるポートになる
関連研究(2/2) 多重通信クラス [廣津ら’00] Active Network [Tennenhouse et al.97] VLANを使ってトポロジの観点からネットワークを分割し、複数の仮想ネットワークを構築できる Active Network [Tennenhouse et al.97] 経路上の各ノードにプログラムを送り込むことで、パケット毎に中継の仕方を変えられる FreeBSD jail 各サービスを一種のVMで動かせる
まとめ パーソナルネットワークを提案した 直接通信できないホスト同士のプライベート通信を可能にした 仮想プライベートネットワークにユーザの概念を追加 直接通信できないホスト同士のプライベート通信を可能にした SSLのカーネルサポート ゲートウェイでのユーザ認証に基づく中継 パーソナルネットワークを通してSSLを使うことにより、性能が改善することを確かめた
今後の課題 実現できていない機能を実装する ユーザ毎のネットワークポート空間の分離 ネットワーク設定のパーソナライズ いかに安全に整合性のとれる形でユーザにネットワークの設定を許すか ユーザレベルのネットワーク設定をどのように変更させるか 通信しているプロセスの隔離