MicrosoftにもブラウザOSのプロジェクトが存在するのをご存じだろうか。Microsoft Research (MSR)において「Gazelle」や「MashupOS」などの名称で研究が進められており、論文も公開されている。
7日 (米国時間)に米GoogleがChrome OSの開発を明らかにした。WebブラウザのChromeと密接に結びついた軽量なOSであるという。特徴としてスピード、シンプリシティ、セキュリティの3つを挙げており、「OSがどのようなものであるべきかを考え直してもらう試みである」と同社は説明している。何やら革新的な取り組みであるようだが、具体的な内容に触れていないため、エンドユーザーがChrome OSを必要とする理由が見えてこない。これでは消化不良というか、すっきりとしない。
そこでMSRのGazelleである。Googleの公式ブログの少ない情報から2つを同じように捉えることはできないが、アプローチや目指すところに類似点が多々あるように思える。Gazelleの論文を参照すると、少なくとも今後のWebアプリケーション利用においてブラウザではなく、ブラウザOSが必要になる理由が見えてくる。
ブラウザとブラウザOS、セキュリティの目的の違い
GazelleはWebアプリを処理するためのブラウザ・ベースのOSだ。MSRはマルチ・プリンシパルOS(multi-principal OS)と説明している。この場合のプリンシパルとはWebサイトを指す。基盤OS(Windows)の上に、約5000ラインのC#コードで書かれたブラウザカーネルのレイヤが存在するのが特徴で、このブラウザカーネルが様々なプリンシパルとシステム・リソースを仲立ちし、リソースの共有や保護を実現する。
今日のWebページには、そのページのコンテンツのほか、広告やニュースフィード、メッセージ、動画・写真など、複数のプリンシパルからのダイナミック・コンテンツが含まれるケースが珍しくない。それらが同じプロセスまたは保護ドメインに混在している。そこで、たとえば広告が悪意のあるコードを含んでいたり、またはネットワークを占有するようなバグを抱えていると、パフォーマンスの低下やブラウザのクラッシュが起こってしまう。
また今日のブラウザの多くは、デバイスのリソースを管理する機能を備えていない。Webカムやゲーム・コントローラなど周辺機器のデバイスへのアクセスがブラウザ・プラグインによって処理されている場合、その仕組みはプラグイン作成者によってコントロールされる。これがプラグインのコンフリクトが起こる原因になっている。
Gazelleはブラウザ・カーネルを通じてプリンシパル同士を保護し、問題のあるプリンシパルの影響が、他のプリンシパルやブラウザ、ホストマシンに及ばないように設計されている。プリンシパルを超えたコミュニケーションを適切に処理し、ポリシーに従ったシステマチックなデバイスへのアクセスが徹底されるようにシステム・リソースへのアクセスを管理する。
プリンパル保護という点では、すでにChromeやInternet Explorer (IE) 8ではマルチプロセスが採用されている。だがシンプルにサイトをプリンシパルとするChromeは、attackerAd.socialnet.com、alice.profiles.socialnet.comなど、同じレジストリで管理されたドメインネーム(socialnet.com)を共有していると、同じプリンシパルと見なす。またWebサイトのプリンシパルと埋め込まれたプリンシパルを同じプロセスで処理する。IE 8の場合はOSプロセスによってタブを独立させているのみだ。
Gazelleのプリンシパルは、厳密にはプロトコル/ドメイン名/ポートから構成されるSOP(Same Origin Policy)プリンシパルであり、複数のプリンシパルが混在するWebページにおいて正確にプリンシパルを保護ドメインに切り分ける。たとえばWebサイトに埋め込まれた動画が同じディスプレイを共有している場合、Gazelleはプリンシパルに従って、ディスプレイ全体から動画が埋め込まれているスペースを切り分けてレンダリングする。
今日のブラウザとGazelle (=ブラウザOS)ではセキュリティの目的が異なるのだ。ChromeやIE 8のマルチプロセスは、ユーザーのブラウジング全般においてトラブルを最小限に抑えられるように封じ込めるのを優先した設計といえる。セキュリティという点では、ブラウザやWebからホストマシンを保護するのを目的としており、そのためにはプロセスのサンドボックス化は有効である。
しかし、それはローカルアプリに加えて、Webアプリケーションも利用するというレベルの話だ。Webでやり取りされるデータ、Webに取り込まれる機能が増えるほどに、ブラウザのアプリケーション・プラットフォームとしての側面が重視されるようになる。Webアプリ主体のコンピューティングでは、ホストマシンだけではなく、ブラウザも十分に保護する必要が出てくる。そのためにはブラウザをOSと捉え、今日のホストマシンに加えて、ブラウザにおけるプリンシパル単位の保護を実現しなければならない。
以上はGazelleの例だが、Googleが「OSがどのようなものであるべきか……」という際の"OS"はWebアプリを動作させるためのOSであり、進化すべきポイントはスピードやシンプリシティ以上に、Webアプリへの依存の高まりに従ったセキュリティ強化を指しているのではないだろうか。GoogleのChrome OS開発は、同社がデスクトップOSに進出と考えるよりも、Chrome(=Webブラウザ)の自然な進化と捉えるべきように思える。