インターネットにおける

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