多目的応用プロトコル中継システム 「DeleGate」の開発
DESCRIPTION
多目的応用プロトコル中継システム 「DeleGate」の開発. 情報処理研究部門 佐藤豊. 信条. 役に立たない論文・特許より役に立つソフト 二流の研究より一流のモノ作り 小さく産んで大きく育てる 持続的に成長可能なソフトウェア 産地直送ソフトウェア/顔の見えるモノ作り 桃李もの言わざれども下おのずから蹊をなす. DeleGateとは. インターネット用基盤ソフトウェア 多目的応用プロトコル中継システム( プロキシサーバ ) 10年前に電総研で生まれ、持続的成長 世界的な老舗プロキシサーバのひとつ 広く世界で使われている純国産プログラム - PowerPoint PPT PresentationTRANSCRIPT
多目的応用プロトコル中継システム「DeleGate」の開発
情報処理研究部門佐藤豊
信条 役に立たない論文・特許より役に立つソフ
ト 二流の研究より一流のモノ作り 小さく産んで大きく育てる 持続的に成長可能なソフトウェア
産地直送ソフトウェア/顔の見えるモノ作り 桃李もの言わざれども下おのずから蹊をなす
DeleGateとは インターネット用基盤ソフトウェア
• 多目的応用プロトコル中継システム(プロキシサーバ)
10年前に電総研で生まれ、持続的成長• 世界的な老舗プロキシサーバのひとつ
広く世界で使われている純国産プログラム• 149ヶ国、2万6千以上の利用者サイト
DeleGate の概要 1994 年生まれ・現在も成長中
小規模 Gopher 専用プロキシ( SunOS 版)からの持続的な成長 多用途プロキシサーバ
アクセス制御、キャッシュ、経路制御、トンネリング、プロトコル変換、サーバ統合、コンテンツフィルタ、コンテンツ変換、…
マルチプロトコル対応 HTTP,FTP,SMTP,POP,NNTP,Telnet,DNS,SOCKS,SSL,…
マルチプラットフォーム対応 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/…
ユニットごとに自由なサーバ運用 更新・維持・運用が容易
内部サーバを統合して外部へ公開 一元的なアクセス制御・ログ監視
所内ウェブサーバ
公開 監視
配布状況 (2003年 4月 )
0
5000
10000
15000
20000
25000
30000
1994
6年月
1995
6年月
1996
6年月
1997
6年月
1998
6年月
1999
6年月
2000
6年月
2001
6年月
2002
6年月
2003
6年月
配布先サイト数
non-jpjptotal
新規サイト/10サイト日
自宅サーバに切り替えPASV可・匿名可に
01 年 9月産総研 FirewallPASV不可に
新規サイト15サイト/
日
総配布数 : 26,270 ソース配布 : 20,55
5Windows 版 : 14,285
Windows 版
FreshMeat登録(主に Linux 向
け )
LinuxGazzete
99 年 11月 BugTraq
トップドメイン別配布先サイト数 (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 墨
国内への普及 大学
Ac.jp – 732 大学、短大、高校、他 全大学(約700?)中、435大学(62%)
企業 Co.jp – 6435社 東証一部上場企業1507社中、502社(33%)
• 情報通信 64社中、47社(73%)• 電気機器 149社中、92社(62%)
個人
開発状況:プログラム規模の推移
0
20000
40000
60000
80000
100000
120000
140000
プロ
グラ
ムサ
イズ
(行数
)
94 年 3月
開発開始
94 年 6月
配布開始
97年 1月Windows
対応
9年間に520回の改訂版リリース
02 年 12月SockMux
v1 v2 v3 v4 v5 v6 v7 v8
95年 10月Mimekit
01 年 2月実験的コード削除
現状と今後
実用ソフトとして要求される拡張・改良・修整の継続
• 従来の実装ベースの継続的拡張• 根本的な作り直し?(実験ソフトから実用ソフトへ)
商用利用へのライセンス供与の開始
10年後以降の持続的成長のための新機軸の導入• 10年後のセキュリティモデルを想定した基盤通信機能の検討
背景・動機・目標 必要に迫られて作り始めたソフトが他者にも有用 インターネットから受けた恩恵(フリーソフト)へのお返し
基盤的ソフトウェアの輸入超過 ソフトウェア防衛(国産ソフトウェア技術の維
持) 世界的に一線級のソフトの開発・輸出
DeleGate とは 一般的分類:多機能プロキシサーバ
• 「多目的アプリケーションプロトコル中継システム」
単純な原理:アプリケーションプロトコルを中継• アプリケーション層のプログラム• 中継する内容(プロトコル)を解釈しながら中継
多様な用途:中継時に様々な付加価値を実現• ファイアウォール (アクセス制御、フィルタリング )• 高速化(キャッシュ)• プロトコル変換(暗号化、圧縮、…)• コンテンツ変換(翻訳、…)• 仕様・実装の変化・不備の緩衝材・パディング
クライアント/サーバモデル インターネット上の応用サービスの実現モデル
サーバは情報や機能を提供し、クライアントは通信を実行しながらそれを利用する
応用プロトコル サーバ / クライアント間の要求・応答の手順とデータの形式 各々の応用サービスごとに規定される HTTP,SMTP,FTP,…
プロキシサーバ クライアントとサーバの間の通信を中継するサーバ
サーキットレベルプロキシ 単なるバイト列として要求と応答を中継 (SOCKS)
アプリケーションレベルプロキシ 応用プロトコルに固有な、要求と応答の手順とデータの形式を解釈しながら中継
現状と今後 安定期
• ゆるやかな持続的成長• 既存の実装ベースに果てしなく続く改良・修整
• ゆるやかな継続的普及 区切りの時期?
• 実用ソフト化して保守的に、機能的発展の減速• 商用化への対処 (技術面、ライセンス面)• 実験ソフトから実用ソフトへ、根本的な作り直し?
次の10年に向けて• 新たな発展を求めて新機軸の模索• 10年後以降のセキュリティモデルを考えて先行投資
10年目の DeleGate
情報処理部門佐藤豊
要旨最初の 10 年を振り返って(反省等)近況(最近始めたこと)今後 10 年の計画?その先の 10 年??
開発開始時の大目標 ( 未達成 )
マルチプロトコルプロキシを題材にした研究 複数の応用プロトコルを統合サポート
• 共通要素の抽出、実装上の統合化・ライブラリ化• プロトコル仕様の重複の整理
共通部分のサブプロトコル化提案 大統一プロトコルの設計 汎用プロトコルインタプリタ・生成系
文字列処理エンジン(分解・合成・適合)の実現 応用層上の多重化通信プロトコルの提案 …
各版での主な新規課題 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% プロトコル共通• 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
DeleGateが選ばれる理由? 以下全てを満たす唯一のプロキシサーバ?
マルチプロトコル• ほとんどの基盤的プロトコルをカバー
多機能• ひととおりのことはできる
マルチプラットフォーム• どこでも走る(Unix,Win,Mac)
オープンソース・フリーソフト 純国産・日本語によるサポートを期待? 特徴的機能
マウント、経路制御、外部フィルタ
DeleGateが選ばれない理由(反省点・課題)
とっつきにくさ• 未整備なドキュメント・設定例、 FAQ無し• 設定・管理用 GUI・対話的 IF無し (⇒外付け可)
セキュリティ問題• バッファオーバフロー可能性 (⇒委託可)
ライセンスが不明確• 歴史的事情・内部事情もあって
いずれの機能も未完成・非最適• 最適ソフトは別にある
最初の 10 年を振り返って
10年前には現在を予想・予測困難•ドッグイヤーだったし
予想以上・以下・予想外• DeleGate•社会状況
背景の変遷・動向•次の10年をどのような前提で考えるか?
予想以上・以下の状況(DeleGate)予想程度の普及度
• インターネットの膨張にほぼ伍して
予想以下の技術的進展•初期に構想したものの域を出ていない
成長力の減衰• 実用システムとしての安定性に縛られる• とにかく作ってみる、ことが減少 (蛮勇力の低
下)
予想外の状況(社会的背景) 応用層の意外な安定
• 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 プロトコル アプリケーション層の多重化通信メディア
• アプリケーションプログラム間を繋ぐ• API:Socket インターフェイス互換• 下位層( TCP)の永続的コネクション上を利用• PPP のようなもの? IRC?
当面の実際的応用• トンネリングプロトコル• FTPデータ、 HTTPデータ、…効率的転送
SockMux で構成される仮想ネットワークへ
VIABUS再興?
1991 年頃開発 アプリケーション層上の通信メディア
• アプリケーション間の可変長メッセージ通信• コンテンツによるアドレス(パターンマッチ)• マルチキャスト
VIABUS
App.
App.
App.
次の10年間の課題 バッファオーバフローの根絶(別の記述言語) 設定用インターフェイス(フォーム、言語) 商用化 SockMux (のようなプロトコル)
大統一プロトコル? テストケースの自動生成 共有ライブラリ、ツールキット化 形式記述+生成系へ
10 年後以降の DeleGate?
セキュリティ技術の今後• フィルタリング vs. 暗号化の衝突
古典的ファイアウォール技術の衰退•暗号化通信の普及により、通過コンテンツ不可視に• 現状でも HTTPS/SSL プロキシがあれば何でも通せ
てしまう•物理的単位(ネットワーク、ホスト)での防御の限
界
10 年後以降の DeleGate?
仮想ファイアウォール•仮想プライベートマシン( VPM入れ子)•仮想プライベートネットワーク(階層的) ← SockM
ux
データの署名に基づくアクセス制御•全てのデータ(入れ子)が、作成者の署名付きに•仮想プライベートマシンを出る時に自動署名付与•データの仮想マシンへの出入り許可を署名に基づいて
制御
おしまい ・・・
インターネットのセキュリティ技術 隔離・隔絶 (ネットワークレベル)
プライベートアドレス、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 関数
インターネット上の応用サービスの中継 変換・統合技術・
産業技術総合研究所情報処理研究部門佐藤豊
プロキシサーバ「DeleGate」
http://www.delegate.org/
DeleGate の概要 1994 年生まれ・現在も成長中
小規模 Gopher 専用プロキシ( SunOS 版)からの持続的な成長 多用途プロキシサーバ
アクセス制御、キャッシュ、経路制御、トンネリング、プロトコル変換、サーバ統合、コンテンツフィルタ、コンテンツ変換、…
マルチプロトコル対応 HTTP,FTP,SMTP,POP,NNTP,Telnet,DNS,SOCKS,SSL,…
マルチプラットフォーム対応 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 のプログラム規模の推移
0
20000
40000
60000
80000
100000
120000
140000
プロ
グラ
ムサ
イズ
(行数
)
97年 1月Windows
対応
94 年 6月
配布開始94 年 3月
開発開始
8年間に500回の改訂版リリース
DeleGate の配布状況(1)
0
5000
10000
15000
20000
25000
配布先
サイ
ト数
海外国内全体
+7サイト /日
DeleGate の配布状況(2)
0
20000
40000
60000
80000
100000
120000
140000(配布元サーバからのダウンロードホスト数)
クライアント/サーバモデル インターネット上の応用サービスの実現モデル
サーバは情報や機能を提供し、クライアントは通信を実行しながらそれを利用する
応用プロトコル サーバ / クライアント間の要求・応答の手順とデータの形式 各々の応用サービスごとに規定される 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社
大阪弁変換フィルタ* 携帯端末用コンテンツ圧縮・分割フィルタ