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