連載
» 2007年12月07日 00時00分 公開

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

本連載もいよいよ最終回。携帯電話でセキュアな環境を実現するためにSymbian OSが取ったデザインを概説して締めくくる

[大久保 潤 管理工学研究所,@IT MONOist]

 携帯電話がアプリケーションプラットフォームに進化するとき、セキュリティに対する統一的な対策は避けて通れない課題です。すでに携帯電話は個人情報の塊となっており、ここに対してネイティブアプリが自由にインストール、実行できたとすると、そこに付け込むマルウェアによる被害がどのくらいになるのか想像を絶するものがあります。

 今回はプラットフォームセキュリティというSymbian OSのセキュリティメカニズムについて解説します。やはりというか、OS内のほかの機能と同じく、セキュリティについても非常に徹底したデザインが行われています。そのため当初は違和感を持たれるかもしれませんが、「なるほど、これはこれでつじつまが合っている」とマインドを切り替えてもらえるよう解説していきたいと思います。

コンセプト

 ご存じのとおり、セキュリティは実際の鎖と同様、チェーンの一番弱い部分が全体の強度を決定します。しかしセキュリティチェーンとは直列システムなり、ととらえてしまうのはナイーブな理解です。直列システムとして振る舞うのは確かにそのとおりなのですが、では一番弱い鎖を強化することに注力すればそれで事足りるのでしょうか。個々の鎖の信頼性は、(残念ながら)決して100%になることはありません。だからセキュリティモデルを考える場合、強度を高めるだけではなく、破られたときにどこまで被害が広がるのか、ということを抜きにして検討を進めることができません。つまり「一番弱い個所はどこなのだ」という問い掛けに加えて、「もし問題が発生したとして、ほかへの波及を阻止するにはどうすればよいか」という検討が必要となります。

 Symbian OSは、以下の3つのコンセプトを用いてセキュリティモデルを構築しています。

  • 信頼の階層
  • ケイパビリティ
  • データケージング

 そしてこれらを実現するために、Symbian Signedという認証手続きが用意されています。Symbian OSにおけるセキュリティというと、Symbian Signedに話題が終始しがちですが、その背景にあるコンセプトを押さえなければ適切な評価を行うことはできません。というわけで、セキュリティに関する3つのコンセプトを、まずは押さえていきましょう。

信頼の階層 ― 信頼とは何か?

 Symbian OSでは、プロセスが権限チェックの単位となります。振り返ってみると、WindowsでもLinuxでもプログラムを実行するときにチェックされるのは、それを起動しようとしたユーザーの権限でした。サーバを起動する、重要なデータへアクセスを行う等々、誰彼構わずやらせるわけにはいかない作業をガードするために、専用のユーザーアカウントを立て、そこに権限を集約します。要するにユーザーの権限に基づく、特権プログラムの局所化です。プログラム自体が権限チェックの対象となっていたわけではないことに注意してください(WindowsのACL=アクセス制御リストも詰まるところはユーザーの権限が基礎になっています)。

 しかし携帯電話は究極のシングルユーザー環境です。ユーザー権限に基づくアプローチではうまく折り合いがつきません(誰が携帯電話の上でユーザー管理を行いたいと思うでしょうか。そもそも携帯電話におけるアドミニストレータとは何でしょうか)。というわけで、Symbian OSではプロセス自体が権限チェックの対象となるデザインを取っています。オープンなアプリケーションプラットフォームとなると、どのようなソフトウェアが実行されるのか、端末の出荷時にあらかじめ決定することができません。そのため動的にチェックを行う仕掛けが必要なのです。

 Symbian OSではこれらを満たすために信頼という概念を導入しています。そして「信頼の階層」と呼ぶ、4段階に分けた信頼のレベルでソフトウェアを分類しています。図1にその構造を図示します。

信頼の階層 図1 信頼の階層

 Symbian OSにおけるソフトウェアは、信頼のレベルにより図1のように分類されます。円の内側には、TCBやTCEという高い信頼度の区分に属するソフトウェアが、逆に外側には低い信頼度の区分に属するソフトウェアが配置されています(用語はこの節の後半で説明します。しばしお待ちください)。これはWindowsにある権限のモデル、

  • Administrators
  • Power Users
  • Users

のような、プログラムを実行できるレベルの違いを「ヘタな絵」で表現しているようにも見えます。しかしそうではありません。

 信頼という以上、信頼する側と信頼される側が存在します。そして図1では「低い信頼を持つソフトウェア」「信頼されないソフトウェア」という記載があります。つまりここに記されているのは信頼される側の階層構造です。では誰がこれらのソフトウェアを信頼しているのでしょう。それは、信頼されたりされなかったりするソフトウェアが動作している、その携帯電話をめぐるステークホルダー(利害関係者)です(注1)。

携帯電話のオーナー
自分の個人情報が入っている電話を安全に運用したい。
勝手に電話帳を吸い出されても困るし、勝手にどこかに電話をかけられても困る。

携帯電話のキャリア
顧客の携帯電話が危険にさらされないようにしたいし、携帯電話に想定外のことをさせないようにもしたい。
マルウェアの進入は困るし、携帯から想定外のトラフィックを発生させられても困る。

コンテンツプロバイダ
携帯電話に存在する自分たちのコンテンツの権利を守りたい。
ダウンロードされた楽曲を携帯外に持ち出されるのは困る。

 等々、1台の携帯電話をめぐっても多くのステークホルダーが存在することがお分かりいただけると思います。そして、あるソフトウェアが「信頼できる」とされるときには、これらすべてのステークホルダーの利益を侵害しないことが保証される必要があるのです。

※注1:
Symbianはaudienceと呼んでいるようですが、標準コンサル用語でいうとstakeholderなので、今回はそれで進めさせてもらいます。


       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.