10年目のDeleGate

多目的応用プロトコル中継システム
「DeleGate」の開発
情報処理研究部門
佐藤豊
信条
役に立たない論文・特許より役に立つソフト
 二流の研究より一流のモノ作り
 小さく産んで大きく育てる
 持続的に成長可能なソフトウェア



産地直送ソフトウェア/顔の見えるモノ作り
桃李もの言わざれども下おのずから蹊をなす
DeleGateとは

インターネット用基盤ソフトウェア
• 多目的応用プロトコル中継システム(プロキシサー
バ)

10年前に電総研で生まれ、持続的成長
• 世界的な老舗プロキシサーバのひとつ

広く世界で使われている純国産プログラム
• 149ヶ国、2万6千以上の利用者サイト
DeleGateの概要

1994年生まれ・現在も成長中


多用途プロキシサーバ


HTTP,FTP,SMTP,POP,NNTP,Telnet,DNS,SOCKS,SSL,…
マルチプラットフォーム対応


アクセス制御、キャッシュ、経路制御、トンネリング、プロトコル変換、
サーバ統合、コンテンツフィルタ、コンテンツ変換、…
マルチプロトコル対応


小規模Gopher専用プロキシ(SunOS版)からの持続的な成長
Unix,Windows,OS/2,MacOS-X
配布形態・配布状況

オープンソース・フリーソフト、149カ国・26,000サイト
DeleGateの用途

インターネットの運用・サーバ構築・利用の支援





セキュリティの向上
性能向上・資源節約
安定性の向上
運用・管理の支援
付加価値実現の支援
ファイアウォール・アクセス制御
キャッシング
動的経路制御・負荷分散
プロトコル変換・サーバ統合
翻訳、暗号化、圧縮
セキュリティのためのDeleGateの利用例
攻撃者
サービス提供者
利用者
通信プロバイダ
利用例(産総研)

産総研ウェブサーバ

http://www.aist.go.jp/
• http://www.aist.go.jp/RIODB/
• http://www.aist.go.jp/GSJ/
• http://www.aist.go.jp/…

監視
ユニットごとに自由なサーバ運用


公開
更新・維持・運用が容易
内部サーバを統合して外部へ公開

一元的なアクセス制御・ログ監視
所内ウェブサーバ
総配布数: 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
瑞
洪
墺
中国
芬
韓国
白
米
亜
墨
国内への普及

大学



Ac.jp – 732大学、短大、高校、他
全大学(約700?)中、435大学(62%)
企業


Co.jp – 6435社
東証一部上場企業1507社中、502社(33%)
• 情報通信 64社中、47社(73%)
• 電気機器 149社中、92社(62%)

個人
開発状況:プログラム規模の推移
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
開発開始
現状と今後

実用ソフトとして要求される拡張・改良・修整の継続
• 従来の実装ベースの継続的拡張
• 根本的な作り直し?(実験ソフトから実用ソフトへ)

商用利用へのライセンス供与の開始

10年後以降の持続的成長のための新機軸の導入
• 10年後のセキュリティモデルを想定した基盤通信機能の検討
背景・動機・目標





必要に迫られて作り始めたソフトが他者にも有用
インターネットから受けた恩恵(フリーソフト)へのお
返し
基盤的ソフトウェアの輸入超過
ソフトウェア防衛(国産ソフトウェア技術の維持)
世界的に一線級のソフトの開発・輸出
DeleGateとは

一般的分類:多機能プロキシサーバ
• 「多目的アプリケーションプロトコル中継システム」

単純な原理:アプリケーションプロトコルを中継
• アプリケーション層のプログラム
• 中継する内容(プロトコル)を解釈しながら中継

多様な用途:中継時に様々な付加価値を実現
•
•
•
•
•
ファイアウォール(アクセス制御、フィルタリング)
高速化(キャッシュ)
プロトコル変換(暗号化、圧縮、…)
コンテンツ変換(翻訳、…)
仕様・実装の変化・不備の緩衝材・パディング
クライアント/サーバモデル

インターネット上の応用サービスの実現モデル


サーバは情報や機能を提供し、クライアントは通信を実行しながら
それを利用する
応用プロトコル



サーバ/クライアント間の要求・応答の手順とデータの形式
各々の応用サービスごとに規定される
HTTP,SMTP,FTP,…
プロキシサーバ

クライアントとサーバの間の通信を中継するサーバ

サーキットレベルプロキシ


単なるバイト列として要求と応答を中継 (SOCKS)
アプリケーションレベルプロキシ

応用プロトコルに固有な、要求と応答の手順とデータの形式を解釈
しながら中継
現状と今後

安定期
• ゆるやかな持続的成長
• 既存の実装ベースに果てしなく続く改良・修整
• ゆるやかな継続的普及

区切りの時期?
• 実用ソフト化して保守的に、機能的発展の減速
• 商用化への対処 (技術面、ライセンス面)
• 実験ソフトから実用ソフトへ、根本的な作り直し?

次の10年に向けて
• 新たな発展を求めて新機軸の模索
• 10年後以降のセキュリティモデルを考えて先行投資
10年目のDeleGate
情報処理部門
佐藤豊
要旨
最初の10年を振り返って(反省等)
 近況(最近始めたこと)
 今後10年の計画?
 その先の10年??

開発開始時の大目標

(未達成)
マルチプロトコルプロキシを題材にした研究

複数の応用プロトコルを統合サポート
• 共通要素の抽出、実装上の統合化・ライブラリ化
• プロトコル仕様の重複の整理






共通部分のサブプロトコル化提案
大統一プロトコルの設計
汎用プロトコルインタプリタ・生成系
文字列処理エンジン(分解・合成・適合)の実現
応用層上の多重化通信プロトコルの提案
…
各版での主な新規課題
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
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関数
インターネット上の応用サービス
の中継・変換・統合技術
プロキシサーバ「DeleGate」
産業技術総合研究所
情報処理研究部門
佐藤豊
http://www.delegate.org/
DeleGateの概要

1994年生まれ・現在も成長中


多用途プロキシサーバ


HTTP,FTP,SMTP,POP,NNTP,Telnet,DNS,SOCKS,SSL,…
マルチプラットフォーム対応


アクセス制御、キャッシュ、経路制御、トンネリング、プロトコル変換、
サーバ統合、コンテンツフィルタ、コンテンツ変換、…
マルチプロトコル対応


小規模Gopher専用プロキシ(SunOS版)からの持続的な成長
Unix,Windows,OS/2,MacOS-X
配布形態・配布状況

オープンソース・フリーソフト、148カ国・24,000サイト
DeleGateの多用途化の経緯








必要性
ファイアウォール越え
日本語非対応のブラウザ
低速な広域ネットワーク
不安定なネットワーク接続
IP的に不連続なネットワーク
内部サーバ群を外部へ提供
翻訳中継・画像圧縮中継
プライバシー保護
⇒
⇒
⇒
⇒
⇒
⇒
⇒
⇒
⇒
機能
アクセス制御付き中継
コード変換
キャッシュ
経路制御・迂回
トンネリング中継
サーバ統合
外部フィルタ呼び出し
暗号化通信
DeleGateの対応プロトコル












応用プロトコル
応用サービス
HTTP,ICP
ウェブ、キャッシュ
SMTP,POP,IMAP
電子メール
NNTP
電子ニュース
FTP
ファイル転送
SOCKS,VSAP
プロキシ中継
SSL
暗号化通信
DNS
ドメイン名検索
Telnet,X
遠隔端末
Tcprelay,Udprelay
単純中継
LDAP
ディレクトリサービス
Lpr
遠隔プリンタ
Gopher,Wais,CU-SeeMe,Ident
絶滅?
DeleGateのプログラム規模の推移
8年間に500回の改訂版リリース
140000
100000
97年1月
Windows
対応
80000
60000
40000
20000
02
年
3月
20
01
年
3月
20
00
年
3月
20
99
年
3月
19
98
年
3月
19
97
年
3月
19
96
年
3月
19
19
95
年
3月
0
94
年
3月
94年3月
開発開始
94年6月
配布開始
19
プログラムサイズ(行数)
120000
6月
20
02
年
6月
20
01
年
6月
20
00
年
6月
19
99
年
15000
6月
配布先サイト数
20000
19
98
年
6月
19
97
年
6月
19
96
年
6月
19
95
年
6月
19
94
年
DeleGateの配布状況(1)
+7サイト/日
25000
海外
国内
全体
10000
5000
0
DeleGateの配布状況(2)
140000
(配布元サーバからのダウンロードホスト数)
120000
100000
80000
60000
40000
20000
02
年
6月
20
01
年
6月
20
00
年
6月
20
99
年
6月
19
98
年
6月
19
97
年
6月
19
96
年
6月
19
95
年
6月
19
19
94
年
6月
0
クライアント/サーバモデル

インターネット上の応用サービスの実現モデル


サーバは情報や機能を提供し、クライアントは通信を実行しながら
それを利用する
応用プロトコル



サーバ/クライアント間の要求・応答の手順とデータの形式
各々の応用サービスごとに規定される
HTTP,SMTP,FTP,…
プロキシサーバ

クライアントとサーバの間の通信を中継するサーバ

サーキットレベルプロキシ


単なるバイト列として要求と応答を中継 (SOCKS)
アプリケーションレベルプロキシ

応用プロトコルに固有な、要求と応答の手順とデータの形式を解釈
しながら中継
プロキシサーバの種類別得失

サーキットレベルプロキシ(SOCKS等)




単なるバイト列として要求と応答を中継
実装が容易、全ての応用プロトコルに共通に適用可
中継以外の用途への発展性は乏しい
アプリケーションレベルプロキシ

応用プロトコルに固有な要求と応答の手順とデータの形式を理解して中継
実装が複雑(クライアントとサーバのサブセット機能×各プロトコル)
理解している内容にしたがってきめ細かな制御が可能

ただ中継するだけでなく、手順やデータの変換、フィルタ、統合ができる


⇒ 多様な付加価値サービスの実現可能性

DeleGateは両者を実現。後者の可能性を追及
ファイアウォール用プロキシ

プロキシの一般的な用途




クライアントサイト側での利用
アクセス制御付き中継
コンテンツキャッシュ
有害コンテンツ除去
サーバ統合プロキシ


複数のサーバを一つのサーバのように見せて提供する
サーバサイト側でのサーバ運用維持支援


各部門では独自にローカルにサーバを運用
• 内容の更新やログの管理が容易
各サーバを組織の代表サーバに統合し提供
要求の書き換え・転送
(プロトコル変換)
(応答のキャッシュ)
応答の書き換え・転送
コンテンツ変換プロキシ


プロキシが中継するコンテンツの変換
翻訳、通訳、圧縮、等、様々な応用
 変換機能を外付けするインターフェイスが必要
Hi,
どーも
翻訳
通訳
CFI:Common Filter Interface

プロキシに機能を外付けするインターフェイス


プロキシサーバ用CGI、のようなもの


コンテンツ変換、コンテンツフィルタ、プロトコル変換
外付けフィルタプログラム+CFIスクリプト
開発の背景・動機




DeleGateに付加価値を付けて商用利用する申し込み
組み込みだとライセンス上の問題が生じる(国有財産
…)
独立なプログラム同士として連携するだけなら無問題
CGI的な機能をプロキシに導入するとどうなるかに興味
CGI:Common Gateway Interface

動的コンテンツの提供


外部プログラムによる、
HTTPサーバの機能拡張
インターフェイス仕様

入力
• 環境変数
• プログラム引数
• 標準入力

出力
• 標準出力

プログラム記述言語


任意の言語
適用プロトコル

HTTP
CFI-CGIとの対比

付加価値サービスの提供


外部プログラムによる、プロ
キシサーバの機能拡張
インターフェイス仕様

入力
• 環境変数
• プログラム引数
• 標準入力

出力
• 標準出力、標準エラー出力

プログラム記述言語


任意の言語
適用プロトコル

任意のプロトコル
CFIの使用法

CFIスクリプト



適用フィルタの選択
ヘッダの加工
ボディの加工
#!cfi
Content-Type: text/
Filter: en2ja
-Content-Type:image/gif
Filter: gif2jpeg

フィルタの挿入位置

--
要求フィルタ・応答フィルタ・双方向フィルタ
CFIによる暗号化プロキシの実現


任意のSSL非対応プロトコル、SSL非対応クライ
アント/サーバを、SSL対応に
SSL用フィルタは、CFIにより接続(OpenSSL使用)
CFIの利点
単純・普遍的なインターフェイス仕様
 任意の記述言語でフィルタを実装できる
 既存ソフトをフィルタとして再利用が容易
 DeleGateを改変せず利用可・独立な頒布
 栄枯盛衰する基盤技術からの独立

応用プロトコル
 記述言語

コンテンツ変換の応用実例

日本語コード変換

JIS,Shift_JIS,EUC-JP,UTF-8

SSL暗号化中継

英日翻訳中継


画像圧縮変換中継



O社、S社、 農水省農業生物資源研究所*
H社
大阪弁変換フィルタ*
携帯端末用コンテンツ圧縮・分割フィルタ