説明

取り外し可能な媒体に格納された実行可能なコードにタンパーエビデント性を提供する装置

【課題】取り外し可能な媒体に格納された実行可能なコードにタンパーエビデント性を提供する
【解決手段】通常の使用時に容易に着脱可能な媒体上のネイティブで実行可能なコードをインストール可能にプログラムされている移動体無線装置。前記コードのダイジェストを計算し、前記移動体無線装置内の取り外しできない固定的な格納部に格納し、前記取り外し可能な媒体が前記移動体無線装置に再度接続され、前記コードが呼び出された場合に、前記取り外し可能な媒体よりロードしようとするコードからダイジェストを再計算し、前記再計算したダイジェストと、前記取り外しできない固定的な格納部に格納されているダイジェストとを比較して、前記再計算したダイジェストと前記格納されているダイジェストとが異なる場合は、前記ロードしようとするコードの利用を抑制することを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、取り外し可能な(リムーバブルな)媒体に格納された実行可能なコードにタンパーエビデント性(tamper evidence)を提供する装置に関する。本装置は、プラットフォーム・セキュリティ構造においてある要素を形成するものである。
【背景技術】
【0002】
プラットフォーム・セキュリティは、悪意ある又は下手に書かれたコード(malicious or badly written code)に対するプラットフォーム防護メカニズムの思想、構造、実装をカバーするものである。これらの防護メカニズムにより、そのようなコードが害をもたらすことを妨げることができる。悪意あるコードは一般に2つの要素を有する。それは、ダメージを与えるペイロードメカニズム(payload mechanism)と、それを拡散する手助けをする拡散メカニズム(propagation mechanism)である。
【0003】
これらは通常、以下のように分類される。
・ トロイの木馬(Trojan horse):良性でユーザにとって魅力的に出現する正規のアプリケーション(legitimate application that appears benign and attrative to the user)を有する。
・ ワーム(Worm):その提供者、あるいはユーザによる更なるマニュアル操作によらず複製され、拡散する。
・ ウィルス(Virus):正規のプログラムに侵入し、データを変更、或いは破壊する。
【0004】
セキュリティの脅威は、(a)サービスやデータの守秘性(confidentiality)、インテグリティ(integrity:完全性)又は、利用可能性(availability)を連鎖的に損なう潜在性や、(b)サービス機能の妥協を包含している。
【0005】
このような脅威は以下のように分類される。
1.データの守秘性及びインテグリティに関する脅威。例えば、ユーザのパスワードを入手したり、ファイルを破壊したりする。
2.サービスの守秘性及びインテグリティに関する脅威。例えば、電話ネットワークの加入者の帯域を無料で利用したり、ネットワーク・サービス・プロバイダとのトランザクションを無効化したりする。
3.サービスの利用可能性に関する脅威(又は、サービスの拒否とも呼ばれる)。例えば、ユーザがテキストメッセージを送信することを妨げたり、電話の着信を受けることを妨げたりする。
【0006】
このように、移動体無線装置は、セキュリティ構造の設計者に対して相当数の課題を突きつけるものである。この課題の重要な側面の一つは、移動体無線装置が一般的に取り外し可能な格納装置上にプログラムをインストールするであろうということである。主な動機は、どのプログラムセットをユーザが使用したいかに基づいて、無線装置のユーザが変更可能な特別なストレージ(extra storage)を提供することである。良く知られた例としては、パーソナル・コンピュータの環境におけるフロッピー(登録商標)ディスクやメモリーカードの利用が挙げられる。取り外し可能な格納装置は、原理的に、移動体無線装置にプラグインされていない場合でも、何らかの方法で手を加えられることがあり得るので、該装置上に格納されているプログラムはそのインテグリティを喪失するであろう。全ての環境において、取り外し可能な格納装置が再挿入されようとする場合を含めて、(例えば、セキュリティ特性を無効にするための悪意のある変更は行われていない、或いは、ウィルスが含まれていない、などといった)無線装置が実行可能なコードのインテグリティを信頼することは極めて重要である。
【0007】
今までの所、移動体無線装置から転送され、元の装置に戻されようとしている実行可能なコードのインテグリティを保証するための効果的な提案はなされていない。
【発明の概要】
【0008】
本発明の第一の側面においては、取り外し可能な媒体状のネイティブで実行可能なコードをインストールすることが可能な移動体無線装置が提供される。装置は、当該コードのダイジェスト(このダイジェストは、当該内容が異なる場合には、同一の値を生成することができないことを保証するアルゴリズムを利用して、当該コードの内容全体から生成される値である。)を演算し、装置内の取り外しができない固定的格納部(a persistent non-removable store)に格納するようにプログラムされている。ネイティブコード(native code)は、装置のCPUによって直接に実行される命令で構成される。
【0009】
取り外し可能な媒体が再度接続され、該実行可能なコードが呼び出された場合、装置は、当該取り外し可能な媒体からロードしようとするコードからダイジェストを再演算し、取り外しができない固定的格納部に格納されているダイジェストと比較する。もし、それらが一致しない場合、当該実行可能なコードは、改竄されたものであるから、装置から信用されることはありえない。当該ダイジェストは、(後述する)トラステッド・コンピューティング・ベース(Trusted Computing Base)におけるコンポーネントによってのみアクセス可能であって、それ自体は安全である。このダイジェストは、ハッシュや実行可能なコードの全体から再計算可能な他のユニークで代替的値であってもよい。
【0010】
このアプローチは、ハッシュがメディアファイルから導出され、当該ファイルに挿入され、ファイルを気づかれない程度に修正する従来の電子透かしとは異なるものである。
【0011】
ある実施態様では、ダイジェストは、実行可能なコードの"ケーパビリティ"と同様に、装置上で安全に格納される。"ケーパビリティ"は、特に注意を要する動作(sensitive action)の実行の認可に対応するアクセストークン(access token)として考えることができる。(ケーパビリティモデルの目的は、注意を要する(sensitive)システムリソースへのアクセスを制御することである。)ロード時において、ローダーはロード以前にハッシュを検証する。もし検証に失敗すると、実行可能なコードはロードされないであろう。もし、実行可能なコードが不知(unknown)である場合(関連するダイジェストがない場合)、実行可能なコードはケーパビリティなし(即ち、注意を要するリソースへのアクセス権がない)及び識別子なし(識別されたオペレーティングシステムプロセスにのみ公開されるデータへのアクセス権がない)でロードされる。もし、検証が成功すれば、実行可能なコードはロードされ、新しくロードされたコードに格納されているケーパビリティが割り当てられる。
【0012】
本発明は、ユーザが、装置間において制約を受けることなくメモリーカード及び他の形態の取り外し可能な媒体を共有することを可能とする。また、媒体や他のユーザの選択とは独立に、ユーザがこれらのカードに格納されているアプリケーションに許可した特権をユーザが維持することを可能とする。
【発明を実施するための形態】
【0013】
本発明は、シングルユーザ無線装置のために設計されたオブジェクト指向のオペレーティングシステムであるシンビアンOSのセキュリティ構造を参照して記載される。シンビアン・オペレーティング・システムは、英国ロンドンのシンビアン・リミテッドにより移動体無線装置のために開発されたものである。
【0014】
シンビアンOSにおけるセキュリティ構造の基本的な概要は、中世の城の防護(a medieval castle defenses)に類似している。類似の形態において、インストール境界(installation perimeter)に加えて、簡単で、スタッガード構造の(staggered)セキュリティレイヤーを採用する。当該モデルが取り扱おうとしている重要な脅威は、ユーザーデータ及びシステムサービス、特にフォンスタック(phone stack)への権原のないアクセスと関連している。フォンスタックはスマートフォンと関連して特に重要である。というのも、フォンスタックが電話ネットワークとの不変のデータ接続(permanent data connection)を制御するからである。当該モデルの後ろに位置する重要なデザインドライバ(key design drivers)が二つある。
【0015】
その一つは、ケーパビリティベースのアクセス制御を利用した重要なシステムリソースのファイアウォール防護である。
【0016】
もう一つは、標準的なソフトウェアがアクセスできない、保護された部分をファイルシステムに生成するデータ分割(data partitioning)である。
【0017】
以下に記載するケーパビリティモデルの主たるコンセプトは、ユーザが何ができるかではなく、プロセスに何ができるかを制御することにある。このアプローチは、ウィンドウズ(登録商標)NTやUnix(登録商標)といった既知のオペレーティングシステムとは極めて異なるものである。その主な理由は、以下のようになる。
【0018】
〔シングルユーザ用途のシンビアンOSの性質〕
【0019】
シンビアンOSは、独立したサーバープロセスを介してサービスを提供している。それらは常に動作しており、かつ、ユーザセッションに付加されることがない。電力が供給されている限り、シンビアンOSはユーザがログオンしていない場合であっても常に起動状態にある。
【0020】
シンビアンOSは、技術的知識の無い、多くの公衆に利用される装置において使用されることを目的としている。ソフトウェアのインストール時に、どんな許可をアプリケーションに対して与えるかを決定する能力をユーザが有していなくても良い。さらに、常に接続されている装置に関しては、誤った或いは悪意のある決定の結果は、装置自体よりもドメインに遙かに大きなインパクトを与えるかもしれない。

〔1 トラステッド・コンピューティング・プラットフォーム(Trusted Computing Platform)〕
〔1.1 トラステッド・コンピューティング・ベース(Trusted Computing Base)〕
【0021】
トラステッド・コンピューティング・ベース(TCB)は、ロバストなプラットフォーム・セキュリティに対する基本的な構造的要求(basic architectural requirement)である。トラステッド・コンピューティング・ベースは、サブバート(subverted)されない多くの構造的要素(architectural elements)から構成され、装置のインテグリティを保証する。このベースをできるだけ小さく維持すること、更には、システムサーバー及びアプリケーションが、それらが機能するのに必要としない特権を与えられる必要がないことを保証するために最小特権の原理(the principle of least privilege)を適用することは、重要である。クローズな装置では、TCBはカーネル、ローダー及びファイルサーバーから構成される。オープンな装置では、ソフトウェア・インストーラもまた必要とされる。これらの処理の全ては、システムワイド・トラステッド(system-wide trusted)であり、それゆえに装置へのフルアクセスを有する。この信用できるコードは、他のプラットフォームコード(セクション2.1を参照)が利用できない"ルート"ケーパビリティとともに実行される。
【0022】
トラステッド・コンピューティング・ベースのインテグリティを維持するための他の重要な要素は、本発明の範囲から外れるものであるが、それは即ち、ハードウェアである。特に、トラステッド・コンピューティング・ベース機能をフラッシュROM内に有する装置では、セキュアなブートローダー(boot loader)を提供し、悪意のあるROMイメージによりトラステッド・コンピューティング・ベースをサブバートすることが不可能であることを保証する必要がある。

〔1.2 トラステッド・コンピューティング環境(Trusted Computing Environment)〕
【0023】
他のシステム・コンポーネントは、コアを越えて(beyond the core)制限された直交システムケーパビリティ(restricted orthogonal system capabilities)が許可されるであろうし、トラステッド・コンピューティング環境(TCE)を構成するであろう。それらは、電話サーバやウィンドウサーバーのようなシステムサーバーを含むであろう。例えば、ウィンドウサーバーは、フォンスタックアクセスのケーパビリティは許可されないだろうし、電話サーバは、キーボードイベントに直接アクセスするケーパビリティは認められないであろう。ここで、できるだけ少ないシステムケーパビリティをソフトウェアコンポーネントに適用して、これらの特権の誤用による潜在的なダメージを制限することを強く薦めるものである。
【0024】
TCBは、TCEの各要素があるサービスのインテグリティを保証するように、システム全体のインテグリティを保証するものである。TCEは、TCB無しには存在し得ない、しかしTCBはそれ自体として存在し、安全な"サンドボックス(sand box)"を各プロセスについて保証することができる。

〔2.プロセスケーパビリティ〕
【0025】
ケーパビリティは、注意を要する行為(sensitive action)を実行する際の許可に対応するアクセストークン(access token)として考えることができる。ケーパビリティモデルの目的は、注意を要するシステムリソースへのアクセスを制御することである。アクセス制御を必要とする最も重要なリソースは、それ自体で実行可能なカーネル(kernel executive itself)であり、システムケーパビリティ(セクション2.1を参照)は、クライアントがカーネルAPIを介して所定の機能にアクセスするために必要とされる。その他のリソースの全ては、IPC(Inter Process Communication:プロセス間通信)を介してアクセスされるユーザ側のサーバに属する。基本的なケーパビリティの小さなセットは、サーバ上での特定のクライアントの動作を取り締まるために定義される。例えば、発呼のケーパビリティ(make calls capability)の所有は、電話サーバを利用するクライアントに認められるであろう。ケーパビリティが存在するリソースへのクライアントのアクセスを取り締まることは、対応するサーバの責任であろう。ケーパビリティはまた、各ライブラリ(DLL)及びプログラム(EXE)と関連づけられ、カーネルによって保持されるであろうネット・プロセス・ケーパビリティ(net process capabilities)を生成するために実行時に(at run time)ローダーによって結合される。オープンな装置の場合、インストールパッケージに署名するために利用される証明書(certificate)に基づいたソフトウェアのインストールの間、或いは、ユーザによるソフトウェアインストール後のいずれかに、サード・パーティ・ソフトウェアについてケーパビリティが割り当てられる。ケーパビリティの取り締まりは、ローダー、カーネル及び影響を受けるサーバの間で管理されるが、IPCメカニズムを通じて、カーネルで仲介されたもの(kernel-mediated)となる。
【0026】
このプロセス・ケーパビリティ・モデルの重要な特徴は以下のようになる。
【0027】
・ システムサーバーと、これらのエンティティ間でのクライアント−サーバにおけるIPCインタラクションの周りにまずフォーカスされる。
【0028】
・ ケーパビリティはプロセスと関連づけられ、スレッド(threads)とは関連づけられない。同一プロセスにおけるスレッドは、同一アドレス空間及びメモリアクセス許可を共有する。このことは、あるスレッドにより利用されるであろういかなるデータも、同一プロセス内の他のスレッドの全てがリードし、修正可能であることを意味する。
【0029】
・ ケーパビリティの取り締まりは、ローダー及びカーネルによって、ターゲットサーバーのケーパビリティ取締りを通じて管理される。カーネルIPCメカニズムは、後者に含まれる。
【0030】
・ コードが実行されていない場合、ケーパビリティはライブラリ及びプログラムの内部に格納される。ライブラリ及びプログラムに格納されているケーパビリティは修正できない。これは、インストールの間に、トラステッド・コンピューティング・ベースによってのみアクセス可能な場所に格納されるためである。
【0031】
・ 全てのサーバが、クライアントケーパビリティを扱う必要はない。サーバは、希望する場合にケーパビリティの解釈について責任を負う。
【0032】
・ この手法に含まれる唯一の暗号は、ソフトウェアのインストールステージに存在し、そこでは証明書(certificates)が適切なルート証明書(suitable root certificate)と照合される。

〔2.1システムケーパビリティ:装置のインテグリティを保護する〕
【0033】
(ルート: 全てのファイルへのフルアクセス−実行可能なコードと関連づけられたケーパビリティを修正できる)
"ルート"ケーパビリティ−トラステッド・コンピューティング・ベースのみにより利用され、装置内の全てのファイルへのフルアクセスを与える。
【0034】
(システムケーパビリティ)
あるシステムサーバーは、トラステッド・コンピューティング・ベースへのある特定のアクセスを要求する。オブジェクト指向で実装されているシンビアンOSのために、システムサーバーによって要求される種類のリソースは、ほとんどの場合それ専用である。それ故に、あるシステムサーバーは、他のシステムサーバーが要求するものと直交する(orthogonal)、あるシステムケーパビリティが許可されるであろう。例えば、ウィンドウサーバーは、カーネルによって発行されるキーボード及びペンイベントへのアクセスが許可されるであろうが、フォンスタックへのアクセスの許可は得られないであろう。同様に、電話サーバはフォンスタックへのアクセスは許可されるであろうが、カーネルからのイベントを受け取る許可は得られないであろう。
【0035】
例えば、以下のように称することができる。
【0036】
WriteSystemData: コンフィギュレーション・システム・データの修正を許可する。
【0037】
CommDD: 全ての通信及びイーサネット(登録商標)カード装置ドライバへのアクセスを許可する。
【0038】
DiskAdmin: ディスクの管理タスク(administration task、リフォーマットやドライブの名称変更など)を実行できる。

〔2.2 ユーザに公表されるケーパビリティ(User-exposed capabilities):実世界許可のマッピング(Mapping real-world permissions)〕
【0039】
ケーパビリティの生成処理は困難となりえる。まず、取り締まりを要求するアクセスを識別しなければならず、その後、これらの要求をユーザにとって意味のあるものにマッピングしなければならない。更に、ケーパビリティが多くなればなるほど複雑性も大きくなるが、複雑性はセキュリティの最大の敵であることは広く認知されている。そこで、ケーパビリティベースのソリューションは、分散される全体数を最小化することを模索すべきである。以下のケーパビリティは、システムサービス(例えば、フォンスタック)への権限なきアクセスである主たる脅威に対し、かなり広くマッピングされ、ユーザデータの守秘性/インテグリティを維持する。
【0040】
PhoneNetwork: "電話ネットワークサービスにアクセス可能であり、潜在的にユーザの金を消費する。"
"電話をかける(Make telephone calls)"
"短いテキストメッセージを送信する(Send short text messages)"
WriteUserData: "ユーザのプライベート情報をリードし、修正できる。"
"コンタクトを追加する(Add a contact)"
"アポイントメントとを削除する(Delete appointment)"
ReadUserData: "ユーザのプライベート情報をリードできる。"
"コンタクトデータにアクセスする(Access contacts data)"
"アジェンダデータにアクセスする(Access agenda data)"
LocalNetwork: "ローカルネットワークにアクセスできる。"
"ブルートゥースメッセージを送信する(Send Bluetooth messages)"
"IR接続を確立する(Establish an IR connection)"
"USB接続を確立する(Establish USB connection)"
Location: "装置の現在のロケーションにアクセスできる"
"装置をマップ上に位置させる(Locate the device on a map)"
"最も近いレストランと映画館を表示する(Display closest restaurants and cinema)"

ルート及びシステムのケーパビリティは、強制的なものである。もし実行可能なコードに対して許可されなければ、装置のユーザは該コードの実行を決定できない。それらの厳格な制御により、トラステッド・コンピューティング・プラットフォームのインテグリティが保証される。しかしながら、サーバがユーザに公表されたケーパビリティ(user-exposed capabilities)をチェックする方法やそれらを解釈する方法は完全に柔軟なものであって、ユーザに一任しても良い。

〔2.3 ケーパビリティのプロセスへの割当〕
【0041】
ランタイム・ケーパビリティとプロセスとの関連性は、ローダーを含むものである。本質的に、それは、個々のライブラリ及びプログラムと関連づけられた静的なケーパビリティ設定を、カーネルが保持し、カーネルユーザライブラリAPIを通じて要求され得るランタイム・ケーパビリティに変換する。
【0042】
ルール1: プログラムからプロセスを生成する場合、ローダーは、そのプログラムのケーパビリティのセットと同一のケーパビリティのセットを割り当てる。
【0043】
ルール2: ライブラリを実行可能なコード内にロードする場合、当該ライブラリのケーパビリティセットは、ロードする実行可能なコードのケーパビリティのセット(the capability set of the loading executable)よりも大きいか、或いは等価でなければならない。もし、この通りでなければ、ライブラリは実行可能なコード内にロードされない。
【0044】
ルール3: 実行可能なコードは、より高いケーパビリティを有するライブラリ(a library with higher capabilities)をロードすることができるが、そうすることによりケーパビリティが増強されることはない。
【0045】
ルール4: ローダーは、TCBにリザーブされているファイルシステムの閉じられた部分のデータ(the data caged part of the file system reserved to the TCB)にない、いかなる実行可能なコードのロードも拒む。
【0046】
ここで、以下の点には注意すべきである。
【0047】
・ ライブラリのケーパビリティは、ロード時においてのみチェックされる。その上で、ライブラリに含まれる全てのコードは自由に実行され、あるIPC呼を開始する場合に(when initiating some IPC calls)それが読み込まれるプログラム(the program it runs into)のケーパビリティセットと同一のケーパビリティのセットが割り当てられる。
【0048】
・ 適切に実行されるROMイメージについて(for ROM images with execution in place)、ROMビルトツール(ROM built tool)は、実行時にローダーと同一のタスクを行う全てのシンボルを決定する。そのために、ROMビルトツールは、ROMイメージを構築する場合にローダーと同一のルールを強制する。
【0049】
これらのルールは、
・ 注意を要するプロセス(sensitive process)、例えばシステムサーバーにおけるプラグイン、にマルウェア(malware)がロードされることを阻止する。
【0050】
・ また、バイパスを行わずに、プロセスの内部にある注意を要するコードのカプセル化を推奨する。
【0051】
以下の例は、静的又は動的にロードされたライブラリのそれぞれの場合について、これらのルールがどのように適用されるかを示す。

〔2.3.1 リンクされたDLLについての例〕
【0052】
プログラムP.EXEは、ライブラリL1.DLLにリンクされている。
ライブラリL1.DLLは、ライブラリL0.DLLにリンクされている。
【0053】
(ケース1)
P.EXEは、Cap1及びCap2を保持する。
L1.DLLは、Cap1、Cap2及びCap3を保持する。
L0.DLLは、Cap1及びCap2を保持する。
L1.DLLがL0.DLLをロードできないために、プロセスPは生成されず、ローダーは失敗する。L0.DLLは、L1.DLLよりも大きい、或いは、等価なケーパビリティセットを有していないので、ルール2が適用される。
【0054】
(ケース2)
P.EXEは、Cap1及びCap2を保持する。
L1.DLLは、Cap1、Cap2及びCap3を保持する。
L0.DLLは、Cap1、Cap2、Cap3及びCap4を保持する。
プロセスPは生成され、ローダーは成功し、新たなプロセスにCap1及びCap2が割り当てられる。新たなプロセスのケーパビリティは、ルール1を適用して決定される。ここで、ルール3に規定されるように、L1.DLLはL0.DLLが有するCap4ケーパビリティを取得できず、P1.EXEはL1.DLLが有するCap3ケーパビリティを取得できない。

〔2.3.2 動的にロードされるDLLについての例〕
【0055】
プログラムP.EXEは、ライブラリL1.DLLを動的にロードする。
ライブラリL1.DLLは、ライブラリL0.DLLを動的にロードする。
【0056】
(ケース1)
P.EXEは、Cap1及びCap2を保持する。
L1.DLLは、Cap1、Cap2及びCap3を保持する。
L0.DLLは、Cap1及びCap2を保持する。
プロセスPは無事に生成され、Cap1及びCap2が割り当てられる。
【0057】
PがローダーにL1.DLL及びL0.DLLをロードすることを要求すると、ローダーはそれに成功する。これは、PがL1.DLLとL0.DLLとをロードすることができるからである。ここでは、ライブラリL1.DLLではなく、ロードする実行可能なコードである(the loading executable)プロセスPに対してルール2が適用される。また、(該ローダーによって処理される)IPCロード要求は、プロセスPによって送信される(the IPC load request that the loader processes is sent by the process P.)。呼(call)はL1.DLL内にあるという事実は、ここでは不適切である。ルール1及び3が前のように適用され、L1.DLLのロードによっては、PがCap3を取得することはない。
【0058】
(ケース2)
P.EXEは、Cap1及びCap2を保持する。
L1.DLLは、Cap1、Cap2及びCap3を保持する。
L0.DLLは、Cap1、Cap2及びCap4を保持する。
プロセスPは無事生成され、Cap1及びCap2が割り当てられる。Pが、ローダーにL1.DLLとL0.DLLをロードすることを要求すると、ローダーはそれに成功する。これは、PがL1.DLLとL0.DLLをロードできるからである。ここで再度、ルール2が、L1.DLLではなく、ロードする実行可能なコードであるPに適用され、その一方で、ルール3により、PはCap3及びCap4のいずれも取得しないことが確定される。

〔2.4 取り外し可能な媒体の柔軟性をどのようにプラットフォーム・セキュリティと結びつけるか〕
〔2.4.1 今日〕
〔2.4.1.1 装置のインテグリティ〕
【0059】
今日、取り外し可能な媒体に格納されているファイルは完全に無防備である。それらは、完全にアクセス可能であり、修正を受けることができる。取り外し可能な媒体が装置に再度接続されると、システムのインテグリティを保証するためのチェックは一切実行されない。この事実と関連するリスクは、低く見られているかもしれない。というのも、媒体の所有はサブヴァージョン(subversion)のために必要とされるからである。しかしながら、例えば、悪意のあるユーザはマルウェア(malware)をインストールして、装置にはダメージを与えないが、ネットワークオペレータに対する武器として利用するかもしれない。今日、プラットフォーム・セキュリティを除けば、取り外し可能な媒体からのコードのロードを拒否するローダーを利用するしか保護の術はない。しかしながら、長い目で見れば、より多くのスペースがより多くのアプリケーションを格納するために必要とされ、この方法では、ユーザが装置用にソフトウェアを購入することの妨げとなってしまい、もしそれを利用することができないのであればオープンなプラットフォームを購入することを、暗黙のうちに阻止することとなってしまう。

〔2.4.1.2 データの守秘性(confidentiality)〕
【0060】
データの守秘性に対する脅威は現実のものであるが、盗まれた取り外し可能な媒体に含まれるデータのみに限られる。このような脅威の大半は、次のようなプラットフォーム・セキュリティのサポートに依らずに既に防止することができる。
【0061】
(1.媒体へのハードウェア・コントロール・アクセス)
平均的な装置では、例えば、セキュアMMC(Secure MMC)、PIN保護されたSIM(PIN-protected SIM)媒体はパスワードにより保護される。
【0062】
(2.ファイル暗号化)
ユーザがある注意を要するデータ(sensitive data)のセキュリティに関心を有し、そのデータを取り外し可能な媒体に格納するならば、該ユーザは暗号化を行うことが好ましい。
【0063】
(3.ファイルシステム暗号化)
ファイルシステム暗号化は、ディスク装置ドライバレベルにおいて提供されるのが好ましい。

〔2.4.2 提案に係る発明〕
【0064】
提案に係る本発明は、現在の脅威を防止するだけでなく、取り外し可能な媒体の相互運用性(interoperability)及びコード分配利用(code distribution uses)を維持することをも目的とする。
【0065】
プラットフォーム・セキュリティ構造では、取り外し可能な媒体が装置から取り外された場合になされる修正を防止することはできない。パスワードで保護された取り外し可能な媒体であっても、権限のあるユーザはそれを変更することができる。ゆえに、最も好ましいプラットフォーム・セキュリティは、既知の実行可能なコードについてはタンパーエビデンス機能(tamper evidence mechanism)を提供し、不知のコードについては安全な実行を提供することができる。

〔2.4.2.1 ソフトウェア・インストーラ〕
【0066】
インストール時において、アプリケーションパッケージが取り外し可能な媒体に格納されるべきである場合:
ステップ1.ソフトウェア・インストーラは、取り外し可能な媒体にインストールされようとしている実行可能なコードが、正しいセキュア識別子(SID)を有し、かつ、他の正当な実行可能なコードになりすまして、そのプライベートデータにアクセスしようとしていないか、を検証する。
【0067】
ステップ2.ソフトウェア・インストーラは、幾つかのシステム及びユーザのケーパビリティを、アプリケーションパッケージに含まれている実行可能なコードに割り当てる。
【0068】
ステップ3.ソフトウェア・インストーラは、実行可能なコードをハッシュする。
【0069】
ステップ4.ソフトウェア・インストーラは、全てのケーパビリティとハッシュ結果(即ち、ダイジェスト)を(例えば、移動不可能な)不変のファイルシステムのTCBで制限されたエリア(TCB-restricted area of a permanent file system)に格納する。
【0070】
デインストール時(de-install time)には、ソフトウェア・インストーラは実行可能なコードが存在する場合にはそれを取り外し可能な媒体から除去し、インストールステップ4において生成された関連ファイルを破壊する。
【0071】
プレフォーマットされた取り外し可能な媒体(既にインストールされたファイル)については、ソフトウェア・インストーラにステップ1から3を実行させるために、アプリケーションパッケージの簡素なバージョン(lighter version)が提供されなければならない。本発明は、プリフォーマットされた取り外し可能な媒体上の新しいアプリケーションを検出するための装置を、いかなるものにも限定することはない。可能性のあるオプションとしては、無線装置へ取り外し可能な媒体が挿入された時点において新しいアプリケーションの存在を検出してもよいし、プリフォーマットされた取り外し可能な媒体の除去を、それが含むアプリケーションのデインストールの際に考慮してもよい。

〔2.4.2.2 ローダー(Loader)〕
【0072】
ロード時において、ローダーは取り外し可能な媒体からロードするために実行可能なコードを識別する。ローダーは、対応するHASHファイル、(例えば、移動不可能な)不変のファイルシステムのTCBで制限されたエリア(TCB-restricted area of a permanent file system)に格納されたハッシュ結果、を参照する。
【0073】
・ もし、該ハッシュファイルが存在する場合、実行可能なコードをハッシュして、両ハッシュ結果を比較する。
【0074】
・ もし両者が一致する場合、ローダーはHASHファイルから抽出されたシステム及びユーザのケーパビリティを、該実行可能なコードに割り当てて、通常のローディング処理を実行する。
【0075】
・ もし両者が一致しない場合、ローダーはエラーを返す。
【0076】
・ もし、対応するHASHファイルが存在しない場合、ローダーは、システム及びユーザのケーパビリティを、該実行可能なコードに割り当てることはせずに、通常のローディング処理を実行する。ローダーは、当該"不知のコード(unknown)"にセキュア識別子(SID)を割り当てて(プロセスの該SID(セキュア識別子)は、OS上で実行可能なコードの一部をユニークに識別するための手法であって、関連する実行可能なコードに格納されている)、正当なプロセスへのなりすましを防止する。ケーパビリティ及びSIDが不知のコードには許可されないので、このコードはトラステッド・コンピューティング・プラットフォームのインテグリティを危うくすることはない。
【0077】
ハッシュ処理(hashing process)は、取り外し可能な媒体とは独立でなければならない。実行されるべきは、コードの一部の認証であって、それを提供する取り外し可能な媒体の認証ではない。好適な実施態様では、無線装置において利用するのに合理的な安全性と高速性を有する点から、SHA−1が利用される。

〔2.4.3 利用ケース(Use cases)〕
〔2.4.3.1 アクター(Actors)〕
【0078】
1.Uは、ユーザである。
2.P1、P2は、Uによって所有されている2つの無線装置である。
3.C1、C2は、Uによって所有されている2つの取り外し可能な媒体である。
4.APPは、実行可能なコードを1つのみ有するアプリケーションである。
5.ローダー
6.SWInstallは、ソフトウェア・インストーラである。
7.ETELは、電話ネットワークへのアクセスを制御するプロセスである。

〔2.4.3.2 仮定(Assumptions)〕
【0079】
1.APPは、PhoneNetworkケーパビリティを有する署名されたアプリケーションパッケージAPP.sisとして配信される。
2.C:は、内部ドライブである。
3.D:は、取り外し可能な媒体用のドライブである。
4.C1はAPP.sisをルート下に含む。APP.sisは、APPのインストレーション・パッケージである。

〔2.4.3.3 利用ケース1−UがP1にAPPをインストールする〕
【0080】
1.UはC1をP1に接続する。
2.UはP1を利用する。
3.Uは、SWInstallに、D:\APP.sisをドライブD:\にインストールすることを依頼する。
4.SWInstallは、署名証明書(signing certificate)を検証する。{E1}
5.SWInstallは、APP.appを抽出する。
6.SWInstallは、システム及びユーザのケーパビリティを実行可能なコードから除去し、c:\<TCBのみがアクセス可能なディレクトリ(directory accessible to TCB only)>\APP.capへコピーする。
7.SWInstallは、APP.appをハッシュして、c:\<TCBのみがアクセス可能なディレクトリ>\APP.capに格納する。
8.SWInstallは、APP.appをD:へコピーする。
9.SWInstallは、インストールを完了する。
【0081】
E1−有効でない署名
1.利用ケース終了。

〔2.4.3.4 利用ケース2−UがC1をC2にオフラインでコピーし、C2をP1で利用する〕
【0082】
1.UはC1をC2にオフラインでコピーする。
2.UはC2をP1に接続する。
3.UはP1を利用する。
4.Uは、ローダーにAPPの開始を依頼する。
5.ローダーはAPP.appをD:\に発見する。
6.ローダーは、c:\<TCBのみがアクセス可能なディレクトリ>\APP.capを開く。
7.ローダーは、ハッシュ結果の検証に成功する。{E2}
8.ローダーは、システム及びユーザのケーパビリティをAPP.capから抽出する。
9.ローダーはAPP.appをロードし、APP.appにケーパビリティを割り当てる。
10.Uは、APPに番号のダイヤルを依頼する。
11.APPはETELに番号のダイヤルを依頼する。
12.ETELは、APPがPhoneNetworkを取得したことのチェックに成功する。
13.ETELは番号をダイヤルする。
14.Uは電話接続を利用する。
【0083】
E2−ハッシュは一致しない
1.ローダーはAPPをロードせず、バイナリハッシュ不一致エラー(Binary Hash Mismatch error)を返す。
2.UはAPPを利用できない。

〔2.4.3.5 利用ケース3−UがC1をP2で利用する〕
【0084】
1.UはC1をP2に接続する。
2.UはP2を利用する。
3.UはローダーにAPPの開始を依頼する。
4.ローダーはAPP.appをD:\に発見する。
5.ローダーは、c:\<TCBのみがアクセス可能なディレクトリ>\APP.capを発見しない。
6.ローダーはAPP.appをロードし、APP.appに、ユーザ及びシステムのケーパビリティを割り当てない。
7.Uは、APPに番号のダイヤルを依頼する。
8.APPはETELに番号のダイヤルを依頼する。
9.ETELは、APPがPhoneNetworkを取得していないことを検出する。
10.ETELは、電話をかけたいかどうかをUに問い合わせる。
11.Uは許可する(U accepts)。{E1}
12.ETELは番号をダイヤルする。
13.Uは電話接続を利用する。
【0085】
E1−Uは許可しない(U does not accept)
1.ETELは番号をダイヤルしない。
2.APPはUに対してエラーを表示する。
【0086】
〔2.4.3.6 利用ケース4−UはAPPをP2にインストールし、APPのPhoneNetworkをデモートする(demote)〕
【0087】
1.UはC1をP2に接続する。
2.UはP2を利用する。
3.UはP2のD:\にAPPをインストールすることに成功する。(利用ケース1を参照。)
4.Uは、SWInstallに、APPのケーパビリティからPhoneNetworkを除去することを依頼する。
5.SWInstallは、c:\<TCBのみがアクセス可能なディレクトリ>\APP.capを修正し、ファイル内のユーザのケーパビリティをリセットする。
6.Uは、ローダーにAPPの開始を依頼する。
7.ローダはD:\にAPP.appを発見する。
8.ローダーはc:\<TCBのみがアクセス可能なディレクトリ>\APP.capを開く。
9.ローダーはハッシュ結果の検証に成功する。{E2}
10.ローダーはケーパビリティをAPP.capから抽出する。
11.ローダーは、APP.appをロードし、ケーパビリティをAPP.appに割り当てる。
12.UはAPPに番号のダイヤルを依頼する。
13.APPはETELに番号のダイヤルを依頼する。
14.ETELはAPPがPhoneNetworkを取得していないことを検出する。
15.ETELは、電話をかけたいかどうかをUに問い合わせる。
16.Uは許可する。{E1}
17.ETELは番号をダイヤルする。
18.Uは電話接続を利用する。
19.UはC1をP1に接続する。
20.UはAPPに番号のダイヤルを依頼する。
21.APPは、ETELに番号のダイヤルを依頼する。
22.ETELはAPPがPhoneNetworkを取得したことのチェックに成功する。
23.ETELは番号をダイヤルする。
24.Uは電話接続を利用する。
【0088】
E1−Uは許可しない。
1.ETELは番号をダイヤルしない。
2.APPはUに対してエラーを表示する。
【0089】
E2−ハッシュ結果が不一致
1.ローダーはAPPをロードせず、バイナリハッシュ不一致エラーを返す。
2.UはAPPを利用できない。

〔2.4.3.7 利用ケース5−Uは、P2からC2を利用してAPPをアンインストールする〕
【0090】
1.UはC2をP2に接続する。
2.UはP2を利用する。
3.UはSWInstallにAPPのアンインストールを依頼する。
4.SWInstallは、c:\<TCBのみがアクセス可能なディレクトリ>\APP.capを削除する。
5.SWInstallは、UにD:上での削除の承認を依頼する。
6.Uは承認する。{E1}
7.SWInstallは、APP.appをD:から削除する。
8.UはC2をP1又はP2上で利用してAPPを開始することができない。
【0091】
E2−Uは承認しない。
1.SWInstallは、APP.appをDから削除しない。
2.UはC2をP1で利用してAPPを開始することができる。

〔2.4.3.8 利用ケース6−UはAPP.appをハックし、幾つかのシステムケーパビリティを追加する〕
【0092】
1.Uは、C1上でオフラインでAPP.appシステムケーパビリティを修正する。
2.UはC1をP1に接続する。
3.UはP1を利用する。
4.UはローダーにAPPの開始を依頼する。
5.ローダーはD:にAPP.appを発見する。
6.ローダーは、c:\<TCBのみがアクセス可能なディレクトリ>\APP.capを開く。
7.ローダーはハッシュの検証に失敗する。
8.ローダーはAPPをロードせず、バイナリハッシュ不一致エラーを返す。
9.UはAPPを利用できない。

〔2.4.3.9 結論〕
【0093】
これらの利用ケースは、プラットフォーム・セキュリティにおいても、取り外し可能な媒体により提供される以下の柔軟性が維持されることを示している。
・ 異なるユーザケーパビリティ設定を有する装置間においてカードを共有すること。
・ カードを複製し、当該複製されたものを制限なく利用すること。
・ 取り外し可能な媒体から取得されるコードを安全に実行すること。

【特許請求の範囲】
【請求項1】
移動体無線装置であって、
通常の使用時に容易に着脱可能な媒体上のネイティブで実行可能なコードをインストール可能にプログラムされていることと;
前記コードのダイジェストを計算し、前記移動体無線装置内の取り外しできない固定的な格納部に格納するようにプログラムされていることと;
前記取り外し可能な媒体が前記移動体無線装置に再度接続され、前記コードが呼び出された場合に、前記移動体無線装置は、前記取り外し可能な媒体よりロードしようとするコードからダイジェストを再計算するようにプログラムされていることと;
前記再計算したダイジェストと、前記取り外しできない固定的な格納部に格納されているダイジェストとを比較して、前記再計算したダイジェストと前記格納されているダイジェストとが異なる場合は、前記ロードしようとするコードの利用を抑制するようにプログラムされていることと;
を特徴とする、移動体無線装置。
【請求項2】
前記格納されているダイジェストを、トラステッド・コンピューティング・ベースのコンポーネントによってのみアクセス可能とするように構成される、請求項1に記載の移動体無線装置。
【請求項3】
前記実行可能なコードのケーパビリティを、トラステッド・コンピューティング・ベースのコンポーネントによってのみアクセス可能とするように構成される、請求項1または2に記載の移動体無線装置。
【請求項4】
前記実行可能なコードについてのダイジェストが格納されていないため、前記比較ができない場合、前記実行可能なコードはケーパビリティ及び識別子なしでロードされることを特徴とする請求項1から3のいずれかに記載の装置。
【請求項5】
前記再計算したダイジェストと、前記格納されているダイジェストとが一致しない場合は、前記実行可能なコードをロードしないように構成される、請求項1から4のいずれかに記載の移動体無線装置。
【請求項6】
前記再計算したダイジェストと、前記格納されているダイジェストとが一致した場合、前記移動体無線装置に格納されているケーパビリティを前記実行可能なコードに割り当てるように構成される請求項1から5のいずれかに記載の移動体無線装置。
【請求項7】
通常の使用時に容易に着脱可能な媒体に格納された実行可能なコードを利用することに関する処理において、移動体無線装置のコンピュータが、コンピュータ読み取り可能な命令に従って実行する方法であって、
前記コードの第1のダイジェストを計算し、前記移動体無線装置内の取り外しのできない固定的格納部に格納することと;
前記取り外し可能な媒体が前記移動体無線装置に再度接続され、前記コードが呼び出された場合に、前記移動体無線装置は、前記取り外し可能な媒体よりロードしようとするコードからダイジェストを再計算することと;
前記再計算したダイジェストと、前記取り外しできない固定的な格納部に格納されているダイジェストとを比較して、前記再計算したダイジェストと前記格納されているダイジェストとが異なる場合は、前記ロードしようとするコードの利用を抑制することと;
を含む、方法。
【請求項8】
前記格納されているダイジェストは、トラステッド・コンピューティング・ベースのコンポーネントによってのみアクセス可能である、請求項7に記載の方法。
【請求項9】
前記実行可能なコードのケーパビリティは、トラステッド・コンピューティング・ベースのコンポーネントによってのみアクセス可能であるように格納される、請求項7または8に記載の方法。
【請求項10】
前記実行可能なコードについてのダイジェストが格納されていないため、前記比較ができない場合、前記実行可能なコードをケーパビリティ及び識別子なしでロードすることを含む、請求項7から9のいずれかに記載の方法。
【請求項11】
前記再計算したダイジェストと、前記格納されているダイジェストとが一致しない場合は、前記実行可能なコードをロードしないことを含む、請求項7から10のいずれかに記載の方法。
【請求項12】
前記再計算したダイジェストと、前記格納されているダイジェストとが一致した場合、前記移動体無線装置に格納されているケーパビリティを前記実行可能なコードに割り当てることを含む、請求項7から11のいずれかに記載の方法。
【請求項13】
請求項7から12のいずれかに記載の方法を、移動体無線装置のコンピュータに実行させる命令を含む、コンピュータ・プログラム。

【公開番号】特開2010−205270(P2010−205270A)
【公開日】平成22年9月16日(2010.9.16)
【国際特許分類】
【出願番号】特願2010−57097(P2010−57097)
【出願日】平成22年3月15日(2010.3.15)
【分割の表示】特願2004−507971(P2004−507971)の分割
【原出願日】平成15年5月28日(2003.5.28)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Bluetooth
【出願人】(398012616)ノキア コーポレイション (1,359)
【Fターム(参考)】