セキュリティモデルを構成する3つのコンセプトSymbian OS開発の勘所(10)(2/4 ページ)

» 2007年12月07日 00時00分 公開
[大久保 潤 管理工学研究所,@IT MONOist]

 例えばユーザーがダウンロードして入手したプログラムを「信頼して」実行しようとします。Windowsではよくある光景ですが、本当にそのプログラムを信頼してよいかどうかはユーザーからはなかなか分かりません。WindowsもVistaになると、プログラムの製造元を電子署名するAuthenticodeという仕掛けを導入し、インストール時にプログラムの身元を表示させるようにしました(私も桐2007のときに取得、署名を行いました)。しかし結局のところ、署名がないプログラムをインストールすることは可能であり、何%かのユーザーは署名がない、身元不明のプログラムをインストールするのです。そしていったんインストールされてしまったプログラムは、ユーザーの権限の範囲で好き放題システムを利用することができます。

 「何かあってもいいんじゃない? 自己責任なんだから」。そのような発言を聞くこともありますが、例えばインストールされたプログラムが、DRM(デジタル著作権管理)で保護されているコンテンツをクラックするものだとどうでしょう(ユーザーが意図的に行ったかどうかは、この際別の問題です)。ステークホルダーの1人であるコンテンツプロバイダの権利が侵害されることになるのですが、ユーザー権限に基づくモデルでは、これを防ぐことはできません。

 というところで、信頼に戻ってきます。信頼とは、

ステークホルダーの利益を侵害しません、というプログラム自身の主張を信じられる度合い


ということができます。重要なデータを処理するプログラムは高い信頼を得ている必要がありますし、ソリティアをするためだけのプログラムは別に信頼されている必要はありません。ただしプログラムが「俺を信じろ」と根拠なく主張するだけではユーザー権限モデルに帰着してしまうので、第三者がプログラムの信頼性を保証する必要があります。このためのプロセスとして用意されたものがSymbian Signedです(手続きについては後述)。

 では「信頼」の用語定義ができたので、図1に出てきた4つのレベルを具体的に説明したいと思います。

# レベル 内容
1 TCB
(Trusted Computing Base)
・ 最高レベルの信頼を持つソフトウェア
・ デバイスリソースに対する無制限のアクセス権と、ファイルシステムを書き換える完全な能力を持つ
・ カーネル、ファイルサーバ(F32)、インストーラ(SWInstaller)が含まれる
2 TCE
(Trusted Computing Environment)
・ 信頼の高いソフトウェア
・ 各種のシステムサーバ、WServ、ETel、ESockなどが含まれる
・ 資格を手に入れるには認証作業を受ける必要がある
3 署名付きソフトウェア ・ 弱い信頼を持つソフトウェア
・ 資格を手に入れるには認証作業を受ける必要がある(ただしTCEほど厳密ではない)
4 署名なしソフトウェア ・ 信頼されないソフトウェア
・ 権限が必要なことは一切実行できない
・ デバイスにアクセスしないソフトウェア(例えば端末内で完結するゲーム)はこのレベルでも問題がない
・ 認証されていない
表1 4つの信頼レベル

 システムサーバだからTCEのレベルに入っている、のではなく、システムサーバとして振る舞うプログラムであればTCEの信頼を受ける必要がある、と読んでください。なぜかといえば、信頼に応じてプログラムから行える操作が変わってくるからです。信頼を受けたプログラムは、その信頼レベルで許された操作を行うことができるようになりますし、逆に信頼されていないプログラムは、ほかのプログラムやシステム全体に対して害を与えるような強力な操作が一切できません。

 このようにSymbian OSには、信頼に応じて、プログラムが可能な操作を定義するメカニズムが定義されています。これをケイパビリティといいます。

ケイパビリティ

 Symbian OSでは、セキュリティ上の問題となり得るリソースについてアクセスを行うプロセスの権限チェックを行います。この権限のことをSymbian OSではケイパビリティと呼んでいます。例えばSymbian OSのサーバAPIの約40%は、その実行のために呼び出し側にケイパビリティを要求します。ケイパビリティ(capablity)を辞書で引くと「能力」と出てきますが、Symbian OSにおけるケイパビリティもこのとおりの意味で、あるリソースに対してアクセスを行う能力のことを指しています。

 逆にいうと、プログラムから何ができるかというのは、そのプログラムが持っているケイパビリティの集合(そう、複数種類存在するのです)で表されることになります。そしてすでにお察しかと思いますが、信頼のレベルに応じてプログラムが所有できるケイパビリティは制限を受けます。これらを総合すると、

保護されたリソースに対して操作を行いたければ、プログラムは信頼を獲得し(Symbian Signed)、ケイパビリティの所有を許される必要がある


となります。

 なお、あるケイパビリティはほかのケイパビリティを包含する、といった階層構造は持ちません。それぞれのケイパビリティは異なった範囲(重ならない範囲)についての権限を与えます。これらケイパビリティはTCB、システム、ユーザーの3つの区分に、次ページ以下数十個のものが用意されています。

Copyright © ITmedia, Inc. All Rights Reserved.