(57)【要約】【課題】少なくとも１つのインストールされたプロフィールに基づいてソフトウェアコードの実行を許可するシステム及び方法を提供する。【解決手段】セキュアな動作環境において実行されるべきソフトウェアコード又はアクセス能力を許可するシステム及び方法。信頼できるエンティティにより、他のエンティティへ信頼性を拡張するためにプロフィールが発行され、これら他のエンティティが、特定のコンピューティング装置等のセキュアな動作環境においてアプリケーションを与え又はその実行を制御できるようにする。プロフィールは、テスト、品質保証等、信頼できる当局による各配布の再許可を行わずに装置へ、或いは他のエンティティにより制御又は許可された装置の限定グループへ、エンティティがソフトウェアコードを追加するのを許す。【選択図】図４
2011515744.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアを許可するコンピュータ化方法において、
電子装置に記憶されたソフトウェアモジュールを実行する要求をプロセッサの信頼できるスペースにおいて受け取るステップと、
前記ソフトウェアモジュールを表すデータを、前記プロセッサの信頼できないスペースにおいて実行されるサービスへ通信するステップと、
前記サービスにより前記ソフトウェアモジュールの少なくとも１つのエンタイトルメントを認証するステップと、
前記認証されたエンタイトルメントを表すデータを前記信頼できるスペースへ通信するステップと、
前記エンタイトルメントに基づき前記ソフトウェアモジュールを実行するステップと、
を備えた方法。
【請求項２】
前記信頼できるスペースは、前記装置のプロセッサ上で信頼できるモードで実行されるオペレーティングシステムカーネルを含み、前記信頼できないスペースにおいて実行されるサービスは、前記プロセッサのユーザモードプロセスにおいて実行されるプロセスを含む、請求項１に記載の方法。
【請求項３】
前記ソフトウェアモジュールは、少なくともアプリケーションプログラム又は共有ライブラリーを含む、請求項１に記載の方法。
【請求項４】
前記ソフトウェアモジュールを表すデータは、前記ソフトウェアモジュールに関連した実行可能なインストラクションの少なくとも一部分への参照を含む、請求項１に記載の方法。
【請求項５】
少なくとも１つのエンタイトルメントを認証する前記ステップは、前記一部分を表すダイジェストを計算する段階を含む、請求項４に記載の方法。
【請求項６】
前記ソフトウェアモジュールの少なくとも一部分を表すダイジェストを計算する前記段階は、前記ソフトウェアモジュールの各部分を表す複数のダイジェスト値に基づいてダイジェストを発生することを含む、請求項５に記載の方法。
【請求項７】
前記ダイジェストは、前記少なくとも一部分を表すＳＨＡ−１ハッシュを含む、請求項５に記載の方法。
【請求項８】
少なくとも１つのエンタイトルメントを認証する前記ステップは、前記ソフトウェアモジュールに関連したエンティティの暗号キーに基づいてダイジェストの暗号署名を認証する段階を含む、請求項５に記載の方法。
【請求項９】
ダイジェストの暗号署名を認証する前記段階は、
信頼できるエンティティのパブリックキーに基づいてダイジェストの暗号署名を計算すること、及び
その計算された署名を、少なくとも１つのファイルに関連して記憶された署名と比較すること、
を含む請求項８に記載の方法。
【請求項１０】
前記ソフトウェアモジュールの少なくとも１つのエンタイトルメントを認証する前記ステップは、
前記ソフトウェアモジュールに関連したプロフィールを識別する段階であって、このプロフィールは、少なくとも１つの装置識別子を表すデータを含むものである段階と、
前記エンティティの暗号キーに基づいて前記プロフィールを認証する段階と、
前記プロフィールの装置識別子を前記電子装置の装置識別子と比較する段階と、
前記比較に基づいて前記エンタイトルメントを認証する段階と、
を含む請求項８に記載の方法。
【請求項１１】
前記プロフィールは、更に、少なくとも１つのエンタイトルメントを表すデータを含み、前記ソフトウェアモジュールの少なくとも１つのエンタイトルメントを認証する前記ステップは、前記ソフトウェアモジュールのエンタイトルメントが前記プロフィールのエンタイトルメントと一貫したものであるときに前記ソフトウェアモジュールのエンタイトルメントを認証する段階を含む、請求項１０に記載の方法。
【請求項１２】
前記ソフトウェアモジュールのエンタイトルメントは、デバッグ許可エンタイトルメント、トレース許可エンタイトルメント、アドレス帳データへのアクセス許可エンタイトルメント、又はマルチメディアＡＰＩへのアクセス許可エンタイトルメント、の少なくとも１つ以上を含む、請求項１に記載の方法。
【請求項１３】
電子装置に記憶されたソフトウェアモジュールを実行する要求をプロセッサの信頼できるスペースにおいて受け取り、
前記ソフトウェアモジュールを表すデータを、前記プロセッサの信頼できないスペースにおいて実行されるサービスへ通信し、
前記サービスにより前記ソフトウェアモジュールの少なくとも１つのエンタイトルメントを認証し、
前記認証されたエンタイトルメントを表すデータを前記信頼できるスペースプロセスへ通信し、
前記エンタイトルメントに基づき前記ソフトウェアモジュールを実行する、
ことを含むプロセスを遂行するために電子装置の少なくとも１つのプロセッサにより実行可能なコードを表すデータを含むコンピュータ読み取り可能な媒体を備えたコンピュータプログラム製品。
【請求項１４】
前記信頼できるスペースは、前記装置のプロセッサ上で信頼できるモードで実行されるオペレーティングシステムカーネルを含み、前記信頼できないスペースにおいて実行されるサービスは、前記プロセッサのユーザモードプロセスにおいて実行されるプロセスを含む、請求項１３に記載のコンピュータプログラム製品。
【請求項１５】
前記ソフトウェアモジュールは、少なくともアプリケーションプログラム又は共有ライブラリーを含む、請求項１３に記載のコンピュータプログラム製品。
【請求項１６】
前記ソフトウェアモジュールを表すデータは、前記ソフトウェアモジュールに関連した実行可能なインストラクションの少なくとも一部分への参照を含む、請求項１３に記載のコンピュータプログラム製品。
【請求項１７】
少なくとも１つのエンタイトルメントを認証することは、前記一部分を表すダイジェストを計算することを含む、請求項１６に記載のコンピュータプログラム製品。
【請求項１８】
前記ソフトウェアモジュールの少なくとも一部分を表すダイジェストを計算することは、前記ソフトウェアモジュールの各部分を表す複数のダイジェスト値に基づいてダイジェストを発生することを含む、請求項１７に記載のコンピュータプログラム製品。
【請求項１９】
前記ダイジェストは、前記少なくとも一部分を表すＳＨＡ−１ハッシュを含む、請求項１７に記載のコンピュータプログラム製品。
【請求項２０】
少なくとも１つのエンタイトルメントを認証することは、前記ソフトウェアモジュールに関連したエンティティの暗号キーに基づいてダイジェストの暗号署名を認証することを含む、請求項１７に記載のコンピュータプログラム製品。
【請求項２１】
少なくとも１つのエンタイトルメントを認証することは、
信頼できるエンティティのパブリックキーに基づいてダイジェストの暗号署名を計算すること、及び
その計算された署名を、少なくとも１つのファイルに関連して記憶された署名と比較すること、
を含む請求項２０に記載のコンピュータプログラム製品。
【請求項２２】
少なくとも１つのエンタイトルメントを認証することは、
前記ソフトウェアモジュールに関連したプロフィールを識別し、このプロフィールは、少なくとも１つの装置識別子を表すデータを含むものであること、
前記エンティティの暗号キーに基づいて前記プロフィールを認証すること、
前記プロフィールの装置識別子を前記電子装置の装置識別子と比較すること、及び
前記比較に基づいて前記エンタイトルメントを認証すること、
を含む請求項２０に記載のコンピュータプログラム製品。
【請求項２３】
前記プロフィールは、更に、少なくとも１つのエンタイトルメントを表すデータを含み、前記プロセッサは、前記ソフトウェアモジュールのエンタイトルメントが前記プロフィールのエンタイトルメントと一貫したものであるときに前記ソフトウェアモジュールのエンタイトルメントを認証する、請求項２３に記載のコンピュータプログラム製品。
【請求項２４】
前記ソフトウェアモジュールのエンタイトルメントは、デバッグ許可エンタイトルメント、トレース許可エンタイトルメント、アドレス帳データへのアクセス許可エンタイトルメント、又はマルチメディアＡＰＩへのアクセス許可エンタイトルメント、の少なくとも１つ以上を含む、請求項１３に記載のコンピュータプログラム製品。
【請求項２５】
電子装置で実行するためのソフトウェアモジュールを記憶し
前記ソフトウェアモジュールに関連した少なくとも１つのエンタイトルメントを含む少なくとも１つのプロフィールを記憶する、
ように構成された記憶装置と；
前記ソフトウェアモジュールを実行するための要求をプロセッサの信頼できるスペースにおいて実行されるプロセスにより受け取り、
前記ソフトウェアモジュールを表すデータを、前記プロセッサの信頼できないスペースにおいて実行されるサービスへ通信し、
前記サービスにより前記ソフトウェアモジュールの少なくとも１つのエンタイトルメントを認証し、
前記認証されたエンタイトルメントを表すデータを前記信頼できるスペースプロセスへ通信し、
前記エンタイトルメントに基づき前記ソフトウェアモジュールを実行する、
ように構成された少なくとも１つのプロセッサと；
を備えた装置。
【請求項２６】
前記信頼できるスペースは、前記装置のプロセッサ上で信頼できるモードで実行されるオペレーティングシステムカーネルを含み、前記信頼できないスペースにおいて実行されるサービスは、前記プロセッサのユーザモードプロセスにおいて実行されるプロセスを含む、請求項２５に記載の装置。
【請求項２７】
前記ソフトウェアモジュールは、少なくともアプリケーションプログラム又は共有ライブラリーを含む、請求項２５に記載の装置。
【請求項２８】
前記ソフトウェアモジュールを表すデータは、前記ソフトウェアモジュールに関連した実行可能なインストラクションの少なくとも一部分への参照を含む、請求項２５に記載の装置。
【請求項２９】
ダイジェストの暗号署名を認証するために、前記プロセッサは、更に、前記一部分を表すダイジェストを計算するように構成される、請求項２８に記載の装置。
【請求項３０】
前記ダイジェストを計算するために、前記プロセッサは、前記ソフトウェアモジュールの各部分を表す複数のダイジェスト値に基づいてダイジェストを発生するように構成される、請求項２９に記載の装置。
【請求項３１】
前記ダイジェストは、前記少なくとも一部分を表すＳＨＡ−１ハッシュを含む、請求項２９に記載の装置。
【請求項３２】
前記ダイジェストの暗号署名を認証するために、前記プロセッサは、更に、前記ソフトウェアモジュールに関連したエンティティの暗号キーに基づいてダイジェストの暗号署名を認証するように構成される、請求項２９に記載の装置。
【請求項３３】
前記ダイジェストの暗号署名を認証するために、前記プロセッサは、更に、
信頼できるエンティティのパブリックキーに基づいて前記ダイジェストの暗号署名を計算し、
その計算された署名を、少なくとも１つのファイルに関連して記憶された署名と比較する、
ように構成される請求項３２に記載の装置。
【請求項３４】
前記ダイジェストの暗号署名を認証するために、前記プロセッサは、更に、
前記ソフトウェアモジュールに関連したプロフィールを識別し、このプロフィールは、少なくとも１つの装置識別子を表すデータを含むものであり、
前記エンティティの暗号キーに基づいて前記プロフィールを認証し、
前記プロフィールの装置識別子を前記電子装置の装置識別子と比較し、
前記比較結果に基づいて前記エンタイトルメントを認証する、
ように構成される、請求項３２に記載の装置。
【請求項３５】
前記プロフィールは、更に、少なくとも１つのエンタイトルメントを表すデータを含み、前記ソフトウェアモジュールの少なくとも１つのエンタイトルメントを認証することは、前記ソフトウェアモジュールのエンタイトルメントが前記プロフィールのエンタイトルメントと一貫したものであるときに前記ソフトウェアモジュールのエンタイトルメントを認証することを含む、請求項３４に記載の装置。
【請求項３６】
前記ソフトウェアモジュールのエンタイトルメントは、デバッグ許可エンタイトルメント、トレース許可エンタイトルメント、アドレス帳データへのアクセス許可エンタイトルメント、又はマルチメディアＡＰＩへのアクセス許可エンタイトルメント、の少なくとも１つ以上を含む、請求項２５に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアコードの実行を制御することに係る。
【背景技術】
【０００２】
コンピューティング装置は、コンピュータシステムで実行されるコードが、信頼できる当事者により許可されることを必要とするように、構成される。例えば、このような許可は、コンピューティング装置の完全性が、悪意のある又は無許可のコードにより危うくされないよう保証する上で助けとなるよう使用される。あるケースでは、信頼できる当事者がコードにデジタル署名し且つコンピューティング装置で実行するべくコードを検証することを必要とし、及び／又は装置の特定リソース又はサービスにアクセスするソフトウェアの実行を制御するように、コンピューティング装置が構成される。デジタル署名の検証は、基礎となるアプリケーションコードが変更されていないことを保証する上で助けとなる。というのは、信頼できる当局１０２によりそれがデジタル署名されたものだからである。しかしながら、このセキュリティスキームは、複数のエンティティがそれらのポリシーを装置において具現化するのを許す上で問題がある。
【０００３】
例えば、開発中に、ソフトウェア開発者は、コンピュータシステムにおけるそれらのコードをしばしば変更し、そのシステム上でそのテストを試みることがある。コードが変更されるたびに、デジタル署名が無効となる。それ故、新たな又は変更されたコードを実行するために、ソフトウェア開発者は、信頼できる当局１０２によりコードに再び署名がなされねばならないことになる。このプロセスは、厄介で、且つ時間浪費である。
【図面の簡単な説明】
【０００４】
【図１】ソフトウェアコードが１つ以上の開発者からコンピューティング装置へ配布されるコンピューティング環境の一例を示すブロック図である。
【図２】図１に示す環境におけるコンピューティング装置のソフトウェアコンポーネントの一実施形態を示すブロック図である。
【図３】図２に示す装置におけるソフトウェアの実行を制御するためのプロフィールの一実施形態を示すブロック図である。
【図４】図２に示すコンピューティング装置の一実施形態のソフトウェアコンポーネント間のデータの流れを示すブロック図である。
【図５】図２に示すプロフィールに基づきソフトウェアを実行するための方法の一実施形態を示すフローチャートである。
【図６】図５の方法の一部分を詳細に示すフローチャートである。
【図７】図２に示すコンピューティング装置の一例を示すブロック図である。
【図８Ａ】図２に示すコンピューティング装置の一例を示すブロック図である。
【図８Ｂ】図２に示すコンピューティング装置の一例を示すブロック図である。
【図９】図８Ａ及び８Ｂに示す移動装置の具現化の一例を示すブロック図である。
【発明を実施するための形態】
【０００５】
装置のソフトウェアを開発しその実行を制御する上で、ソフトウェア開発者が幾つかの信頼できる権利をもつのを許す実施形態が提供される。第１の信頼できる当事者がアプリケーションに暗号で署名するコンピューティング装置では、装置の識別子により識別される装置の指定リストに対して第２の当事者が署名したアプリケーションまで信頼性を拡張するために装置のオペレーションをプロビジョニングする開発者プロフィールが提供される。特定のプロフィールは、複数の開発者からの装置上でアプリケーションを実行し、複数の装置上でアプリケーションを実行し、且つ異なる装置、プロフィール及び／又は開発者に対して異なる入手可能な能力を指定することができる。
【０００６】
アプリケーション実行の制御は、装置のプロセッサの信頼できるスペースにおいて維持される。信頼できるスペースは、プロセッサの特権又はスーパーバイザーモード又はメモリスペース、例えば、メモリのカーネルスペースを含む。メモリのユーザスペースのような信頼できないスペースにおいて実行されるサービス（又はプロセス）は、プロフィールを管理し、特定のアプリケーションを実行できるかどうか決定し、そして信頼できるスペースに対して信頼できるアプリケーションを識別するように構成される。信頼できないスペースは、プロセッサで実行されるユーザモード又は非特権プロセスのメモリスペースを含む。
【０００７】
暗号化機能及びそれに付随する計算は、ユーザスペースサービスにより遂行することができる。更に、ユーザスペースサービスは、特定の開発者プロフィール、特定の装置識別子、特定のキャリア、等に対して特有のものである１つ以上のプロフィール及びポリシーに基づいてソフトウェアを認証するように構成される。これらの論理上及び計算上複雑なプロセスを信頼できるスペースから分離することで、ソフトウェアシステムの信頼性及び性能を改善し、且つ複雑な暗号の使用及びポリシーの実施を可能にすることができる。
【０００８】
本発明の実施形態を例示するために、図１から７について以下に説明する。図１は、それら実施形態を具現化できる全システム図である。図２−３は、ソフトウェアコンポーネントの実施形態、及びソフトウェアの実行を制御するための規範的プロフィールを示す。図４は、ソフトウェアコンポーネント間のデータ流の一例を示す。図５−７は、プロフィールに基づいてソフトウェアを実行するためのプロセスフローチャートである。図７は、移動コンピューティング装置の一例を示す。これらの図は、図１を参照することから始めて、以下に詳細に説明する。
【０００９】
図１は、許可されたソフトウェアコードを、許可されたコードのみを実行するよう構成されたコンピューティング装置へ配布できるようにするコンピューティング環境の一例を示す。コンピューティング装置１００は、移動通信装置、デスクトップコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）装置、移動電話装置、メディアプレーヤ装置、等を含む多数の異なる形式のコンピューティング装置である。コンピューティング装置１００は、このコンピューティング装置１００で実行されるコードが、信頼できる当局１０２により許可されることを必要とするように構成される。他の実施形態では、より複雑な許可スキームを使用することができ、例えば、限定された目的又は限定された装置リソースへのアクセスについてのみ無許可のソフトウェアを実行でき、一方、装置１００のリソースにより広範囲にアクセスするために許可されたソフトウェアが設けられる。
【００１０】
以下に詳細に述べるように、許可機能は、信頼できる当局によりコードが許可されたかどうか決定する装置１００のオペレーティングシステムにより与えられ又はそれに関連して与えられる。従って、コードが許可され検証される場合には、更に別のシステム又はユーザ相互作用を伴わずに、それを一般的に実行することができ、又、コードが許可されない場合には、コンピューティング装置１００において実行されるその能力が限定され又は防止されることもある。ある実施形態では、コンピューティング装置は、コードが許可されていないことをユーザに警告し、そしてその無許可のコードを依然実行したいかどうかユーザに尋ねる。他の実施形態では、コンピューティング装置１００は、ユーザの希望に関わらず、無許可のコードが実行されるのを全く阻止するように構成される。
【００１１】
ある実施形態では、信頼できる当局１０２は、ソフトウェア１０６にデジタルで署名することによりソフトウェア１０６を許可する。この技術で良く知られたように、デジタル署名は、データの完全性を確保するためにパブリックキー暗号を使用する。例えば、ソフトウェア開発者１０４は、信頼できる当局１０２に、コンパイルされたオブジェクトコードを与える。信頼できる当局１０２は、次いで、ソフトウェア１０６のオブジェクトコードに対してそのプライベートキーでデジタル署名を生成し、そのコードをコンピューティング装置１００に利用できるようにする。
【００１２】
ソフトウェアを実行するための要求がコンピューティング装置１００においてなされるときには、コンピューティング装置１００は、ソフトウェア１０６のデジタル署名をチェックして、その認証及び／又は許可を検証する。ソフトウェアが、信頼できる当局１０２により署名されたものであると検証された場合には、コンピューティング装置１００においてソフトウェア１０６を実行することができる。コンピューティング装置１００が、ソフトウェア１０６のデジタル署名を実行の前にチェックする仕方は、種々のものがある。
【００１３】
ソフトウェア開発者１０４は、コンピューティング装置１００において実行するためのソフトウェアを書き、開発し、テストし、市場に出し、販売し、及び／又は配布する個人又は組織である。一実施形態では、開発者１０４は、それが制御又は管理する装置１００で使用するためのソフトウェアを開発する会社又は企業である。
【００１４】
ソフトウェア開発サイクルの一部分として、ソフトウェア開発者１０４は、ソフトウェア１０６が現場で配備されるコンピューティング装置と同様のコンピューティング装置においてそのソフトウェアをテストすることを希望する。従って、ソフトウェア開発者１０４は、そのソフトウェア開発者がソフトウェア１０６を開発し、テストし、及び／又はその他、更なる開発を行えるようにする１つ以上の開発者用コンピューティング装置１００を有する。
【００１５】
開発者用コンピューティング装置１００は、開発されたソフトウェア１０６が意図されたコンピューティング装置１００と同じでよい。例えば、ソフトウェア開発者１０４がｉＰｈｏｎｅのような移動電話プラットホームで実行されるソフトウェア１０６を書き込む場合には、例えば、開発者用コンピューティング装置１００は、ｉＰｈｏｎｅでよい。同様に、ソフトウェア１０６のターゲットであるコンピューティング装置プラットホーム１００がｉＰｏｄタッチのようなメディアプレーヤである場合には、開発者用コンピューティング装置１００は、ｉＰｏｄタッチでよい。テスト及び開発のために同様の装置を使用することにより、ソフトウェア開発者１０４は、コンピューティング装置１００で使用するエンドユーザにソフトウェアを配布する前に、ソフトウェアを効率的に開発しテストすることができる。
【００１６】
ソフトウェア開発プロセス中に、ソフトウェアアプリケーションのコードが頻繁に変化し得る。従って、以下に述べるように、ソフトウェア開発者は、１つ以上のコンピューティング装置１００への開発者アクセスを得て使用することができる。この開発者アクセスプロフィールは、開発者用コンピューティング装置１００にインストールされて、信頼できる当局１０２から付加的なコード署名サービスを要求する必要なく、開発者がそれらのソフトウェア１０６を装置１００において変更し、再コンパイルし、テストすることができるようにする。
【００１７】
ある実施形態では、開発者用コンピューティング装置１００は、開発者アクセスプロフィールを受け取るのに加えて、デバッグ、トレース又はプロフィールソフトウェアのような開発及びテスト関連ソフトウェアを、開発者用コンピューティング装置１００にインストールされる標準配布の一部分として、又は前プロビジョニングプロセスの一部分として、或いはその他の時間に、含むこともできる。ある実施形態では、開発者用コンピューティング装置１００は、このような付加的な開発関連ソフトウェアで前プロビジョニングされる。他の実施形態では、開発関連ソフトウェアは、開発者アクセスプロフィールと共に又はそれに関連して、装置にインストールされる。
【００１８】
図２は、開発者アクセスプロフィール２０８を使用して、信頼できる当局１０２により署名されないソフトウェアモジュール２０６を実行するために、開発者用コンピューティング装置１００をどのように構成するかの一例を与えるブロック図である。上述したように、開発者用コンピューティング装置１００は、ソフトウェア開発者１０４により生成されたソフトウェア１０６が設けられるコンピューティング装置１００と同じ形式の装置でよい。
【００１９】
ソフトウェア１０６は、装置１００に記憶され又は装置１００によってアクセスできる１つ以上のソフトウェアモジュール２０６を含む。一実施形態では、コンピューティング装置１００の記憶装置２０９は、ソフトウェアモジュール２０６及びプロフィール２０８の一方又は両方を記憶するように構成されるコンピュータ読み取り可能な記憶媒体（揮発性及び／又は不揮発性）を含むことができる。又、記憶装置２０９は、オペレーティングシステム２０２のコードを記憶するようにも構成され、更に、装置１００のための汎用記憶装置を含んでもよい。ソフトウェアモジュール２０６は、装置１００に一時的に記憶されてもよいし、又は装置１００に永久的に記憶されてもよい。
【００２０】
開発者用コンピューティング装置１００は、オペレーティングシステムを含む。このオペレーティングシステムは、ＭａｃＯＳ、Ｗｉｎｄｏｗｓ、Ｌｉｎｕｘ、Ｕｎｉｘ、Ｓｙｍｂｉａｎ、等の既知のオペレーティングシステムでよい。前記で簡単に述べたように、オペレーティングシステムの一部分、例えば、オペレーティングシステム２０２のカーネルは、装置１００で実行されるコードが、装置で実行できるようになる前に、許可されることを必要とするように構成される。この許可は、信頼できる当局１０２がソフトウェアモジュール２０６の幾つか又は全部をデジタルで署名するという形態をとる。ある実施形態では、信頼できる当局１０２は、署名されたコンピュータコードのソース及び完全性を検証するのに使用できるコード署名証明書を使用する。
【００２１】
オペレーティングシステム２０２により使用されるメモリのカーネルスペースは、概念的に、信頼できるスペースと考えられる。信頼性は、カーネルのブート時間認証によって確立される。一実施形態では、コンピューティング装置１００は、オペレーティングシステム２０２及びそのコンテンツにより使用されるカーネルスペースのブート時間認証を与えるためのハードウェアサポートを含むことができる。例えば、一実施形態では、コンピューティング装置１００のブートローダは、例えば、適当なパブリックキー署名検証を使用してカーネルをロードしブートする前にカーネルソフトウェアの署名を認証することができる。
【００２２】
デジタル署名は、例えば、メッセージダイジェストを生成するためにソフトウェアにおいてハッシュ機能を遂行することにより生成できるダイジェストを含む。ある実施形態では、増分的コード署名を使用することができる。ハッシュ値は、ソフトウェアの全部又は特定部分に対して発生されるハッシュ値である。例えば、ある実施形態では、ソフトウェアは、１つ以上のページのような１つ以上の単位へと分割される。ソフトウェアの各単位又はページに対してハッシュ値が発生される。このような実施形態におけるソフトウェアのダイジェストは、各コード又はページのハッシュ値のアレイ又はテーブルに対して発生されるハッシュ値を含む。メッセージダイジェストは、次いで、信頼できる当局１０２に関連したプライベート暗号キーを使用して暗号化される。一実施形態では、良く知られたＳＨＡ−１機能を使用して、メッセージダイジェストを発生することができる。暗号化されたメッセージダイジェスト（署名とも称される）は、次いで、１つ以上のソフトウェアモジュール２０６に添付される。
【００２３】
ある実施形態では、ソフトウェアコードを実行するための要求が装置においてなされたときに、オペレーティングシステム２０２は、デジタル署名を確認することによりソフトウェアコードのソース及び完全性を検証することによってその要求を処理する。コードのソースが信頼できる当局１０２であり、且つコードの完全性が危うくされていない場合には、オペレーティングシステム２０２は、コンピューティング装置１００においてコードを実行することができる。
【００２４】
又、開発者用コンピューティング装置１００は、装置識別子２０４も備えることができる。装置識別子２０４は、種々の形態をとることができる。一実施形態では、装置識別子２０４は、開発者用コンピューティング装置１００を独特に識別するシリアルナンバーでよい。他の実施形態では、装置識別子２０４は、オペレーティングシステム２０２により発生される独特の識別子でよい。
【００２５】
上述したように、開発者用コンピューティング装置１００は、信頼できる当局１０２により生成される開発者アクセスプロフィール２０８も有することができる。この開発者アクセスプロフィール２０８は、ある装置が、信頼できる当局１０２により署名されないソフトウェアを実行することが許されることを指示するデータのセットを含む。一実施形態では、開発者アクセスプロフィール２０８は、ソフトウェア開発者１０４がそれらのソフトウェアモジュール２０６に対するソースコードを変更及び再コンパイルするのを許し、次いで、開発者用コンピューティング装置１００においてソフトウェアモジュール２０６をテストし、信頼できる当局１０２からの付加的なコード署名サービスを要求する必要はない。むしろ、ソフトウェア開発者１０４は、それらのソフトウェアモジュール２０６にデジタルで署名し、そして開発者１０４により署名されたコードを装置１００で実行することを指定する開発者アクセスプロフィール２０８を有する開発者用コンピューティング装置１００においてソフトウェアを実行することが許される。ある実施形態では、開発者アクセスプロフィールは、ソフトウェアモジュール２０６をテストする際に開発者１０４が遂行する幾つかのオペレーションを指定することもできる。例えば、開発者アクセスプロフィール２０８は、開発者１０４によりデジタルで署名されたソフトウェアモジュール２０６を開発者用コンピューティング装置１００においてデバッグすることを指定する。又、開発者用コンピューティング装置１００は、２つ以上の開発者アクセスプロフィール２０８をもつこともできる。
【００２６】
ある実施形態では、開発者アクセスプロフィール２０８は、ポリシーサービス２１０に関連して動作することができる。ポリシーサービス２１０は、オペレーティングシステムのユーザ（信頼性のない）メモリスペースにおいて実行されるデーモン又は他のプロセスの形態をとる。ポリシーサービス２１０は、更に、開発者アクセスプロフィール２０８において指定されるポリシーを実施するように構成される。例えば、開発者が開発装置におけるソフトウェアのオペレーションをトレースできるがデバッグを許さないことを開発者アクセスプロフィール２０８が指定する場合には、ポリシーサービス２１０は、トレースオペレーションを許すが、デバッグモードでのアプリケーションの実行は許さない。
【００２７】
ポリシーサービス２１０は、オペレーティングシステム２０２によって最初にスタートされ、このオペレーティングシステムは、サービス２１０をロードする前に、暗号でセキュアなものとされたサービスのダイジェストを検証する。オペレーティングシステム２０２は、プロセス間通信又は同様の適当なポートを経てサービス２１０への参照を維持することができる。従って、プロフィールサービス２１０は、信頼性のない又はユーザモードのスペースにおいて実行されるが、プロフィールサービス２１０のコードは、信頼できる当局１０２により署名されるべき実行において検証することができる。
【００２８】
図３は、開発者アクセスプロフィール２０８の詳細図である。上述したように、開発者アクセスプロフィール２０８は、装置１００のメモリに記憶されたデータのセットであり、ソフトウェアが信頼できる当局１０２により署名されていなくても装置がそれを実行することが許されることを指示する。開発者アクセスプロフィール２０８は、装置識別子データ３０２、開発者識別子データ３０４、及びエンタイトルメントデータ３０６を含むことができる。
【００２９】
装置識別子データ３０２は、開発者アクセスプロフィール２０８が適用される１つ以上の装置識別子３０２を指定する。装置１００が移動電話装置である実施形態では、装置識別子データ３０２は、移動電話装置のシリアルナンバーのアレイを含む。
【００３０】
開発者アクセスプロフィール２０８のための装置識別子データ３０２は、異なる装置に対して１つ以上の装置識別子２０４を含むことができる。一実施形態では、装置識別子２０４は、特定装置に対して数字又はアルファニューメリックデータとして表される特定の識別子でよい。他の実施形態では、より一般化された装置識別データが利用される。例えば、ある装置売主及び／又は製造者は、組織に対して特有の装置識別子を有する装置を提供する。例えば、装置売主及び／又は製造者は、装置が配送される組織に基づいて装置に関連した装置識別子２０４の幾つかの観点をカスタマイズすることができる。
【００３１】
装置識別子データ３０２は、各個々の装置識別子の値をリストするのではなく、装置識別子の範囲を含む。更に別の実施形態では、ビットマスク又はワイルドカードキャラクタを使用して、指定の識別子特性を有する全ての装置に開発者アクセスプロフィールが適用されることを指定する。更に別の実施形態では、装置識別子データ３０２は、開発者アクセスプロフィール２０８が全ての装置に適用されることを指定する。例えば、１つのそのような実施形態では、開発者識別子データ３０２で識別された開発者の１つ以上によって署名されたソフトウェアは、開発者アクセスプロフィール２０８がインストールされる任意の装置１００において実行することが許可される。
【００３２】
上述したように、開発者アクセスプロフィール２０８は、更に、この開発者アクセスプロフィール２０８が適用されるソフトウェア開発者１０４を指定する開発者識別子データ３０４も含む。開発者識別子データ３０４は、種々の形態をとることができる。ある実施形態では、開発者識別子データ３０４は、開発者アクセスプロフィール２０８によりカバーされるソフトウェア開発者１０４に関連したパブリックキーである。他の形式の識別子を使用することもできる。ある実施形態では、開発者識別子データ３０４は、開発者アクセスプロフィール内に記憶されたアレイデータ構造内に記憶される。もちろん、何らかの適当なデータ構造を使用することができる。
【００３３】
更に、開発者アクセスプロフィール２０８は、エンタイトルメントデータ３０６を含む。このエンタイトルメントデータ３０６は、装置識別子データ３０２で指定された装置１００において開発者識別子データ３０４で識別された開発者が署名したソフトウェアモジュール２０６に対して許されるオペレーションの形式を指示するデータを含む。特定の開発者アクセスプロフィール２０８は、２つ以上の開発者１０４を、開発者アクセスプロフィール２０８によって許可されたコードにデジタルで署名することが許されたとして指定する。
【００３４】
エンタイトルメントデータ３０６は、装置識別子データ３０２で識別された装置１００に対して開発者識別子データ３０４で識別された開発者１０４が署名したアプリケーションに対して許されるアクセスの形式を指定する。エンタイトルメントデータ３０６は、キー値対の形態をとることができる。この値は、例えば、数字、ブール、又はアルファニューメリックデータを含むことができる。一実施形態では、エンタイトルメントデータ３０６は、種々の指定のエンタイトルメントを表す既定のブール変数のアレイ又は他のデータ構造を含む。
【００３５】
一実施形態では、エンタイトルメントデータ３０６は、実行されるべき能力を含む。一実施形態では、デバッグ許可エンタイトルメントが含まれ、これは、特定のプロフィールにおいて「真」にセットされると、開発者アクセスプロフィール２０８に関連した開発者１０４が署名したコードがデバッグモードで装置１００においてソフトウェアモジュール２０６を実行することが許されることを指示する。デバッグモード許可のエンタイトルメントが「偽」にセットされ、そして開発者１０４が装置１００においてデバッグモードでソフトウェアを実行するよう試みる場合には、ポリシーサーバー２１０がコードの実行を阻止する。他のこのようなエンタイトルメントは、トレース許可のエンタイトルメントを指示するエンタイトルメントデータを含む。トレース許可のエンタイトルメントは、開発者１０４がデジタルで署名したソフトウェアモジュール２０６を装置１００においてコンパイルしてトレースモードで実行できるようにする。
【００３６】
他のエンタイトルメントは、アドレス帳データのようなセキュリティ又はプライバシーの示唆を有する装置１００のネットワークリソース、データ、ライブラリー又はアプリケーションへのアクセスを制御する。更に、他のエンタイトルメントは、電話、ネットワーク、アドレス又は電話記憶装置、或いはマルチメディアＡＰＩを含む特定開発者ＡＰＩへのアクセスを制御する。
【００３７】
図４は、コンピューティング装置１００の一実施形態のソフトウェアコンポーネント間でシステムにより要求が受け取られて処理されるときに生じる事象間の関係を示すブロック図である。図示されたように、事象１において、信頼できるスペースを含むことのできるオペレーティングシステム２０２は、要求を受け取り（特定のソフトウェアモジュール２０６を実行するためのユーザ要求に応答するか、又は特定のソフトウェアモジュール２０６を実行するための装置１００における別のソフトウェアコンポーネントの要求に応答して）、識別されたソフトウェアモジュール２０６を実行する。一実施形態では、この要求は、ソフトウェアモジュール２０６の実行可能なインストラクションコードを記憶する記憶装置２０９のディレクトリ又はファイルへの参照を含むことができる。
【００３８】
事象２において、オペレーティングシステム２０２は、ソフトウェアモジュール２０６を認証する要求をポリシーサービス２１０へ通信する。一実施形態では、認証要求は、ソフトウェアモジュール２０６に関連した記憶装置２０９内の記憶位置への参照を含むことができる。又、オペレーティングシステム２０２は、ソフトウェアモジュール２０６の少なくとも一部分のダイジェストをポリシーサービス２１０に与えることもできる。それとは別に又はそれに加えて、ポリシーサービス２１０は、ソフトウェアモジュール２０６の全部又は一部分のダイジェストを発生する。一実施形態では、ダイジェストは、ソフトウェアモジュール２０６に関連した各コードページ又は各ファイルに対して決定されたダイジェスト値に基づく。一実施形態では、ポリシーサービス２１０への要求は、実施されるべき特定のエンタイトルメントのような他のデータも含む。
【００３９】
例えば、オペレーティングシステム２０２は、エンタイトルメントが、指定のシステムリソースを実行するか、それをデバッグするか又はそこにアクセスするためのエンタイトルメントであることを指定する。オペレーティングシステム２０２、又は装置１００のオペレーティングシステムの別の部分は、移動電話ネットワークのような特定のネットワーク、ブルーツーススタック、又は装置１００の特定能力へのアクセス、例えば、装置１００のマイクロホン、スピーカ、カメラ又は他のＩ／Ｏインターフェイスへのアクセスに対してエンタイトルメント許可を要求するように構成される。
【００４０】
事象５において、ポリシーサービス２１０は、ソフトウェアモジュール２０６の実行に関連した１つ以上のプロフィール２０８にアクセスする。一実施形態では、これらプロフィールは、記憶装置２０９からアクセスされる。一実施形態では、プロフィール２０８は、ソフトウェアモジュール２０６の開発者に関連した特定プロフィールを含む。プロフィールは、ここでは、信頼できる当局１０２ではなく、ソフトウェア開発者１０４に関して説明するが、信頼できる当局１０２、例えば、装置又はオペレーティングシステム開発者により与えられるソフトウェアモジュールへのアクセス権は、ここに述べるシステム及び方法を使用して制御できることも明らかであろう。
【００４１】
事象５において、ポリシーサービス２１０は、ダイジェスト及び／又はプロフィール２０８に基づいてソフトウェアモジュール２０６の実行権を検証する。例えば、ポリシーサービス２１０は、ソフトウェアモジュール２０６のダイジェストに関連した署名を受け取り、そしてそのダイジェストを暗号で検証するように構成される。一実施形態では、ポリシーサービス２１０は、特定の開発者１０４に関連したパブリックキーであって、プロフィール２０８の一部分として含まれるパブリックキーを使用して、ダイジェストの署名を検証する。
【００４２】
一実施形態では、プロフィール及び開発者キーが信頼できるものであることを保証するために、ポリシーサービス２１０は、プロフィールが信頼できる当局１０２により信頼されたことを暗号で検証する。この実施形態では、ポリシーサービス２１０は、装置１００に記憶されるか、さもなければ、例えば、データネットワークを経て装置１００によりアクセスされる信頼できる当局１０２のパブリックキーを使用して、プロフィールのダイジェスト又は他の署名（及びそのコンテンツ）を検証することにより、プロフィールを検証する。
【００４３】
ポリシーサービス２１０は、更に、特定の装置１００に対してソフトウェアモジュール２０６が許可されることを検証するように構成される。例えば、一実施形態では、プロフィール２０８は、装置識別子をマッチングさせるための１つ以上の装置識別子又はデータ（例えば、装置１００の指定のグループをマッチングさせるためのマスク又はワイルドデータ）を含むことができる。
【００４４】
ポリシーサービス２１０は、それら識別子を、装置１００によりセキュアに維持された識別子と比較し、ポリシー２０８の識別子データが装置１００の識別子データに一致したときにソフトウェアモジュールを許可することができる。装置識別子は、装置に記憶されて識別に使用されるデータを含み、このデータは、製造者のシリアルナンバー、移動電話装置の装置又は加入者識別子、例えば、集積回路カードＩＤ（ＩＣＣＩＤ）、装置１００に現在挿入されるＳＩＭカードの国際移動加入者識別子（ＩＭＳＩ）、装置においてエンコードされる国際移動装置識別子（ＩＭＥＩ）、電子的シリアルナンバー（ＥＳＮ）、或いは特定のソフトウェアモジュール２０６が許可されるところの装置１００を識別するのに適した他のデータを含む。
【００４５】
ポリシーサービス２１０は、プロフィール２０８により指定される更に別のエンタイトルメント又は他の能力に基づいてソフトウェアモジュール２０６を許可するように構成される。実行可能であるか否かは、エンタイトルメントの一例と考えられる。他のエンタイトルメントは、特定のソフトウェアモジュール２０６が、１つ以上のプロフィール２０８と、ポリシーサービス２１０が実施するように構成される他のポリシーとに基づき、サービスを実行するか又はサービスにアクセスするか指定する。
【００４６】
ポリシーサービス２１０は、そこで実施されるポリシー及びプロフィールが任意の複雑さであって、カーネル又は他の保護されたメモリスペースのサイズを増加せずに更新を受けることができ、且つカーネルプログラミングに一般的に関連した困難さを伴わずに容易に開発及び変更できるように、ユーザスペース内で実行すべく構成される。
【００４７】
図５は、特定のソフトウェアモジュール２０６が実行されるべきエンタイトルメントを有するかどうかをオペレーティングシステム２０２が決定する一例を示すが、ここに述べる方法及びシステムを使用して、装置ハードウェア能力、カーネルの他のサービス、他のオペレーティングシステムサービス、又は別のソフトウェアモジュール２０６のサービスへのアクセスを許可できることを認識されたい。例えば、装置１００は、オペレーティングシステム２０２によるか、又はポリシーサーバー２１０で実施されるポリシーのみに基づいて許可される他のオペレーティングシステムコンポーネントによって与えられるデバッグ又はトレースファシリティを含む。例えば、デバッグインターフェイス（図示せず）は、ソフトウェアモジュール２０６に関連したプロフィール２０８で指定されたデバッグエンタイトルメントに基づき或いは他のポリシーを介して図５に示すシステムを使用して特定のソフトウェアモジュール２０６のデバッグに対する許可を要求する。
【００４８】
エンタイトルメントは、装置に関連した１つ以上のポリシーを経て実施される。例えば、エンタイトルメントを実施するポリシーは、プロフィールのエンタイトルメントデータをホワイトリストとして処理することを含み、例えば、ソフトウェアモジュール２０６は、特定のソフトウェアモジュール２０６及び／又は特定の装置１００に対してエンタイトルメントが存在することを指示するデータをプロフィール２０８が含むことができるときに、そのような特定のエンタイトルメントに対して認証される。別のポリシーは、ブラックリストに基づいてエンタイトルメントを実施してもよく、例えば、ソフトウェアモジュール２０６は、プロフィール２０８又は適用可能なポリシーが、特定のソフトウェアモジュール２０６及び／又は特定の装置１００に対するエンタイトルメントを否定するデータを含むことができない限り、そのような特定のエンタイトルメントに対して認証される。別の実施形態では、あるエンタイトルメントがホワイトリストを経て実施されるよう構成される一方、他のエンタイトルメントがブラックリストを経て実施されるよう構成されるというポリシーで装置１００が構成されてもよい。
【００４９】
特定のエンタイトルメントを微細に制御するか又は競合するプロフィールデータを解消するような他のポリシーが含まれてもよい。例えば、一実施形態では、移動サービスプロバイダーは、そのネットワークで使用するために装置に特定のキャリアプロフィール２０８を含ませ、これは、特定のソフトウェアモジュール２０６のための開発者プロフィール２０８と競合し得る例えばボイスネットワーク又はダイヤル操作者アクセスのような特定装置能力に対するエンタイトルメントを更に指定する。このような事象において、装置１００のポリシーは、１つのプロフィールのエンタイトルメント仕様で制御することを指定する。
【００５０】
事象６において、ポリシーサービス２１０がソフトウェアモジュール２４０のエンタイトルメント及び／又は他の実行権利を検証するときに、ポリシーサービス２１０は、オペレーティングシステム２０２、又はポリシーサービス２１０の他のクライアントに、ソフトウェアモジュール２０６のエンタイトルメント、及び／又は認証要求がなされるところのエンタイトルメントを指示するデータを与える。事象７では、オペレーティングシステム２０２は、ポリシーサービス２１０から受け取られたエンタイトルメントデータに基づいてソフトウェアモジュール２０６を実行することができる。
【００５１】
図５は、装置１００においてソフトウェアモジュール２０６のエンタイトルメントを検証する方法５００の一実施形態を示すフローチャートである。この方法は、ブロック５０２で始まり、オペレーティングシステム２０２の信頼できるスペースが、特定のソフトウェアモジュール２０６を実行するための要求を受け取る。一実施形態では、信頼できるスペースは、オペレーティングシステム２０２をそのロードの前に暗号で検証する装置１００のブートローダにより、装置の始動時に、確立される。
【００５２】
ブロック５０４において、信頼できるスペースのプロセスは、ソフトウェアモジュール２０６を表すデータを、信頼できないスペースで実行されているポリシーサービス２１０へ通信するが、このスペースは、ポリシーサービス２１０が最初に実行されると信頼性が認められる。データは、ソフトウェアモジュール２０６の記憶位置への参照と、任意であるが、認証されている特定のエンタイトルメントを表すデータとを含む。
【００５３】
次いで、ブロック５０６において、ポリシーサービス２１０は、ソフトウェアモジュール２０６を認証する。一実施形態では、ポリシーサービス２１０は、暗号認証に基づいてソフトウェアモジュール２０６を認証する。例えば、ポリシーサービス２１０は、非対称的／パブリックキー暗号のような適当な暗号技術を使用してソフトウェアモジュール２０６のデジタル署名を検証することによりソフトウェアモジュール２０６を認証することができる。更に、ソフトウェアモジュール２０６に関連した１つ以上のエンタイトルメントは、同様の暗号技術で認証される。ブロック５０６の更なる詳細が図６に見られる。
【００５４】
ブロック５０８へ進むと、ポリシーサービス２１０は、ソフトウェアモジュールの実行権利を表すデータをオペレーティングシステム２０２のカーネルへ通信する。データは、ブールの認証応答、ソフトウェアモジュール２０６の１つ以上のエンタイトルメントを表すデータ、ソフトウェアモジュール２０６の検証されたダイジェスト、又は要求に対する他の適当なデータを含む。
【００５５】
ブロック５１０において、オペレーティングシステム２０２又は他の信頼できるプロセスは、認証されたエンタイトルメントに基づいて、ソフトウェアモジュール２０６を実行するか、又はソフトウェアモジュール２０６のためのサービスを遂行する。
【００５６】
図６は、図５の方法のブロック５０６を詳細に示すフローチャートである。ブロック６０２において、ポリシーサービス２１０は、ソフトウェアモジュール２０６の実行可能なコードに関連した少なくとも１つのファイル又は他のデータ構造のダイジェストを計算する。ダイジェストは、例えば、ＳＨＡ−１を含む適当なハッシュアルゴリズムを使用して計算される。
【００５７】
ブロック６０４において、ポリシーサービス２１０は、ソフトウェアモジュール２０６及び／又は装置１００に関連した１つ以上のプロフィール２０８を識別する。一実施形態では、プロフィール２０８は、各々、ソフトウェアモジュール２０６のエンタイトルメントを表す署名キー及びデータを含むことができる。例えば、エンタイトルメントは、テーブル１に示すような表形式のデータ構造を含むことができる。
テーブル１．プロフィールデータの例
2011515744.tif 000003
【００５８】
ソフトウェアモジュール２０６は、ソフトウェアモジュール２０６のダイジェスト（例えば、テーブル１に示す「コードダイジェスト」）を識別するプロフィールのキー値対を経てプロフィール２０８に関連付けられる。プロフィール２０８は、更に、デジタル署名、例えば、信頼できる当局１０２により暗号で署名されたプロフィールのダイジェストを含むことができる。次いで、ブロック６０６において、ポリシーサービス２１０は、例えば、プロフィール２０８のダイジェストの暗号署名が正しいことを検証することにより、プロフィール２０８を暗号で検証する。
【００５９】
ブロック６０８へ進むと、ポリシーサービス２１０は、プロフィール２０８を特定装置１００に適用できることを検証する。一実施形態では、この検証は、特定装置１００の装置識別２０４を、署名されたプロフィール２０８にリストされた装置識別子と比較することを含む。ブロック６０６における以前の署名検証は、プロフィール２０８で識別された装置が許可なく変化又は変更されていないという保証を与える。
【００６０】
次いで、ブロック６１０において、ポリシーサービス２１０は、プロフィール２０８に基づくソフトウェアモジュール２０６に関連した実行権利を識別する。一実施形態では、この識別は、各プロフィールのエンタイトルメントにアクセスすることを含むことができる。
【００６１】
ブロック６１２において、ポリシーサービス２１０は、ソフトウェアモジュール２０６に対して検証されるべきエンタイトルメントがコンピューティング装置１００に対するポリシーと一貫したものであることを検証する。一実施形態では、この検証は、要求されたエンタイトルメントが、ソフトウェアモジュール２０６及び装置１００のポリシーに関連したプロフィール２０８に含まれるかどうか決定することを含むことができる。
【００６２】
ブロック６１４へ進むと、ポリシーサービス２１０は、ブロック６０２で計算されたダイジェスト値を、ソフトウェアモジュール２０６の署名入りダイジェストと比較し、ダイジェストの暗号署名を検証する。実施形態にもよるが、ここに述べるいずれかの方法の幾つかのアクション又は事象は、異なるシーケンスで遂行でき、又は追加でき、又は合体でき、或いは全て一緒に除外できる（例えば、この方法を実施するのに、ここに述べる全てのアクション又は事象が必要とされるのではない）ことを認識されたい。更に、ある実施形態では、それらアクション又は事象は、順次ではなく、同時に、例えば、マルチスレッド処理、割り込み処理、又はマルチプロセッサを介して遂行されてもよい。
【００６３】
図７は、移動装置として実施された１つの装置１００の一例を示すブロック図である。装置１００は、メモリ７０４と通信状態にあるプロセッサ７０２を備えることができる。ネットワークインターフェイス７０６は、１つ以上の適当なデータ及び／又は音声通信システムに基づいて信号を介して通信するように構成された受信器７２４及び送信器７２６を備えることができる。例えば、ネットワークインターフェイス７０８は、ＧＳＭ、ＣＤＭＡ、ＣＤＭＡ２０００、ＥＤＧＥ、又はＵＭＴＳのような移動電話ネットワークを経て音声及び／又はデータを通信することができる。更に、ネットワークインターフェイス７０６は、例えば、ＷｉＦｉ又はブルーツースのようなＩＥＥＥ８０２．ｘを含む他のデータネットワークのための受信器／送信器を備えることもできる。
【００６４】
又、装置１００は、１つ以上のディスプレイ７１０、キー、タッチスクリーン又は他の適当な触覚入力装置のようなユーザ入力装置７１２、通信リンク１０６を経て受信される信号に基づいて可聴出力を発生するように適応されるトランスジューサより成るスピーカ７１４、及び／又は通信リンク１０６及び１０８の一方又は両方を経て送信される信号の可聴入力を与えるように適応されるトランスジューサより成るマイクロホン７１６も備えている。
【００６５】
一実施形態では、入力装置７１２は、装置の動きを検出するように構成された加速度計又は他の装置を含むことができる。装置１００は、任意であるが、装置１００の１つ以上のコンポーネントへ電力を供給するためのバッテリ７３１を含む。装置１００は、移動ハンドセット、パーソナルデジタルアシスタント、ラップトップコンピュータ、ヘッドセット、乗物のハンズフリー装置、又は他の電子装置の少なくとも１つを含む。例えば、ここに教示する１つ以上の観点は、電話（例えば、移動電話）、パーソナルデータアシスタント（ＰＤＡ）、娯楽装置（例えば、音楽又はビデオ装置）、ヘッドセット（例えば、ヘッドホン、イヤホン、等）、マイクロホン、或いは他の電子装置へ合体することができる。以下に詳細に述べるように、ある実施形態では、装置１００は、移動装置として具現化される。
【００６６】
図８Ａは、移動装置２５００の一例を示す。移動装置２５００は、例えば、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント、セルラー電話、ネットワーク機器、カメラ、スマートホン、改良型汎用パケット無線サービス（ＥＧＰＲＳ）移動電話、ネットワークベースステーション、メディアプレーヤ、ナビゲーション装置、ｅ−メール装置、ゲームコンソール、或いはこれらデータ処理装置又は他のデータ処理装置の２つ以上の組み合せである。
【００６７】
移動装置の概略
ある実施形態では、移動装置２５００は、タッチ感知ディスプレイ２５０２を備えている。タッチ感知ディスプレイ２５０２は、液晶ディスプレイ（ＬＣＤ）技術、光放射ポリマーディスプレイ（ＬＰＤ）技術、又は他のディスプレイ技術で実施することができる。タッチ感知ディスプレイ２５０２は、ユーザとの触覚及び／又は触感接触を感知することができる。
【００６８】
ある実施形態では、タッチ感知ディスプレイ２５０２は、マルチタッチ感知ディスプレイ２５０２で構成することができる。マルチタッチ感知ディスプレイ２５０２は、例えば、複数の同時タッチポイントを処理することができ、これは、各タッチポイントの圧力、度合い及び／又は位置に関連したデータを処理することを含む。このような処理は、複数の指でのジェスチャー及び相互作用、コーディング、及び他の相互作用を容易にする。他のタッチ感知ディスプレイ技術も使用でき、例えば、スタイラス又は他のポインティング装置を使用して接触を行うディスプレイも使用できる。マルチタッチ感知ディスプレイ技術の幾つかの例が、米国特許第６，３２３，８４６号、第６，５７０，５５７号、第６，６７７，９３２号、及び第６，８８８，５３６号に説明されており、その各々を参考としてここにそのまま援用する。
【００６９】
ある実施形態では、移動装置２５００は、種々のシステムオブジェクトへのユーザアクセスを与えると共にユーザへ情報を搬送するためにタッチ感知ディスプレイ２５０２上に１つ以上のグラフィックユーザインターフェイスを表示することができる。ある実施形態では、グラフィックユーザインターフェイスは、１つ以上のディスプレイオブジェクト２５０４、２５０６を含むことができる。ここに示す例では、ディスプレイオブジェクト２５０４、２５０６は、システムオブジェクトのグラフィック表示である。システムオブジェクトの幾つかの例は、装置の機能、アプリケーション、ウインドウ、ファイル、警告、事象、又は他の識別可能なシステムオブジェクトを含む。
【００７０】
移動装置の機能の例
ある実施形態では、移動装置２５００は、電話オブジェクト２５１０により指示された電話装置、メールオブジェクト２５１２により指示されたｅ−メール装置、マップオブジェクト２５１４により指示されたマップ装置、Ｗｉ−Ｆｉベースステーション装置（図示せず）、並びにウェブビデオオブジェクト２５１６により指示されたネットワークビデオ送信及びディスプレイ装置、等の複数の装置機能を具現化することができる。ある実施形態では、特定のディスプレイオブジェクト２５０４、例えば、電話オブジェクト２５１０、メールオブジェクト２５１２、マップオブジェクト２５１４、及びウェブビデオオブジェクト２５１６は、メニューバー２５１８に表示することができる。ある実施形態では、装置の機能は、図８Ａに示すグラフィックユーザインターフェイスのようなトップレベルのグラフィックユーザインターフェイスからアクセスすることができる。例えば、オブジェクト２５１０、２５１２、２５１４、又は２５１６の１つにタッチすると、それに対応する機能を呼び出すことができる。
【００７１】
ある実施形態では、移動装置２５００は、ネットワーク配布機能を具現化することができる。例えば、この機能は、ユーザが移動装置２５００を取り上げて、移動しながらその関連ネットワークにアクセスできるようにする。特に、移動装置２５００は、インターネットアクセス（例えば、ＷｉＦｉ）をその付近の他のワイヤレス装置へと拡張することができる。例えば、移動装置２５００は、１つ以上の装置のためのベースステーションとして構成することができる。従って、移動装置２５００は、他のワイヤレス装置へのネットワークアクセスを承諾又は拒絶することができる。
【００７２】
ある実施形態では、装置の機能を呼び出すと、移動装置２５００のグラフィックユーザインターフェイスが変化し、又は増強され、或いは別のユーザインターフェイス又はユーザインターフェイス要素と置き換えられて、それに対応する装置機能に関連した特定機能へのユーザアクセスを容易にする。例えば、ユーザが電話オブジェクト２５１０にタッチするのに応答して、タッチ感知ディスプレイ２５０２のグラフィックユーザインターフェイスは、種々の電話機能に関連したディスプレイオブジェクトを提示し、同様に、メールオブジェクト２５１２にタッチすると、グラフィックユーザインターフェイスは、種々のｅ−メール機能に関連したディスプレイオブジェクトを提示し、マップオブジェクト２５１４にタッチすると、グラフィックユーザインターフェイスは、種々のマップ機能に関連したディスプレイオブジェクトを提示し、そしてウェブビデオオブジェクト２５１６にタッチすると、グラフィックユーザインターフェイスは、種々のウェブビデオ記憶に関連したディスプレイオブジェクトを提示する。
【００７３】
ある実施形態では、図８Ａのトップレベルのグラフィックユーザインターフェイス環境又は状態は、移動装置２５００の底部付近に配置されたボタン２５２０を押すことにより回復することができる。ある実施形態では、各々の対応する装置機能は、タッチ感知ディスプレイ２５０２に表示された対応する「ホーム」ディスプレイオブジェクトを有し、図８Ａのグラフィックユーザインターフェイス環境は、「ホーム」ディスプレイオブジェクトを押すことにより回復することができる。
【００７４】
ある実施形態では、トップレベルのグラフィックユーザインターフェイスは、付加的なディスプレイオブジェクト２５０６、例えば、ショートメッセージングサービス（ＳＭＳ）オブジェクト２５３０、カレンダーオブジェクト２５３２、写真オブジェクト２５３４、カメラオブジェクト２５３６、計算器オブジェクト２５３８、株オブジェクト２５４０、アドレス帳オブジェクト２５４２、メディアオブジェクト２５４４、ウェブオブジェクト２５４６、ビデオオブジェクト２５４８、設定オブジェクト２５５０、及びノートオブジェクト（図示せず）を含むことができる。例えば、ＳＭＳディスプレイオブジェクト２５３０にタッチすると、ＳＭＳメッセージング環境及びサポート機能を呼び出すことができ、同様に、ディスプレイオブジェクト２５３２、２５３４、２５３６、２５３８、２５４０、２５４２、２５４４、２５４６、２５４８、及び２５５０を各々選択すると、それに対応するオブジェクト環境及び機能を呼び出すことができる。
【００７５】
又、図８Ａのグラフィックユーザインターフェイスには、付加的な及び／又は異なるディスプレイオブジェクトを表示することもできる。例えば、装置２５００が他の装置のためのベースステーションとして機能する場合には、１つ以上の「接続」オブジェクトがグラフィックユーザインターフェイスに現れて、接続を指示する。ある実施形態では、ディスプレイオブジェクト２５０６は、ユーザによって構成することができ、例えば、ユーザは、どのディスプレイオブジェクト２５０６が表示されるか指定することができ、及び／又は他の機能及びそれに対応するディスプレイオブジェクトを与える付加的なアプリケーション又は他のソフトウェアをダウンロードすることができる。
【００７６】
ある実施形態では、移動装置２５００は、１つ以上の入力／出力（Ｉ／Ｏ）装置及び／又はセンサ装置を含むことができる。例えば、音声イネーブル機能、例えば、電話及び音声メール機能を容易にするためにスピーカ２５６０及びマイクロホン２５６２を含むことができる。ある実施形態では、スピーカ２５６０及びマイクロホン２５６２の音量制御のためのアップ／ダウンボタン２５８４を含ませることができる。又、移動装置２５００は、電話の入呼びのリングインジケータのためのオン／オフボタン２５８２を含ませることもできる。ある実施形態では、電話のスピーカ機能のようなハンズフリー音声機能を容易にするためにスピーカ２５６４を含ませることができる。又、ヘッドホン及び／又はマイクロホンを使用するためにオーディオジャック２５６６を含ませることもできる。
【００７７】
ある実施形態では、ユーザが移動装置２５００をユーザの耳の付近に配置するのを検出し、それに応答して、タッチ感知ディスプレイ２５０２を解離して、偶発的な機能の呼び出しを防止し易くするために、接近センサ２５６８を含ませることができる。ある実施形態では、移動装置２５００がユーザの耳の付近にあるときに付加的な電力を保存するために、タッチ感知ディスプレイ２５０２をターンオフすることができる。
【００７８】
又、他のセンサを使用することもできる。例えば、ある実施形態では、周囲光センサ２５７０を使用して、タッチ感知ディスプレイ２５０２の輝度を容易に調整することができる。ある実施形態では、加速度計２５７２を使用して、方向矢印２５７４で示された移動装置２５００の動きを検出することができる。従って、ディスプレイオブジェクト及び／又はメディアは、例えば、肖像画又は風景画のような検出された方向に基づいて提示することができる。ある実施形態では、移動装置２５００は、グローバルポジショニングシステム（ＧＰＳ）又は他のポジショニングシステム（例えば、Ｗｉ−Ｆｉアクセスポイント、テレビ信号、セルラーグリッド、ユニフォームリソースロケータ（ＵＲＬ）を使用するシステム）により与えられるような位置決定能力をサポートするための回路及びセンサを含むことができる。ある実施形態では、ポジショニングシステム（例えば、ＧＰＳ受信器）を移動装置２５００へ一体化することもできるし、又は位置に基づくサービスへのアクセスを与えるためにインターフェイス（例えば、ポート装置２５９０）を通して移動装置２５００へ結合できる個別の装置として設けることもできる。
【００７９】
ある実施形態では、ポート装置２５９０、例えば、ユニバーサルシリアルバス（ＵＳＢ）ポート、又はドッキングポート、又は他の何らかのワイヤードポート接続を含ませることができる。ポート装置２５９０は、例えば、他の通信装置２５００、ネットワークアクセス装置、パーソナルコンピュータ、プリンタ、ディスプレイスクリーン、又はデータの送信及び／又は受信を行える他の処理装置のような他のコンピューティング装置へのワイヤード接続を確立することができる。ある実施形態では、ポート装置２５９０は、移動装置２５００が、例えば、ＴＣＰ／ＩＰ、ＨＴＴＰ、ＵＤＰ及び他の既知のプロトコルのような１つ以上のプロトコルを使用して、ホスト装置と同期をとれるようにする。
【００８０】
又、移動装置２５００は、カメラレンズ及びセンサ２５８０を備えることもできる。ある実施形態では、カメラレンズ及びセンサ２５８０は、移動装置２５００の背面に配置することができる。カメラは、静止映像及び／又はビデオを捕獲することができる。
【００８１】
又、移動装置２５００は、８０２．１１ｂ／ｇ通信装置２５８６、及び／又はＢｌｕｅｔｏｏｔｈTM通信装置２５８８のような１つ以上のワイヤレス通信サブシステムを備えることもできる。又、他の８０２．ｘ通信プロトコル（例えば、ＷｉＭａｘ、Ｗｉ−Ｆｉ、３Ｇ）、コード分割多重アクセス（ＣＤＭＡ）、移動通信用のグローバルシステム（ＧＳＭ）、エンハンストデータＧＳＭ環境（ＥＤＧＥ）、等を含む他の通信プロトコルをサポートすることもできる。
【００８２】
構成可能なトップレベルグラフィックユーザインターフェイスの例
図８Ｂは、装置２５００の構成可能なトップレベルグラフィックユーザインターフェイスの別の例を示す。装置２５００は、ディスプレイオブジェクトの異なるセットを表示するように構成できる。
【００８３】
ある実施形態では、装置２５００の１つ以上のシステムオブジェクトの各々は、それに関連したシステムオブジェクト属性のセットを有し、そして属性の１つは、システムオブジェクトに対するディスプレイオブジェクトがトップレベルグラフィックユーザインターフェイスにおいてレンダリングされるかどうか決定する。この属性は、システムによって自動的にセットすることもできるし、又は以下に述べるように、あるプログラム又はシステム機能を介してユーザによりセットすることもできる。図８Ｂは、（例えば、ノートシステムオブジェクト及びウェブビデオシステムオブジェクトの属性が変更されるときに）ノートオブジェクト２５５２（図８Ａには示さず）がどのようにして装置２５００のトップレベルグラフィックユーザインターフェイスに追加され及びそこから除去されるかの一例を示す。
【００８４】
移動装置アーキテクチャーの例
図９は、移動装置（例えば、移動装置２５００）の実施形態のブロック図３０００である。移動装置は、メモリインターフェイス３００２、１つ以上のデータプロセッサ、映像プロセッサ及び／又は中央処理ユニット３００４、並びに周辺インターフェイス３００６を備えることができる。メモリインターフェイス３００２、１つ以上のプロセッサ３００４、及び／又は周辺インターフェイス３００６は、個別のコンポーネントでもよいし、又は１つ以上の集積回路に一体化されてもよい。移動装置の種々のコンポーネントは、１つ以上の通信バス又は信号ラインにより結合することができる。
【００８５】
センサ、装置及びサブシステムは、複数の機能を促進するために周辺インターフェイス３００６に結合することができる。例えば、図８Ａを参照して述べた方向決め、照明及び接近機能を促進するために、運動センサ３０１０、光センサ３０１２及び接近センサ３０１４を周辺インターフェイス３００６に結合することができる。又、ポジショニングシステム（例えば、ＧＰＳ受信器）、温度センサ、生物測定センサ、又は他の感知装置のような他のセンサ３０１６を周辺インターフェイス３００６に接続して、その関連機能を促進することもできる。
【００８６】
又、カメラサブシステム３０２０及び光学的センサ３０２２、例えば、電荷結合デバイス（ＣＣＤ）又は相補的金属酸化物半導体（ＣＭＯＳ）光学的センサを使用して、写真及びビデオクリップの記録等のカメラ機能を促進することができる。
【００８７】
通信機能は、高周波受信器及び送信器、及び／又は光学的（例えば、赤外線）受信器及び送信器を含む１つ以上のワイヤレス通信サブシステム３０２４を通して促進することができる。通信サブシステム３０２４の特定の設計及び実施は、移動装置が動作するように意図された通信ネットワーク（１つ又は複数）に依存する。例えば、移動装置は、ＧＳＭネットワーク、ＧＰＲＳネットワーク、ＥＤＧＥネットワーク、Ｗｉ−Ｆｉ又はＷｉＭａｘネットワーク、及びＢｌｕｅｔｏｏｔｈTMネットワークを経て動作するように設計された通信サブシステム３０２４を備えることができる。特に、ワイヤレス通信サブシステム３０２４は、移動装置を他のワイヤレス装置に対するベースステーションとして構成できるようにホスティングプロトコルを含んでもよい。
【００８８】
オーディオサブシステム３０２６は、音声認識、音声複写、デジタル記録及び電話機能のような音声イネーブル機能を促進するためにスピーカ３０２８及びマイクロホン３０３０に結合することができる。
【００８９】
Ｉ／Ｏサブシステム３０４０は、タッチスクリーンコントローラ３０４２、及び／又は他の入力コントローラ（１つ又は複数）３０４４を備えることができる。タッチスクリーンコントローラ３０４２は、タッチスクリーン３０４６に結合することができる。タッチスクリーン３０４６及びタッチスクリーンコントローラ３０４２は、例えば、複数のタッチ感知技術のいずれかを使用して、接触及び運動又はその切断を検出することができ、それらタッチ感知技術は、タッチスクリーン３０４６との１つ以上の接触点を決定するための容量性、抵抗性、赤外線及び表面音波技術、並びに他の接近センサアレイ又は他の素子を含むが、これらに限定されない。
【００９０】
他の入力コントローラ（１つ又は複数）３０４４は、１つ以上のボタン、ロッカースイッチ、サムホイール、赤外線ポート、ＵＳＢポート、及び／又はスタイラス等のポインタ装置のような他の入力／制御装置３０４８に結合することができる。１つ以上のボタン（図示せず）は、スピーカ３０２８及び／又はマイクロホン３０３０の音量制御のためのアップ／ダウンボタンを含むことができる。
【００９１】
一実施形態では、第１の期間中ボタンを押すと、タッチスクリーン３０４６のロックを解除することができ、そして第１の期間より長い第２の期間中ボタンを押すと、移動装置への電力をオン又はオフに切り換えることができる。ユーザは、１つ以上のボタンの機能をカスタマイズすることができる。タッチスクリーン３０４６は、例えば、仮想又はソフトボタン及び／又はキーボードを実施するのに使用することもできる。
【００９２】
ある実施形態では、移動装置は、記録されたオーディオ及び／又はビデオファイル、例えば、ＭＰ３、ＡＡＣ及びＭＰＥＧファイルを提示することができる。ある実施形態では、移動装置は、ｉＰｏｄTMのようなＭＰ３プレーヤの機能を含むことができる。それ故、移動装置は、ｉＰｏｄTMに適合できる３２ピンコネクタを含むことができる。他の入力／出力及び制御装置を使用することもできる。
【００９３】
メモリインターフェイス３００２は、メモリ３０５０に結合することができる。メモリ３０５０は、高速ランダムアクセスメモリ及び／又は不揮発性メモリ、例えば、１つ以上の磁気ディスク記憶装置、１つ以上の光学的記憶装置、及び／又はフラッシュメモリ（例えば、ＮＡＮＤ、ＮＯＲ）を含むことができる。メモリ３０５０は、Ｄａｒｗｉｎ、ＲＴＸＣ、ＬＩＮＵＸ、ＵＮＩＸ、ＯＳ  Ｘ、ＷＩＮＤＯＷＳのようなオペレーティングシステム３０５２、又はＶｘＷｏｒｋｓのような埋め込み型オペレーティングシステムを記憶することができる。オペレーティングシステム３０５２は、基本的なシステムサービスをハンドリングし且つハードウェア従属タスクを遂行するためのインストラクションを含むことができる。ある実施形態では、オペレーティングシステム３０５２は、カーネル（例えば、ＵＮＩＸカーネル）である。
【００９４】
又、メモリ３０５０は、１つ以上の付加的な装置、１つ以上のコンピュータ及び／又は１つ以上のサービスとの通信を容易にするために通信インストラクション３０５４を記憶することもできる。メモリ３０５０は、グラフィックユーザインターフェイス処理を容易にするためのグラフィックユーザインターフェイスインストラクション３０５０、センサ関連処理及び機能を容易にするためのセンサ処理インストラクション３０５８、電話関連プロセス及び機能を容易にするための電話インストラクション３０６０、電子メッセージング関連プロセス及び機能を容易にするための電子メッセージングインストラクション３０６２、ウェブブラウジング関連プロセス及び機能を容易にするためのウェブブラウジングインストラクション３０６４、メディア処理関連プロセス及び機能を容易にするためのメディア処理インストラクション３０６６、ＧＰＳ及びナビゲーション関連プロセス及び機能を容易にするためのＧＰＳ／ナビゲーションインストラクション３０６８、カメラ関連プロセス及び機能を容易にするためのカメラインストラクション３０７０、及び／又は他のプロセス及び機能を容易にするための他のソフトウェアインストラクション３０７０を含むことができる。又、メモリ３０５０は、ウェブビデオ関連プロセス及び機能を容易にするためのウェブビデオインストラクション、及び／又はウェブショッピング関連プロセス及び機能を容易にするためのウェブショッピングインストラクションのような他のソフトウェアインストラクション（図示せず）も記憶することができる。ある実施形態では、メディア処理インストラクション３０６６は、オーディオ処理関連プロセス及び機能、並びにビデオ処理関連プロセス及び機能を各々容易にするためのオーディオ処理インストラクション及びビデオ処理インストラクションへと分割される。又、メモリ３０５０には、アクチベーションレコード及び国際移動装置アイデンティティ（ＩＭＥＩ）３０７４、又は同様のハードウェア識別子を記憶することもできる。
【００９５】
以上に鑑み、これら実施形態は、１つ以上の他の信頼できるエンティティによりアプリケーションが一般的に与えられる実行環境において開発者がアプリケーションを開発してテストできるように実行プロフィールを実施することを含む問題を克服することが明らかであろう。更に、企業のような装置プロバイダーには、信頼できるエンティティを経てそのようなアプリケーションを配布せずにカスタム開発アプリケーションを配布する融通性が与えられる。
【００９６】
当業者であれば、ここに開示した実施形態に関連して説明した種々の例示的論理ブロック、モジュール、回路及びアルゴリズムステップは、電子的ハードウェア、コンピュータソフトウェア、又はその両方の組み合せとして具現化できることが明らかであろう。ハードウェア及びソフトウェアのこの交換可能性を明確に示すため、種々の例示的コンポーネント、ブロック、モジュール、回路及びステップは、それらの機能に関して一般的に説明した。このような機能がハードウェアとして実施されるかソフトウェアとして実施されるかは、システム全体に課せられる特定のアプリケーション及び設計制約に依存する。当業者であれば、ここに述べた機能を特定のアプリケーションごとに異なる仕方で具現化できるであろうが、そのような具現化判断は、本発明の範囲から逸脱するものであると解釈されてはならない。
【００９７】
ここに開示する実施形態に関連して述べた種々の例示的論理ブロック、モジュール及び回路は、ここに述べる機能を遂行するように設計された汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又は他のプログラマブル論理装置、個別ゲート又はトランジスタロジック、個別のハードウェアコンポーネント、又はその組み合せで具現化又は遂行することができる。汎用プロセッサは、マイクロプロセッサであるが、別の実施形態では、プロセッサは、従来のプロセッサ、コントローラ、マイクロコントローラ又は状態マシンでもよい。又、プロセッサは、コンピューティング装置の組み合せ、例えば、ＤＳＰ及びマイクロプロセッサの組み合わせ、複数のマイクロプロセッサの組み合せ、ＤＳＰコアに関連した１つ以上のマイクロプロセッサの組み合せ、或いは他のこのような構成として具現化されてもよい。
【００９８】
ここに開示した実施形態に関連して述べた方法又はアルゴリズムのステップは、ハードウェアで直接実施されてもよいし、プロセッサにより実行されるソフトウェアモジュールで実施されてもよいし、或いはその２つの組み合せで実施されてもよい。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、取り外し可能なディスク、ＣＤ−ＲＯＭ、又はこの技術で知られた他の形態の記憶媒体に存在することができる。規範的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り且つ記憶媒体に情報を書き込むことができるようにプロセッサに結合される。別の実施形態では、記憶媒体は、プロセッサと一体的でよい。プロセッサ及び記憶媒体は、ＡＳＩＣに存在してもよい。ＡＳＩＣは、ユーザターミナルに存在してもよい。別の実施形態では、プロセッサ及び記憶媒体は、ユーザターミナルの個別コンポーネントとして存在してもよい。
【００９９】
以上の詳細な説明は、種々の実施形態に適用された本発明の新規な特徴を図示し、説明し且つ指摘するものであったが、当業者であれば、本発明の精神から逸脱せずに、上述した装置又はプロセスの形態及び細部の種々の省略、置き換え、及び変更がなされることが明らかであろう。又、本発明は、ある特徴を他の特徴と個別に使用し又は実施することができるので、ここに述べた全ての特徴及び利益を与えない形態でも実施できることが明らかであろう。本発明の範囲は、以上の説明ではなく、特許請求の範囲により規定される。請求項の意味及び等価の範囲内に入る全ての変更は、本発明の範囲に包含される。
【符号の説明】
【０１００】
１００：コンピューティング装置
１０２：信頼できる当局
１０４：ソフトウェア開発者
１０６：ソフトウェア
２０２：オペレーティングシステム
２０４：装置識別子
２０６：ソフトウェアモジュール
２０８：プロフィール
２０９：記憶装置
２１０：ポリシーサービス
３０２：装置識別子データ
３０４：開発者識別子データ
３０６：エンタイトルメントデータ
７０２：プロセッサ
７０４：メモリ
７０６：ネットワークインターフェイス
７１０：ディスプレイ
７１２：入力
７１４：スピーカ
７１６：マイクロホン
７２０：受信器
７２２：送信器
【図１】
2011515744.tif 000004
【図２】
2011515744.tif 000005
【図３】
2011515744.tif 000006
【図４】
2011515744.tif 000007
【図５】
2011515744.tif 000008
【図６】
2011515744.tif 000009
【図７】
2011515744.tif 000010
【図８Ａ】
2011515744.tif 000011
【図８Ｂ】
2011515744.tif 000012
【図９】
2011515744.tif 000013
【手続補正書】
【提出日】平成22年10月25日(2010.10.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ソフトウェアを許可するコンピュータ化方法において、
電子装置に記憶されたソフトウェアモジュールを実行する要求をプロセッサの信頼できるスペースにおいて受け取るステップと、
前記ソフトウェアモジュールを表すデータを、前記プロセッサの信頼できないスペースにおいて実行されるサービスへ通信するステップと、
前記サービスにより前記ソフトウェアモジュールの少なくとも１つのエンタイトルメントを認証するステップと、
前記認証されたエンタイトルメントを表すデータを前記信頼できるスペースへ通信するステップと、
前記エンタイトルメントに基づき前記ソフトウェアモジュールを実行するステップと、
を備えた方法。
【請求項２】
前記信頼できるスペースは、前記装置のプロセッサ上で信頼できるモードで実行されるオペレーティングシステムカーネルを含み、前記信頼できないスペースにおいて実行されるサービスは、前記プロセッサのユーザモードプロセスにおいて実行されるプロセスを含む、請求項１に記載の方法。
【請求項３】
前記ソフトウェアモジュールは、少なくともアプリケーションプログラム又は共有ライブラリーを含む、請求項１に記載の方法。
【請求項４】
前記ソフトウェアモジュールを表すデータは、前記ソフトウェアモジュールに関連した実行可能なインストラクションの少なくとも一部分への参照を含む、請求項１に記載の方法。
【請求項５】
少なくとも１つのエンタイトルメントを認証する前記ステップは、前記一部分を表すダイジェストを計算する段階を含む、請求項４に記載の方法。
【請求項６】
少なくとも１つのエンタイトルメントを認証する前記ステップは、前記ソフトウェアモジュールに関連したエンティティの暗号キーに基づいてダイジェストの暗号署名を認証する段階を含む、請求項５に記載の方法。
【請求項７】
ダイジェストの暗号署名を認証する前記段階は、
信頼できるエンティティのパブリックキーに基づいてダイジェストの暗号署名を計算すること、及び
その計算された署名を、少なくとも１つのファイルに関連して記憶された署名と比較すること、
を含む請求項６に記載の方法。
【請求項８】
前記ソフトウェアモジュールの少なくとも１つのエンタイトルメントを認証する前記ステップは、
前記ソフトウェアモジュールに関連したプロフィールを識別する段階であって、このプロフィールは、少なくとも１つの装置識別子を表すデータを含むものである段階と、
前記エンティティの暗号キーに基づいて前記プロフィールを認証する段階と、
前記プロフィールの装置識別子を前記電子装置の装置識別子と比較する段階と、
前記比較に基づいて前記エンタイトルメントを認証する段階と、
を含む請求項６に記載の方法。
【請求項９】
前記プロフィールは、更に、少なくとも１つのエンタイトルメントを表すデータを含み、前記ソフトウェアモジュールの少なくとも１つのエンタイトルメントを認証する前記ステップは、前記ソフトウェアモジュールのエンタイトルメントが前記プロフィールのエンタイトルメントと一貫したものであるときに前記ソフトウェアモジュールのエンタイトルメントを認証する段階を含む、請求項８に記載の方法。
【請求項１０】
電子装置に記憶されたソフトウェアモジュールを実行する要求をプロセッサの信頼できるスペースにおいて受け取り、
前記ソフトウェアモジュールを表すデータを、前記プロセッサの信頼できないスペースにおいて実行されるサービスへ通信し、
前記サービスにより前記ソフトウェアモジュールの少なくとも１つのエンタイトルメントを認証し、
前記認証されたエンタイトルメントを表すデータを前記信頼できるスペースプロセスへ通信し、
前記エンタイトルメントに基づき前記ソフトウェアモジュールを実行する、
ことを含むオペレーションを遂行するために電子装置の少なくとも１つのプロセッサにより実行可能なコードを表すデータを備えた有形のコンピュータ読み取り可能な媒体。
【請求項１１】
前記信頼できるスペースは、前記装置のプロセッサ上で信頼できるモードで実行されるオペレーティングシステムカーネルを含み、前記信頼できないスペースにおいて実行されるサービスは、前記プロセッサのユーザモードプロセスにおいて実行されるプロセスを含む、請求項１０に記載の有形のコンピュータ読み取り可能な媒体。
【請求項１２】
前記ソフトウェアモジュールは、少なくともアプリケーションプログラム又は共有ライブラリーを含む、請求項１０に記載の有形のコンピュータ読み取り可能な媒体。
【請求項１３】
前記ソフトウェアモジュールを表すデータは、前記ソフトウェアモジュールに関連した実行可能なインストラクションの少なくとも一部分への参照を含む、請求項１０に記載の有形のコンピュータ読み取り可能な媒体。
【請求項１４】
少なくとも１つのエンタイトルメントを認証することは、前記一部分を表すダイジェストを計算することを含む、請求項１３に記載の有形のコンピュータ読み取り可能な媒体。
【請求項１５】
電子装置で実行するためのソフトウェアモジュールを記憶し
前記ソフトウェアモジュールに関連した少なくとも１つのエンタイトルメントを含む少なくとも１つのプロフィールを記憶する、
ように構成された記憶装置と；
前記ソフトウェアモジュールを実行するための要求をプロセッサの信頼できるスペースにおいて実行されるプロセスにより受け取り、
前記ソフトウェアモジュールを表すデータを、前記プロセッサの信頼できないスペースにおいて実行されるサービスへ通信し、
前記サービスにより前記ソフトウェアモジュールの少なくとも１つのエンタイトルメントを認証し、
前記認証されたエンタイトルメントを表すデータを前記信頼できるスペースプロセスへ通信し、
前記エンタイトルメントに基づき前記ソフトウェアモジュールを実行する、
ように構成された少なくとも１つのプロセッサと；
を備えた電子装置。
【請求項１６】
前記ソフトウェアモジュールを表すデータは、前記ソフトウェアモジュールに関連した実行可能なインストラクションの少なくとも一部分への参照を含む、請求項１５に記載の電子装置。
【請求項１７】
ダイジェストの暗号署名を認証するために、前記プロセッサは、更に、前記一部分を表すダイジェストを計算するように構成される、請求項１６に記載の電子装置。
【請求項１８】
前記ダイジェストを計算するために、前記プロセッサは、前記ソフトウェアモジュールの各部分を表す複数のダイジェスト値に基づいてダイジェストを発生するように構成される、請求項１７に記載の装置。
【請求項１９】
前記ダイジェストは、前記少なくとも一部分を表すＳＨＡ−１ハッシュを含む、請求項１６に記載の電子装置。
【請求項２０】
前記ダイジェストの暗号署名を認証するために、前記プロセッサは、更に、前記ソフトウェアモジュールに関連したエンティティの暗号キーに基づいてダイジェストの暗号署名を認証するように構成される、請求項１６に記載の電子装置。
【国際調査報告】
2011515744.tif 000014
2011515744.tif 000015
2011515744.tif 000016