2009年12月15日火曜日

Chrome OS 詳細

7月に明らかにした設計思想に忠実なOSという印象を受ける.
パソコン世代の者にとっては,実装があまりに“不自由”なことが気になった.
 Chrome OSは,GoogleのWebブラウザ「Chrome」を動かす最小限の環境をセキュアに構築することに注力。プリインストール機の購入が前提。カーネル部分に手は入れられない。メイン・ストレージはクラウド。ローカル・データはキャッシュに過ぎない。プリインストール機前提なのはMac OS Xとそのファームウエアも同様だが,比較的簡単にroot権限を取得できる。
 ユーザーはWebアプリケーションの利用に専念できる。PC管理に費やす時間があったら,使いたいときすぐWebを利用してほしい。それがGoogleのメッセージだ。
 発表時にGoogleが提示したコンセプトは「速く,シンプルで,セキュアで,ほとんどの時間をWebで過ごすユーザーに向けた軽量OS」。
 11月に公開したセキュリティ設計思想では,「カウチ・コンピューティング」「ちょっとした仕事をこなす2台目マシン」「喫茶店や図書館での貸し出し機」「家族で共有する2台目マシン」と,メインマシンとしての汎用性は初めから見切っている。
 汎用OSでは互換性や利便性とのトレードオフから採用が難しかった手法をふんだんに取り入れた。
 Chromeブラウザが動作する組み込みOSとして機能をスリム化。
 ネットブック出荷後に加わる実行ファイルは,原則として不正なプログラムとして扱う、ホワイトリスト型のアプローチ。
 セキュリティ以外の側面から,起動が高速で,無駄なシステム・サービスがメモリーを圧迫しない軽量なOS。
 セキュリティ実装を軸にChrome OSのアーキテクチャを把握するために,
 (1)ファームウエアとカーネルの起動プロセス,
 (2)リソースの隔離機構,
 (3)デスクトップ環境という三つのレイヤーをからみてみる。

 (1)のファームウエアとカーネルの起動プロセスは,ファームウエアとカーネルの各プログラムに施した電子署名をチェックし,改変があれば復元する,というもの。この検証と復元動作に対する不正アクセスからの防護を,Chromeブラウザへの特化とプリインストールによって確保している。
 難点は,すべてのプログラムに署名を施す手間がかかることだ。ただChrome OSは,Chromeブラウザの利用に特化しているためプログラムの数が少ない。
 まずファームウエアの部分は,PC-AT互換機としてのレガシー・サポートなどを省いてブートに必要なプログラムのみに絞る。例えばフロッピー・ドライブは初期化しない。
 カーネルについては,ごく少数のパッチを除いて,動的に追加可能なカーネル・モジュールを利用しない。「Upstart」という並列処理が可能な初期化プログラムを使うなど初期化の時間を節約する。セキュリティ・ホールが存在する可能性も低くなる。
 カーネル以外のシステム・プログラムも最小限に抑える。バッテリ管理やネットワーク・ドライバの制御に使う「D-Bus」デーモン,ネットワーク周りの設定管理プログラム「Connection Manager」,無線LAN接続用のWPAサプリカント,自動更新,電源管理,スクリーン・セーバー,時刻同期のNTP,ログ管理のsyslog,タスク・スケジューラのcron。Chrome OSの主な起動プロセスはたったこれだけだ.

 Chrome OS内部のプログラムを徹底的に隔離することで,不正なプログラムの進入や活動を防ぐ。隔離機構のセキュリティ・ホールに対しては,OSの自動更新で迅速に修正して被害を最小限に抑える。
 Chromeブラウザは,コンピュータのリソース管理の単位であるプロセスをタブやChrome拡張ごとに生成する。プロセスはそれぞれ別の仮想メモリー空間を持つ。あるプロセスが不正アクセスを受けたとしても,他のプロセスへの波及を防げる。
 さらにChrome OSでは,HTTP,HTTPSを処理するプログラムもプロセスとして独立させる。副作用として,プロセス間でデータをやり取り(プロセス間通信)する際のオーバーヘッド増加がある。このためChromium OSプロジェクトは,プロセス間通信高速化についてコミュニティの貢献を求めている。
 プロセス分割の単位を細かくしたうえで,それぞれが利用可能なリソースは制限する。例えばファイル・システムでは,プロセスごとにアクセス範囲を変え,許可しないリソースへのアクセスは拒否する。隔離には,Linuxカーネルに取り込まれたTOMOYO Linux,ファイル・システムのルートを変えるchroot,Linux向け仮想OS技術の一つであるLinux-VServerなどを当面は採用。
 不正アクセスが狙うユーザーのデータは,ローカル・ストレージの工夫で守る。ルート・パーティションは読み取り専用とし,ユーザー・データを暗号化。そもそも主ストレージは,Googleのデータセンターという位置付け。ローカル・ストレージはキャッシュとして割り切る。
 これら保護策のセキュリティ・ホールを放置しないように,OSは随時自動でアップデートする。その際はSSLサーバー認証,ダウングレードの禁止,OS起動時と同様の電子署名チェックなどで,不正なプログラムが潜り込まないようにする。長期間オフラインで利用する場合はアップデートが滞ることになるが,Webアプリケーションの利用が前提であれば問題にならない。
 
 「Chrome OSはユーザーがダウンロードしては使えない。プリインストール機を買う必要がある」というGoogleの方針だ。組み込み以外の提供を許すと,電源投入時から始まる動作チェックをすり抜けるパッチを当てられる場面を極力少なくするという設計思想のほころびにつながる。
 Chrome OSを設計するうえで想定外としたセキュリティ侵害の一つに,ファームウエアへの物理的なアクセスがある。ファームウエアを格納するEEPROMの差し換えは物理セキュリティの領域というわけだ。

 セキュリティ機構に加えてデスクトップ環境の構成を把握すれば,それがそのままChrome OSの全貌になる。
 デスクトップ環境は,ウィンドウ管理に定番のX Window,半透明処理を追加するComposite extension,GNOME由来のユーザー・インタフェース・ライブラリであるClutter,コーデックやストリーミングを管理するOpenMAX,3D描画のOpenGL/GL ESと,これまでオープンソース・プロジェクトで開発が進んできたライブラリの組み合わせが核となる。
 そのうえに,ブラウザとGoogleが開発したウィンドウ・マネージャが載る。基本的に他の一般的なウィンドウ・マネージャと同様の構成で,ICCCM(Inter-Client Communication Conventions Manual)とEWHM(Extended Window Manager Hints)というUNIXのウィンドウ・マネージャの仕様に沿っている。
 IM(Input Method)プラットフォームはiBusを使う。Chromium OSでは,日本語入力用にibus-anthyを搭載済みだ(ただしターミナルを起動して初期化する必要がある)。将来の予定として,Chromium OSプロジェクトは日本語入力に「Google 日本語入力」を採用する。
 徹底的にChromeブラウザ基盤としてのフェイル・セーフにこだわったChrome OS。多くの作業はWebアプリケーションで事足りるようになった。Chromeブラウザに感じていた物足りなさは,Chrome拡張のベータ版公開で変わりつつある。マウスジェスチャー機能やブックマーク同期機能など,最低限必要なものがそろい始めた。
 ただパソコンを使い始めたときからブログにメモ書きし,ネットに写真や動画をアップロードするようなユーザーは,むしろ自由を満喫するはず。

0 件のコメント: