10年目のDeleGate

10年目のDeleGate
情報処理部門
佐藤豊
要旨
最初の10年を振り返って(反省等)
 近況(最近始めたこと)
 今後10年の計画?
 その先の10年??

DeleGateとは

一般的分類:多機能プロキシサーバ
• 「多目的アプリケーションプロトコル中継システム」

単純な原理:アプリケーションプロトコルを中継
• アプリケーション層のプログラム
• 中継する内容(プロトコル)を解釈しながら中継

多様な用途:中継時に様々な付加価値を実現
•
•
•
•
•
ファイアウォール(アクセス制御、フィルタリング)
高速化(キャッシュ)
プロトコル変換(暗号化、圧縮、…)
コンテンツ変換(翻訳、…)
仕様・実装の変化・不備の緩衝材・パディング
開発開始時の大目標

(未達成)
マルチプロトコルプロキシを題材にした研究

複数の応用プロトコルを統合サポート
• 共通要素の抽出、実装上の統合化・ライブラリ化
• プロトコル仕様の重複の整理






共通部分のサブプロトコル化提案
大統一プロトコルの設計
汎用プロトコルインタプリタ・生成系
文字列処理エンジン(分解・合成・適合)の実現
応用層上の多重化通信プロトコルの提案
…
DeleGateの概要

1994年生まれ・現在も成長中


多用途プロキシサーバ


HTTP,FTP,SMTP,POP,NNTP,Telnet,DNS,SOCKS,SSL,…
マルチプラットフォーム対応


アクセス制御、キャッシュ、経路制御、トンネリング、プロトコル変換、
サーバ統合、コンテンツフィルタ、コンテンツ変換、…
マルチプロトコル対応


小規模Gopher専用プロキシ(SunOS版)からの持続的な成長
Unix,Windows,OS/2,MacOS-X
配布形態・配布状況

オープンソース・フリーソフト、149カ国・26,000サイト
DeleGateの近況

安定期
• ゆるやかな持続的成長
• 既存の実装ベースに果てしなく続く改良・修整
• ゆるやかな継続的普及

区切りの時期?
• 実用ソフト化して保守的に、機能的発展の減速
• 独法化・商用化への対処
• 実験ソフトから実用ソフトへ、根本的な作り直し?

次の10年に向けて
• 新たな発展を求めて新機軸の模索
開発状況:プログラム規模の推移
140000
v1
v2
v3
v4
v5
v6
v7
v8
プログ ラ ムサイ ズ (行数)
120000
02年12月
SockMux
100000
97年1月
Windows
対応
80000
01年2月
実験的コード
削除
60000
40000
20000
94年6月
配布開始
95年10月
Mimekit
9年間に520回の改訂版リリース
20
03
年
3月
20
02
年
3月
20
01
年
3月
20
00
年
3月
19
99
年
3月
19
98
年
3月
19
97
年
3月
19
96
年
3月
19
95
年
3月
19
94
年
3月
94年3月
0
開発開始
各版での主な新規課題
V.0 1994
 V.1 1994
 V.2 1995
 V.3 1996
 V.4 1997
 V.5 1998
(成長期?)

Gopher(go-far)
HTTP, 文字コード変換, 殆どの基本機能実験着手
NNTP, FTP, 各種Unix移植
Mount実用化, originサーバ化着手, CFI着手
Windows移植開始
暗号化プロキシ機能(SSLway), SMTP
V.6 1999 バッファ溢れ検出・停止機能, マニュアル整備
 V.7 2001 プロキシ認証機能, XSS対応
 V.8 2002 セキュリティ関連仕様変更、SockMux着手
(成熟期?停滞期?)

実装コード量の機能別分類

58% プロトコル共通
•
•
•
•
•
•
•
•

6.1%
4.3%
4.1%
3.6%
3.5%
3.2%
3.2%
1.9%
移植関連(プラットフォーム依存)
MOUNT機能
アクセス/経路制御機能
ホスト名リゾルバ
INET (IPアドレス・ソケット依存)
外部フィルタ機能
MIMEフォーマット処理
文字コード変換
42% プロトコル固有
• 12.2% HTTP
• 7.6% NNTP
• 5.2% FTP
• 2.7% SMTP
• 1.3% SOCKS
• 1.2% Telnet
•
•
•
•
•
•
1.1%
0.8%
0.8%
0.6%
0.5%
0.1%
SockMux
ICP
POP
Gopher
LDAP
IMAP
総配布数: 26,270
ソース配布: 20,555
Windows版: 14,285
配布状況(2003年4月)
配布先サイト数
30000
新規サイト
10サイト/日
01年9月
産総研Firewall
PASV不可に
non-jp
jp
total
25000
20000
新規サイト
15サイト/日
15000
FreshMeat登録
(主にLinux向け)
10000
Windows版
6月
20
03
年
6月
20
02
年
6月
6月
20
00
年
6月
19
99
年
6月
19
98
年
6月
19
97
年
6月
19
96
年
19
95
年
6月
0
6月
99年11月
BugTraq
LinuxG
azzete
20
01
年
5000
19
94
年
自宅サーバに切り替え
PASV可・匿名可に
トップドメイン別配布先サイト数

Jp







10,341
6435
1986
732
259
168
131
630
co
or,ne
ac
gr
go
ad
*

非jp









(2003年4月末現在)
15,929
4124
2425
359
337
55
35
com
net
org
edu
mil
gov
5 biz
5 info
4 int















1051
1019
500
367
356
343
340
217
197
196
196
172
166
166
159
de
ru
fr
au
it
br
uk
ca
nl
se
pl
cz
es
ua
tw
独
露
仏
濠
伊
伯
英
加
蘭
瑞
波












西


台湾

158
140
135
134
128
111
98
98
92
92
90
85
76
71
68
ch
hu
at
cn
ro
fi
kr
be
us
ar
no
dk
za
nz
mx
瑞
洪
墺
中国
芬
韓国
白
米
亜
墨
DeleGateが選ばれる理由?

以下全てを満たす唯一のプロキシサーバ?

マルチプロトコル
• ほとんどの基盤的プロトコルをカバー

多機能
• ひととおりのことはできる

マルチプラットフォーム
• どこでも走る(Unix,Win,Mac)



オープンソース・フリーソフト
純国産・日本語によるサポートを期待?
特徴的機能

マウント、経路制御、外部フィルタ
DeleGateが選ばれない理由(反省点・課題)

とっつきにくさ
• 未整備なドキュメント・設定例、FAQ無し
• 設定・管理用GUI・対話的IF無し (⇒外付け可)

セキュリティ問題
• バッファオーバフロー可能性

(⇒委託可)
ライセンスが不明確
• 歴史的事情・内部事情もあって

いずれの機能も未完成・非最適
• 最適ソフトは別にある
最初の10年を振り返って

10年前には現在を予想・予測困難
• ドッグイヤーだったし

予想以上・以下・予想外
• DeleGate
• 社会状況

背景の変遷・動向
• 次の10年をどのような前提で考えるか?
予想以上・以下の状況(DeleGate)

予想程度の普及度
• インターネットの膨張にほぼ伍して

予想以下の技術的進展
• 初期に構想したものの域を出ていない

成長力の減衰
• 実用システムとしての安定性に縛られる
• とにかく作ってみる、ことが減少 (蛮勇力の低下)
予想外の状況(社会的背景)

応用層の意外な安定
• HTTPの発展収束・FTP等既存プロトコルとの共存
• プロキシ対応の仕様変更無し

物理層の劇的な発展
• 光ファイバか家庭に
• 携帯でインターネット

・・・共有キャッシュ必要性の減少
・・・圧縮変換プロキシの必要性
OS / コンピュータの変遷
• Windows, Linux の隆盛
• PCの普及、WSの衰退
基盤的応用プロトコルの栄枯盛衰(DeleGateの今後)

古典的・不死身?



新興・安定化


HTTP, SOCKS, SSL, LDAP
衰退傾向?


SMTP, FTP, Telnet (インターネット最古)
DNS, POP, IMAP
NNTP, ICP, X, CU-SeeMe?
絶滅

Gopher, WAIS, Ident
現状の応用プロトコルの問題(マッチポンプ?)

FTPデータコネクション
• データ転送用TCPコネクションの繰り返し接続
• 不必要に高機能な仕様が、セキュリティ上の問題の根源に

HTTPコネクション再利用(Keep-Alive)
• リクエスト毎のくり返し接続
• 場当たり的な解決で、不完全(並列性無し)

それぞれに直接にIP上に乗ってるが故の問題
• たてわりの弊害、一国一城。横断的技術調整組織なし。
• 本来、共通に解決可能

応用プロトコルに共通の解決手段
• 並列セッション、圧縮、暗号化
• 共通化の動きも:MIME形式、認証プロトコル等
SockMuxプロトコル

アプリケーション層の多重化通信メディア
•
•
•
•

アプリケーションプログラム間を繋ぐ
API:Socketインターフェイス互換
下位層(TCP)の永続的コネクション上を利用
PPPのようなもの?IRC?
当面の実際的応用
• トンネリングプロトコル
• FTPデータ、HTTPデータ、…効率的転送

SockMuxで構成される仮想ネットワークへ
VIABUS再興?
1991年頃開発
 アプリケーション層上の通信メディア

• アプリケーション間の可変長メッセージ通信
• コンテンツによるアドレス(パターンマッチ)
• マルチキャスト
App.
App.
VIABUS
App.
次の10年間の課題








バッファオーバフローの根絶(別の記述言語)
設定用インターフェイス(フォーム、言語)
商用化
SockMux(のようなプロトコル)
大統一プロトコル?
テストケースの自動生成
共有ライブラリ、ツールキット化
形式記述+生成系へ
10年後以降のDeleGate?

セキュリティ技術の今後
• フィルタリング vs. 暗号化の衝突

古典的ファイアウォール技術の衰退
• 暗号化通信の普及により、通過コンテンツ不可視に
• 現状でもHTTPS/SSLプロキシがあれば何でも通せ
てしまう
• 物理的単位(ネットワーク、ホスト)での防御の限界
10年後以降のDeleGate?

仮想ファイアウォール
• 仮想プライベートマシン(VPM入れ子)
• 仮想プライベートネットワーク(階層的) ←SockMux

データの署名に基づくアクセス制御
• 全てのデータ(入れ子)が、作成者の署名付きに
• 仮想プライベートマシンを出る時に自動署名付与
• データの仮想マシンへの出入り許可を署名に基づい
て制御
おしまい

・・・
インターネットのセキュリティ技術

隔離・隔絶


フィルタリング (⇒ ファイアウォール)






(コンテンツレベルの隔離・隔絶)
送信・中継・受信モデル-内容の盗聴と偽造を防ぐ
ネットワークレベル :IPsec
応用レベル:SSL,SSH,S-HTTP,PGP,S/MIME,…
監視・検出


外側と内側モデル-外から内を守る(通信の監査・検閲)
ネットワークレベル:ルータ/パケットフィルタリング
応用レベル:プロキシ/応用メッセージプロキシ/応用メッセージ
暗号化・認証


(ネットワークレベル)
プライベートアドレス、VPN
パケット監視 (IDS)、ログ監視、ウィルス走査
セキュリティホール対策 (バグの悪用防止)


発生防止: 言語仕様、コンパイラ、実行時検査、…
悪用防止: アドレスランダム化、繰り返し試行防止、…
SockMux 動機

FTP, HTTP, SMTP, …
• 共通の並列セッション・データ転送手段

アプリケーション層の多重化通信
• トンネリングのための実現手段
• 接続の繰り返しコスト削減効果

仮想ネットワークの構成
• 応用層VPN
• VIABUS(1991)
SockMux実装法(普及法)
既存の応用プログラムへの適用支援
 Socket関数の置き換え

• Connect関数他 (SOCKSと同様)
• マクロ+静的ライブラリ / 動的ライブラリ

入出力関数の置き換え
• Read/write関数、send/recv関数