JP2011515743A - セキュアな動作環境におけるソフトウェア開発者に対するコードエンタイトルメントの管理 - Google Patents
セキュアな動作環境におけるソフトウェア開発者に対するコードエンタイトルメントの管理 Download PDFInfo
- Publication number
- JP2011515743A JP2011515743A JP2010549788A JP2010549788A JP2011515743A JP 2011515743 A JP2011515743 A JP 2011515743A JP 2010549788 A JP2010549788 A JP 2010549788A JP 2010549788 A JP2010549788 A JP 2010549788A JP 2011515743 A JP2011515743 A JP 2011515743A
- Authority
- JP
- Japan
- Prior art keywords
- developer
- entitlement
- code
- access
- software
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
【課題】セキュアな動作環境内で限定されたデータ及びシステムリソースへのアクセスを管理するためのシステム及び方法を提供する。
【解決手段】指定のコンピューティング装置におけるシステムリソース及びデータへの限定されたアクセスを与えるエンタイトルメントを定義する開発者アクセスプロフィールが、信頼できる当局により、開発者へ発行される。この開発者アクセスプロフィールは、第三者の開発者に対し典型的にオフリミットであるターゲットプラットホーム環境の部分にアクセスするソフトウェアをソフトウェア開発者が書くことを許す。
【選択図】図9
【解決手段】指定のコンピューティング装置におけるシステムリソース及びデータへの限定されたアクセスを与えるエンタイトルメントを定義する開発者アクセスプロフィールが、信頼できる当局により、開発者へ発行される。この開発者アクセスプロフィールは、第三者の開発者に対し典型的にオフリミットであるターゲットプラットホーム環境の部分にアクセスするソフトウェアをソフトウェア開発者が書くことを許す。
【選択図】図9
Description
本発明は、開発環境におけるセキュリティに係る。
現在、コンピュータシステムは、コンピュータシステムで実行されるコードがコンピュータシステムの製造者のような信頼できる当事者により許可されることを必要とするように、構成される。これらの形式の要求は、典型的に、コンピューティング装置の完全性が、悪意のある又は無許可のコードにより危うくされないよう保証するために実施される。あるケースでは、信頼できる当事者がコードにデジタルで署名し且つコンピューティング装置での実行を許可する前にコードを検証することを必要とするように、コンピュータシステムが構成される。デジタル署名の検証は、基礎となるアプリケーションコードが変更されていないことを保証する。というのは、信頼できる当局によりそれがデジタルで署名されているからである。
しかしながら、このセキュリティスキームは、ソフトウェア開発者にとって問題を提起する。開発中に、ソフトウェア開発者は、コンピュータシステムにおけるそれらのコードをしばしば変更し、そのシステム上でそのテストを試みることがある。コードが変更されるたびに、デジタル署名が無効となる。それ故、新たな又は変更されたコードを実行するために、ソフトウェア開発者は、信頼できる当局によりコードに再び署名がなされねばならないことになる。このプロセスは、厄介で、且つ時間浪費である。
従来、ある製造者は、ソフトウェア開発者が彼等のコードにデジタルで署名することを許す開発証明書を発行している。しかしながら、ソフトウェア開発者が彼等自身のコードに署名するのを許すだけでは、装置における他のセキュリティ問題に対処することにならない。例えば、ある開発者には、彼等が開発するソフトウェア、製造者に対する彼等の関係、等に基づき、装置に対する異なる特権及びエンタイトルメントを与えることが望まれる。従来の装置は、単に、特定の装置又は特定の開発者に対して特殊化できない一般的な又は全般的スケールのポリシーを有するだけである。ある環境において、これは、種々のセキュリティの弱点を露呈したりエラーを招いたりすることがある。
ソフトウェア開発者が装置への開発アクセスを承諾されたときにその開発者に承諾されるエンタイトルメントの微粒度制御を許す実施形態をここに開示する。特に、これら実施形態は、エンタイトルメントのポリシー又はリストを指定することのできる開発者アクセスプロフィールを提供する。この開発者アクセスプロフィールは、特定の開発者及び特定の装置セットに特有のものである。従って、ソフトウェア開発者が彼等のコードを実行するときに、たとえ装置へのエンハンストアクセスができても、開発者アクセスプロフィールは、彼等のコードをどのように実行できるか管理する。
本発明の実施形態を説明するために、図1から13について以下に説明する。図1は、開発者コンピューティング装置においてコンピューティング装置のソフトウェアをどのように開発し、最終的に配布するかの概略である。図2−3は、開発者コンピューティング装置及び開発者アクセスプロフィールを更に詳細に示す。図4−6は、開発者の1つ以上のパブリックキー、1つ以上の装置識別子、及び開発者に指定されたエンタイトルメントのセットを含む開発者アクセスプロフィールの種々のコンポーネントを示す。図7−9は、開発者アクセスプロフィールを得ることに関連した種々のプロセスフローを示すと共に、開発者コンピューティング装置において開発者プロフィール及び署名に基づいてコード又はアプリケーションをどのように実行できるか示すものである。図10−13は、エンタイトルメントをどのように発生し、配送し、実施するかを示すものである。先ず、図1を参照する。
図1は、許可されたソフトウェアコードを、許可されたコードのみを実行するよう構成されたコンピューティング装置へ配布できるようにするコンピューティング環境の一例を示す。図示されたように、コンピューティング環境は、コンピューティング装置100、信頼できる当局102、及びソフトウェア開発者104のセットを含む。これらのエンティティについて、以下に詳細に説明する。
コンピューティング装置100は、デスクトップコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント(PDA)装置、移動電話装置、メディアプレーヤ装置、等を含む多数の異なる形式のコンピューティング装置である。例えば、ある実施形態では、コンピューティング装置は、アップルコンピュータ社からのiPhoneTM、iPodTM、又は他の装置である。コンピューティング装置100は、幾つかの又は全てのコードが、信頼できる当局102により許可されることを必要とするように構成される。
例えば、コンピューティング装置100のオペレーティングシステムは、全てのコードが信頼できる当局102によって許可されたことを検証するように構成される。例えば、MacOS、Windows、Linux、Unix、及びSymbian、等のオペレーティングシステムは、コード又はアプリケーションの実行を、それが許可されたエンティティにより署名されたものかどうかに基づいて制御するように構成することができる。コードが許可され検証された場合には、更に別のシステム又はユーザの相互作用を伴わずにそれを一般的に実行することができ、コードが許可されていない場合には、コンピューティング装置100において実行されるその能力が制限される。ある実施形態では、コンピューティング装置は、コードが許可されていないことをユーザに警告し、そしてその無許可のコードを依然実行したいかどうかユーザに尋ねる。他の実施形態では、コンピューティング装置100は、ユーザの好みに関わらず、無許可のコードが実行されるのを全く阻止するように構成される。
ある実施形態では、信頼できる当局102は、ソフトウェア106のようなソフトウェアをコンピューティング装置100において実行できるかどうか決定するための当局を有するエンティティである。例えば、信頼できる当局102は、ソフトウェアにデジタルで署名することによりソフトウェアの許可を指示する。この技術で知られたように、デジタル署名は、データの完全性を保証する上で助けとなるようにパブリックキー暗号を使用する。デジタル署名は、データのソースを識別するのに使用でき、更には、デジタル署名を加えた後のデータの変更を検出するのにも使用できる。
図1は、単一の信頼できる当局102を示しているが、本発明の実施形態は、いかなる数の信頼できる当局を単独で使用してもよいし又は組み合せて使用してもよい。例えば、多数の信頼できる当局の各々は、コンピューティング装置100においてコードを実行することのできる一方的な当局を有してもよい。別の例として、製造者及びオペレーティングシステムプロバイダーの両方のような信頼できる当局の組み合せからの許可を必要とすることもできる。
ソフトウェア開発者104は、コンピューティング装置100においてアプリケーション及びコードを開発し、配布し、テストし、インストールし、等々を行う任意のエンティティである。コンピューティング装置100へコードを配布するために、ソフトウェア開発者104は、コンピューティング装置100へ配布することが意図された形態のコンパイルされたオブジェクトコードを信頼できる当局102に与える。開発者104からのソフトウェアを展開する間に、信頼できる当局102は、ソフトウェア106のオブジェクトコードにデジタルで署名し、次いで、コードをそのデジタル署名と共にコンピューティング装置100に利用できるようにする。その後、ソフトウェアを実行する要求がコンピューティング装置100においてなされるときに、コンピューティング装置100は、ソフトウェア106のデジタル署名をチェックして、その認証及び/又は許可を検証することができる。ソフトウェアを、信頼できる当局102により署名されたと検証できる場合には、コンピューティング装置100においてソフトウェア106を実行することが許される。コンピューティング装置100がソフトウェア106のデジタル署名をその実行の前にチェックする仕方は種々のものが知られている。
ソフトウェアを開発するために、ソフトウェア開発者104は、信頼できる当局102と協調して、ソフトウェアを開発できるようにする1つ以上のコンピューティング装置100へのアクセスを得る。ソフトウェア開発者104は、配備されたコンピューティング装置100においてそのソフトウェアをテストすることを望むので、ソフトウェア開発者104は、コンピューティング装置100を入手し又は購入してもよい。
しかしながら、ソフトウェア開発プロセス中に、ソフトウェアアプリケーションのコードが頻繁に変化することがある。信頼できる当局102がコードに繰り返しデジタル署名する必要性を軽減するために、信頼できる当局102は、デジタル証明書及び開発者アクセスプロフィールを与え、これは、コンピューティング装置100(D)にインストールされる。従って、デジタル証明書及びアクセスプロフィールがインストールされた状態で、コンピューティング装置(D)は、開発者コンピューティング装置へ変換される。
開発者アクセスプロフィールは、ソフトウェア開発者104が、信頼できる当局102から付加的なコード署名サービスを要求する必要なく、これらの開発者コンピューティング装置100(D)において彼等のソフトウェアを変更し、再コンパイルしそしてテストすることができるようにする。特に、開発者アクセスプロフィールは、開発者コンピューティング装置100(D)にインストールされて、ソフトウェア開発者104からのデジタル署名を受け容れ且つソフトウェア開発者104により署名されたコードを実行するようにそれを構成する。ある実施形態では、開発者コンピューティング装置100(D)は、開発者アクセスプロフィールを受け取るのに加えて、デバッグ、トレース又はプロフィールソフトウェアのような開発及びテスト関連ソフトウェアを、開発者コンピューティング装置100にインストールされる標準配布の一部分として、又は前プロビジョニングプロセスの一部分として、或いはその他の時間に、含むこともできる。ある実施形態では、開発者コンピューティング装置100(D)は、このような付加的な開発関連ソフトウェアで前プロビジョニングされる。他の実施形態では、開発関連ソフトウェアは、開発者アクセスプロフィールと共に又はそれに関連して、装置にインストールされる。このような開発者アクセスプロフィールの一実施形態、及び開発者コンピューティング装置100(D)においてそれをどのように具現化するかの更なる詳細を、図2及び3を参照して以下に説明する。
図2は、開発者アクセスプロフィールを利用して、ソフトウェア開発者104によって署名されたソフトウェアを実行するために、開発者コンピューティング装置100(D)をどのように構成するかの一例を示すブロック図である。上述したように、開発者コンピューティング装置100(D)は、ソフトウェア開発者104により生成されたソフトウェア106に意図されたコンピューティング装置100と同じ形式の装置である。例えば、ソフトウェア106を、ある移動電話プラットホームで実行するように開発できる場合には、コンピューティング装置100及び100(D)は、両方とも、同じプラットホーム上で動作し、その唯一の相違は、開発者コンピューティング装置100(D)がソフトウェア開発者104により(例えば、テスト及び品質保証目的で)利用されるが、他のコンピューティング装置100は、エンドユーザにより使用されることである。
開発者コンピューティング装置100(D)は、典型的に、オペレーティングシステム202を含む。このオペレーティングシステムは、MacOS、Windows、Linux、Unix、Symbian、等の既知のオペレーティングシステムでよい。前記で簡単に述べたように、オペレーティングシステム202は、装置100(D)で実行される幾つかの又は全てのコードが、これを実行できる前に、許可されることを必要とするように構成される。ある実施形態では、信頼できる当局102又はソフトウェア開発者104は、署名されたコンピュータコードのソース及び完全性を検証するのに使用できるコード署名証明書を使用する。
開発者コンピューティング装置100(D)は、装置識別子204も含む。装置識別子204は、種々の形態をとることができる。一実施形態では、装置識別子は、開発者コンピューティング装置100(D)を独特に識別するシリアルナンバーでよい。他の実施形態では、装置識別子は、オペレーティングシステム202により発生される独特の識別子でよい。
更に、開発者コンピューティング装置100(D)は、ソフトウェア記憶装置206を含むことができる。このソフトウェア記憶装置206は、装置のオペレーティングシステム202により使用するためにソフトウェア106を記憶できる装置の位置である。ソフトウェア記憶装置206は、コンピューティング装置において揮発性及び/又は不揮発性メモリの形態をとる。ソフトウェア106は、装置100(D)に一時的に記憶されてもよいし、又は装置100(D)に永久的に記憶されてもよい。
ある実施形態では、開発者コンピューティング装置100(D)において、ソフトウェアでハッシュファンクションを遂行してメッセージダイジェストを生成し、これに、ソフトウェア開発者104又は信頼できる当局102のプライベートキーを使用して署名することにより、デジタル署名を生成することができる。デジタル署名は、例えば、メッセージダイジェストを生成するためにソフトウェアにおいてハッシュファンクションを遂行することにより生成できるダイジェストを含む。ある実施形態では、増分的コード署名を使用することができる。ハッシュ値は、ソフトウェアの全部又は特定部分に対して発生されるハッシュ値である。例えば、ある実施形態では、ソフトウェアは、1つ以上のページのような1つ以上の単位へと分割される。ソフトウェアの各単位又はページに対してハッシュ値が発生される。このような実施形態におけるソフトウェアのダイジェストは、各コード又はページのハッシュ値のアレイ又はテーブルに対して発生されるハッシュ値を含む。メッセージダイジェストは、次いで、信頼できる当局102に関連したプライベート暗号キーを使用して暗号化される。一実施形態では、良く知られたSHA−1ファンクションを使用して、メッセージダイジェストを発生することができる。暗号化されたメッセージダイジェスト(署名とも称される)は、次いで、1つ以上のソフトウェアモジュール206に添付される。従って、ソフトウェアコードを実行するときに、開発者コンピューティング装置100(D)のオペレーティングシステム202は、信頼できる当局102又はソフトウェア開発者104のパブリックキーを使用して信頼できる当局102又はソフトウェア開発者104のいずれかによりデジタル署名がなされたことを確認することでソフトウェアコードのソース及び完全性を検証することにより要求を処理することができる。
ソフトウェア開発者104の開発者アクセスを管理するために、開発者コンピューティング装置100(D)は、開発者アクセスプロフィール208も有する。このプロフィール208は、信頼できる当局102により生成され、次いで、開発者コンピューティング装置100(D)にインストールされる。開発者アクセスプロフィール208は、信頼できる当局102以外のエンティティにより署名されたソフトウェアの実行を許すデータのセットである。特に、開発者アクセスプロフィール208は、ソフトウェア開発者104が、それらのソフトウェア106のソースコードを変更及び再コンパイルし、次いで、開発者コンピューティング装置100(D)においてソフトウェア106をテストできるようにし、信頼できる当局102から付加的なコード署名サービスを要求する必要はない。むしろ、ソフトウェア開発者104は、それらのソフトウェア106にデジタルで署名し、そして開発者104により署名されたコードを装置100(D)において実行できることを指定する開発者アクセスプロフィール208を有する開発者コンピューティング装置100(D)においてソフトウェアを実行することが許される。ある実施形態では、開発者アクセスプロフィール208は、ソフトウェア106をテストする際に開発者104が遂行できる幾つかのオペレーションも指定できる。例えば、開発者アクセスプロフィール208は、開発者104によりデジタルで署名されたソフトウェア106が、開発者アクセスプロフィール208に含まれた開発者コンピューティング装置100(D)においてデバッグされることを指定する。開発者コンピューティング装置100(D)には、2つ以上の開発者アクセスプロフィール208をインストールすることができる。
ある実施形態では、開発者アクセスプロフィール208は、ポリシープロセス210に関連して動作することができる。ポリシープロセス210は、オペレーティングシステム202により信頼されるデーモンプロセスの形態をとる。或いは又、ポリシープロセス210は、オペレーティングシステムカーネル202の一部分でもよい。例えば、アクセスプロフィール208は、ポリシープロセス210により読み取られる属性/値対を有するファイルでよい。
ある実施形態では、ポリシープロセス210は、開発者アクセスプロフィール208と共にコンピューティング装置100にインストールされる。或いは又、ポリシープロセス210は、装置が最初に出荷されるときに装置と共に含まれる。更に別の実施形態では、ポリシープロセス210は、この技術で知られたオペレーティングシステム更新プロセスを経て装置に追加される。
ポリシープロセス210は、典型的に、開発者アクセスプロフィール208で指定されたポリシーを実施するのに使用される。ある実施形態では、ポリシープロセス210は、コード実行要求を検出し、そして要求を許すべきかどうか決定するように構成される。例えば、コードを実行する要求が検出されると、ポリシープロセス210は、コードが有効であることを保証するためにコードのデジタル署名をチェックするように構成される。デジタル署名が信頼できる当局102からのものでない場合には、ポリシープロセス210は、装置100(D)における開発者アクセスプロフィール208の開発者識別子データ302にアクセスして、その署名が、ソフトウェア106に署名するためにプロフィール208で許されたいずれかのソフトウェア開発者104からのものであるかどうか決定することができる。
ある実施形態では、開発者が開発装置におけるソフトウェアのオペレーションをトレースできるがデバッグを許さないことを開発者アクセスプロフィール208が指定する場合には、ポリシープロセス210は、トレースオペレーションを許すが、デバッグモードでのアプリケーションの実行を許す。
図3は、開発者アクセスプロフィール208の詳細図である。上述したように、開発者アクセスプロフィール208は、装置100(D)に記憶されたデータのセットである。図示されたように、開発者アクセスプロフィール208は、とりわけ、装置識別子データ302、開発者識別子データ304、及びエンタイトルメントデータ306を含む。これらのアイテムは、以下に詳細に述べる。
装置識別子データ302は、開発者アクセスプロフィール208が適用される1つ以上の装置識別子204を指定する。例えば、装置100が移動電話装置である実施形態では、装置識別子データ302は、移動電話装置のシリアルナンバーのアレイを含む。開発者アクセスプロフィール208は、更に、開発者アクセスプロフィール208が適用されるソフトウェア開発者104を指定する開発者識別子データ304を含む。
開発者識別子データ304は、種々の形態をとることができる。ある実施形態では、開発者識別子データ304は、ソフトウェア開発者104の名前又は識別子と、開発者アクセスプロフィール208によってカバーされたソフトウェア開発者104に関連した1つ以上のパブリックキーとを含む。他の形式の情報を含むこともできる。
エンタイトルメントデータ306は、開発者104により署名されたソフトウェア106に対して許されたオペレーションの形式を指示するデータを含む。一般的に、エンタイトルメントデータ306は、高い粒度のもので、高レベルの特殊性においてエンタイトルメントを指定する。このように、アクセスプロフィール208は、ソフトウェア開発者104の各々に対して、又、もし必要であれば、装置100(D)の各々に対して、高度にカスタマイズすることができる。開発者識別子データ304及びエンタイトルメントデータ306に関して更に詳細に例示するために、図4−6について以下に説明する。
図4は、開発者識別子データ304の詳細なブロック図である。上述したように、開発者アクセスプロフィール208は、2つ以上の開発者104を、コードにデジタルで署名することが許されたものとして指定する。図4に示す例では、4つの開発者識別子402(A)−402(D)が、開発者識別子データ304に記憶された4つの異なるパブリックキーで指定される。ある実施形態では、開発者識別子データ304は、開発者アクセスプロフィール内に記憶されたアレイデータ構造に記憶される。又、他の形式のデータ構造を使用することもできる。
図5は、装置識別子データ302の詳細なブロック図である。開発者アクセスプロフィール208に対する装置識別子データ302は、1つ以上の装置識別子204を含む。図5に示す例では、4つの異なる装置識別子204(A)−204(D)(これらは、4つの異なる開発者装置100(D)に関連している)がプロフィール208に含まれる。ここに示す例は、特定の装置識別子を含むが、ある実施形態では、より一般化された装置識別データを使用することもできる。例えば、ある装置売主及び/又は製造者は、組織に特有の装置識別子を有する装置を提供する。例えば、装置の売主及び/又は製造者は、装置が納入される組織に基づき装置に関連した装置識別子204のある観点をカスタマイズすることができる。これらの場合に、装置識別子データ302は、各個々の装置識別子の値をリストするのではなく、装置識別子の範囲を含む。更に別の実施形態では、ワイルドカードキャラクタを使用して、指定の識別子特性を有する全ての装置に開発者アクセスプロフィールが適用されることを指定する。更に別の実施形態では、装置識別子データは、開発者アクセスプロフィール208が全ての装置に適用されることを指定できる。これらの場合に、装置識別子データ302で識別された1つ以上の開発者により署名されたソフトウェアは、開発者アクセスプロフィール208がインストールされるいずれの装置100でも実行できることが許可される。
図6は、エンタイトルメントデータ306に含まれるデータの形式の一例を詳細に示す図である。上述したように、開発者アクセスプロフィール208は、開発者104により署名されたアプリケーションに対して許されるアクセスの形式を指定する。開発者コンピューティング装置100(D)において、ソフトウェア開発者104は、開発者識別子データ304にリストされることが要求されると共に、エンタイトルメントデータ306に記述されたエンタイトルメントに限定される。
エンタイトルメントデータ306は、種々のエンタイトルメントを表す既定のブール変数の形態をとる。図6の例は、4つの考えられるエンタイトルメント602(A)−602(D)を示す。
エンタイトルメント602(A)が「真」にセットされた場合には、開発者アクセスプロフィール208に関連した開発者104により署名されたコードが、デバッグモードでそれらのソフトウェア106を構築し、次いで、デバッグモードで装置100(D)においてそのソフトウェア106を実行することが許される。デバッグモード許可エンタイトルメント602(A)が「真」にセットされず、開発者104が装置100(D)においてデバッグモードでソフトウェアを実行するよう試みる場合には、ポリシープロセス210は、コードの実行を許さないように構成される。
トレース許可エンタイトルメント602(B)は、開発者104によりデジタルで署名されたソフトウェア106を、開発者アクセスプロフィール208によってカバーされた装置100(D)においてコンパイルしてトレースモードで実行できるようにする。エンタイトルメントデータ306は、開発者104によって署名されたソフトウェア106が装置100(D)のファイルシステムに記憶されたあるデータに対してもつアクセスの度合い及び/又は形式に関連したエンタイトルメントを更に指定する。ある実施形態では、これらエリアは、典型的にアプリケーションに対してオフリミットであるデータを含む。例えば、移動電話装置において、アドレス帳データは、第三者のアプリケーションプログラムでは通常アクセスできない微妙なデータを含み、又、移動電話装置のネットワーク接続へのアクセスも制約される。しかしながら、ソフトウェア開発者104が、アドレス帳データへのアクセスを必要とするアプリケーションを開発したい場合には、このアクセスを許すアドレス帳データアクセスエンタイトルメント602(C)が定義される。
又、エンタイトルメントデータ306は、ソフトウェア106を利用できるオペレーティングシステムアプリケーションプログラミングインターフェイス(API)へのアクセスの度合い及び/又は形式に関連したエンタイトルメントも指定する。例えば、ソフトウェア開発者104は、オペレーティングシステムのマルチメディアAIPへのコールを経てコンピューティング装置100(D)上でマルチメディアファイルをプレイするソフトウェアアプリケーションを書き込むことを希望する。装置100(D)のオペレーティングシステム202は、信頼できる当局102によって署名されない限りアプリケーションへマルチメディアAPIを露出しないように構成される。コンピューティング装置100(D)においてソフトウェア106をテストする能力をソフトウェア開発者104に与えるためには、マルチメディアAPIエンタイトルメント602(D)へのアクセスを与えて、このAPIをソフトウェア106へ露出させることが必要である。
コンピューティング装置100においてコードを実行し開発するための種々のプロセスフローを、図7−9を参照して以下に説明する。先ず、図7は、コンピューティング装置100が、それが実行するソフトウェアを一般的にどのように検証するか示す。図8は、ソフトウェア開発者がコンピューティング装置への開発者アクセスをどのように得るかのプロセスを示す。最後に、図9は、ソフトウェア開発者がそれらの開発者アクセスでコンピューティング装置においてコードをどのように開発して実行できるかの一般的プロセスを示す。これらの図について、以下に説明する。
上述したように、図7は、装置100においてソフトウェア106を実行する前にソフトウェア106を検証するためにコンピューティング装置00をどのように一般的に構成するかを例示するフローチャートである。プロセスは、ブロック702で始まり、ソフトウェアコードを実行する要求が装置において受け取られる。典型的に、この要求は、オペレーティングシステム202において受け取られ、この要求は、コンピューティング装置100のプロセッサによりソフトウェアコードを実行する要求を含む。この要求は、コンピューティング装置のアプリケーション記憶装置206に記憶されたアプリケーションプログラムをユーザが起動することにより発生される。
次いで、プロセスは、判断ブロック704へ進み、コンピューティング装置は、コードがデジタルで署名されたかどうか決定する。コードがデジタルで署名されない場合には、プロセスは、ブロック710へ進み、コードは、装置100において実行することが許されない。しかしながら、コードがデジタルで署名された場合には、プロセスは、判断ブロック706へ進み、システムは、デジタル署名を認証し、検証する。ある実施形態では、検証及び認証は、デジタルで署名されたコードに対してハッシュ値(メッセージダイジェストとも称される)を計算し、次いで、コードに署名しなければならないとされる信頼できる当局102のパブリックキーを使用してコードのデジタル署名を解読することにより行うことができる。メッセージダイジェストの値と、解読されたデジタル署名が一致した場合には、コードを検証及び認証することができる。判断ブロック706において、コードが認証及び/又は検証されない場合には、プロセスがブロック710へ進み、装置100におけるコードの実行は許されない。コードが認証及び検証された場合には、プロセスがブロック708へ進み、装置100は、典型的に、オペレーティングシステムにより、署名されたコードを実行することが許される。
図8は、ここに述べる1つ以上の実施形態に基づき第三者のソフトウェア開発者(ソフトウェア開発者104のような)に開発者コンピューティング装置100(D)への開発者アクセスが承諾されるようにする一般的なプロセスを示すフローチャートである。このプロセスは、ブロック802で始まり、ソフトウェア開発者104は、コンピューティング装置100への開発者アクセスの必要性を認識する。上述したように、ある実施形態では、開発者104は、装置100で実行されるよう意図されたソフトウェア106を書き込む。しかしながら、装置100は、装置で実行される幾つかの又は全てのコードがデジタルで署名されることを必要とする。
装置100への開発者アクセスの必要性を認識すると、プロセスは、ブロック804へ進み、開発者104は、信頼できる当局102へ開発者アクセスの要求を送信する。ある実施形態では、この要求は、開発者104が開発者アクセスを希望するところのコンピューティング装置100(D)の識別子204を含む。上述したように、装置識別子204は、特定の装置(又は装置グループ)に対して特有の装置シリアルナンバー又は他の形式の識別データの形態をとる。更に、ソフトウェア開発者104は、他の情報及びデータ、例えば、開発要員の識別、アドレス、開発者アクセスに必要とされるアクセスの形式、等を与える。
次いで、ブロック806では、信頼できる当局102は、ソフトウェア開発者104により送られた装置識別子204に基づいて開発者アクセスプロフィール208を発生する。種々の実施形態では、信頼できる当局102は、開発者アクセスプロフィール208を発生するときに1つ以上のポリシーを具現化する。これらのポリシーは、例えば、ソフトウェア開発者104により開発されるソフトウェアの形式;コンピューティング装置100に関連した1つ以上の他の当事者、例えば、コンピューティング装置100を所有するテレコミュニケーション電信会社又は企業;コンピューティング装置100(D)の地理的位置;コンピューティング装置100(D)にインストールされるハードウェア、ソフトウェア又はファームウェアバージョン;等を含む多数のファクタに基づいて変化する。換言すれば、開発者アクセスプロフィール208は、コンピューティング装置100(D)及びソフトウェア開発者104に対して非常に特有なものである。
ある実施形態では、信頼できる当局102は、要求をなすソフトウェア開発者104のための開発者識別子も発生する。この開発者識別子は、信頼できる当局102により発行されたデジタル証明書に対して使用することもできる。ある実施形態では、信頼できる当局102は、証明書当局でもよいし、又は別のエンティティを証明書当局として使用してもよい。
デジタル証明書は、ソフトウェア開発者104に関する情報と、信頼できる当局102又は証明書当局のプライベートキーを使用して署名されるソフトウェア開発者104のパブリックキーとを含む。又、デジタル証明書は、他の情報及びデータ、例えば、デジタル証明書の有効期間、1つ以上の取り消し当局、等も含む。
上述したように、発生された開発者アクセスプロフィール208は、その開発者アクセスプロフィール208によってカバーされる装置に対して装置識別子204の形態の装置識別子データ302を含む。又、開発者アクセスプロフィールは、開発者識別子データ304及びデジタル証明書も含む。又、開発者アクセスプロフィール208は、識別された特定の装置のソフトウェア開発者104に承諾された特定の特権及びエンタイトルメントを指示する種々のファイル及び他の情報も含む。開発者アクセスプロフィール208が発生されると、それが、ブロック808において、信頼できる当局102によりソフトウェア開発者104へ送信される。
例えば、ソフトウェア開発者104は、暗号通信(e−メール又はファイル通信のような)を経、又は一体化開発環境を経、又はコンピュータ読み取り可能な媒体(ディスク、フラッシュメモリ又は光学ディスクのような)の配信を経て、ネットワーク(インターネット上のセキュアなウェブサイトのような)を通してサーバーにアクセスすることにより、デジタル証明書及び開発者アクセスプロフィール208を得ることができる。更に、ソフトウェア開発者104は、デジタル証明書及び開発者アクセスプロフィールを一緒に又は別々に得ることができる。
開発者アクセスプロフィール208を受け取ると、ソフトウェア開発者104は、そのプロフィール208で指定された装置100(D)にデジタル証明書及び開発者アクセスプロフィール208を記憶しインストールする。例えば、ソフトウェア開発者104は、一体化開発者環境アプリケーションを使用して、これらのアイテムをコンピューティング装置100(D)にインストールする。或いは又、信頼できる当局102(又は他の許可されたエンティティ)は、ソフトウェア開発者104に代わって、これらアイテムをコンピューティング装置100(D)にインストールし又はプッシュする。例えば、ソフトウェア開発者104は、コンピューティング装置100(D)をネットワーク又はサーバーに結合又は接続する。それに応答して、ある事前の認証及び他の処理の後、デジタル証明書及び開発者アクセスプロフィール208がコンピューティング装置100(D)へダウンロードされる。
図9は、開発者アクセスプロフィール208に基づく、デジタルで署名されたコードの実行を、開発者コンピューティング装置100(D)がどのように取り扱うかの一例を示すフローチャートである。このプロセスは、ブロック902で始まり、オペレーティングシステム202は、開発者コンピューティング装置100(D)においてコードを実行する要求を受け取る。典型的に、この要求は、ユーザがソフトウェアアプリケーションを起動することにより発生される。しかしながら、ユーザ入力なしに自動的に起動されるシステムプロセスでもよい。オペレーティングシステム202は、先ず、信頼できる当局102によりコードが署名されたかどうかチェックし、もしそうでなければ、コードが開発アクセス内にあるかどうかチェックするように構成される。
特に、コードを実行する要求がオペレーティングシステム202によって受け取られると、判断ブロック904において、コードがデジタルで署名されたものであるかどうかチェックされる。コードがデジタルで署名されたものでない場合に、プロセスは、ブロック910へジャンプし、コードは、装置100(D)において実行することが許されない。
コードがデジタルで署名されたものである場合には、プロセスが判断ブロック906へ進み、システムは、信頼できる当局102又はソフトウェア開発者104によりソフトウェアコードが署名されたかどうか決定するためのチェックを行う。
上述したように、ある実施形態では、コードのデジタル署名は、信頼できる当局102又はソフトウェア開発者104に関連したパブリックキーを使用してデジタル署名をメッセージダイジェストへと解読し、次いで、そのメッセージダイジェストを、コード自体をハッシュ処理することで生成されたメッセージダイジェストに対して確認することによって、認証及び検証することができる。ある場合に、コードが信頼できる当局102により検証可能に署名されそして変更されていなければ、プロセスは、ブロック916へ進み、コードを実行することが許される。
しかしながら、判断ブロック906において、コードが信頼できる当局102によって署名されたものでない場合には、プロセスは、判断ブロック908へ進み、システムは、次いで、開発者アクセスプロフィール208が装置100(D)に存在するかどうか決定するためのチェックを行う。開発者アクセスプロフィール208が装置100(D)に存在しない場合には、プロセスは、ブロック910へ進み、要求されたコードが装置100(D)上で実行されることが防止される。
しかしながら、開発者アクセスプロフィール208が装置に存在する場合には、プロセスが判断ブロック912へ進む。判断ブロック912において、システムは、装置100(D)の開発者アクセスプロフィール208にリストされたソフトウェア開発者104によりコードが署名されたものであるかどうか決定するためにコードをチェックする。もしそうでなければ、実行プロセスは、ブロック910へ進み、要求されたコードの実行が阻止される。
開発者識別子402の少なくとも1つを有するソフトウェア開発者104によりコードがデジタルで署名されたものである場合には、プロセスが判断ブロック914へ進む。ブロック914において、オペレーティングシステムは、要求されたコードの実行が開発者アクセスプロフィール208と一貫したものであるかどうか決定するために装置アクセスプロフィール208をチェックする。例えば、オペレーティングシステム202は、装置識別子502がプロフィール208の装置識別子データ302にリストされたものであるかどうかチェックする。もちろん、コールされたAPIのように要求されたコードの実行に関して他のチェックを行うこともでき、又、開発者アクセスプロフィール208に基づいて他のチェックを許したり阻止したりすることもできる。
装置識別子204がプロフィール208にリストされていない場合には、処理がブロック910へ復帰し、コードの実行が阻止される。しかしながら、装置識別子204が開発者アクセスプロフィール208にリストされている場合には、プロセスがブロック916へ進み、要求されたコードの実行が許される。
図10は、開発者アクセスプロフィール208のエンタイトルメントデータ602がどのように要求され、発生され、配信されるかの一例を示すフローチャートである。もちろん、このプロセスは、図8について述べたプロセスフローに関連して遂行することもできるし、又は図8のプロセスに加えて、個別のプロセスとして遂行することもできる。例えば、ソフトウェア開発者104は、信頼できる当局から他の装置への開発アクセスを以前に得ているが、今度は、そのアクセスプロフィール208を更新するか、或いは同じ又は異なるコンピューティング装置100(D)に対する新たなエンタイトルメント602を得ることを希望する。
プロセスは、ブロック1002で始まり、ソフトウェア開発者104は、そのソフトウェア106を開発し、テストし、及び/又は配備するために1つ以上の装置100(D)へのエンハンストアクセスの必要性を認識する。上述したように、この必要性は、種々の状態で生じ得る。例えば、開発者は、典型的に開発者104へ露出されないシステムリソースを使用するソフトウェア106を書き込むことを希望する。これらのシステムリソースは、通常、信頼できる当局102により署名されたアプリケーションにしか利用できず又は装置の信頼できるメモリスページでしか実行できないアプリケーションプログラミングインターフェイス(API)を含む。
この形式のアクセスの一例は、移動電話装置のアプリケーション開発者が特殊な電話インターフェイスの開発を希望することである。典型的に、電話のこれらコア機能は、信頼できる当局102の外部には利用できない。しかしながら、種々の理由で、信頼できる当局102は、ソフトウェア開発者104が、装置100(D)の限定セットに対してそのようなアプリケーションを開発できるようにすることを希望する。上述したように、開発者104が必要とするシステムリソースは、典型的にオペレーティングシステム202により制限される特定データへのアクセスも含む。この形式のデータは、例えば、アドレス帳データ、装置に記憶されたe−メールデータ、コールログデータ、等を含む(が、それに限定されない)。更に、ソフトウェア開発者104は、コンピューティング装置100(D)の他のリソース、例えば、ネットワークリソース及びあるメモリリソースへのアクセスを希望する。
次いで、プロセスは、ブロック1004へ進み、ソフトウェア開発者104は、ある装置100(D)におけるシステムデータ及び/又はシステムリソースへアクセスする要求を送信する。ある実施形態では、ソフトウェア開発者104によって送信される要求は、アクセスが必要な特定のシステムリソース及び/又はデータをリストする。或いは又、その要求は、ソフトウェア106により遂行されるオペレーションの形式を単に指定するだけでもよい。ソフトウェア開発者104により指定されるオペレーションの形式に基づいて、信頼できる当局102は、どのエンタイトルメント602をアクセスプロフィール208に含ませるべきか決定することができる。
種々の実施形態では、信頼できる当局102は、開発者アクセスプロフィール208においてエンタイトルメント602を発生するときに1つ以上のポリシーを具現化することができる。これらのポリシーは、例えば、ソフトウェア開発者104により開発されるソフトウェアの形式;コンピューティング装置100に関連した1つ以上の他の当事者、例えば、コンピューティング装置100を所有するテレコミュニケーション電信会社又は企業;コンピューティング装置100(D)の地理的位置;コンピューティング装置100(D)にインストールされるハードウェア、ソフトウェア又はファームウェアバージョン;等を含む多数のファクタに基づいて変化する。換言すれば、開発者アクセスプロフィール208は、コンピューティング装置100(D)及びソフトウェア開発者104に対して非常に特有なものである。
次いで、プロセスはブロック1006へ進み、開発者アクセスプロフィール208は、ソフトウェア開発者104に対し、エンタイトルメント602を含むように発生される。アクセスプロフィール208は、ソフトウェア開発者104により署名されたコードに対して許諾されるエンタイトルメント602を指定するエンタイトルメントデータ306を含む。上述したように、エンタイトルメント602は、肯定エンタイトルメントを指定するホワイトリストエンタイトルメントでもよいし、又は否定エンタイトルメントを指定するブラックリストエンタイトルメントでもよい。更に別の実施形態では、エンタイトルメント602は、ホワイトリスト及びブラックリストの組み合せでもよい。
ソフトウェア開発者104に対してアクセスプロフィール208が発生されると、プロセスは、次いで、ブロック1008へ進み、信頼できる当局102は、アクセスプロフィール208をソフトウェア開発者104へ送信する。ある実施形態では、アクセスプロフィール208は、セキュアなネットワーク接続であるネットワーク接続(例えば、インターネット)を経て送信される。アクセスプロフィール208を受け取ると、ソフトウェア開発者104は、それを装置100(D)にインストールする。例えば、ソフトウェア開発者104は、装置100(D)に結合されたシステム上で、Xcodeのような一体化開発環境を実行し、この環境は、アクセスプロフィール208をインストールするためのツールをなす。
図11へ進むと、コンピューティング装置100(D)がエンタイトルメント602を適用するプロセスの一例が示されている。このプロセスは、ブロック1102で開始し、装置100(D)のオペレーティングシステム202は、コード106を実行するための要求を受け取る。次いで、ブロック1104において、コード1104のデジタル署名がチェックされ、プロセスは、判断ブロック1106へ進む。
判断ブロック1106において、署名されたコードが、信頼できる当局102によって署名されたものであるかどうか決定される。署名されたコードが、信頼できる当局102により署名されたものである場合には、プロセスがブロック1112へジャンプし、装置100(D)は、オペレーティングシステム202により、その信頼できる署名されたコードを実行することが許可される。
ブロック1106において、コードが信頼できる当局により署名されたことが分からない場合には、プロセスが判断ブロック1108へ進み、開発者アクセスプロフィール208が装置100(D)に存在するかどうか決定される。ある実施形態では、ポリシープロセス210は、この機能を遂行するように構成される。或いは又、オペレーティングシステム202の他の部分がその決定を行ってもよい。
開発者アクセスプロフィール208が装置100(D)に存在しない場合には、プロセスがブロック1114へ進み、装置は、要求されたコードを実行することが防止される。しかしながら、開発者アクセスプロフィール208が装置100(D)において見つかった場合には、プロセスが判断ブロック1110へ移動し、コードが開発者アクセスプロフィール208におけるエンタイトルメント602に適合するかどうか決定される。
この決定は、開発者アクセスプロフィール208のエンタイトルメントデータ306で指定されたエンタイトルメント602に対してコードをチェックすることを含む。この決定は、ポリシープロセス210により遂行される。コードが適合性についてどのようにチェックされるかの一例を、図12を参照して以下に述べる。
ブロック208において、コードが開発者アクセスプロフィールに適合すると分かった場合には、プロセスがブロック1112へ進み、コードは、装置において実行することが許される。しかしながら、アクセスプロフィール208に充分なエンタイトルメントが存在しない場合には、実行されるコードが装置100(D)において停止される。ある実施形態では、アプリケーションコードが何らかの仕方で制限されたことをユーザに通知するメッセージが表示される。ある実施形態では、開発者又はユーザに特定のエラーが表示され、完全な機能を持つためにアプリケーションに要求されるアクセスの形式を理解できるようにする。
判断ブロック1110に関連して上述したように、ポリシープロセス210は、装置100(D)における開発者アクセスプロフィール208で与えられるエンタイトルメント602が、コードをして、コードの実行の際にコールされるシステムリソース及び/又はデータにアクセスするのを許すに充分なものであるかどうか決定するように構成される。
図12は、判断ブロック1110のコード適合性決定をどのように遂行するかの一例を示すフローチャートである。このプロセスは、ブロック1202で始まり、コードは、コンピューティング装置100(D)の限定データ及び又はシステムリソースへのアクセスを要求する。上述したように、限定データ及び/又はシステムリソースは、移動電話装置のアドレス帳データを含んでもよいし、又は移動装置の電話機能へのAPIを含んでもよいし、或いは装置のネットワークスタックへのアクセスを含んでもよい。
次いで、ブロック1204において、ポリシープロセス210は、コード要求を実行するのに必要なデータ及び/又はシステムリソースへのアクセスの形式を決定する。プロセスは、次いで、ブロック1206へ進み、ポリシープロセス210は、開発者アクセスプロフィール208におけるエンタイトルメントデータ306からエンタイトルメント602を検索する。
必要なアクセス及び利用可能なエンタイトルメントの形式が決定されると、プロセスは、判断ブロック1208へ進み、ポリシーサービス210は、システムデータ及び/又はシステムリソースへの必要なアクセスがエンタイトルメントデータ306により許されるかどうか決定する。典型的に、ポリシーサービス210は、コードを実行するのに必要なアクセスがホワイトリストに含まれるかどうか決定するためにエンタイトルメント602をチェックする。
アクセスがホワイトリストに指定されていない場合には、プロセスがブロック1212へ進み、コードは、要求されたデータ及び/又はシステムリソースにアクセスすることが許されない。しかしながら、エンタイトルメントデータ306が、要求されたアクセスを許すエンタイトルメント602を含む場合には、プロセスがブロック1210へ進み、コードは、要求されたデータ及び/又はシステムリソースにアクセスすることが許される。
図11及び12を参照して上述したプロセスでは、単一の開発者アクセスプロフィール208が装置100(D)に存在すると仮定する。しかしながら、上述したように、単一の装置100(D)は、異なる開発者識別子データ302、装置識別子データ304及びエンタイトルメントデータ306を定義する多数のアクセスプロフィール208を記憶することが明らかである。ソフトウェアコード106がシステムデータ及び/又はリソースへのアクセスを要求するときには、多数のアクセスプロフィール208のいずれか1つが装置100(D)において許されるコード実行のための必要なエンタイトルメントを与えることが考えられる。上述したように、ポリシープロセス210は、開発者アクセスプロフィール208にアクセスし、署名されたコードのソース及び完全性を検証する。この検証は、アクセスプロフィール208に記憶されたパブリックキーに対してデジタル署名をチェックすることにより実行できる。
多数の異なるプロフィールを含む装置では、この検証プロセスは、署名されたコードに対してチェックするためのパブリックキーが潜在的に多数ある場合には、計算上費用がかかるものとなる。従って、ある実施形態では、ポリシープロセス210は、先ず、コードを適切に実行するのに必要なエンタイトルメント602を分析し、次いで、署名されたコードを確認する前に必要なエンタイトルメントをもたないアクセスプロフィールを除外するように構成される。これは、装置のセキュリティを危うくすることなく、実質的な性能利益を生じさせる。図13は、このプロセスの一例を示すフローチャートである。
プロセスは、ブロック1302において開始し、オペレーティングシステム202は、装置100(D)においてソフトウェア106を実行するための要求を受け取る。要求を受け取った後に、ポリシープロセス210又は他のプロセスは、ブロック1304において、コードを分析して、装置100(D)でコード実行要求を完了するのに必要なデータ及び/又はシステムリソースへのアクセスを決定する。プロセスは、次いで、ブロック1306へ進み、ここで、ポリシーサービス210は、装置の次のアクセスプロフィール208(この初期のケースでは、第1のアクセスプロフィール)へ進み、そのプロフィール208で指定されたエンタイトルメント602を分析して、それが、装置100(D)でコードの実行を許すのに充分なものであるかどうか決定する。
次いで、プロセスは、判断ブロック1308へ進み、プロフィール208のエンタイトルメント602が充分なものであるかどうかの決定が行われる。エンタイトルメントがコードの実行を許すに充分なものでない場合には、プロセスは、ブロック1310へ進み、コードのデジタル署名を確認するのに利用できるプロフィールのリスト(又は他のグループ)から現在アクセスプロフィール208が除外される。
アクセスプロフィールが除外されると、プロセスは、次いで、判断ブロック1312へ進み、そこで、ポリシーサービスは、利用できる付加的なアクセスプロフィール208があるかどうか調べるチェックを行う。もしそうであれば、プロセスは、ブロック1306へ戻り、そのプロフィールに対して繰り返される。判断ブロック1308において、現在プロフィール208のエンタイトルメント602が、装置100(D)上でコードの実行を許すに充分であると分かった場合には、プロセスが判断ブロック1312へ進み、付加的なプロフィールについてチェックする。チェックすべき付加的なプロフィールが装置にない場合には、プロフィールがブロック1314へ進み、そこで、コードのデジタル署名が、以前に実行されなかったプロフィール208のみに対して確認される(ブロック1310)。従って、暗号/解読及びハッシュオペレーションの数が著しく減少される。
図14Aは、移動装置1400の一例を示す。移動装置1400は、例えば、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント、セルラー電話、ネットワーク機器、カメラ、スマートホン、改良型汎用パケット無線サービス(EGPRS)移動電話、ネットワークベースステーション、メディアプレーヤ、ナビゲーション装置、e−メール装置、ゲームコンソール、或いはこれらデータ処理装置又は他のデータ処理装置の2つ以上の組み合せである。
移動装置の概略
ある実施形態では、移動装置1400は、タッチ感知ディスプレイ1402を備えている。タッチ感知ディスプレイ1402は、液晶ディスプレイ(LCD)技術、光放射ポリマーディスプレイ(LPD)技術、又は他のディスプレイ技術で実施することができる。タッチ感知ディスプレイ1402は、ユーザとの触覚及び/又は触感接触を感知することができる。
ある実施形態では、移動装置1400は、タッチ感知ディスプレイ1402を備えている。タッチ感知ディスプレイ1402は、液晶ディスプレイ(LCD)技術、光放射ポリマーディスプレイ(LPD)技術、又は他のディスプレイ技術で実施することができる。タッチ感知ディスプレイ1402は、ユーザとの触覚及び/又は触感接触を感知することができる。
ある実施形態では、タッチ感知ディスプレイ1402は、マルチタッチ感知ディスプレイ1402で構成することができる。マルチタッチ感知ディスプレイ1402は、例えば、複数の同時タッチポイントを処理することができ、これは、各タッチポイントの圧力、度合い及び/又は位置に関連したデータを処理することを含む。このような処理は、複数の指でのジェスチャー及び相互作用、コーディング(chording)、及び他の相互作用を容易にする。他のタッチ感知ディスプレイ技術も使用でき、例えば、スタイラス又は他のポインティング装置を使用して接触を行うディスプレイも使用できる。マルチタッチ感知ディスプレイ技術の幾つかの例が、米国特許第6,323,846号、第6,570,557号、第6,677,932号、及び第6,888,536号に説明されており、その各々を参考としてここにそのまま援用する。
ある実施形態では、移動装置1400は、種々のシステムオブジェクトへのユーザアクセスを与えると共にユーザへ情報を搬送するためにタッチ感知ディスプレイ1402上に1つ以上のグラフィックユーザインターフェイスを表示することができる。ある実施形態では、グラフィックユーザインターフェイスは、1つ以上のディスプレイオブジェクト1404、1406を含むことができる。ここに示す例では、ディスプレイオブジェクト1404、1406は、システムオブジェクトのグラフィック表示である。システムオブジェクトの幾つかの例は、装置の機能、アプリケーション、ウインドウ、ファイル、警告、事象、又は他の識別可能なシステムオブジェクトを含む。
移動装置の機能の例
ある実施形態では、移動装置1400は、電話オブジェクト1410により指示された電話装置、メールオブジェクト1412により指示されたe−メール装置、マップオブジェクト1414により指示されたマップ装置、Wi−Fiベースステーション装置(図示せず)、並びにウェブビデオオブジェクト1416により指示されたネットワークビデオ送信及びディスプレイ装置、等の複数の装置機能を具現化することができる。ある実施形態では、特定のディスプレイオブジェクト1404、例えば、電話オブジェクト1410、メールオブジェクト1412、マップオブジェクト1414、及びウェブビデオオブジェクト1416は、メニューバー1418に表示することができる。ある実施形態では、装置の機能は、図14Aに示すグラフィックユーザインターフェイスのようなトップレベルのグラフィックユーザインターフェイスからアクセスすることができる。例えば、オブジェクト1410、1412、1414、又は1416の1つにタッチすると、それに対応する機能を呼び出すことができる。
ある実施形態では、移動装置1400は、電話オブジェクト1410により指示された電話装置、メールオブジェクト1412により指示されたe−メール装置、マップオブジェクト1414により指示されたマップ装置、Wi−Fiベースステーション装置(図示せず)、並びにウェブビデオオブジェクト1416により指示されたネットワークビデオ送信及びディスプレイ装置、等の複数の装置機能を具現化することができる。ある実施形態では、特定のディスプレイオブジェクト1404、例えば、電話オブジェクト1410、メールオブジェクト1412、マップオブジェクト1414、及びウェブビデオオブジェクト1416は、メニューバー1418に表示することができる。ある実施形態では、装置の機能は、図14Aに示すグラフィックユーザインターフェイスのようなトップレベルのグラフィックユーザインターフェイスからアクセスすることができる。例えば、オブジェクト1410、1412、1414、又は1416の1つにタッチすると、それに対応する機能を呼び出すことができる。
ある実施形態では、移動装置1400は、ネットワーク配布機能を具現化することができる。例えば、この機能は、ユーザが移動装置1400を取り上げて、移動しながらその関連ネットワークにアクセスできるようにする。特に、移動装置1400は、インターネットアクセス(例えば、WiFi)をその付近の他のワイヤレス装置へと拡張することができる。例えば、移動装置1400は、1つ以上の装置のためのベースステーションとして構成することができる。従って、移動装置1400は、他のワイヤレス装置へのネットワークアクセスを承諾又は拒絶することができる。
ある実施形態では、装置の機能を呼び出すと、移動装置1400のグラフィックユーザインターフェイスが変化し、又は増強され、或いは別のユーザインターフェイス又はユーザインターフェイス要素と置き換えられて、それに対応する装置機能に関連した特定機能へのユーザアクセスを容易にする。例えば、ユーザが電話オブジェクト1410にタッチするのに応答して、タッチ感知ディスプレイ1402のグラフィックユーザインターフェイスは、種々の電話機能に関連したディスプレイオブジェクトを提示し、同様に、メールオブジェクト1412にタッチすると、グラフィックユーザインターフェイスは、種々のe−メール機能に関連したディスプレイオブジェクトを提示し、マップオブジェクト1414にタッチすると、グラフィックユーザインターフェイスは、種々のマップ機能に関連したディスプレイオブジェクトを提示し、そしてウェブビデオオブジェクト1416にタッチすると、グラフィックユーザインターフェイスは、種々のウェブビデオ記憶に関連したディスプレイオブジェクトを提示する。
ある実施形態では、図14Aのトップレベルのグラフィックユーザインターフェイス環境又は状態は、移動装置1400の底部付近に位置するボタン1420を押すことにより回復することができる。ある実施形態では、各々の対応する装置機能は、タッチ感知ディスプレイ1402に表示された対応する「ホーム」ディスプレイオブジェクトを有し、図14Aのグラフィックユーザインターフェイス環境は、「ホーム」ディスプレイオブジェクトを押すことにより回復することができる。
ある実施形態では、トップレベルのグラフィックユーザインターフェイスは、付加的なディスプレイオブジェクト1406、例えば、ショートメッセージングサービス(SMS)オブジェクト1430、カレンダーオブジェクト1432、写真オブジェクト1434、カメラオブジェクト1436、計算器オブジェクト1438、株オブジェクト1440、アドレス帳オブジェクト1442、メディアオブジェクト1444、ウェブオブジェクト1446、ビデオオブジェクト1448、設定オブジェクト1450、及びノートオブジェクト(図示せず)を含むことができる。例えば、SMSディスプレイオブジェクト1430にタッチすると、SMSメッセージング環境及びサポート機能を呼び出すことができ、同様に、ディスプレイオブジェクト1432、1434、1436、1438、1440、1442、1444、1446、1448、及び1450を各々選択すると、それに対応するオブジェクト環境及び機能を呼び出すことができる。
又、図14Aのグラフィックユーザインターフェイスには、付加的な及び/又は異なるディスプレイオブジェクトを表示することもできる。例えば、装置1400が他の装置のためのベースステーションとして機能する場合には、1つ以上の「接続」オブジェクトがグラフィックユーザインターフェイスに現れて、接続を指示する。ある実施形態では、ディスプレイオブジェクト1406は、ユーザによって構成することができ、例えば、ユーザは、どのディスプレイオブジェクト1406が表示されるか指定することができ、及び/又は他の機能及びそれに対応するディスプレイオブジェクトを与える付加的なアプリケーション又は他のソフトウェアをダウンロードすることができる。
ある実施形態では、移動装置1400は、1つ以上の入力/出力(I/O)装置及び/又はセンサ装置を含むことができる。例えば、音声イネーブル機能、例えば、電話及び音声メール機能を容易にするためにスピーカ1460及びマイクロホン1462を含むことができる。ある実施形態では、スピーカ1460及びマイクロホン1462の音量制御のためのアップ/ダウンボタン1484を含ませることができる。又、移動装置1400は、電話の入呼びのリングインジケータのためのオン/オフボタン1482を含ませることもできる。ある実施形態では、電話のスピーカ機能のようなハンズフリー音声機能を容易にするためにスピーカ1464を含ませることができる。又、ヘッドホン及び/又はマイクロホンを使用するためにオーディオジャック1466を含ませることもできる。
ある実施形態では、ユーザが移動装置1400をユーザの耳の付近に配置するのを検出し、それに応答して、タッチ感知ディスプレイ1402を解離して、偶発的な機能の呼び出しを防止し易くするために、接近センサ1468を含ませることができる。ある実施形態では、移動装置1400がユーザの耳の付近にあるときに付加的な電力を保存するために、タッチ感知ディスプレイ1402をターンオフすることができる。
又、他のセンサを使用することもできる。例えば、ある実施形態では、周囲光センサ1470を使用して、タッチ感知ディスプレイ1402の輝度を容易に調整することができる。ある実施形態では、加速度計1472を使用して、方向矢印1474で示された移動装置1400の動きを検出することができる。従って、ディスプレイオブジェクト及び/又はメディアは、例えば、肖像画又は風景画のような検出された方向に基づいて提示することができる。ある実施形態では、移動装置1400は、グローバルポジショニングシステム(GPS)又は他のポジショニングシステム(例えば、Wi−Fiアクセスポイント、テレビ信号、セルラーグリッド、ユニフォームリソースロケータ(URL)を使用するシステム)により与えられるような位置決定能力をサポートするための回路及びセンサを含むことができる。ある実施形態では、ポジショニングシステム(例えば、GPS受信器)を移動装置2500へ一体化することもできるし、又は位置に基づくサービスへのアクセスを与えるためにインターフェイス(例えば、ポート装置1490)を通して移動装置1400へ結合できる個別の装置として設けることもできる。
ある実施形態では、ポート装置1490、例えば、ユニバーサルシリアルバス(USB)ポート、又はドッキングポート、又は他の何らかのワイヤードポート接続を含ませることができる。ポート装置1490は、例えば、他の通信装置1400、ネットワークアクセス装置、パーソナルコンピュータ、プリンタ、ディスプレイスクリーン、又はデータの送信及び/又は受信を行える他の処理装置のような他のコンピューティング装置へのワイヤード接続を確立するのに使用できる。ある実施形態では、ポート装置1490は、移動装置1400が、例えば、TCP/IP、HTTP、UDP及び他の既知のプロトコルのような1つ以上のプロトコルを使用して、ホスト装置と同期をとれるようにする。
又、移動装置1400は、カメラレンズ及びセンサ1480を備えることもできる。ある実施形態では、カメラレンズ及びセンサ1480は、移動装置1400の背面に配置することができる。カメラは、静止映像及び/又はビデオを捕獲することができる。
又、移動装置1400は、802.11b/g通信装置1486、及び/又はBluetoothTM通信装置1488のような1つ以上のワイヤレス通信サブシステムを備えることもできる。又、他の802.x通信プロトコル(例えば、WiMax、Wi−Fi、3G)、コード分割多重アクセス(CDMA)、移動通信用のグローバルシステム(GSM)、エンハンストデータGSM環境(EDGE)、等を含む他の通信プロトコルをサポートすることもできる。
構成可能なトップレベルグラフィックユーザインターフェイスの例
図14Bは、装置1400の構成可能なトップレベルグラフィックユーザインターフェイスの別の例を示す。装置1400は、ディスプレイオブジェクトの異なるセットを表示するように構成できる。
図14Bは、装置1400の構成可能なトップレベルグラフィックユーザインターフェイスの別の例を示す。装置1400は、ディスプレイオブジェクトの異なるセットを表示するように構成できる。
ある実施形態では、装置1400の1つ以上のシステムオブジェクトの各々は、それに関連したシステムオブジェクト属性のセットを有し、そして属性の1つは、システムオブジェクトに対するディスプレイオブジェクトがトップレベルグラフィックユーザインターフェイスにおいてレンダリングされるかどうか決定する。この属性は、システムによって自動的にセットすることもできるし、又は以下に述べるように、あるプログラム又はシステム機能を介してユーザによりセットすることもできる。図14Bは、(例えば、ノートシステムオブジェクト及びウェブビデオシステムオブジェクトの属性が変更されるときに)ノートオブジェクト1452(図14Aには示さず)がどのようにして装置1400のトップレベルグラフィックユーザインターフェイスに追加され及びそこから除去されるかの一例を示す。
移動装置アーキテクチャーの例
図15は、移動装置(例えば、移動装置1400)の実施形態のブロック図1500である。移動装置は、メモリインターフェイス1502、1つ以上のデータプロセッサ、映像プロセッサ及び/又は中央処理ユニット1504、並びに周辺インターフェイス1506を備えることができる。メモリインターフェイス1502、1つ以上のプロセッサ1504、及び/又は周辺インターフェイス1506は、個別のコンポーネントでもよいし、又は1つ以上の集積回路に一体化されてもよい。移動装置の種々のコンポーネントは、1つ以上の通信バス又は信号ラインにより結合することができる。
図15は、移動装置(例えば、移動装置1400)の実施形態のブロック図1500である。移動装置は、メモリインターフェイス1502、1つ以上のデータプロセッサ、映像プロセッサ及び/又は中央処理ユニット1504、並びに周辺インターフェイス1506を備えることができる。メモリインターフェイス1502、1つ以上のプロセッサ1504、及び/又は周辺インターフェイス1506は、個別のコンポーネントでもよいし、又は1つ以上の集積回路に一体化されてもよい。移動装置の種々のコンポーネントは、1つ以上の通信バス又は信号ラインにより結合することができる。
センサ、装置及びサブシステムは、複数の機能を促進するために周辺インターフェイス1506に結合することができる。例えば、図14Aを参照して述べた方向決め、照明及び接近機能を促進するために、運動センサ1510、光センサ1512及び接近センサ1514を周辺インターフェイス1506に結合することができる。又、ポジショニングシステム(例えば、GPS受信器)、温度センサ、生物測定センサ、又は他の感知装置のような他のセンサ1516を周辺インターフェイス1506に接続して、その関連機能を促進することもできる。
又、カメラサブシステム1520及び光学的センサ1522、例えば、電荷結合デバイス(CCD)又は相補的金属酸化物半導体(CMOS)光学的センサを使用して、写真及びビデオクリップの記録等のカメラ機能を促進することができる。
通信機能は、高周波受信器及び送信器、及び/又は光学的(例えば、赤外線)受信器及び送信器を含む1つ以上のワイヤレス通信サブシステム1524を通して促進することができる。通信サブシステム1524の特定の設計及び実施は、移動装置が動作するように意図された通信ネットワーク(1つ又は複数)に依存する。例えば、移動装置は、GSMネットワーク、GPRSネットワーク、EDGEネットワーク、Wi−Fi又はWiMaxネットワーク、及びBluetoothTMネットワークを経て動作するように設計された通信サブシステム1524を備えることができる。特に、ワイヤレス通信サブシステム1524は、移動装置を他のワイヤレス装置に対するベースステーションとして構成できるようにホスティングプロトコルを含んでもよい。
オーディオサブシステム1526は、音声認識、音声複写、デジタル記録及び電話機能のような音声イネーブル機能を促進するためにスピーカ1528及びマイクロホン1530に結合することができる。
I/Oサブシステム1540は、タッチスクリーンコントローラ1542、及び/又は他の入力コントローラ(1つ又は複数)1544を備えることができる。タッチスクリーンコントローラ1542は、タッチスクリーン1546に結合することができる。タッチスクリーン1546及びタッチスクリーンコントローラ1542は、例えば、複数のタッチ感知技術のいずれかを使用して、接触及び運動又はその切断を検出することができ、それらタッチ感知技術は、タッチスクリーン1546との1つ以上の接触点を決定するための容量性、抵抗性、赤外線及び表面音波技術、並びに他の接近センサアレイ又は他の素子を含むが、これらに限定されない。
他の入力コントローラ(1つ又は複数)1544は、1つ以上のボタン、ロッカースイッチ、サムホイール、赤外線ポート、USBポート、及び/又はスタイラス等のポインタ装置のような他の入力/制御装置1548に結合することができる。1つ以上のボタン(図示せず)は、スピーカ1528及び/又はマイクロホン1530の音量制御のためのアップ/ダウンボタンを含むことができる。
一実施形態では、第1の期間中ボタンを押すと、タッチスクリーン1546のロックを解除することができ、そして第1の期間より長い第2の期間中ボタンを押すと、移動装置への電力をオン又はオフに切り換えることができる。ユーザは、1つ以上のボタンの機能をカスタマイズすることができる。タッチスクリーン1546は、例えば、仮想又はソフトボタン及び/又はキーボードを実施するのに使用することもできる。
ある実施形態では、移動装置は、記録されたオーディオ及び/又はビデオファイル、例えば、MP3、AAC及びMPEGファイルを提示することができる。ある実施形態では、移動装置は、iPodTMのようなMP3プレーヤの機能を含むことができる。それ故、移動装置は、iPodTMに適合できる32ピンコネクタを含むことができる。他の入力/出力及び制御装置を使用することもできる。
メモリインターフェイス1502は、メモリ1550に結合することができる。メモリ1550は、高速ランダムアクセスメモリ及び/又は不揮発性メモリ、例えば、1つ以上の磁気ディスク記憶装置、1つ以上の光学的記憶装置、及び/又はフラッシュメモリ(例えば、NAND、NOR)を含むことができる。メモリ1550は、Darwin、RTXC、LINUX、UNIX、OS X、WINDOWSのようなオペレーティングシステム1552、又はVxWorksのような埋め込み型オペレーティングシステムを記憶することができる。オペレーティングシステム1552は、基本的なシステムサービスをハンドリングし且つハードウェア従属タスクを遂行するためのインストラクションを含むことができる。ある実施形態では、オペレーティングシステム1552は、カーネル(例えば、UNIXカーネル)である。
又、メモリ1550は、1つ以上の付加的な装置、1つ以上のコンピュータ及び/又は1つ以上のサービスとの通信を容易にするために通信インストラクション1554を記憶することもできる。メモリ1550は、グラフィックユーザインターフェイス処理を容易にするためのグラフィックユーザインターフェイスインストラクション1550、センサ関連処理及び機能を容易にするためのセンサ処理インストラクション1558、電話関連プロセス及び機能を容易にするための電話インストラクション1560、電子メッセージング関連プロセス及び機能を容易にするための電子メッセージングインストラクション1562、ウェブブラウジング関連プロセス及び機能を容易にするためのウェブブラウジングインストラクション1564、メディア処理関連プロセス及び機能を容易にするためのメディア処理インストラクション1566、GPS及びナビゲーション関連プロセス及び機能を容易にするためのGPS/ナビゲーションインストラクション1568、カメラ関連プロセス及び機能を容易にするためのカメラインストラクション1570、及び/又は他のプロセス及び機能、例えば、アクセス制御管理機能を容易にするための他のソフトウェアインストラクション1572を含むことができる。又、メモリ1550は、ウェブビデオ関連プロセス及び機能を容易にするためのウェブビデオインストラクション、及び/又はウェブショッピング関連プロセス及び機能を容易にするためのウェブショッピングインストラクションのような他のソフトウェアインストラクション(図示せず)も記憶することができる。ある実施形態では、メディア処理インストラクション1566は、オーディオ処理関連プロセス及び機能、並びにビデオ処理関連プロセス及び機能を各々容易にするためのオーディオ処理インストラクション及びビデオ処理インストラクションへと分割される。又、メモリ1550には、アクチベーションレコード及び国際移動装置アイデンティティ(IMEI)1574、又は同様のハードウェア識別子を記憶することもできる。
上述したインストラクション及びアプリケーションの各々は、上述した1つ以上の機能を遂行するためのインストラクションのセットに対応させることができる。これらのインストラクションは、個別のソフトウェアプログラム、手順又はモジュールとして具現化される必要はない。メモリ1550は、付加的なインストラクション又はより少数のインストラクションを含むこともできる。更に、移動装置の種々の機能は、1つ以上の信号処理及び/又は特定用途向け集積回路を含めて、ハードウェア及び又はソフトウェアで具現化することができる。
当業者であれば、本発明の精神から逸脱せずに多数の種々の変更がなされ得ることが理解されよう。それ故、本発明の形態は、単なる例示に過ぎず、本発明の範囲を限定するものではないことを明確に理解されたい。前記説明は、種々の実施形態に適用された本発明の新規な特徴を図示し、記述し且つ指摘したが、当業者であれば、本発明の範囲から逸脱せずに、ここに例示した装置又はプロセスの形態及び細部についての種々の省略、置き換え、及び変更が理解されるであろう。
100:コンピューティング装置
100(D):開発者コンピューティング装置
102:信頼できる当局
104:ソフトウェア開発者
106:ソフトウェア
202:オペレーティングシステム
204:装置識別子
206:アプリケーション記憶装置
208:開発者アクセスプロフィール
210:ポリシープロセス
302:装置識別子データ
304:開発者識別子データ
306:エンタイトルメントデータ
402(A)−402(D):開発者識別子
502:装置識別子
602(A):デバッグ許可エンタイトルメント
602(B):トレース許可エンタイトルメント
602(C):アドレス帳データアクセス許可エンタイトルメント
602(D):マルチメディアAPIアクセス許可エンタイトルメント
100(D):開発者コンピューティング装置
102:信頼できる当局
104:ソフトウェア開発者
106:ソフトウェア
202:オペレーティングシステム
204:装置識別子
206:アプリケーション記憶装置
208:開発者アクセスプロフィール
210:ポリシープロセス
302:装置識別子データ
304:開発者識別子データ
306:エンタイトルメントデータ
402(A)−402(D):開発者識別子
502:装置識別子
602(A):デバッグ許可エンタイトルメント
602(B):トレース許可エンタイトルメント
602(C):アドレス帳データアクセス許可エンタイトルメント
602(D):マルチメディアAPIアクセス許可エンタイトルメント
Claims (34)
- 開発者アクセスプロフィールを発生するコンピュータ実施方法において、
開発者識別子、開発者コンピューティング装置を表す装置識別子、及び開発者コンピューティング装置に関連した要求されたエンタイトルメントを受け取るステップと、
前記要求されたエンタイトルメントに少なくとも一部分基づいてエンタイトルメントデータを発生するステップと、
信頼できる当局のプライベートキーを使用して、前記開発者識別子、前記装置識別子、及び前記発生されたエンタイトルメントデータにデジタルで署名するステップと、
前記デジタルで署名されたデータを開発者へ送信するステップと、
を備えた方法。 - 前記エンタイトルメントデータは、前記装置識別子に関連したコンピューティング装置のデータにアクセスするためのエンタイトルメントを表す、請求項1に記載の方法。
- 前記エンタイトルメントデータは、前記装置識別子に関連したコンピューティング装置のオペレーティングシステムにおけるサービスにアクセスするためのエンタイトルメントを表す、請求項1に記載の方法。
- 前記開発者識別子は、開発者パブリックキーを含む、請求項1に記載の方法。
- 前記装置識別子は、シリアルナンバーを含む、請求項1に記載の方法。
- 前記コンピューティング装置は、移動電話ハンドセットを含む、請求項1に記載の方法。
- 前記デジタルで署名されたデータは、開発者アクセスプロフィールを含む、請求項1に記載の方法。
- 前記開発者アクセスプロフィールは、ソフトウェア開発コンピューティング装置を経て移動電話装置へ配信される、請求項7に記載の方法。
- プロセッサ上で実行されたときに、コンピューティング装置が、開発者アクセスプロフィールを発生する方法を遂行するようにさせるコンピュータ実行可能なインストラクションが記憶されたコンピュータ読み取り可能な媒体において、前記方法は、
開発者識別子、開発者コンピューティング装置を表す装置識別子、及び開発者コンピューティング装置に関連した要求されたエンタイトルメントを受け取り、
前記要求されたエンタイトルメントに少なくとも一部分基づいてエンタイトルメントデータを発生し、
信頼できる当局のプライベートキーを使用して、前記開発者識別子、前記装置識別子、及び前記発生されたエンタイトルメントデータにデジタルで署名し、
前記デジタルで署名されたデータを開発者へ送信する、
ことを含むものである、コンピュータ読み取り可能な媒体。 - 動作環境内で開発者アクセスを与えるコンピュータ実施方法において、
ソフトウェア開発者から装置へ開発アクセスする要求であって、少なくとも1つの要求されたエンタイトルメントを含む開発アクセス要求を受け取るステップと、
前記要求に応答して、その要求されたエンタイトルメントを表すエンタイトルメントデータを含む開発者アクセスプロフィールを発生するステップと、
前記開発者アクセスプロフィールを、前記装置及び開発者に特有のソフトウェア開発者へ配信するステップと、
を備えた方法。 - 前記エンタイトルメントデータは、エンタイトルメントホワイトリストを含む、請求項10に記載の方法。
- 前記エンタイトルメントデータは、エンタイトルメントブラックリストを含む、請求項10に記載の方法。
- 前記エンタイトルメントデータは、エンタイトルメントホワイトリスト及びエンタイトルメントブラックリストを含む、請求項10に記載の方法。
- 前記エンタイトルメントデータは、デバッグ許可エンタイトルメント、トレース許可エンタイトルメント、アドレス帳データへのアクセス許可エンタイトルメント、又はマルチメディアAPIへのアクセス許可エンタイトルメント、の少なくとも1つ以上を含む、請求項10に記載の方法。
- 前記開発アクセスの要求は、信頼できる当局により受け取られる、請求項10に記載の方法。
- 前記開発アクセスの要求は、前記ソフトウェア開発者に関連したパブリックキーを更に含む、請求項10に記載の方法。
- 前記開発者アクセスプロフィールは、少なくとも1つの装置識別子、及び1つの開発者識別子を含む、請求項10に記載の方法。
- 前記少なくとも1つの装置識別子に関連した装置にポリシーサービスをインストールするステップを更に備えた、請求項17に記載の方法。
- 前記ポリシーサービスは、エンタイトルメントが充分である場合だけコードをコンピューティング装置上で実行するのを許すように構成される、請求項18に記載の方法。
- プロセッサ上で実行されたときに、コンピューティング装置が、動作環境内で開発者アクセスを与える方法を遂行するようにさせるコンピュータ実行可能なインストラクションが記憶されたコンピュータ読み取り可能な媒体において、前記方法は、
ソフトウェア開発者から装置へ開発アクセスする要求であって少なくとも1つの要求されたエンタイトルメントを含む開発アクセス要求を受け取り、
前記要求に応答して、その要求されたエンタイトルメントを表すエンタイトルメントデータを含む開発者アクセスプロフィールを発生し、
前記開発者アクセスプロフィールを、前記装置及び開発者に特有のソフトウェア開発者へ配信する、
ことを含むものである、コンピュータ読み取り可能な媒体。 - コンピューティング装置でソフトウェアを認証するコンピュータ実施方法において、
保護されたシステムリソースへのアクセスを要求するコードを実行するための要求を受け取るステップと、
装置のメモリに記憶された開発者アクセスプロフィールにおけるエンタイトルメントデータにアクセスして、コンピューティング装置が、前記コードをして、前記開発者アクセスプロフィールに対応する開発者により、前記装置の保護されたシステムリソースにアクセスできることが許可されたと決定するステップと、
前記装置及び開発者が、前記コードをして、前記開発者アクセスプロフィールにおけるエンタイトルメントに基づき、保護されたシステムリソースにアクセスできることが許可された場合に、前記コードを実行するステップと、
を備えた方法。 - エンタイトルメントデータにアクセスする前記ステップは、ポリシーサービスによって遂行され、このポリシーサービスは、コードの実行を許すべきかどうか決定する、請求項21に記載の方法。
- 前記ポリシーサービスは、前記装置のメモリのユーザスペース内で実行される、請求項22に記載の方法。
- 前記コードは、コンピュータソフトウェアアプリケーションのメモリページを含む、請求項21に記載の方法。
- 前記コードは、コンピュータソフトウェアアプリケーションの複数のページを含む、請求項21に記載の方法。
- 前記開発者アクセスプロフィールは、更に、装置識別子データを含む、請求項21に記載の方法。
- 前記装置識別子データにアクセスして、前記コンピューティング装置がコードの実行を許可されたことを決定するステップを更に備えた、請求項26に記載の方法。
- 装置識別子にアクセスして、コンピューティング装置がコードの実行を許可されたことを決定する前記ステップは、アクセスプロフィールの装置識別子データにおける装置識別子を、前記コンピューティング装置に関連した装置識別子と比較することを含む、請求項27に記載の方法。
- 前記コンピューティング装置は、移動電話装置を含む、請求項21に記載の方法。
- 前記移動装置のオペレーティングシステムは、デジタルで署名されたコードしか装置上で実行できないように構成される、請求項21に記載の方法。
- プロセッサ上で実行されたときに、コンピューティング装置が、そのコンピューティング装置でソフトウェアを認証する方法を遂行するようにさせるコンピュータ実行可能なインストラクションが記憶されたコンピュータ読み取り可能な媒体において、前記方法は、
保護されたシステムリソースへのアクセスを要求するコードを実行するための要求を受け取り、
装置のメモリに記憶された開発者アクセスプロフィールにおけるエンタイトルメントデータにアクセスして、コンピューティング装置が、前記コードをして、前記開発者アクセスプロフィールに対応する開発者により、前記装置の保護されたシステムリソースにアクセスできることが許可されたと決定し、
前記装置及び開発者が、前記コードをして、前記開発者アクセスプロフィールにおけるエンタイトルメントに基づき、保護されたシステムリソースにアクセスできることが許可された場合に、前記コードを実行する、
ことを含むものである、コンピュータ読み取り可能な媒体。 - コンピューティング装置でコードを実行する方法において、
限定されたシステムリソースへのアクセスを要求するコードを前記装置上で実行するための要求を受け取るステップと、
前記要求に応答して、前記装置と、エンタイトルメントデータを含む実行コードの開発者とに特有の開発者アクセスプロフィールを検索するステップと、
前記検索されたエンタイトルメントデータを、前記コードにより要求されるアクセスと比較するステップと、
前記比較に基づいて前記コードの実行を許すステップと、
を備えた方法。 - 限定されたオペレーティング環境でソフトウェアを実行する能力をソフトウェア開発者に与えるシステムにおいて、
装置を表すデータ、開発者を表すデータ、及びエンタイトルメントを表すデータを含む開発者アクセスプロフィールを発生するように構成された第1のコンピューティング装置と、
オブジェクトコードをコンパイルし、そのコンパイルされたオブジェクトコードの少なくとも幾つかに、開発者に関連したデジタル証明書でデジタル署名するように構成されたソフトウェア開発環境を含む第2のコンピューティング装置と、
前記発生された開発者アクセスプロフィールを受け取り、前記コードにより要求されるアクセスが前記エンタイトルメントを表すデータにより許可される場合だけ前記コードを実行するように構成された第3のコンピューティング装置と、
を備えたシステム。 - 移動電話装置に関連した装置識別子と、
開発者に関連し且つ前記装置に特有のデジタル証明書によりデジタル署名されたソフトウェアコードと、
エンタイトルメントを含む少なくとも1つの開発者アクセスプロフィールと、
移動電話装置のシステムリソースへのアクセスが前記エンタイトルメントにより許可されたと決定することによりソフトウェアコードを実行する要求を処理するように構成された少なくとも1つのポリシーサービスと、
を備えた移動電話装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US3373608P | 2008-03-04 | 2008-03-04 | |
US61/033,736 | 2008-03-04 | ||
PCT/US2009/035736 WO2009111401A1 (en) | 2008-03-04 | 2009-03-02 | Managing code entitlements for software developers in secure operating environments |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011515743A true JP2011515743A (ja) | 2011-05-19 |
Family
ID=40718993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010549788A Pending JP2011515743A (ja) | 2008-03-04 | 2009-03-02 | セキュアな動作環境におけるソフトウェア開発者に対するコードエンタイトルメントの管理 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20090249071A1 (ja) |
EP (1) | EP2252957A1 (ja) |
JP (1) | JP2011515743A (ja) |
KR (1) | KR20100126476A (ja) |
CN (1) | CN102016864A (ja) |
AU (1) | AU2009222082A1 (ja) |
WO (1) | WO2009111401A1 (ja) |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8776038B2 (en) | 2008-08-07 | 2014-07-08 | Code Systems Corporation | Method and system for configuration of virtualized software applications |
US8434093B2 (en) * | 2008-08-07 | 2013-04-30 | Code Systems Corporation | Method and system for virtualization of software applications |
CN101661472B (zh) * | 2008-08-27 | 2011-12-28 | 国际商业机器公司 | 协作搜索方法及系统 |
DK2476223T3 (da) | 2009-09-08 | 2021-05-31 | Abbott Diabetes Care Inc | Fremgangsmåder og fremstillede produkter til hosting af en sikkerhedskritisk applikation på en ukontrolleret databehandlingsindretning |
JP2011096050A (ja) * | 2009-10-30 | 2011-05-12 | Kyocera Mita Corp | インストーラ作成方法、インストーラ作成プログラム、インストーラ作成装置およびインストーラシステム |
US8954958B2 (en) | 2010-01-11 | 2015-02-10 | Code Systems Corporation | Method of configuring a virtual application |
US8533811B2 (en) * | 2010-01-20 | 2013-09-10 | Microsoft Corporation | Developer phone registration |
US8959183B2 (en) | 2010-01-27 | 2015-02-17 | Code Systems Corporation | System for downloading and executing a virtual application |
US9104517B2 (en) * | 2010-01-27 | 2015-08-11 | Code Systems Corporation | System for downloading and executing a virtual application |
US9229748B2 (en) | 2010-01-29 | 2016-01-05 | Code Systems Corporation | Method and system for improving startup performance and interoperability of a virtual application |
US8631390B2 (en) | 2010-04-02 | 2014-01-14 | Apple Inc. | Archiving a build product |
US8763009B2 (en) | 2010-04-17 | 2014-06-24 | Code Systems Corporation | Method of hosting a first application in a second application |
US8473961B2 (en) | 2011-01-14 | 2013-06-25 | Apple Inc. | Methods to generate security profile for restricting resources used by a program based on entitlements of the program |
US9218359B2 (en) | 2010-07-02 | 2015-12-22 | Code Systems Corporation | Method and system for profiling virtual application resource utilization patterns by executing virtualized application |
US9021015B2 (en) | 2010-10-18 | 2015-04-28 | Code Systems Corporation | Method and system for publishing virtual applications to a web server |
US8621591B2 (en) * | 2010-10-19 | 2013-12-31 | Symantec Corporation | Software signing certificate reputation model |
US9209976B2 (en) * | 2010-10-29 | 2015-12-08 | Code Systems Corporation | Method and system for restricting execution of virtual applications to a managed process environment |
US8671385B2 (en) | 2011-01-07 | 2014-03-11 | Mastercard International Incorporated | Methods and systems for throttling calls to a service application through an open API |
US8707276B2 (en) * | 2011-01-07 | 2014-04-22 | Mastercard International Incorporated | Method and system for managing programmed applications in an open API environment |
US8677308B2 (en) | 2011-01-07 | 2014-03-18 | Mastercard International Incorporated | Method and system for generating an API request message |
US9032204B2 (en) | 2011-01-07 | 2015-05-12 | Mastercard International Incorporated | Methods and systems for providing a signed digital certificate in real time |
US9083534B2 (en) | 2011-01-07 | 2015-07-14 | Mastercard International Incorporated | Method and system for propagating a client identity |
KR101250661B1 (ko) * | 2011-02-08 | 2013-04-03 | 주식회사 팬택 | 모바일 플랫폼 보안 장치 및 방법 |
EP2689375B1 (en) * | 2011-03-21 | 2021-09-15 | Irdeto B.V. | System and method for securely binding and node-locking program execution to a trusted signature authority |
KR101295508B1 (ko) * | 2011-09-09 | 2013-08-23 | 주식회사 팬택 | 스마트 단말기에서 어플리케이션을 실행하기 위한 제어 장치 및 그 방법 |
US8572368B1 (en) * | 2011-09-23 | 2013-10-29 | Symantec Corporation | Systems and methods for generating code-specific code-signing certificates containing extended metadata |
KR101294866B1 (ko) * | 2011-09-30 | 2013-08-23 | 주식회사 포스코 | 개발환경 관리 시스템 및 이의 개발환경 관리 방법 |
US20130132933A1 (en) * | 2011-11-17 | 2013-05-23 | Microsoft Corporation | Automated compliance testing during application development |
KR101432533B1 (ko) * | 2011-12-20 | 2014-08-25 | 한상진 | 모바일 광고 시스템 및 그의 광고 방법 |
WO2014030879A1 (ko) * | 2012-08-20 | 2014-02-27 | 에스케이플래닛 주식회사 | 광고 서비스 시스템 및 그 방법, 그리고 이에 적용되는 장치 및 그 동작 방법 |
EP2890045A4 (en) * | 2012-08-21 | 2016-03-30 | Sony Corp | METHOD FOR TRANSMITTING SIGNATURE VALIDATION INFORMATION, INFORMATION PROCESSING DEVICE, INFORMATION PROCESSING METHOD AND RADIO TRANSMISSION DEVICE |
US8984655B2 (en) * | 2012-10-15 | 2015-03-17 | Microsoft Technology Licensing, Llc | License information access based on developer profiles |
GB2508641A (en) | 2012-12-07 | 2014-06-11 | Ibm | Testing program code created in a development system |
US9985992B1 (en) * | 2014-09-19 | 2018-05-29 | Jpmorgan Chase Bank, N.A. | Entitlement system and method |
CN105159705B (zh) * | 2015-08-07 | 2018-07-17 | 北京思特奇信息技术股份有限公司 | 一种基于xcodebuild打包不定个数工程文件的方法及系统 |
US10574459B2 (en) * | 2015-09-30 | 2020-02-25 | Microsoft Technology Licensing, Llc | Code signing service |
US11449640B1 (en) * | 2016-04-29 | 2022-09-20 | Wells Fargo Bank, N.A. | Real-time feature level software security |
US10262156B1 (en) * | 2016-04-29 | 2019-04-16 | Wells Fargo Bank, N.A. | Real-time feature level software security |
WO2019017883A1 (en) | 2017-07-17 | 2019-01-24 | Hewlett-Packard Development Company, L.P | AUTHENTICATION OF CERTIFICATES OF EMPOWERMENT |
WO2019022738A1 (en) * | 2017-07-26 | 2019-01-31 | Hewlett-Packard Development Company, L.P | ENABLING MANAGEMENT |
US10592437B2 (en) * | 2017-07-31 | 2020-03-17 | Hewlett Packard Enterprise Development Lp | Memory matching key capability |
US11195202B2 (en) | 2018-10-17 | 2021-12-07 | Microsoft Technology Licensing, Llc | Dynamic monitoring and control of web page experiences based upon user activity of associated applications |
KR102183828B1 (ko) * | 2018-11-05 | 2020-11-27 | 옴니비스타 주식회사 | 광고 앱을 이용한 광고 시스템 및 이를 이용한 광고 방법 |
US11194559B2 (en) * | 2019-08-06 | 2021-12-07 | Saudi Arabian Oil Company | Method and apparatus for platform as a service (PaaS) automation control |
CN115730339B (zh) * | 2023-01-26 | 2023-06-13 | 深圳海云安网络安全技术有限公司 | 一种基于ide源码保护的插件代码防泄密方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1083310A (ja) * | 1996-06-11 | 1998-03-31 | Internatl Business Mach Corp <Ibm> | プログラム・コードの配布方法及びシステム |
JPH10301773A (ja) * | 1997-04-30 | 1998-11-13 | Sony Corp | 情報処理装置および情報処理方法、並びに記録媒体 |
JP2000347846A (ja) * | 1999-03-03 | 2000-12-15 | Nokia Mobile Phones Ltd | サーバから端末にソフトウェアをダウンロードするための方法および電話システム |
JP2001306313A (ja) * | 2000-04-17 | 2001-11-02 | Matsushita Electric Ind Co Ltd | アプリケーションサーバシステム |
JP2002140126A (ja) * | 2000-10-31 | 2002-05-17 | Toshiba Corp | プログラム配布システム、暗号化プログラム配布装置、プログラム不具合情報収集システム、及びプログラム配布方法 |
JP2002152458A (ja) * | 2000-08-31 | 2002-05-24 | Ricoh Co Ltd | 画像形成システム、ソフトウエア取得方法、およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 |
EP1217850A1 (en) * | 2000-12-20 | 2002-06-26 | Motorola, Inc. | Method for permitting debugging and testing of software on an mobile communication device in a secure environment |
JP2006221629A (ja) * | 2005-02-07 | 2006-08-24 | Sony Computer Entertainment Inc | プロセッサのリソース管理によるコンテンツ制御方法および装置 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6154844A (en) * | 1996-11-08 | 2000-11-28 | Finjan Software, Ltd. | System and method for attaching a downloadable security profile to a downloadable |
US6189097B1 (en) * | 1997-03-24 | 2001-02-13 | Preview Systems, Inc. | Digital Certificate |
EP1717684A3 (en) | 1998-01-26 | 2008-01-23 | Fingerworks, Inc. | Method and apparatus for integrating manual input |
US6779117B1 (en) * | 1999-07-23 | 2004-08-17 | Cybersoft, Inc. | Authentication program for a computer operating system |
US6766353B1 (en) * | 2000-07-11 | 2004-07-20 | Motorola, Inc. | Method for authenticating a JAVA archive (JAR) for portable devices |
AU2001293563A1 (en) * | 2000-09-21 | 2002-04-02 | Research In Motion Limited | Code signing system and method |
US6677932B1 (en) | 2001-01-28 | 2004-01-13 | Finger Works, Inc. | System and method for recognizing touch typing under limited tactile feedback conditions |
US6570557B1 (en) | 2001-02-10 | 2003-05-27 | Finger Works, Inc. | Multi-touch system and method for emulating modifier keys via fingertip chords |
JP2003202929A (ja) * | 2002-01-08 | 2003-07-18 | Ntt Docomo Inc | 配信方法および配信システム |
GB2392590B (en) * | 2002-08-30 | 2005-02-23 | Toshiba Res Europ Ltd | Methods and apparatus for secure data communication links |
US20040064457A1 (en) * | 2002-09-27 | 2004-04-01 | Zimmer Vincent J. | Mechanism for providing both a secure and attested boot |
US7480935B2 (en) * | 2002-10-10 | 2009-01-20 | International Business Machines Corporation | Method for protecting subscriber identification between service and content providers |
US8732841B2 (en) * | 2004-04-14 | 2014-05-20 | Digital River, Inc. | Software license server with geographic location validation |
US8694802B2 (en) * | 2004-04-30 | 2014-04-08 | Apple Inc. | System and method for creating tamper-resistant code |
US7747980B2 (en) * | 2004-06-08 | 2010-06-29 | Covia Labs, Inc. | Method and system for specifying device interoperability source specifying renditions data and code for interoperable device team |
WO2006101549A2 (en) * | 2004-12-03 | 2006-09-28 | Whitecell Software, Inc. | Secure system for allowing the execution of authorized computer program code |
JP4606339B2 (ja) * | 2005-02-07 | 2011-01-05 | 株式会社ソニー・コンピュータエンタテインメント | セキュアなプロセッサの処理の移行を実施する方法および装置 |
US8103868B2 (en) * | 2005-04-20 | 2012-01-24 | M-Qube, Inc. | Sender identification system and method |
US7797545B2 (en) * | 2005-09-29 | 2010-09-14 | Research In Motion Limited | System and method for registering entities for code signing services |
US20070240194A1 (en) * | 2006-03-28 | 2007-10-11 | Hargrave Bentley J | Scoped permissions for software application deployment |
-
2009
- 2009-03-02 CN CN2009801159898A patent/CN102016864A/zh active Pending
- 2009-03-02 KR KR1020107022172A patent/KR20100126476A/ko not_active Application Discontinuation
- 2009-03-02 JP JP2010549788A patent/JP2011515743A/ja active Pending
- 2009-03-02 AU AU2009222082A patent/AU2009222082A1/en not_active Abandoned
- 2009-03-02 WO PCT/US2009/035736 patent/WO2009111401A1/en active Application Filing
- 2009-03-02 EP EP09716853A patent/EP2252957A1/en not_active Withdrawn
- 2009-03-04 US US12/397,757 patent/US20090249071A1/en not_active Abandoned
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1083310A (ja) * | 1996-06-11 | 1998-03-31 | Internatl Business Mach Corp <Ibm> | プログラム・コードの配布方法及びシステム |
JPH10301773A (ja) * | 1997-04-30 | 1998-11-13 | Sony Corp | 情報処理装置および情報処理方法、並びに記録媒体 |
JP2000347846A (ja) * | 1999-03-03 | 2000-12-15 | Nokia Mobile Phones Ltd | サーバから端末にソフトウェアをダウンロードするための方法および電話システム |
JP2001306313A (ja) * | 2000-04-17 | 2001-11-02 | Matsushita Electric Ind Co Ltd | アプリケーションサーバシステム |
JP2002152458A (ja) * | 2000-08-31 | 2002-05-24 | Ricoh Co Ltd | 画像形成システム、ソフトウエア取得方法、およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP2002140126A (ja) * | 2000-10-31 | 2002-05-17 | Toshiba Corp | プログラム配布システム、暗号化プログラム配布装置、プログラム不具合情報収集システム、及びプログラム配布方法 |
EP1217850A1 (en) * | 2000-12-20 | 2002-06-26 | Motorola, Inc. | Method for permitting debugging and testing of software on an mobile communication device in a secure environment |
JP2006221629A (ja) * | 2005-02-07 | 2006-08-24 | Sony Computer Entertainment Inc | プロセッサのリソース管理によるコンテンツ制御方法および装置 |
Also Published As
Publication number | Publication date |
---|---|
KR20100126476A (ko) | 2010-12-01 |
AU2009222082A1 (en) | 2009-09-11 |
US20090249071A1 (en) | 2009-10-01 |
EP2252957A1 (en) | 2010-11-24 |
CN102016864A (zh) | 2011-04-13 |
WO2009111401A1 (en) | 2009-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2011515743A (ja) | セキュアな動作環境におけるソフトウェア開発者に対するコードエンタイトルメントの管理 | |
JP5069359B2 (ja) | 少なくとも1つのインストールされたプロフィールに基づいてソフトウェアコードの実行を許可するシステム及び方法 | |
US20090228704A1 (en) | Providing developer access in secure operating environments | |
US10521214B2 (en) | Methods and systems for upgrade and synchronization of securely installed applications on a computing device | |
US20090254753A1 (en) | System and method of authorizing execution of software code based on accessible entitlements | |
EP2250601B1 (en) | System and method of authorizing execution of software code in a device based on entitlements granted to a carrier | |
US20090247124A1 (en) | Provisioning mobile devices based on a carrier profile | |
US20090249064A1 (en) | System and method of authorizing execution of software code based on a trusted cache | |
US8484728B2 (en) | Managing securely installed applications | |
US8850135B2 (en) | Secure software installation | |
US20110010759A1 (en) | Providing a customized interface for an application store | |
US10211991B1 (en) | Method for downloading preauthorized applications to desktop computer using secure connection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120216 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120516 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120913 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130612 |