特定ユーザー のみが利用可能な仮想プライベート・ネ

特定ユーザーのみが
利用可能な仮想プラ
イベート・ネットワーク
宇崎央泰(東京工業大学)
千葉滋(東京工業大学)
光来健一(NTT未来ねっと研究所)
1
仮想プライベートネットワーク(VPN)

共有ネットワーク上に、ホスト同士を直接つな
ぐネットワークを仮想的に構築する技術
Passwd=
4871
3582
4871
4871
?
インターネット
2
VPNの利用形態 (誰が利用可能か?)

ネットワーク間接続型
 接続されたネットワーク内の、全てのホストがVPNを
利用可能
インターネット

ホスト間接続型
 直接接続された2つのホストだけがVPNを利用可能
3
より細かな制限が必要な場合

マシンを多数のユーザと共有している場合
 構築したユーザだけが利用可能なVPN
 既存VPNにはユーザ個々に対してアクセス権限を
設定するという概念がない

同一ホストからであれば、全てのユーザが使えてしまう
uzaki
kourai
process
process
アカウント所持
kourai:両方のサーバ
uzaki:東工大サーバのみ
web server
process
NTT未来ねっと
東工大サーバ
研究所サーバ
4
現実的な対処

アプリケーション毎にVPNを構築
 SSL(Secure
Socket Layer)
 問題点
個々のアプリケーションが対応しなければならない
 アプリケーション毎にセッションを確立しなければなら
ず、資源を浪費しがち


最初の認証は重い
uzaki
kourai
process
process
web server
process
NTT未来ねっと
東工大サーバ
研究所サーバ
5
パーソナルVPN(PVPN)の提案

IPパケットごとにユーザ認証を行うVPN

VPNの入り口でOSがユーザ認証を行う
uzaki
kourai
process
process
東工大サーバ
web server
process
NTT未来ねっと
研究所サーバ
6
直接通信できないホスト間での
PVPN構築

互いのホストがプライベートIP、ファイアウォール内
に存在
 信頼できる中継ホストが必要
 ホスト間にPVPNを構築し、一本のPVPNになるように
ルーティング
ファイア
ウォール
直接通信できない
uzaki
uzaki
インターネット
process
ローカル
ネット
プライベートIP
process
ローカル
ネット
7
プライベートIP
中継ホストがPVPNを構築すると
きのユーザ認証

中継ホストはPVPN構築時のユーザ認証も中継
 中継のホストにプライベートキーを置かないため
中継ホストすべてにプライベートキーを置くのは手間がか
かる
 さまざまなホストにプライベートキーを置くのは危険

8
PVPNの実装

Linuxカーネル2.4.9に実装
 暗号化とユーザ認証
 PVPNへのIPパケット送信処理
 PVPNからのIPパケット受信処理
 PVPNの連結(未実装)
9
暗号化と認証の実装方法

SSLによる暗号化
 カーネルレベルで利用できる

SSL [光来’01]を実装
LibraryはOpenSSL
 PVPN構築時にサーバ・ホストを認証

ユーザの認証
 SSL通信路作成後、RSAによるユーザ認証をSSL
上で行う
10
PVPNへの送信

IPパケットの送信処理を行う関数に以下を追加
 送信先IPアドレスから利用するPVPNを決定
 IPパケットの送信ユーザチェック
 ユーザ認証後IPパケットをPVPNに流す
kourai
process
uzaki
process
OS
IPパケット
PVPN
IPパケット
11
PVPNからの受信


PVPNを通ってきたIPパケットをIP層に渡す
応答パケットを適切なPVPNに流す
 受信側もPVPNを利用できるとは限らない

送信プロセスと受信プロセスのユーザが同じとは限らない
kourai
process
同じユーザとは限らない
web server
process
インターネット
OS
OS
12
ユーザレベル版PVPNによる実験

Divert socket を使った実装
 PVPN
のオーバーヘッドを計測
WebStoneベンチマークを利用
 Web server のスループットと平均レスポンスタイム

 以下の3つについて計測
サーバーとクライアントが直接通信:Normal
 PVPNを通して通信(暗号化無し):Noencrypt
 PVPNを通して通信(暗号化有り):Encrypt

13
実験結果

PVPNを使うと10倍から数百倍遅くなる
 100倍以上遅い場合は、タイムアウトによるパ
ケットの再送が頻繁に発生していた
 IPパケットインターセプトのオーバヘッドが大きい

FileSize
(Kbyte)
実装をカーネル内に行うことで改善可能
実験環境
Client
PentiumⅡ400MHz
Memory 384MB
グラフ:Throughput
1000
Normal
Noencrypt
Encrypt
10
1
100
1000
10000 (Kbyte/sec)
Server
AthlonXP1800+
Memory 640MB
100Mbpsのイーサネット
14
カーネル版PVPN (実装中)

PVPNを利用したUDP通信のスループットを計測
 実験環境
 ユーザレベル版と同じ
 IPパケットのサイズは1052バイト

結果
 PVPNを利用:0.052Mbyte/sec
 カーネルレベルSSLによるTCP通信:1.24Mbyte/sec
 通常のUDP:6.2Mbyte/sec
 PVPNのオーバーヘッドにより速度は約25倍遅くなる
 チューニングが必要
15
関連研究

IPsec
 VPN構築のときホスト間の認証が行われる

L2TP
 トンネル構築時にPAP、CHAPなどによるユーザ
認証

SSHのポートフォワーディング
 SSHでログインするときにユーザの認証を行う
16
まとめ

パーソナルVPNを提案し、その機能の一部を
Linuxカーネルに実装した
 IPパケットごとにユーザ認証を行うVPN

OSがユーザ認証を行う
 直接通信できないホスト間でもPVPN構築可能
信頼できる中継ホストがルーティング
 ユーザ認証は中継ホストでは行わない

17
今後の課題
カーネルへの実装を行ったが、まだうまく動
作しない部分やパフォーマンスに問題がある
ので、改善する
 PVPNの連結は設計はできているが、まだ未
実装なので、実装を行う

18