説明

少なくとも1つのインストールされたプロフィールに基づいてソフトウェアコードの実行を許可するシステム及び方法

【課題】少なくとも1つのインストールされたプロフィールに基づいてソフトウェアコードの実行を許可するシステム及び方法を提供する。
【解決手段】セキュアな動作環境において実行されるべきソフトウェアコード又はアクセス能力を許可するシステム及び方法。信頼できるエンティティにより、他のエンティティへ信頼性を拡張するためにプロフィールが発行され、これら他のエンティティが、特定のコンピューティング装置等のセキュアな動作環境においてアプリケーションを与え又はその実行を制御できるようにする。プロフィールは、テスト、品質保証等、信頼できる当局による各配布の再許可を行わずに装置へ、或いは他のエンティティにより制御又は許可された装置の限定グループへ、エンティティがソフトウェアコードを追加するのを許す。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソフトウェアコードの実行を制御することに係る。
【背景技術】
【0002】
コンピューティング装置は、コンピュータシステムで実行されるコードが、信頼できる当事者により許可されることを必要とするように、構成される。例えば、このような許可は、コンピューティング装置の完全性が、悪意のある又は無許可のコードにより危うくされないよう保証する上で助けとなるよう使用される。あるケースでは、信頼できる当事者がコードにデジタル署名し且つコンピューティング装置で実行するべくコードを検証することを必要とし、及び/又は装置の特定リソース又はサービスにアクセスするソフトウェアの実行を制御するように、コンピューティング装置が構成される。デジタル署名の検証は、基礎となるアプリケーションコードが変更されていないことを保証する上で助けとなる。というのは、信頼できる当局102によりそれがデジタル署名されたものだからである。しかしながら、このセキュリティスキームは、複数のエンティティがそれらのポリシーを装置において具現化するのを許す上で問題がある。
【0003】
例えば、開発中に、ソフトウェア開発者は、コンピュータシステムにおけるそれらのコードをしばしば変更し、そのシステム上でそのテストを試みることがある。コードが変更されるたびに、デジタル署名が無効となる。それ故、新たな又は変更されたコードを実行するために、ソフトウェア開発者は、信頼できる当局102によりコードに再び署名がなされねばならないことになる。このプロセスは、厄介で、且つ時間浪費である。
【図面の簡単な説明】
【0004】
【図1】ソフトウェアコードが1つ以上の開発者からコンピューティング装置へ配布されるコンピューティング環境の一例を示すブロック図である。
【図2】図1に示す環境におけるコンピューティング装置のソフトウェアコンポーネントの一実施形態を示すブロック図である。
【図3】図2に示す装置におけるソフトウェアの実行を制御するためのプロフィールの一実施形態を示すブロック図である。
【図4】図2に示すコンピューティング装置の一実施形態のソフトウェアコンポーネント間のデータの流れを示すブロック図である。
【図5】図2に示すプロフィールに基づきソフトウェアを実行するための方法の一実施形態を示すフローチャートである。
【図6】図5の方法の一部分を詳細に示すフローチャートである。
【図7】図2に示すコンピューティング装置の一例を示すブロック図である。
【図8A】図2に示すコンピューティング装置の一例を示すブロック図である。
【図8B】図2に示すコンピューティング装置の一例を示すブロック図である。
【図9】図8A及び8Bに示す移動装置の具現化の一例を示すブロック図である。
【発明を実施するための形態】
【0005】
装置のソフトウェアを開発しその実行を制御する上で、ソフトウェア開発者が幾つかの信頼できる権利をもつのを許す実施形態が提供される。第1の信頼できる当事者がアプリケーションに暗号で署名するコンピューティング装置では、装置の識別子により識別される装置の指定リストに対して第2の当事者が署名したアプリケーションまで信頼性を拡張するために装置のオペレーションをプロビジョニングする開発者プロフィールが提供される。特定のプロフィールは、複数の開発者からの装置上でアプリケーションを実行し、複数の装置上でアプリケーションを実行し、且つ異なる装置、プロフィール及び/又は開発者に対して異なる入手可能な能力を指定することができる。
【0006】
アプリケーション実行の制御は、装置のプロセッサの信頼できるスペースにおいて維持される。信頼できるスペースは、プロセッサの特権又はスーパーバイザーモード又はメモリスペース、例えば、メモリのカーネルスペースを含む。メモリのユーザスペースのような信頼できないスペースにおいて実行されるサービス(又はプロセス)は、プロフィールを管理し、特定のアプリケーションを実行できるかどうか決定し、そして信頼できるスペースに対して信頼できるアプリケーションを識別するように構成される。信頼できないスペースは、プロセッサで実行されるユーザモード又は非特権プロセスのメモリスペースを含む。
【0007】
暗号化機能及びそれに付随する計算は、ユーザスペースサービスにより遂行することができる。更に、ユーザスペースサービスは、特定の開発者プロフィール、特定の装置識別子、特定のキャリア、等に対して特有のものである1つ以上のプロフィール及びポリシーに基づいてソフトウェアを認証するように構成される。これらの論理上及び計算上複雑なプロセスを信頼できるスペースから分離することで、ソフトウェアシステムの信頼性及び性能を改善し、且つ複雑な暗号の使用及びポリシーの実施を可能にすることができる。
【0008】
本発明の実施形態を例示するために、図1から7について以下に説明する。図1は、それら実施形態を具現化できる全システム図である。図2−3は、ソフトウェアコンポーネントの実施形態、及びソフトウェアの実行を制御するための規範的プロフィールを示す。図4は、ソフトウェアコンポーネント間のデータ流の一例を示す。図5−7は、プロフィールに基づいてソフトウェアを実行するためのプロセスフローチャートである。図7は、移動コンピューティング装置の一例を示す。これらの図は、図1を参照することから始めて、以下に詳細に説明する。
【0009】
図1は、許可されたソフトウェアコードを、許可されたコードのみを実行するよう構成されたコンピューティング装置へ配布できるようにするコンピューティング環境の一例を示す。コンピューティング装置100は、移動通信装置、デスクトップコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント(PDA)装置、移動電話装置、メディアプレーヤ装置、等を含む多数の異なる形式のコンピューティング装置である。コンピューティング装置100は、このコンピューティング装置100で実行されるコードが、信頼できる当局102により許可されることを必要とするように構成される。他の実施形態では、より複雑な許可スキームを使用することができ、例えば、限定された目的又は限定された装置リソースへのアクセスについてのみ無許可のソフトウェアを実行でき、一方、装置100のリソースにより広範囲にアクセスするために許可されたソフトウェアが設けられる。
【0010】
以下に詳細に述べるように、許可機能は、信頼できる当局によりコードが許可されたかどうか決定する装置100のオペレーティングシステムにより与えられ又はそれに関連して与えられる。従って、コードが許可され検証される場合には、更に別のシステム又はユーザ相互作用を伴わずに、それを一般的に実行することができ、又、コードが許可されない場合には、コンピューティング装置100において実行されるその能力が限定され又は防止されることもある。ある実施形態では、コンピューティング装置は、コードが許可されていないことをユーザに警告し、そしてその無許可のコードを依然実行したいかどうかユーザに尋ねる。他の実施形態では、コンピューティング装置100は、ユーザの希望に関わらず、無許可のコードが実行されるのを全く阻止するように構成される。
【0011】
ある実施形態では、信頼できる当局102は、ソフトウェア106にデジタルで署名することによりソフトウェア106を許可する。この技術で良く知られたように、デジタル署名は、データの完全性を確保するためにパブリックキー暗号を使用する。例えば、ソフトウェア開発者104は、信頼できる当局102に、コンパイルされたオブジェクトコードを与える。信頼できる当局102は、次いで、ソフトウェア106のオブジェクトコードに対してそのプライベートキーでデジタル署名を生成し、そのコードをコンピューティング装置100に利用できるようにする。
【0012】
ソフトウェアを実行するための要求がコンピューティング装置100においてなされるときには、コンピューティング装置100は、ソフトウェア106のデジタル署名をチェックして、その認証及び/又は許可を検証する。ソフトウェアが、信頼できる当局102により署名されたものであると検証された場合には、コンピューティング装置100においてソフトウェア106を実行することができる。コンピューティング装置100が、ソフトウェア106のデジタル署名を実行の前にチェックする仕方は、種々のものがある。
【0013】
ソフトウェア開発者104は、コンピューティング装置100において実行するためのソフトウェアを書き、開発し、テストし、市場に出し、販売し、及び/又は配布する個人又は組織である。一実施形態では、開発者104は、それが制御又は管理する装置100で使用するためのソフトウェアを開発する会社又は企業である。
【0014】
ソフトウェア開発サイクルの一部分として、ソフトウェア開発者104は、ソフトウェア106が現場で配備されるコンピューティング装置と同様のコンピューティング装置においてそのソフトウェアをテストすることを希望する。従って、ソフトウェア開発者104は、そのソフトウェア開発者がソフトウェア106を開発し、テストし、及び/又はその他、更なる開発を行えるようにする1つ以上の開発者用コンピューティング装置100を有する。
【0015】
開発者用コンピューティング装置100は、開発されたソフトウェア106が意図されたコンピューティング装置100と同じでよい。例えば、ソフトウェア開発者104がiPhoneのような移動電話プラットホームで実行されるソフトウェア106を書き込む場合には、例えば、開発者用コンピューティング装置100は、iPhoneでよい。同様に、ソフトウェア106のターゲットであるコンピューティング装置プラットホーム100がiPodタッチのようなメディアプレーヤである場合には、開発者用コンピューティング装置100は、iPodタッチでよい。テスト及び開発のために同様の装置を使用することにより、ソフトウェア開発者104は、コンピューティング装置100で使用するエンドユーザにソフトウェアを配布する前に、ソフトウェアを効率的に開発しテストすることができる。
【0016】
ソフトウェア開発プロセス中に、ソフトウェアアプリケーションのコードが頻繁に変化し得る。従って、以下に述べるように、ソフトウェア開発者は、1つ以上のコンピューティング装置100への開発者アクセスを得て使用することができる。この開発者アクセスプロフィールは、開発者用コンピューティング装置100にインストールされて、信頼できる当局102から付加的なコード署名サービスを要求する必要なく、開発者がそれらのソフトウェア106を装置100において変更し、再コンパイルし、テストすることができるようにする。
【0017】
ある実施形態では、開発者用コンピューティング装置100は、開発者アクセスプロフィールを受け取るのに加えて、デバッグ、トレース又はプロフィールソフトウェアのような開発及びテスト関連ソフトウェアを、開発者用コンピューティング装置100にインストールされる標準配布の一部分として、又は前プロビジョニングプロセスの一部分として、或いはその他の時間に、含むこともできる。ある実施形態では、開発者用コンピューティング装置100は、このような付加的な開発関連ソフトウェアで前プロビジョニングされる。他の実施形態では、開発関連ソフトウェアは、開発者アクセスプロフィールと共に又はそれに関連して、装置にインストールされる。
【0018】
図2は、開発者アクセスプロフィール208を使用して、信頼できる当局102により署名されないソフトウェアモジュール206を実行するために、開発者用コンピューティング装置100をどのように構成するかの一例を与えるブロック図である。上述したように、開発者用コンピューティング装置100は、ソフトウェア開発者104により生成されたソフトウェア106が設けられるコンピューティング装置100と同じ形式の装置でよい。
【0019】
ソフトウェア106は、装置100に記憶され又は装置100によってアクセスできる1つ以上のソフトウェアモジュール206を含む。一実施形態では、コンピューティング装置100の記憶装置209は、ソフトウェアモジュール206及びプロフィール208の一方又は両方を記憶するように構成されるコンピュータ読み取り可能な記憶媒体(揮発性及び/又は不揮発性)を含むことができる。又、記憶装置209は、オペレーティングシステム202のコードを記憶するようにも構成され、更に、装置100のための汎用記憶装置を含んでもよい。ソフトウェアモジュール206は、装置100に一時的に記憶されてもよいし、又は装置100に永久的に記憶されてもよい。
【0020】
開発者用コンピューティング装置100は、オペレーティングシステムを含む。このオペレーティングシステムは、MacOS、Windows、Linux、Unix、Symbian、等の既知のオペレーティングシステムでよい。前記で簡単に述べたように、オペレーティングシステムの一部分、例えば、オペレーティングシステム202のカーネルは、装置100で実行されるコードが、装置で実行できるようになる前に、許可されることを必要とするように構成される。この許可は、信頼できる当局102がソフトウェアモジュール206の幾つか又は全部をデジタルで署名するという形態をとる。ある実施形態では、信頼できる当局102は、署名されたコンピュータコードのソース及び完全性を検証するのに使用できるコード署名証明書を使用する。
【0021】
オペレーティングシステム202により使用されるメモリのカーネルスペースは、概念的に、信頼できるスペースと考えられる。信頼性は、カーネルのブート時間認証によって確立される。一実施形態では、コンピューティング装置100は、オペレーティングシステム202及びそのコンテンツにより使用されるカーネルスペースのブート時間認証を与えるためのハードウェアサポートを含むことができる。例えば、一実施形態では、コンピューティング装置100のブートローダは、例えば、適当なパブリックキー署名検証を使用してカーネルをロードしブートする前にカーネルソフトウェアの署名を認証することができる。
【0022】
デジタル署名は、例えば、メッセージダイジェストを生成するためにソフトウェアにおいてハッシュ機能を遂行することにより生成できるダイジェストを含む。ある実施形態では、増分的コード署名を使用することができる。ハッシュ値は、ソフトウェアの全部又は特定部分に対して発生されるハッシュ値である。例えば、ある実施形態では、ソフトウェアは、1つ以上のページのような1つ以上の単位へと分割される。ソフトウェアの各単位又はページに対してハッシュ値が発生される。このような実施形態におけるソフトウェアのダイジェストは、各コード又はページのハッシュ値のアレイ又はテーブルに対して発生されるハッシュ値を含む。メッセージダイジェストは、次いで、信頼できる当局102に関連したプライベート暗号キーを使用して暗号化される。一実施形態では、良く知られたSHA−1機能を使用して、メッセージダイジェストを発生することができる。暗号化されたメッセージダイジェスト(署名とも称される)は、次いで、1つ以上のソフトウェアモジュール206に添付される。
【0023】
ある実施形態では、ソフトウェアコードを実行するための要求が装置においてなされたときに、オペレーティングシステム202は、デジタル署名を確認することによりソフトウェアコードのソース及び完全性を検証することによってその要求を処理する。コードのソースが信頼できる当局102であり、且つコードの完全性が危うくされていない場合には、オペレーティングシステム202は、コンピューティング装置100においてコードを実行することができる。
【0024】
又、開発者用コンピューティング装置100は、装置識別子204も備えることができる。装置識別子204は、種々の形態をとることができる。一実施形態では、装置識別子204は、開発者用コンピューティング装置100を独特に識別するシリアルナンバーでよい。他の実施形態では、装置識別子204は、オペレーティングシステム202により発生される独特の識別子でよい。
【0025】
上述したように、開発者用コンピューティング装置100は、信頼できる当局102により生成される開発者アクセスプロフィール208も有することができる。この開発者アクセスプロフィール208は、ある装置が、信頼できる当局102により署名されないソフトウェアを実行することが許されることを指示するデータのセットを含む。一実施形態では、開発者アクセスプロフィール208は、ソフトウェア開発者104がそれらのソフトウェアモジュール206に対するソースコードを変更及び再コンパイルするのを許し、次いで、開発者用コンピューティング装置100においてソフトウェアモジュール206をテストし、信頼できる当局102からの付加的なコード署名サービスを要求する必要はない。むしろ、ソフトウェア開発者104は、それらのソフトウェアモジュール206にデジタルで署名し、そして開発者104により署名されたコードを装置100で実行することを指定する開発者アクセスプロフィール208を有する開発者用コンピューティング装置100においてソフトウェアを実行することが許される。ある実施形態では、開発者アクセスプロフィールは、ソフトウェアモジュール206をテストする際に開発者104が遂行する幾つかのオペレーションを指定することもできる。例えば、開発者アクセスプロフィール208は、開発者104によりデジタルで署名されたソフトウェアモジュール206を開発者用コンピューティング装置100においてデバッグすることを指定する。又、開発者用コンピューティング装置100は、2つ以上の開発者アクセスプロフィール208をもつこともできる。
【0026】
ある実施形態では、開発者アクセスプロフィール208は、ポリシーサービス210に関連して動作することができる。ポリシーサービス210は、オペレーティングシステムのユーザ(信頼性のない)メモリスペースにおいて実行されるデーモン又は他のプロセスの形態をとる。ポリシーサービス210は、更に、開発者アクセスプロフィール208において指定されるポリシーを実施するように構成される。例えば、開発者が開発装置におけるソフトウェアのオペレーションをトレースできるがデバッグを許さないことを開発者アクセスプロフィール208が指定する場合には、ポリシーサービス210は、トレースオペレーションを許すが、デバッグモードでのアプリケーションの実行は許さない。
【0027】
ポリシーサービス210は、オペレーティングシステム202によって最初にスタートされ、このオペレーティングシステムは、サービス210をロードする前に、暗号でセキュアなものとされたサービスのダイジェストを検証する。オペレーティングシステム202は、プロセス間通信又は同様の適当なポートを経てサービス210への参照を維持することができる。従って、プロフィールサービス210は、信頼性のない又はユーザモードのスペースにおいて実行されるが、プロフィールサービス210のコードは、信頼できる当局102により署名されるべき実行において検証することができる。
【0028】
図3は、開発者アクセスプロフィール208の詳細図である。上述したように、開発者アクセスプロフィール208は、装置100のメモリに記憶されたデータのセットであり、ソフトウェアが信頼できる当局102により署名されていなくても装置がそれを実行することが許されることを指示する。開発者アクセスプロフィール208は、装置識別子データ302、開発者識別子データ304、及びエンタイトルメントデータ306を含むことができる。
【0029】
装置識別子データ302は、開発者アクセスプロフィール208が適用される1つ以上の装置識別子302を指定する。装置100が移動電話装置である実施形態では、装置識別子データ302は、移動電話装置のシリアルナンバーのアレイを含む。
【0030】
開発者アクセスプロフィール208のための装置識別子データ302は、異なる装置に対して1つ以上の装置識別子204を含むことができる。一実施形態では、装置識別子204は、特定装置に対して数字又はアルファニューメリックデータとして表される特定の識別子でよい。他の実施形態では、より一般化された装置識別データが利用される。例えば、ある装置売主及び/又は製造者は、組織に対して特有の装置識別子を有する装置を提供する。例えば、装置売主及び/又は製造者は、装置が配送される組織に基づいて装置に関連した装置識別子204の幾つかの観点をカスタマイズすることができる。
【0031】
装置識別子データ302は、各個々の装置識別子の値をリストするのではなく、装置識別子の範囲を含む。更に別の実施形態では、ビットマスク又はワイルドカードキャラクタを使用して、指定の識別子特性を有する全ての装置に開発者アクセスプロフィールが適用されることを指定する。更に別の実施形態では、装置識別子データ302は、開発者アクセスプロフィール208が全ての装置に適用されることを指定する。例えば、1つのそのような実施形態では、開発者識別子データ302で識別された開発者の1つ以上によって署名されたソフトウェアは、開発者アクセスプロフィール208がインストールされる任意の装置100において実行することが許可される。
【0032】
上述したように、開発者アクセスプロフィール208は、更に、この開発者アクセスプロフィール208が適用されるソフトウェア開発者104を指定する開発者識別子データ304も含む。開発者識別子データ304は、種々の形態をとることができる。ある実施形態では、開発者識別子データ304は、開発者アクセスプロフィール208によりカバーされるソフトウェア開発者104に関連したパブリックキーである。他の形式の識別子を使用することもできる。ある実施形態では、開発者識別子データ304は、開発者アクセスプロフィール内に記憶されたアレイデータ構造内に記憶される。もちろん、何らかの適当なデータ構造を使用することができる。
【0033】
更に、開発者アクセスプロフィール208は、エンタイトルメントデータ306を含む。このエンタイトルメントデータ306は、装置識別子データ302で指定された装置100において開発者識別子データ304で識別された開発者が署名したソフトウェアモジュール206に対して許されるオペレーションの形式を指示するデータを含む。特定の開発者アクセスプロフィール208は、2つ以上の開発者104を、開発者アクセスプロフィール208によって許可されたコードにデジタルで署名することが許されたとして指定する。
【0034】
エンタイトルメントデータ306は、装置識別子データ302で識別された装置100に対して開発者識別子データ304で識別された開発者104が署名したアプリケーションに対して許されるアクセスの形式を指定する。エンタイトルメントデータ306は、キー値対の形態をとることができる。この値は、例えば、数字、ブール、又はアルファニューメリックデータを含むことができる。一実施形態では、エンタイトルメントデータ306は、種々の指定のエンタイトルメントを表す既定のブール変数のアレイ又は他のデータ構造を含む。
【0035】
一実施形態では、エンタイトルメントデータ306は、実行されるべき能力を含む。一実施形態では、デバッグ許可エンタイトルメントが含まれ、これは、特定のプロフィールにおいて「真」にセットされると、開発者アクセスプロフィール208に関連した開発者104が署名したコードがデバッグモードで装置100においてソフトウェアモジュール206を実行することが許されることを指示する。デバッグモード許可のエンタイトルメントが「偽」にセットされ、そして開発者104が装置100においてデバッグモードでソフトウェアを実行するよう試みる場合には、ポリシーサーバー210がコードの実行を阻止する。他のこのようなエンタイトルメントは、トレース許可のエンタイトルメントを指示するエンタイトルメントデータを含む。トレース許可のエンタイトルメントは、開発者104がデジタルで署名したソフトウェアモジュール206を装置100においてコンパイルしてトレースモードで実行できるようにする。
【0036】
他のエンタイトルメントは、アドレス帳データのようなセキュリティ又はプライバシーの示唆を有する装置100のネットワークリソース、データ、ライブラリー又はアプリケーションへのアクセスを制御する。更に、他のエンタイトルメントは、電話、ネットワーク、アドレス又は電話記憶装置、或いはマルチメディアAPIを含む特定開発者APIへのアクセスを制御する。
【0037】
図4は、コンピューティング装置100の一実施形態のソフトウェアコンポーネント間でシステムにより要求が受け取られて処理されるときに生じる事象間の関係を示すブロック図である。図示されたように、事象1において、信頼できるスペースを含むことのできるオペレーティングシステム202は、要求を受け取り(特定のソフトウェアモジュール206を実行するためのユーザ要求に応答するか、又は特定のソフトウェアモジュール206を実行するための装置100における別のソフトウェアコンポーネントの要求に応答して)、識別されたソフトウェアモジュール206を実行する。一実施形態では、この要求は、ソフトウェアモジュール206の実行可能なインストラクションコードを記憶する記憶装置209のディレクトリ又はファイルへの参照を含むことができる。
【0038】
事象2において、オペレーティングシステム202は、ソフトウェアモジュール206を認証する要求をポリシーサービス210へ通信する。一実施形態では、認証要求は、ソフトウェアモジュール206に関連した記憶装置209内の記憶位置への参照を含むことができる。又、オペレーティングシステム202は、ソフトウェアモジュール206の少なくとも一部分のダイジェストをポリシーサービス210に与えることもできる。それとは別に又はそれに加えて、ポリシーサービス210は、ソフトウェアモジュール206の全部又は一部分のダイジェストを発生する。一実施形態では、ダイジェストは、ソフトウェアモジュール206に関連した各コードページ又は各ファイルに対して決定されたダイジェスト値に基づく。一実施形態では、ポリシーサービス210への要求は、実施されるべき特定のエンタイトルメントのような他のデータも含む。
【0039】
例えば、オペレーティングシステム202は、エンタイトルメントが、指定のシステムリソースを実行するか、それをデバッグするか又はそこにアクセスするためのエンタイトルメントであることを指定する。オペレーティングシステム202、又は装置100のオペレーティングシステムの別の部分は、移動電話ネットワークのような特定のネットワーク、ブルーツーススタック、又は装置100の特定能力へのアクセス、例えば、装置100のマイクロホン、スピーカ、カメラ又は他のI/Oインターフェイスへのアクセスに対してエンタイトルメント許可を要求するように構成される。
【0040】
事象5において、ポリシーサービス210は、ソフトウェアモジュール206の実行に関連した1つ以上のプロフィール208にアクセスする。一実施形態では、これらプロフィールは、記憶装置209からアクセスされる。一実施形態では、プロフィール208は、ソフトウェアモジュール206の開発者に関連した特定プロフィールを含む。プロフィールは、ここでは、信頼できる当局102ではなく、ソフトウェア開発者104に関して説明するが、信頼できる当局102、例えば、装置又はオペレーティングシステム開発者により与えられるソフトウェアモジュールへのアクセス権は、ここに述べるシステム及び方法を使用して制御できることも明らかであろう。
【0041】
事象5において、ポリシーサービス210は、ダイジェスト及び/又はプロフィール208に基づいてソフトウェアモジュール206の実行権を検証する。例えば、ポリシーサービス210は、ソフトウェアモジュール206のダイジェストに関連した署名を受け取り、そしてそのダイジェストを暗号で検証するように構成される。一実施形態では、ポリシーサービス210は、特定の開発者104に関連したパブリックキーであって、プロフィール208の一部分として含まれるパブリックキーを使用して、ダイジェストの署名を検証する。
【0042】
一実施形態では、プロフィール及び開発者キーが信頼できるものであることを保証するために、ポリシーサービス210は、プロフィールが信頼できる当局102により信頼されたことを暗号で検証する。この実施形態では、ポリシーサービス210は、装置100に記憶されるか、さもなければ、例えば、データネットワークを経て装置100によりアクセスされる信頼できる当局102のパブリックキーを使用して、プロフィールのダイジェスト又は他の署名(及びそのコンテンツ)を検証することにより、プロフィールを検証する。
【0043】
ポリシーサービス210は、更に、特定の装置100に対してソフトウェアモジュール206が許可されることを検証するように構成される。例えば、一実施形態では、プロフィール208は、装置識別子をマッチングさせるための1つ以上の装置識別子又はデータ(例えば、装置100の指定のグループをマッチングさせるためのマスク又はワイルドデータ)を含むことができる。
【0044】
ポリシーサービス210は、それら識別子を、装置100によりセキュアに維持された識別子と比較し、ポリシー208の識別子データが装置100の識別子データに一致したときにソフトウェアモジュールを許可することができる。装置識別子は、装置に記憶されて識別に使用されるデータを含み、このデータは、製造者のシリアルナンバー、移動電話装置の装置又は加入者識別子、例えば、集積回路カードID(ICCID)、装置100に現在挿入されるSIMカードの国際移動加入者識別子(IMSI)、装置においてエンコードされる国際移動装置識別子(IMEI)、電子的シリアルナンバー(ESN)、或いは特定のソフトウェアモジュール206が許可されるところの装置100を識別するのに適した他のデータを含む。
【0045】
ポリシーサービス210は、プロフィール208により指定される更に別のエンタイトルメント又は他の能力に基づいてソフトウェアモジュール206を許可するように構成される。実行可能であるか否かは、エンタイトルメントの一例と考えられる。他のエンタイトルメントは、特定のソフトウェアモジュール206が、1つ以上のプロフィール208と、ポリシーサービス210が実施するように構成される他のポリシーとに基づき、サービスを実行するか又はサービスにアクセスするか指定する。
【0046】
ポリシーサービス210は、そこで実施されるポリシー及びプロフィールが任意の複雑さであって、カーネル又は他の保護されたメモリスペースのサイズを増加せずに更新を受けることができ、且つカーネルプログラミングに一般的に関連した困難さを伴わずに容易に開発及び変更できるように、ユーザスペース内で実行すべく構成される。
【0047】
図5は、特定のソフトウェアモジュール206が実行されるべきエンタイトルメントを有するかどうかをオペレーティングシステム202が決定する一例を示すが、ここに述べる方法及びシステムを使用して、装置ハードウェア能力、カーネルの他のサービス、他のオペレーティングシステムサービス、又は別のソフトウェアモジュール206のサービスへのアクセスを許可できることを認識されたい。例えば、装置100は、オペレーティングシステム202によるか、又はポリシーサーバー210で実施されるポリシーのみに基づいて許可される他のオペレーティングシステムコンポーネントによって与えられるデバッグ又はトレースファシリティを含む。例えば、デバッグインターフェイス(図示せず)は、ソフトウェアモジュール206に関連したプロフィール208で指定されたデバッグエンタイトルメントに基づき或いは他のポリシーを介して図5に示すシステムを使用して特定のソフトウェアモジュール206のデバッグに対する許可を要求する。
【0048】
エンタイトルメントは、装置に関連した1つ以上のポリシーを経て実施される。例えば、エンタイトルメントを実施するポリシーは、プロフィールのエンタイトルメントデータをホワイトリストとして処理することを含み、例えば、ソフトウェアモジュール206は、特定のソフトウェアモジュール206及び/又は特定の装置100に対してエンタイトルメントが存在することを指示するデータをプロフィール208が含むことができるときに、そのような特定のエンタイトルメントに対して認証される。別のポリシーは、ブラックリストに基づいてエンタイトルメントを実施してもよく、例えば、ソフトウェアモジュール206は、プロフィール208又は適用可能なポリシーが、特定のソフトウェアモジュール206及び/又は特定の装置100に対するエンタイトルメントを否定するデータを含むことができない限り、そのような特定のエンタイトルメントに対して認証される。別の実施形態では、あるエンタイトルメントがホワイトリストを経て実施されるよう構成される一方、他のエンタイトルメントがブラックリストを経て実施されるよう構成されるというポリシーで装置100が構成されてもよい。
【0049】
特定のエンタイトルメントを微細に制御するか又は競合するプロフィールデータを解消するような他のポリシーが含まれてもよい。例えば、一実施形態では、移動サービスプロバイダーは、そのネットワークで使用するために装置に特定のキャリアプロフィール208を含ませ、これは、特定のソフトウェアモジュール206のための開発者プロフィール208と競合し得る例えばボイスネットワーク又はダイヤル操作者アクセスのような特定装置能力に対するエンタイトルメントを更に指定する。このような事象において、装置100のポリシーは、1つのプロフィールのエンタイトルメント仕様で制御することを指定する。
【0050】
事象6において、ポリシーサービス210がソフトウェアモジュール240のエンタイトルメント及び/又は他の実行権利を検証するときに、ポリシーサービス210は、オペレーティングシステム202、又はポリシーサービス210の他のクライアントに、ソフトウェアモジュール206のエンタイトルメント、及び/又は認証要求がなされるところのエンタイトルメントを指示するデータを与える。事象7では、オペレーティングシステム202は、ポリシーサービス210から受け取られたエンタイトルメントデータに基づいてソフトウェアモジュール206を実行することができる。
【0051】
図5は、装置100においてソフトウェアモジュール206のエンタイトルメントを検証する方法500の一実施形態を示すフローチャートである。この方法は、ブロック502で始まり、オペレーティングシステム202の信頼できるスペースが、特定のソフトウェアモジュール206を実行するための要求を受け取る。一実施形態では、信頼できるスペースは、オペレーティングシステム202をそのロードの前に暗号で検証する装置100のブートローダにより、装置の始動時に、確立される。
【0052】
ブロック504において、信頼できるスペースのプロセスは、ソフトウェアモジュール206を表すデータを、信頼できないスペースで実行されているポリシーサービス210へ通信するが、このスペースは、ポリシーサービス210が最初に実行されると信頼性が認められる。データは、ソフトウェアモジュール206の記憶位置への参照と、任意であるが、認証されている特定のエンタイトルメントを表すデータとを含む。
【0053】
次いで、ブロック506において、ポリシーサービス210は、ソフトウェアモジュール206を認証する。一実施形態では、ポリシーサービス210は、暗号認証に基づいてソフトウェアモジュール206を認証する。例えば、ポリシーサービス210は、非対称的/パブリックキー暗号のような適当な暗号技術を使用してソフトウェアモジュール206のデジタル署名を検証することによりソフトウェアモジュール206を認証することができる。更に、ソフトウェアモジュール206に関連した1つ以上のエンタイトルメントは、同様の暗号技術で認証される。ブロック506の更なる詳細が図6に見られる。
【0054】
ブロック508へ進むと、ポリシーサービス210は、ソフトウェアモジュールの実行権利を表すデータをオペレーティングシステム202のカーネルへ通信する。データは、ブールの認証応答、ソフトウェアモジュール206の1つ以上のエンタイトルメントを表すデータ、ソフトウェアモジュール206の検証されたダイジェスト、又は要求に対する他の適当なデータを含む。
【0055】
ブロック510において、オペレーティングシステム202又は他の信頼できるプロセスは、認証されたエンタイトルメントに基づいて、ソフトウェアモジュール206を実行するか、又はソフトウェアモジュール206のためのサービスを遂行する。
【0056】
図6は、図5の方法のブロック506を詳細に示すフローチャートである。ブロック602において、ポリシーサービス210は、ソフトウェアモジュール206の実行可能なコードに関連した少なくとも1つのファイル又は他のデータ構造のダイジェストを計算する。ダイジェストは、例えば、SHA−1を含む適当なハッシュアルゴリズムを使用して計算される。
【0057】
ブロック604において、ポリシーサービス210は、ソフトウェアモジュール206及び/又は装置100に関連した1つ以上のプロフィール208を識別する。一実施形態では、プロフィール208は、各々、ソフトウェアモジュール206のエンタイトルメントを表す署名キー及びデータを含むことができる。例えば、エンタイトルメントは、テーブル1に示すような表形式のデータ構造を含むことができる。
テーブル1.プロフィールデータの例

【0058】
ソフトウェアモジュール206は、ソフトウェアモジュール206のダイジェスト(例えば、テーブル1に示す「コードダイジェスト」)を識別するプロフィールのキー値対を経てプロフィール208に関連付けられる。プロフィール208は、更に、デジタル署名、例えば、信頼できる当局102により暗号で署名されたプロフィールのダイジェストを含むことができる。次いで、ブロック606において、ポリシーサービス210は、例えば、プロフィール208のダイジェストの暗号署名が正しいことを検証することにより、プロフィール208を暗号で検証する。
【0059】
ブロック608へ進むと、ポリシーサービス210は、プロフィール208を特定装置100に適用できることを検証する。一実施形態では、この検証は、特定装置100の装置識別204を、署名されたプロフィール208にリストされた装置識別子と比較することを含む。ブロック606における以前の署名検証は、プロフィール208で識別された装置が許可なく変化又は変更されていないという保証を与える。
【0060】
次いで、ブロック610において、ポリシーサービス210は、プロフィール208に基づくソフトウェアモジュール206に関連した実行権利を識別する。一実施形態では、この識別は、各プロフィールのエンタイトルメントにアクセスすることを含むことができる。
【0061】
ブロック612において、ポリシーサービス210は、ソフトウェアモジュール206に対して検証されるべきエンタイトルメントがコンピューティング装置100に対するポリシーと一貫したものであることを検証する。一実施形態では、この検証は、要求されたエンタイトルメントが、ソフトウェアモジュール206及び装置100のポリシーに関連したプロフィール208に含まれるかどうか決定することを含むことができる。
【0062】
ブロック614へ進むと、ポリシーサービス210は、ブロック602で計算されたダイジェスト値を、ソフトウェアモジュール206の署名入りダイジェストと比較し、ダイジェストの暗号署名を検証する。実施形態にもよるが、ここに述べるいずれかの方法の幾つかのアクション又は事象は、異なるシーケンスで遂行でき、又は追加でき、又は合体でき、或いは全て一緒に除外できる(例えば、この方法を実施するのに、ここに述べる全てのアクション又は事象が必要とされるのではない)ことを認識されたい。更に、ある実施形態では、それらアクション又は事象は、順次ではなく、同時に、例えば、マルチスレッド処理、割り込み処理、又はマルチプロセッサを介して遂行されてもよい。
【0063】
図7は、移動装置として実施された1つの装置100の一例を示すブロック図である。装置100は、メモリ704と通信状態にあるプロセッサ702を備えることができる。ネットワークインターフェイス706は、1つ以上の適当なデータ及び/又は音声通信システムに基づいて信号を介して通信するように構成された受信器724及び送信器726を備えることができる。例えば、ネットワークインターフェイス708は、GSM、CDMA、CDMA2000、EDGE、又はUMTSのような移動電話ネットワークを経て音声及び/又はデータを通信することができる。更に、ネットワークインターフェイス706は、例えば、WiFi又はブルーツースのようなIEEE802.xを含む他のデータネットワークのための受信器/送信器を備えることもできる。
【0064】
又、装置100は、1つ以上のディスプレイ710、キー、タッチスクリーン又は他の適当な触覚入力装置のようなユーザ入力装置712、通信リンク106を経て受信される信号に基づいて可聴出力を発生するように適応されるトランスジューサより成るスピーカ714、及び/又は通信リンク106及び108の一方又は両方を経て送信される信号の可聴入力を与えるように適応されるトランスジューサより成るマイクロホン716も備えている。
【0065】
一実施形態では、入力装置712は、装置の動きを検出するように構成された加速度計又は他の装置を含むことができる。装置100は、任意であるが、装置100の1つ以上のコンポーネントへ電力を供給するためのバッテリ731を含む。装置100は、移動ハンドセット、パーソナルデジタルアシスタント、ラップトップコンピュータ、ヘッドセット、乗物のハンズフリー装置、又は他の電子装置の少なくとも1つを含む。例えば、ここに教示する1つ以上の観点は、電話(例えば、移動電話)、パーソナルデータアシスタント(PDA)、娯楽装置(例えば、音楽又はビデオ装置)、ヘッドセット(例えば、ヘッドホン、イヤホン、等)、マイクロホン、或いは他の電子装置へ合体することができる。以下に詳細に述べるように、ある実施形態では、装置100は、移動装置として具現化される。
【0066】
図8Aは、移動装置2500の一例を示す。移動装置2500は、例えば、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント、セルラー電話、ネットワーク機器、カメラ、スマートホン、改良型汎用パケット無線サービス(EGPRS)移動電話、ネットワークベースステーション、メディアプレーヤ、ナビゲーション装置、e−メール装置、ゲームコンソール、或いはこれらデータ処理装置又は他のデータ処理装置の2つ以上の組み合せである。
【0067】
移動装置の概略
ある実施形態では、移動装置2500は、タッチ感知ディスプレイ2502を備えている。タッチ感知ディスプレイ2502は、液晶ディスプレイ(LCD)技術、光放射ポリマーディスプレイ(LPD)技術、又は他のディスプレイ技術で実施することができる。タッチ感知ディスプレイ2502は、ユーザとの触覚及び/又は触感接触を感知することができる。
【0068】
ある実施形態では、タッチ感知ディスプレイ2502は、マルチタッチ感知ディスプレイ2502で構成することができる。マルチタッチ感知ディスプレイ2502は、例えば、複数の同時タッチポイントを処理することができ、これは、各タッチポイントの圧力、度合い及び/又は位置に関連したデータを処理することを含む。このような処理は、複数の指でのジェスチャー及び相互作用、コーディング、及び他の相互作用を容易にする。他のタッチ感知ディスプレイ技術も使用でき、例えば、スタイラス又は他のポインティング装置を使用して接触を行うディスプレイも使用できる。マルチタッチ感知ディスプレイ技術の幾つかの例が、米国特許第6,323,846号、第6,570,557号、第6,677,932号、及び第6,888,536号に説明されており、その各々を参考としてここにそのまま援用する。
【0069】
ある実施形態では、移動装置2500は、種々のシステムオブジェクトへのユーザアクセスを与えると共にユーザへ情報を搬送するためにタッチ感知ディスプレイ2502上に1つ以上のグラフィックユーザインターフェイスを表示することができる。ある実施形態では、グラフィックユーザインターフェイスは、1つ以上のディスプレイオブジェクト2504、2506を含むことができる。ここに示す例では、ディスプレイオブジェクト2504、2506は、システムオブジェクトのグラフィック表示である。システムオブジェクトの幾つかの例は、装置の機能、アプリケーション、ウインドウ、ファイル、警告、事象、又は他の識別可能なシステムオブジェクトを含む。
【0070】
移動装置の機能の例
ある実施形態では、移動装置2500は、電話オブジェクト2510により指示された電話装置、メールオブジェクト2512により指示されたe−メール装置、マップオブジェクト2514により指示されたマップ装置、Wi−Fiベースステーション装置(図示せず)、並びにウェブビデオオブジェクト2516により指示されたネットワークビデオ送信及びディスプレイ装置、等の複数の装置機能を具現化することができる。ある実施形態では、特定のディスプレイオブジェクト2504、例えば、電話オブジェクト2510、メールオブジェクト2512、マップオブジェクト2514、及びウェブビデオオブジェクト2516は、メニューバー2518に表示することができる。ある実施形態では、装置の機能は、図8Aに示すグラフィックユーザインターフェイスのようなトップレベルのグラフィックユーザインターフェイスからアクセスすることができる。例えば、オブジェクト2510、2512、2514、又は2516の1つにタッチすると、それに対応する機能を呼び出すことができる。
【0071】
ある実施形態では、移動装置2500は、ネットワーク配布機能を具現化することができる。例えば、この機能は、ユーザが移動装置2500を取り上げて、移動しながらその関連ネットワークにアクセスできるようにする。特に、移動装置2500は、インターネットアクセス(例えば、WiFi)をその付近の他のワイヤレス装置へと拡張することができる。例えば、移動装置2500は、1つ以上の装置のためのベースステーションとして構成することができる。従って、移動装置2500は、他のワイヤレス装置へのネットワークアクセスを承諾又は拒絶することができる。
【0072】
ある実施形態では、装置の機能を呼び出すと、移動装置2500のグラフィックユーザインターフェイスが変化し、又は増強され、或いは別のユーザインターフェイス又はユーザインターフェイス要素と置き換えられて、それに対応する装置機能に関連した特定機能へのユーザアクセスを容易にする。例えば、ユーザが電話オブジェクト2510にタッチするのに応答して、タッチ感知ディスプレイ2502のグラフィックユーザインターフェイスは、種々の電話機能に関連したディスプレイオブジェクトを提示し、同様に、メールオブジェクト2512にタッチすると、グラフィックユーザインターフェイスは、種々のe−メール機能に関連したディスプレイオブジェクトを提示し、マップオブジェクト2514にタッチすると、グラフィックユーザインターフェイスは、種々のマップ機能に関連したディスプレイオブジェクトを提示し、そしてウェブビデオオブジェクト2516にタッチすると、グラフィックユーザインターフェイスは、種々のウェブビデオ記憶に関連したディスプレイオブジェクトを提示する。
【0073】
ある実施形態では、図8Aのトップレベルのグラフィックユーザインターフェイス環境又は状態は、移動装置2500の底部付近に配置されたボタン2520を押すことにより回復することができる。ある実施形態では、各々の対応する装置機能は、タッチ感知ディスプレイ2502に表示された対応する「ホーム」ディスプレイオブジェクトを有し、図8Aのグラフィックユーザインターフェイス環境は、「ホーム」ディスプレイオブジェクトを押すことにより回復することができる。
【0074】
ある実施形態では、トップレベルのグラフィックユーザインターフェイスは、付加的なディスプレイオブジェクト2506、例えば、ショートメッセージングサービス(SMS)オブジェクト2530、カレンダーオブジェクト2532、写真オブジェクト2534、カメラオブジェクト2536、計算器オブジェクト2538、株オブジェクト2540、アドレス帳オブジェクト2542、メディアオブジェクト2544、ウェブオブジェクト2546、ビデオオブジェクト2548、設定オブジェクト2550、及びノートオブジェクト(図示せず)を含むことができる。例えば、SMSディスプレイオブジェクト2530にタッチすると、SMSメッセージング環境及びサポート機能を呼び出すことができ、同様に、ディスプレイオブジェクト2532、2534、2536、2538、2540、2542、2544、2546、2548、及び2550を各々選択すると、それに対応するオブジェクト環境及び機能を呼び出すことができる。
【0075】
又、図8Aのグラフィックユーザインターフェイスには、付加的な及び/又は異なるディスプレイオブジェクトを表示することもできる。例えば、装置2500が他の装置のためのベースステーションとして機能する場合には、1つ以上の「接続」オブジェクトがグラフィックユーザインターフェイスに現れて、接続を指示する。ある実施形態では、ディスプレイオブジェクト2506は、ユーザによって構成することができ、例えば、ユーザは、どのディスプレイオブジェクト2506が表示されるか指定することができ、及び/又は他の機能及びそれに対応するディスプレイオブジェクトを与える付加的なアプリケーション又は他のソフトウェアをダウンロードすることができる。
【0076】
ある実施形態では、移動装置2500は、1つ以上の入力/出力(I/O)装置及び/又はセンサ装置を含むことができる。例えば、音声イネーブル機能、例えば、電話及び音声メール機能を容易にするためにスピーカ2560及びマイクロホン2562を含むことができる。ある実施形態では、スピーカ2560及びマイクロホン2562の音量制御のためのアップ/ダウンボタン2584を含ませることができる。又、移動装置2500は、電話の入呼びのリングインジケータのためのオン/オフボタン2582を含ませることもできる。ある実施形態では、電話のスピーカ機能のようなハンズフリー音声機能を容易にするためにスピーカ2564を含ませることができる。又、ヘッドホン及び/又はマイクロホンを使用するためにオーディオジャック2566を含ませることもできる。
【0077】
ある実施形態では、ユーザが移動装置2500をユーザの耳の付近に配置するのを検出し、それに応答して、タッチ感知ディスプレイ2502を解離して、偶発的な機能の呼び出しを防止し易くするために、接近センサ2568を含ませることができる。ある実施形態では、移動装置2500がユーザの耳の付近にあるときに付加的な電力を保存するために、タッチ感知ディスプレイ2502をターンオフすることができる。
【0078】
又、他のセンサを使用することもできる。例えば、ある実施形態では、周囲光センサ2570を使用して、タッチ感知ディスプレイ2502の輝度を容易に調整することができる。ある実施形態では、加速度計2572を使用して、方向矢印2574で示された移動装置2500の動きを検出することができる。従って、ディスプレイオブジェクト及び/又はメディアは、例えば、肖像画又は風景画のような検出された方向に基づいて提示することができる。ある実施形態では、移動装置2500は、グローバルポジショニングシステム(GPS)又は他のポジショニングシステム(例えば、Wi−Fiアクセスポイント、テレビ信号、セルラーグリッド、ユニフォームリソースロケータ(URL)を使用するシステム)により与えられるような位置決定能力をサポートするための回路及びセンサを含むことができる。ある実施形態では、ポジショニングシステム(例えば、GPS受信器)を移動装置2500へ一体化することもできるし、又は位置に基づくサービスへのアクセスを与えるためにインターフェイス(例えば、ポート装置2590)を通して移動装置2500へ結合できる個別の装置として設けることもできる。
【0079】
ある実施形態では、ポート装置2590、例えば、ユニバーサルシリアルバス(USB)ポート、又はドッキングポート、又は他の何らかのワイヤードポート接続を含ませることができる。ポート装置2590は、例えば、他の通信装置2500、ネットワークアクセス装置、パーソナルコンピュータ、プリンタ、ディスプレイスクリーン、又はデータの送信及び/又は受信を行える他の処理装置のような他のコンピューティング装置へのワイヤード接続を確立することができる。ある実施形態では、ポート装置2590は、移動装置2500が、例えば、TCP/IP、HTTP、UDP及び他の既知のプロトコルのような1つ以上のプロトコルを使用して、ホスト装置と同期をとれるようにする。
【0080】
又、移動装置2500は、カメラレンズ及びセンサ2580を備えることもできる。ある実施形態では、カメラレンズ及びセンサ2580は、移動装置2500の背面に配置することができる。カメラは、静止映像及び/又はビデオを捕獲することができる。
【0081】
又、移動装置2500は、802.11b/g通信装置2586、及び/又はBluetoothTM通信装置2588のような1つ以上のワイヤレス通信サブシステムを備えることもできる。又、他の802.x通信プロトコル(例えば、WiMax、Wi−Fi、3G)、コード分割多重アクセス(CDMA)、移動通信用のグローバルシステム(GSM)、エンハンストデータGSM環境(EDGE)、等を含む他の通信プロトコルをサポートすることもできる。
【0082】
構成可能なトップレベルグラフィックユーザインターフェイスの例
図8Bは、装置2500の構成可能なトップレベルグラフィックユーザインターフェイスの別の例を示す。装置2500は、ディスプレイオブジェクトの異なるセットを表示するように構成できる。
【0083】
ある実施形態では、装置2500の1つ以上のシステムオブジェクトの各々は、それに関連したシステムオブジェクト属性のセットを有し、そして属性の1つは、システムオブジェクトに対するディスプレイオブジェクトがトップレベルグラフィックユーザインターフェイスにおいてレンダリングされるかどうか決定する。この属性は、システムによって自動的にセットすることもできるし、又は以下に述べるように、あるプログラム又はシステム機能を介してユーザによりセットすることもできる。図8Bは、(例えば、ノートシステムオブジェクト及びウェブビデオシステムオブジェクトの属性が変更されるときに)ノートオブジェクト2552(図8Aには示さず)がどのようにして装置2500のトップレベルグラフィックユーザインターフェイスに追加され及びそこから除去されるかの一例を示す。
【0084】
移動装置アーキテクチャーの例
図9は、移動装置(例えば、移動装置2500)の実施形態のブロック図3000である。移動装置は、メモリインターフェイス3002、1つ以上のデータプロセッサ、映像プロセッサ及び/又は中央処理ユニット3004、並びに周辺インターフェイス3006を備えることができる。メモリインターフェイス3002、1つ以上のプロセッサ3004、及び/又は周辺インターフェイス3006は、個別のコンポーネントでもよいし、又は1つ以上の集積回路に一体化されてもよい。移動装置の種々のコンポーネントは、1つ以上の通信バス又は信号ラインにより結合することができる。
【0085】
センサ、装置及びサブシステムは、複数の機能を促進するために周辺インターフェイス3006に結合することができる。例えば、図8Aを参照して述べた方向決め、照明及び接近機能を促進するために、運動センサ3010、光センサ3012及び接近センサ3014を周辺インターフェイス3006に結合することができる。又、ポジショニングシステム(例えば、GPS受信器)、温度センサ、生物測定センサ、又は他の感知装置のような他のセンサ3016を周辺インターフェイス3006に接続して、その関連機能を促進することもできる。
【0086】
又、カメラサブシステム3020及び光学的センサ3022、例えば、電荷結合デバイス(CCD)又は相補的金属酸化物半導体(CMOS)光学的センサを使用して、写真及びビデオクリップの記録等のカメラ機能を促進することができる。
【0087】
通信機能は、高周波受信器及び送信器、及び/又は光学的(例えば、赤外線)受信器及び送信器を含む1つ以上のワイヤレス通信サブシステム3024を通して促進することができる。通信サブシステム3024の特定の設計及び実施は、移動装置が動作するように意図された通信ネットワーク(1つ又は複数)に依存する。例えば、移動装置は、GSMネットワーク、GPRSネットワーク、EDGEネットワーク、Wi−Fi又はWiMaxネットワーク、及びBluetoothTMネットワークを経て動作するように設計された通信サブシステム3024を備えることができる。特に、ワイヤレス通信サブシステム3024は、移動装置を他のワイヤレス装置に対するベースステーションとして構成できるようにホスティングプロトコルを含んでもよい。
【0088】
オーディオサブシステム3026は、音声認識、音声複写、デジタル記録及び電話機能のような音声イネーブル機能を促進するためにスピーカ3028及びマイクロホン3030に結合することができる。
【0089】
I/Oサブシステム3040は、タッチスクリーンコントローラ3042、及び/又は他の入力コントローラ(1つ又は複数)3044を備えることができる。タッチスクリーンコントローラ3042は、タッチスクリーン3046に結合することができる。タッチスクリーン3046及びタッチスクリーンコントローラ3042は、例えば、複数のタッチ感知技術のいずれかを使用して、接触及び運動又はその切断を検出することができ、それらタッチ感知技術は、タッチスクリーン3046との1つ以上の接触点を決定するための容量性、抵抗性、赤外線及び表面音波技術、並びに他の接近センサアレイ又は他の素子を含むが、これらに限定されない。
【0090】
他の入力コントローラ(1つ又は複数)3044は、1つ以上のボタン、ロッカースイッチ、サムホイール、赤外線ポート、USBポート、及び/又はスタイラス等のポインタ装置のような他の入力/制御装置3048に結合することができる。1つ以上のボタン(図示せず)は、スピーカ3028及び/又はマイクロホン3030の音量制御のためのアップ/ダウンボタンを含むことができる。
【0091】
一実施形態では、第1の期間中ボタンを押すと、タッチスクリーン3046のロックを解除することができ、そして第1の期間より長い第2の期間中ボタンを押すと、移動装置への電力をオン又はオフに切り換えることができる。ユーザは、1つ以上のボタンの機能をカスタマイズすることができる。タッチスクリーン3046は、例えば、仮想又はソフトボタン及び/又はキーボードを実施するのに使用することもできる。
【0092】
ある実施形態では、移動装置は、記録されたオーディオ及び/又はビデオファイル、例えば、MP3、AAC及びMPEGファイルを提示することができる。ある実施形態では、移動装置は、iPodTMのようなMP3プレーヤの機能を含むことができる。それ故、移動装置は、iPodTMに適合できる32ピンコネクタを含むことができる。他の入力/出力及び制御装置を使用することもできる。
【0093】
メモリインターフェイス3002は、メモリ3050に結合することができる。メモリ3050は、高速ランダムアクセスメモリ及び/又は不揮発性メモリ、例えば、1つ以上の磁気ディスク記憶装置、1つ以上の光学的記憶装置、及び/又はフラッシュメモリ(例えば、NAND、NOR)を含むことができる。メモリ3050は、Darwin、RTXC、LINUX、UNIX、OS X、WINDOWSのようなオペレーティングシステム3052、又はVxWorksのような埋め込み型オペレーティングシステムを記憶することができる。オペレーティングシステム3052は、基本的なシステムサービスをハンドリングし且つハードウェア従属タスクを遂行するためのインストラクションを含むことができる。ある実施形態では、オペレーティングシステム3052は、カーネル(例えば、UNIXカーネル)である。
【0094】
又、メモリ3050は、1つ以上の付加的な装置、1つ以上のコンピュータ及び/又は1つ以上のサービスとの通信を容易にするために通信インストラクション3054を記憶することもできる。メモリ3050は、グラフィックユーザインターフェイス処理を容易にするためのグラフィックユーザインターフェイスインストラクション3050、センサ関連処理及び機能を容易にするためのセンサ処理インストラクション3058、電話関連プロセス及び機能を容易にするための電話インストラクション3060、電子メッセージング関連プロセス及び機能を容易にするための電子メッセージングインストラクション3062、ウェブブラウジング関連プロセス及び機能を容易にするためのウェブブラウジングインストラクション3064、メディア処理関連プロセス及び機能を容易にするためのメディア処理インストラクション3066、GPS及びナビゲーション関連プロセス及び機能を容易にするためのGPS/ナビゲーションインストラクション3068、カメラ関連プロセス及び機能を容易にするためのカメラインストラクション3070、及び/又は他のプロセス及び機能を容易にするための他のソフトウェアインストラクション3070を含むことができる。又、メモリ3050は、ウェブビデオ関連プロセス及び機能を容易にするためのウェブビデオインストラクション、及び/又はウェブショッピング関連プロセス及び機能を容易にするためのウェブショッピングインストラクションのような他のソフトウェアインストラクション(図示せず)も記憶することができる。ある実施形態では、メディア処理インストラクション3066は、オーディオ処理関連プロセス及び機能、並びにビデオ処理関連プロセス及び機能を各々容易にするためのオーディオ処理インストラクション及びビデオ処理インストラクションへと分割される。又、メモリ3050には、アクチベーションレコード及び国際移動装置アイデンティティ(IMEI)3074、又は同様のハードウェア識別子を記憶することもできる。
【0095】
以上に鑑み、これら実施形態は、1つ以上の他の信頼できるエンティティによりアプリケーションが一般的に与えられる実行環境において開発者がアプリケーションを開発してテストできるように実行プロフィールを実施することを含む問題を克服することが明らかであろう。更に、企業のような装置プロバイダーには、信頼できるエンティティを経てそのようなアプリケーションを配布せずにカスタム開発アプリケーションを配布する融通性が与えられる。
【0096】
当業者であれば、ここに開示した実施形態に関連して説明した種々の例示的論理ブロック、モジュール、回路及びアルゴリズムステップは、電子的ハードウェア、コンピュータソフトウェア、又はその両方の組み合せとして具現化できることが明らかであろう。ハードウェア及びソフトウェアのこの交換可能性を明確に示すため、種々の例示的コンポーネント、ブロック、モジュール、回路及びステップは、それらの機能に関して一般的に説明した。このような機能がハードウェアとして実施されるかソフトウェアとして実施されるかは、システム全体に課せられる特定のアプリケーション及び設計制約に依存する。当業者であれば、ここに述べた機能を特定のアプリケーションごとに異なる仕方で具現化できるであろうが、そのような具現化判断は、本発明の範囲から逸脱するものであると解釈されてはならない。
【0097】
ここに開示する実施形態に関連して述べた種々の例示的論理ブロック、モジュール及び回路は、ここに述べる機能を遂行するように設計された汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)又は他のプログラマブル論理装置、個別ゲート又はトランジスタロジック、個別のハードウェアコンポーネント、又はその組み合せで具現化又は遂行することができる。汎用プロセッサは、マイクロプロセッサであるが、別の実施形態では、プロセッサは、従来のプロセッサ、コントローラ、マイクロコントローラ又は状態マシンでもよい。又、プロセッサは、コンピューティング装置の組み合せ、例えば、DSP及びマイクロプロセッサの組み合わせ、複数のマイクロプロセッサの組み合せ、DSPコアに関連した1つ以上のマイクロプロセッサの組み合せ、或いは他のこのような構成として具現化されてもよい。
【0098】
ここに開示した実施形態に関連して述べた方法又はアルゴリズムのステップは、ハードウェアで直接実施されてもよいし、プロセッサにより実行されるソフトウェアモジュールで実施されてもよいし、或いはその2つの組み合せで実施されてもよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、取り外し可能なディスク、CD−ROM、又はこの技術で知られた他の形態の記憶媒体に存在することができる。規範的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り且つ記憶媒体に情報を書き込むことができるようにプロセッサに結合される。別の実施形態では、記憶媒体は、プロセッサと一体的でよい。プロセッサ及び記憶媒体は、ASICに存在してもよい。ASICは、ユーザターミナルに存在してもよい。別の実施形態では、プロセッサ及び記憶媒体は、ユーザターミナルの個別コンポーネントとして存在してもよい。
【0099】
以上の詳細な説明は、種々の実施形態に適用された本発明の新規な特徴を図示し、説明し且つ指摘するものであったが、当業者であれば、本発明の精神から逸脱せずに、上述した装置又はプロセスの形態及び細部の種々の省略、置き換え、及び変更がなされることが明らかであろう。又、本発明は、ある特徴を他の特徴と個別に使用し又は実施することができるので、ここに述べた全ての特徴及び利益を与えない形態でも実施できることが明らかであろう。本発明の範囲は、以上の説明ではなく、特許請求の範囲により規定される。請求項の意味及び等価の範囲内に入る全ての変更は、本発明の範囲に包含される。
【符号の説明】
【0100】
100:コンピューティング装置
102:信頼できる当局
104:ソフトウェア開発者
106:ソフトウェア
202:オペレーティングシステム
204:装置識別子
206:ソフトウェアモジュール
208:プロフィール
209:記憶装置
210:ポリシーサービス
302:装置識別子データ
304:開発者識別子データ
306:エンタイトルメントデータ
702:プロセッサ
704:メモリ
706:ネットワークインターフェイス
710:ディスプレイ
712:入力
714:スピーカ
716:マイクロホン
720:受信器
722:送信器

【特許請求の範囲】
【請求項1】
ソフトウェアを許可するコンピュータ化方法において、
電子装置に記憶されたソフトウェアモジュールを実行する要求をプロセッサの信頼できるスペースにおいて受け取るステップと、
前記ソフトウェアモジュールを表すデータを、前記プロセッサの信頼できないスペースにおいて実行されるサービスへ通信するステップと、
前記サービスにより前記ソフトウェアモジュールの少なくとも1つのエンタイトルメントを認証するステップと、
前記認証されたエンタイトルメントを表すデータを前記信頼できるスペースへ通信するステップと、
前記エンタイトルメントに基づき前記ソフトウェアモジュールを実行するステップと、
を備えた方法。
【請求項2】
前記信頼できるスペースは、前記装置のプロセッサ上で信頼できるモードで実行されるオペレーティングシステムカーネルを含み、前記信頼できないスペースにおいて実行されるサービスは、前記プロセッサのユーザモードプロセスにおいて実行されるプロセスを含む、請求項1に記載の方法。
【請求項3】
前記ソフトウェアモジュールは、少なくともアプリケーションプログラム又は共有ライブラリーを含む、請求項1に記載の方法。
【請求項4】
前記ソフトウェアモジュールを表すデータは、前記ソフトウェアモジュールに関連した実行可能なインストラクションの少なくとも一部分への参照を含む、請求項1に記載の方法。
【請求項5】
少なくとも1つのエンタイトルメントを認証する前記ステップは、前記一部分を表すダイジェストを計算する段階を含む、請求項4に記載の方法。
【請求項6】
前記ソフトウェアモジュールの少なくとも一部分を表すダイジェストを計算する前記段階は、前記ソフトウェアモジュールの各部分を表す複数のダイジェスト値に基づいてダイジェストを発生することを含む、請求項5に記載の方法。
【請求項7】
前記ダイジェストは、前記少なくとも一部分を表すSHA−1ハッシュを含む、請求項5に記載の方法。
【請求項8】
少なくとも1つのエンタイトルメントを認証する前記ステップは、前記ソフトウェアモジュールに関連したエンティティの暗号キーに基づいてダイジェストの暗号署名を認証する段階を含む、請求項5に記載の方法。
【請求項9】
ダイジェストの暗号署名を認証する前記段階は、
信頼できるエンティティのパブリックキーに基づいてダイジェストの暗号署名を計算すること、及び
その計算された署名を、少なくとも1つのファイルに関連して記憶された署名と比較すること、
を含む請求項8に記載の方法。
【請求項10】
前記ソフトウェアモジュールの少なくとも1つのエンタイトルメントを認証する前記ステップは、
前記ソフトウェアモジュールに関連したプロフィールを識別する段階であって、このプロフィールは、少なくとも1つの装置識別子を表すデータを含むものである段階と、
前記エンティティの暗号キーに基づいて前記プロフィールを認証する段階と、
前記プロフィールの装置識別子を前記電子装置の装置識別子と比較する段階と、
前記比較に基づいて前記エンタイトルメントを認証する段階と、
を含む請求項8に記載の方法。
【請求項11】
前記プロフィールは、更に、少なくとも1つのエンタイトルメントを表すデータを含み、前記ソフトウェアモジュールの少なくとも1つのエンタイトルメントを認証する前記ステップは、前記ソフトウェアモジュールのエンタイトルメントが前記プロフィールのエンタイトルメントと一貫したものであるときに前記ソフトウェアモジュールのエンタイトルメントを認証する段階を含む、請求項10に記載の方法。
【請求項12】
前記ソフトウェアモジュールのエンタイトルメントは、デバッグ許可エンタイトルメント、トレース許可エンタイトルメント、アドレス帳データへのアクセス許可エンタイトルメント、又はマルチメディアAPIへのアクセス許可エンタイトルメント、の少なくとも1つ以上を含む、請求項1に記載の方法。
【請求項13】
電子装置に記憶されたソフトウェアモジュールを実行する要求をプロセッサの信頼できるスペースにおいて受け取り、
前記ソフトウェアモジュールを表すデータを、前記プロセッサの信頼できないスペースにおいて実行されるサービスへ通信し、
前記サービスにより前記ソフトウェアモジュールの少なくとも1つのエンタイトルメントを認証し、
前記認証されたエンタイトルメントを表すデータを前記信頼できるスペースプロセスへ通信し、
前記エンタイトルメントに基づき前記ソフトウェアモジュールを実行する、
ことを含むプロセスを遂行するために電子装置の少なくとも1つのプロセッサにより実行可能なコードを表すデータを含むコンピュータ読み取り可能な媒体を備えたコンピュータプログラム製品。
【請求項14】
前記信頼できるスペースは、前記装置のプロセッサ上で信頼できるモードで実行されるオペレーティングシステムカーネルを含み、前記信頼できないスペースにおいて実行されるサービスは、前記プロセッサのユーザモードプロセスにおいて実行されるプロセスを含む、請求項13に記載のコンピュータプログラム製品。
【請求項15】
前記ソフトウェアモジュールは、少なくともアプリケーションプログラム又は共有ライブラリーを含む、請求項13に記載のコンピュータプログラム製品。
【請求項16】
前記ソフトウェアモジュールを表すデータは、前記ソフトウェアモジュールに関連した実行可能なインストラクションの少なくとも一部分への参照を含む、請求項13に記載のコンピュータプログラム製品。
【請求項17】
少なくとも1つのエンタイトルメントを認証することは、前記一部分を表すダイジェストを計算することを含む、請求項16に記載のコンピュータプログラム製品。
【請求項18】
前記ソフトウェアモジュールの少なくとも一部分を表すダイジェストを計算することは、前記ソフトウェアモジュールの各部分を表す複数のダイジェスト値に基づいてダイジェストを発生することを含む、請求項17に記載のコンピュータプログラム製品。
【請求項19】
前記ダイジェストは、前記少なくとも一部分を表すSHA−1ハッシュを含む、請求項17に記載のコンピュータプログラム製品。
【請求項20】
少なくとも1つのエンタイトルメントを認証することは、前記ソフトウェアモジュールに関連したエンティティの暗号キーに基づいてダイジェストの暗号署名を認証することを含む、請求項17に記載のコンピュータプログラム製品。
【請求項21】
少なくとも1つのエンタイトルメントを認証することは、
信頼できるエンティティのパブリックキーに基づいてダイジェストの暗号署名を計算すること、及び
その計算された署名を、少なくとも1つのファイルに関連して記憶された署名と比較すること、
を含む請求項20に記載のコンピュータプログラム製品。
【請求項22】
少なくとも1つのエンタイトルメントを認証することは、
前記ソフトウェアモジュールに関連したプロフィールを識別し、このプロフィールは、少なくとも1つの装置識別子を表すデータを含むものであること、
前記エンティティの暗号キーに基づいて前記プロフィールを認証すること、
前記プロフィールの装置識別子を前記電子装置の装置識別子と比較すること、及び
前記比較に基づいて前記エンタイトルメントを認証すること、
を含む請求項20に記載のコンピュータプログラム製品。
【請求項23】
前記プロフィールは、更に、少なくとも1つのエンタイトルメントを表すデータを含み、前記プロセッサは、前記ソフトウェアモジュールのエンタイトルメントが前記プロフィールのエンタイトルメントと一貫したものであるときに前記ソフトウェアモジュールのエンタイトルメントを認証する、請求項23に記載のコンピュータプログラム製品。
【請求項24】
前記ソフトウェアモジュールのエンタイトルメントは、デバッグ許可エンタイトルメント、トレース許可エンタイトルメント、アドレス帳データへのアクセス許可エンタイトルメント、又はマルチメディアAPIへのアクセス許可エンタイトルメント、の少なくとも1つ以上を含む、請求項13に記載のコンピュータプログラム製品。
【請求項25】
電子装置で実行するためのソフトウェアモジュールを記憶し
前記ソフトウェアモジュールに関連した少なくとも1つのエンタイトルメントを含む少なくとも1つのプロフィールを記憶する、
ように構成された記憶装置と;
前記ソフトウェアモジュールを実行するための要求をプロセッサの信頼できるスペースにおいて実行されるプロセスにより受け取り、
前記ソフトウェアモジュールを表すデータを、前記プロセッサの信頼できないスペースにおいて実行されるサービスへ通信し、
前記サービスにより前記ソフトウェアモジュールの少なくとも1つのエンタイトルメントを認証し、
前記認証されたエンタイトルメントを表すデータを前記信頼できるスペースプロセスへ通信し、
前記エンタイトルメントに基づき前記ソフトウェアモジュールを実行する、
ように構成された少なくとも1つのプロセッサと;
を備えた装置。
【請求項26】
前記信頼できるスペースは、前記装置のプロセッサ上で信頼できるモードで実行されるオペレーティングシステムカーネルを含み、前記信頼できないスペースにおいて実行されるサービスは、前記プロセッサのユーザモードプロセスにおいて実行されるプロセスを含む、請求項25に記載の装置。
【請求項27】
前記ソフトウェアモジュールは、少なくともアプリケーションプログラム又は共有ライブラリーを含む、請求項25に記載の装置。
【請求項28】
前記ソフトウェアモジュールを表すデータは、前記ソフトウェアモジュールに関連した実行可能なインストラクションの少なくとも一部分への参照を含む、請求項25に記載の装置。
【請求項29】
ダイジェストの暗号署名を認証するために、前記プロセッサは、更に、前記一部分を表すダイジェストを計算するように構成される、請求項28に記載の装置。
【請求項30】
前記ダイジェストを計算するために、前記プロセッサは、前記ソフトウェアモジュールの各部分を表す複数のダイジェスト値に基づいてダイジェストを発生するように構成される、請求項29に記載の装置。
【請求項31】
前記ダイジェストは、前記少なくとも一部分を表すSHA−1ハッシュを含む、請求項29に記載の装置。
【請求項32】
前記ダイジェストの暗号署名を認証するために、前記プロセッサは、更に、前記ソフトウェアモジュールに関連したエンティティの暗号キーに基づいてダイジェストの暗号署名を認証するように構成される、請求項29に記載の装置。
【請求項33】
前記ダイジェストの暗号署名を認証するために、前記プロセッサは、更に、
信頼できるエンティティのパブリックキーに基づいて前記ダイジェストの暗号署名を計算し、
その計算された署名を、少なくとも1つのファイルに関連して記憶された署名と比較する、
ように構成される請求項32に記載の装置。
【請求項34】
前記ダイジェストの暗号署名を認証するために、前記プロセッサは、更に、
前記ソフトウェアモジュールに関連したプロフィールを識別し、このプロフィールは、少なくとも1つの装置識別子を表すデータを含むものであり、
前記エンティティの暗号キーに基づいて前記プロフィールを認証し、
前記プロフィールの装置識別子を前記電子装置の装置識別子と比較し、
前記比較結果に基づいて前記エンタイトルメントを認証する、
ように構成される、請求項32に記載の装置。
【請求項35】
前記プロフィールは、更に、少なくとも1つのエンタイトルメントを表すデータを含み、前記ソフトウェアモジュールの少なくとも1つのエンタイトルメントを認証することは、前記ソフトウェアモジュールのエンタイトルメントが前記プロフィールのエンタイトルメントと一貫したものであるときに前記ソフトウェアモジュールのエンタイトルメントを認証することを含む、請求項34に記載の装置。
【請求項36】
前記ソフトウェアモジュールのエンタイトルメントは、デバッグ許可エンタイトルメント、トレース許可エンタイトルメント、アドレス帳データへのアクセス許可エンタイトルメント、又はマルチメディアAPIへのアクセス許可エンタイトルメント、の少なくとも1つ以上を含む、請求項25に記載の装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8A】
image rotate

【図8B】
image rotate

【図9】
image rotate


【公表番号】特表2011−515744(P2011−515744A)
【公表日】平成23年5月19日(2011.5.19)
【国際特許分類】
【出願番号】特願2010−549791(P2010−549791)
【出願日】平成21年3月2日(2009.3.2)
【国際出願番号】PCT/US2009/035750
【国際公開番号】WO2009/111408
【国際公開日】平成21年9月11日(2009.9.11)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.WINDOWS
2.Linux
3.UNIX
4.GSM
【出願人】(503260918)アップル インコーポレイテッド (568)
【Fターム(参考)】