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