オリジナル(http://www.sun.com/960710/cover/tcl-safe.html)
Tclets Now! |
Safe-Tcl は Tcl のセキュリティモデルである。Safe-Tcl によって、 出元の信頼できない(インターネット越しにダウンロードしたような) Tcl コードの実行や、ウイルスや明らかに誤ったコーディングから の防衛が可能となる。 Safe-Tcl では、シンプルな "padded cell" モデルが使われる。その モデルの中では、信頼できないスクリプトは、そのスクリプトの振る舞いに 制限をつけた、特別に制御された環境の中で再実行される。padded cell という手法は、最近30年間のオペレーティングシステムで保護機構 として使われてきた、カーネルスペース/ユーザースペースのしくみに 似ている。 Safe-Tcl はどのように動作するのだろう? ウェブブラウザのような アプリケーションは複数の Tcl インタプリタを持つことができる。 各インタプリタがそれぞれコマンドと変数をを持ち、スクリプトは スクリプト自身が動作しているインタプリタ内のコマンドと変数のみを 使用することができる。アプリケーションを構成するスクリプトは、 全ての Tcl コマンドを持つ”マスターインタプリタ”と呼ばれる Tcl インタプリタで動作する。もし、アプリケーションが、ウェブページに あるような信頼できない Tcl スクリプトを実行しようとすると、 マスターインタプリタは、アプリケーションを実行するための別の インタプリタを生成する。このインタプリタは、”スレーブインタプリタ” 、あるいは padded cell と呼ばれる。信頼できないスクリプトが実行 されるときには、ファイルの読み書きを行うような全ての危険なコマンドは、 スレーブインタプリタから削除される。 スレーブインタプリタは、今日のオペレーティングシステムにおける ユーザースペースによく似ている。例えば、ユーザースペースでの プログラムはディスクに対して直接読み書きを行うことはできない。 Tcl アプリケーションのためのマスターインタプリタはカーネルスペースに 似ている。すなわち、マスターインタプリタはあらゆることを行うための 完全な権限を持ち、したがってそこで動作するコードは信頼できるもので なければならない。 Safe-Tcl はまた "safe calls" と呼ばれるメカニズムも提供していて、 それはスレーブインタプリタに対して、そのマスターインタプリタからの 要求を生成することを許可するものである。safe calls はオペレーティング システムにおけるカーネルコールに似ている。すなわち、safe calls は 信頼できないコードに対して、慎重に制御された方法で padded cell 自身の 外部との通信を許可する。例えば、スレーブインタプリタには、ある 一つのディレクトリの中で限られたサイズで限られた数のファイルに対する アクセスを許可する safe call が提供されたりするだろう。マスター インタプリタは safe calls を通してスレーブインタプリタに対して 完全な制御権限を持っていて、したがってマスターインタプリタは スクリプトに関する情報に基づいて異なる safe calls の集合を提供 することができる。例えば、あるスクリプトが信頼できる出元から来たもの であることがわかっていれば、そのスクリプトには、出元の不明な スクリプトよりもより強力な safe calls の集合、例えばフルファイル アクセスの権限なとが与えられることだろう。 付加的な利益として、Tcl の小さなプログラムで、簡単にコードをテスト したり見つかった傷を修復するための、セキュリティ解析が可能となる。 例えば、先程述べた制限付きのファイルシステムへのアクセスを実装する ためのコードは、Tcl でおよそ100行程である。
開発者付記 Safe-Tcl は電子メールシステムでプログラムを安全に送ることを可能に するために、1993年に Nathanial Borenstein と Mashal Rose に よって考案された。かれらの業績は Tcl グループに採用され、Tcl と Tk の最新のリリースで機能の中に盛り込まれた。Borenstein と Rose は、 First Virtual Internet payment system を作り、その実装の中で Tcl と Safe-Tcl を拡張して使用している。 |
Copyright |