特許第5797666号(P5797666)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アビニシオ テクノロジー エルエルシーの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5797666
(24)【登録日】2015年8月28日
(45)【発行日】2015年10月21日
(54)【発明の名称】計算リソースの安全な実行
(51)【国際特許分類】
   G06F 21/62 20130101AFI20151001BHJP
   G06F 21/12 20130101ALI20151001BHJP
【FI】
   G06F21/62
   G06F21/12
【請求項の数】34
【全頁数】25
(21)【出願番号】特願2012-546145(P2012-546145)
(86)(22)【出願日】2010年12月21日
(65)【公表番号】特表2013-516004(P2013-516004A)
(43)【公表日】2013年5月9日
(86)【国際出願番号】US2010061517
(87)【国際公開番号】WO2011079112
(87)【国際公開日】20110630
【審査請求日】2013年12月16日
(31)【優先権主張番号】12/646,059
(32)【優先日】2009年12月23日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】509123208
【氏名又は名称】アビニシオ テクノロジー エルエルシー
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(72)【発明者】
【氏名】ラーソン,ブロンド
(72)【発明者】
【氏名】シャピロ,リチャード エー.
【審査官】 脇岡 剛
(56)【参考文献】
【文献】 特開2006−092296(JP,A)
【文献】 特開2009−237930(JP,A)
【文献】 特開2006−018528(JP,A)
【文献】 特表2002−517853(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
G06F 21/12
(57)【特許請求の範囲】
【請求項1】
計算機能へのアクセスを制御する方法であって、
実行システムによる実行用の第1の計算リソースを準備することであって、前記実行システムは、1次記述子が設けられ、各前記1次記述子はそれぞれの識別値に関連付けられ、かつ各前記1次記述子はそれぞれの機能インジケータに関連付けられることと
第1の識別値を有する2次記述子にアクセスすることであって、前記第1の識別値は前記1次記述子の第1の1次記述子に関連付けられ、前記2次記述子は前記第1の計算リソースに暗号化により割り当てられていることと、
前記第1の計算リソースから命令を受け付けて第2の計算リソースを実行することと、
前記第1の識別値を含む前記2次記述子の少なくとも1つのインスタンスを前記第2の計算リソースに暗号化により割り当てることであって、前記第2の計算リソースを前記2次記述子の前記インスタンスと組み合わせることと、前記組み合わせに暗号化により署名することを含むことと、
前記2次記述子の前記インスタンスに関連付けられた前記機能インジケータに基づいて、前記第2の計算リソースに対して前記実行システムの計算機能へのアクセスを許可することと、
前記第2の計算リソースの実行中に、前記第2の記述子の前記インスタンスが前記第2の計算リソースに暗号化により割り当てられたことを検証して、前記第2の計算リソースが前記第1の計算リソースに関連付けられた前記機能インジケータに従って使用可能となった前記計算機能のみへのアクセスを許可されたことを判定することと、
を備える、方法。
【請求項2】
前記計算リソースは暗号化されている、請求項1に記載の方法。
【請求項3】
前記2次記述子を前記第1の計算リソースに暗号化により割り当てることは、前記第1の計算リソースを前記2次記述子と組み合わせることと、前記組み合わせに暗号化により署名することとを含む、請求項1に記載の方法。
【請求項4】
前記組み合わせへの暗号化による署名は、前記第1の1次記述子に割り当てられた秘密暗号化鍵を用いて前記組み合わせから導出された値を暗号化することを含む、請求項3に記載の方法。
【請求項5】
前記2次記述子の前記インスタンスの検証は、前記第1の1次記述子に割り当てられた公開暗号化鍵を用いて、前記第2の計算リソースと前記2次記述子の前記インスタンスとの組み合わせから導出された値を復号化することを含む、請求項に記載の方法。
【請求項6】
前記第1の計算リソースの実行前に前記2次記述子の第1のインスタンスを生成することと、
前記第1の計算リソースの実行前に前記2次記述子の第2のインスタンスを生成することと、
前記第1の計算リソースの実行が許可されているかを判定することであって、前記判定は前記2次記述子の前記2つのインスタンスを比較することに少なくとも部分的に基づくことと、
をさらに備える、請求項1に記載の方法。
【請求項7】
前記2次記述子の前記第1のインスタンスを暗号化することをさらに備える、請求項記載の方法。
【請求項8】
前記2次記述子の前記第2のインスタンスを暗号化することをさらに備える、請求項に記載の方法。
【請求項9】
前記2次記述子の前記第1のインスタンスは、前記2次記述子の前記第2のインスタンスと共通する第1データ値と、前記2次記述子の前記第2のインスタンスと共通ではない第2データ値とを有する、請求項に記載の方法。
【請求項10】
前記第1の計算リソースと前記2次記述子の前記第1のインスタンスに対して、前記計算リソースを実行する命令を含む第1のコンテナを割り当てることと、
前記第1のコンテナと前記2次記述子の前記第2のインスタンスに対して、前記第1の計算リソースを実行する前記命令をデータとして表す第2のコンテナを割り当てることと
をさらに備える、請求項に記載の方法。
【請求項11】
前記第2のコンテナに暗号化により署名することをさらに備える、請求項10に記載の方法。
【請求項12】
前記第1の計算リソースから命令を受け付けて前記第2の計算リソースにアクセスすることと、
システム上で前記第2の計算リソースを実行することと、
前記2次記述子を前記第2の計算リソースに暗号化により割り当てることと、
前記機能インジケータに基づいて、計算機能へのアクセスを前記実行された第2の計算リソースに提供することと、
をさらに備える、請求項1に記載の方法。
【請求項13】
前記第2の計算リソースは、前記第1の計算リソースが実行を終了した後に、実行を継続する、請求項12に記載の方法。
【請求項14】
前記第1の計算リソースは第1のシステム上で実行され、前記第2の計算リソースは第2のシステム上で実行される、請求項12に記載の方法。
【請求項15】
前記2次記述子を前記第2の計算リソースに暗号化により割り当てることは、前記2次記述子のインスタンスを含む記憶場所にアクセスすることを含む、請求項12に記載の方法。
【請求項16】
第2の識別値を有する第2の2次記述子に暗号化により割り当てられた前記第2の計算リソースにアクセスすることと、
前記第2の計算リソースを実行することと、
第2の識別値を有する第2の1次記述子に暗号化により割り当てられた第2の機能インジケータにアクセスすることと、
前記実行された第2の計算リソースに、前記第2の機能インジケータに基づいて計算機能へのアクセスを提供することと
をさらに備える、請求項1に記載の方法。
【請求項17】
前記第2の計算リソースの前記実行が前記第1の計算リソースによって開始されない場合、前記第2の計算リソースは、他の場合においてアクセスが許可されているよりも少ない数の計算機能へのアクセスが許可される、請求項1に記載の方法。
【請求項18】
計算機能へのアクセスを制御するシステムであって、
それぞれの識別値に関連付けられた各1次記述子の提供を含む実行用の第1の計算リソースを準備するよう構成された開発コンピュータ・システムと、
前記計算リソースを実行するよう構成された実行コンピュータ・システムと、を備え、前記実行コンピュータ・システムは、
1次記述子と機能インジケータとを関連付けることと、
第1の識別値を有する2次記述子にアクセスすることであって、前記第1の識別値は前記1次記述子の第1の1次記述子に関連付けられ、前記2次記述子は前記第1の計算リソースに暗号化により割り当てられていることと、
前記第1の計算リソースから命令を受け付けて第2の計算リソースを実行することと、
前記第1の識別値を含む前記2次記述子の少なくとも1つのインスタンスを前記第2の計算リソースに暗号化により割り当てることであって、前記第2の計算リソースを前記2次記述子の前記インスタンスと組み合わせることと、前記組み合わせに暗号化により署名することを含むことと、
前記2次記述子の前記インスタンスに関連付けられた前記機能インジケータに基づいて前記第2の計算リソースに対して前記実行システムの計算機能へのアクセスを許可することと、
前記第2の計算リソースの実行中に、前記第2の記述子の前記インスタンスが前記第2の計算リソースに暗号化により割り当てられたことを検証して、前記第2の計算リソースが前記第1の計算リソースに関連付けられた前記機能インジケータに従って使用可能となった前記計算機能のみへのアクセスを許可されたことを判定することと、
を備える、システム。
【請求項19】
前記計算リソースは暗号化されている、請求項18に記載のシステム。
【請求項20】
前記2次記述子を前記第1の計算リソースへ暗号化により割り当てることは、前記第1の計算リソースを前記2次記述子と組み合わせることと、前記組み合わせに暗号化により署名することとを含む、請求項18に記載のシステム。
【請求項21】
前記組み合わせへの暗号化による署名は、前記第1の1次記述子に割り当てられた秘密暗号化鍵を用いて前記組み合わせから導出された値を暗号化することを含む、請求項18に記載のシステム。
【請求項22】
前記2次記述子の前記インスタンスを検証することは、前記第1の1次記述子に割り当てられた公開暗号化鍵を用いて、前記第2の計算リソースと前記2次記述子の前記インスタンスとの組み合わせから導出された値を復号化することを含む、請求項18に記載のシステム。
【請求項23】
前記第1の計算リソースの前記実行は、
前記第1の計算リソースの実行前に前記2次記述子の第1のインスタンスを生成することと、
前記第1の計算リソースの実行前に前記2次記述子の第2のインスタンスを生成することと、
前記第1の計算リソースの実行が許可されているかを判定することであって、前記判定は前記記述子の前記2つのインスタンスの比較に少なくとも部分的に基づくことと、
をさらに備える、請求項18に記載のシステム。
【請求項24】
前記第2の計算リソースは、前記第1の計算リソースが実行を終了した後に、実行を継続する、請求項18に記載のシステム。
【請求項25】
前記第2の計算リソースの前記実行が前記第1の計算リソースによって開始されない場合、前記第2の計算リソースは他の場合においてアクセスが許可されているよりも少ない数の計算機能へのアクセスが許可される、請求項18に記載のシステム。
【請求項26】
計算機能へのアクセスを制御するシステムであって、前記システムは、
それぞれの識別値に関連付けられた各1次記述子を提供することを含む実行用の第1の計算リソースを準備する手段と、
前記計算リソースを実行するための手段であって、
前記各1次記述子とそれぞれの機能インジケータとを関連付けることと、
第1の識別値を有する2次記述子にアクセスすることであって、前記第1の識別値は前記1次記述子の第1の1次記述子に関連付けられ、前記2次記述子は前記第1の計算リソースに暗号化により割り当てられていることと、
前記第1の計算リソースから命令を受け付けて第2の計算リソースを実行することと、
前記第1の識別値を含む前記2次記述子の少なくとも1つのインスタンスを前記第2の計算リソースに暗号化により割り当てることであって、前記第2の計算リソースを前記2次記述子の前記インスタンスと組み合わせることと、前記組み合わせに暗号化により署名することを含むことと、
前記2次記述子の前記インスタンスに関連付けられた前記機能インジケータに基づいて前記第2の計算リソースに対して実行システムの計算機能へのアクセスを許可することと、
前記第2の計算リソースの実行中に、前記第2の記述子の前記インスタンスが前記第2の計算リソースに暗号化により割り当てられたことを検証して、前記第2の計算リソースが前記第1の計算リソースに関連付けられた前記機能インジケータに従って使用可能となった前記計算機能のみへのアクセスを許可されたことを判定することと、を備える手段と、
を備える、システム。
【請求項27】
計算機能へのアクセスを制御するためのコンピュータ・プログラムを記憶する非一時的なコンピュータ可読媒体であって、前記コンピュータ・プログラムは、
実行システムによる実行用の第1の計算リソースを準備することであって、前記実行システムは、1次記述子が設けられ、各前記1次記述子はそれぞれの識別値に関連付けられ、かつ各前記1次記述子はそれぞれの機能インジケータに関連付けられることと、
第1の識別値を有する2次記述子にアクセスすることであって、前記第1の識別値は前記1次記述子の第1の1次記述子に関連付けられ、前記2次記述子は前記第1の計算リソースに暗号化により割り当てられていることと、
前記第1の計算リソースから命令を受け付けて第2の計算リソースを実行することと、
前記第1の識別値を含む前記2次記述子の少なくとも1つのインスタンスを前記第2の計算リソースに暗号化により割り当てることであって、前記第2の計算リソースを前記2次記述子の前記インスタンスと組み合わせることと、前記組み合わせに暗号化により署名することを含むことと、
前記2次記述子の前記インスタンスに関連付けられた前記機能インジケータに基づいて前記第2の計算リソースに対して前記実行システムの計算機能へのアクセスを許可することと、
前記第2の計算リソースの実行中に、前記第2の記述子の前記インスタンスが前記第2の計算リソースに暗号化により割り当てられたことを検証して、前記第2の計算リソースが前記第1の計算リソースに関連付けられた前記機能インジケータに従って使用可能となった前記計算機能のみへのアクセスを許可されたことを判定することと、
をコンピュータに実行させるための命令を含む、コンピュータ・プログラムを記憶するコンピュータ可読媒体。
【請求項28】
前記計算リソースは暗号化されている、請求項27に記載のコンピュータ可読媒体。
【請求項29】
前記2次記述子を前記第1の計算リソースへ暗号化により割り当てることは、前記第1の計算リソースを前記2次記述子と組み合わせることと、前記組み合わせに暗号化により署名することとを含む、請求項27に記載のコンピュータ可読媒体。
【請求項30】
前記組み合わせへの暗号化による署名は、前記第1の1次記述子に割り当てられた秘密暗号化鍵を用いて前記組み合わせから導出された値を暗号化することを含む、請求項27に記載のコンピュータ可読媒体。
【請求項31】
前記2次記述子の前記インスタンスを検証することは、前記第1の1次記述子に割り当てられた公開暗号化鍵を用いて、前記第2の計算リソースと前記2次記述子の前記インスタンスとの組み合わせから導出された値を復号化することを含む、請求項27に記載のコンピュータ可読媒体。
【請求項32】
前記第1の計算リソースの実行前に前記2次記述子の第1のインスタンスを生成することと
前記第1の計算リソースの実行前に前記2次記述子の第2のインスタンスを生成することと
前記第1の計算リソースは実行が許可されているかを判定することであって、前記判定は前記2次記述子の前記2つのインスタンスの比較に少なくとも部分的に基づくことと
をコンピュータに実行させるための命令をさらに含む、請求項27に記載のコンピュータ可読媒体。
【請求項33】
前記第2の計算リソースは、前記第1の計算リソースが実行を終了した後に、実行を継続する、請求項27に記載のコンピュータ可読媒体。
【請求項34】
前記第2の計算リソースの前記実行が前記第1の計算リソースによって開始されない場合、前記第2の計算リソースは他の場合においてアクセスが許可されているよりも少ない数の計算機能へのアクセスが許可される、請求項27に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、計算リソースの安全な実行に関する。
【背景技術】
【0002】
コンピュータソフトウェア等の計算リソースのベンダ(vendor)は、これらのリソースを第三者に供給する際にリスクを負う。ベンダは、計算リソースの特定の要素へのアクセスを制限しようとする場合がある。場合によっては、あるグループには特定の要素へのアクセスを認めるが、別のグループについてはアクセスを拒否することがある。一方では、リソースの特定の側面は、すべてのグループに分かりにくくすべき場合がある。悪意のある行為者(actor)がリソース上で加えられた制限を免れようと試みる場合もある。
【発明の概要】
【課題を解決するための手段】
【0003】
一態様では、概して、計算機能(computational feature:計算フィーチャ)へのアクセスを制御する方法であって、識別値を有する1次記述子が設けられ、かつ、機能インジケータ(feature indicator:フィーチャインジケータ)を1次記述子と関連付けている実行システムによる実行用の計算リソースを準備することと、前記識別値を有し、かつ、暗号化して前記計算リソースに割り当てられた2次記述子にアクセスすることと、前記機能インジケータを基に前記計算リソースに対して前記実行システムの計算機能へのアクセスを許可することとを備える。
【0004】
諸態様は以下の特徴のうちの1つ又は複数を含むことができる。
【0005】
計算リソースが暗号化されている。
【0006】
暗号化して2次記述子の計算リソースへ割り当てることは、リソースを2次記述子と組み合わせて、暗号化して組み合わせに署名することを含む。
【0007】
暗号化して組み合わせへ署名することは、1次記述子に割り当てられた秘密暗号化鍵を用いて組み合わせから導出された値を暗号化することを含む。
【0008】
この方法は、計算リソースの実行中に、計算リソースに暗号化により割り当てられた2次記述子を検証することをさらに含む。
【0009】
2次記述子を検証することは、1次記述子に割り当てられた公開暗号化鍵を用いて、計算リソースと2次記述子との組み合わせから導出された値を復号化することを備える。
【0010】
この方法は、計算リソースの実行前に2次記述子の第1のインスタンスを生成することと、計算リソースの実行前に2次記述子の第2のインスタンスを生成することと、記述子の2つのインスタンスを比較して、計算リソースの実行が許可されているかどうかを判断することとをさらに備える。
【0011】
この方法は、2次記述子の第1のインスタンスを暗号化することをさらに備える。
【0012】
この方法は、2次記述子の第2のインスタンスを暗号化することをさらに備える。
【0013】
2次記述子の第1のインスタンスは、2次記述子の第2のインスタンスと共通して第1データ値と、2次記述子の第2のインスタンスと共通せず第2データ値とを有する。
【0014】
この方法は、計算リソースと2次記述子の第1のインスタンスに、計算リソースを実行する命令を含むインナーコンテナを割り当てることと、インナーコンテナと2次記述子の第2のインスタンスに、計算リソースを実行する命令をデータとして表すアウターコンテナを割り当てることとをさらに備える。
【0015】
この方法は、アウターコンテナに暗号化により署名することをさらに備える。
【0016】
この方法は、計算リソースから第2の計算リソースへアクセスする命令を受け付けることと、システム上で第2の計算リソースを実行することと、2次記述子を第2の計算リソースに暗号化により割り当てることと、機能インジケータに基づいて、計算機能へのアクセスを第2の実行された計算リソースに提供することとをさらに備える。
【0017】
第2の計算リソースは、第1の計算リソースが実行を終了した後に、実行を継続する。
【0018】
計算リソースは第1のシステム上で実行され、第2の計算リソースは第2のシステム上で実行される。
【0019】
2次記述子を第2の計算リソースに暗号化により割り当てることは、2次記述子のインスタンスを含む記憶場所にアクセスすることを含む。
【0020】
この方法は、第2の識別値を有する第2の2次記述子に暗号化により割り当てられた第2の計算リソースにアクセスすることと、第2の計算リソースを実行することと、第2の識別値を有する第2の1次記述子に暗号化により割り当てられた第2の機能インジケータにアクセスすることと、実行された第2の計算リソースに、第2の機能インジケータに基づいて計算機能へのアクセスを提供することとをさらに備える。
【0021】
他の態様では、概して、計算機能へのアクセスを制御するシステムは、識別値を有する1次記述子の提供を含む実行用の計算リソースを準備するよう構成された開発コンピュータ・システムと、計算リソースを実行するよう構成された実行コンピュータ・システムとを備える。前記計算リソースの実行は、機能インジケータを1次記述子と関連付けることと、識別値を有し、かつ、計算リソースに暗号化により割り当てられた2次記述子にアクセスすることと、機能インジケータを基に計算リソースに対して実行システムの計算機能へのアクセスを許可することとを備える。
【0022】
他の態様では、概して、計算機能へのアクセスを制御するシステムは、識別値を有する1次記述子の提供を含む実行用の計算リソースを準備する手段と、計算リソースを実行する手段とを備える。前記計算リソースの実行は、機能インジケータを1次記述子と関連付けることと、識別値を有し、かつ、計算リソースに暗号化により割り当てられた2次記述子にアクセスすることと、機能インジケータを基に計算リソースに対して計算機能へのアクセスを許可することとを備える。
【0023】
他の態様では、概して、コンピュータ可読媒体は、計算機能へのアクセスを制御するためのコンピュータ・プログラムを記憶する。コンピュータ・プログラムは、コンピュータに、識別値を有する1次記述子が提供され、かつ、機能インジケータを1次記述子と関連付けている実行システムによる実行用の計算リソースを準備させ、識別値を有し、かつ、計算リソースに暗号化により割り当てられた2次記述子にアクセスさせ、機能インジケータを基に計算リソースに対して実行システムの計算機能へのアクセスを許可させる命令を備える。
【0024】
諸態様は以下の利点のうちの1つ又は複数を有することができる。
【0025】
計算リソースに記述子を暗号化により割り当てることにより、許可なく割り当てを変更することが出来ない。記述子に割り当てられた機能インジケータを基に計算機能へのアクセスを提供することにより、許可なく計算機能にアクセスすることが出来ない。
【0026】
本発明の他の特徴及び利点は、以下の説明及び特許請求の範囲から明らかとなろう。
【図面の簡単な説明】
【0027】
図1A】実行システム及び関連するコンポーネントの概略図である。
図1B】実行システム及び関連するコンポーネントの概略図である。
図2A】データフロー・グラフのブロック図である。
図2B】実行システムのブロック図である。
図3A】鍵コンテナのブロック図である。
図3B】コンポーネントコンテナのブロック図である。
図4A】ブランドトークンを生成するための実行システムの一部を示す図である。
図4B】実行スクリプトを生成するための実行システムの一部を示す図である。
図4C】スクリプトコンテナを生成するための実行システムの一部を示す図である。
図5A】スクリプトコンテナにアクセスするための実行システムの一部を示す図である。
図5B】実行スクリプトにアクセスするための実行システムの一部を示す図である。
図5C】機能をイネーブル及びディスエーブルするための実行システムの一部を示す図である。
図6A】別のブランドトークンを生成するための実行システムの一部を示す図である。
図6B】別のブランドトークンにアクセスするための実行システムの一部を示す図である。
図7】ブランドを割り当てる手続きを示すフローチャートである。
図8】機能インジケータを割り当てる手続きを示すフローチャートである。
図9】実行可能コンポーネントを実行するための手続きを示すフローチャートである。
図10】機能へのアクセスを提供する手続きを示すフローチャートである。
【発明を実施するための形態】
【0028】
1 概要
計算リソースを計算システム上で実行する際、そのリソースは、特定の方法で動作し、計算システム上の特定の機能にアクセスする。このリソースを実行している悪意のある行為者は、このリソースの供給元や権限者(authority)によって実行に課せられた制限を克服するべく脆弱性を利用しようと試みる可能性がある。例えば、悪意のある行為者は、リソースそのものを変更して、このリソースが元来使用するよう設計されていないシステムの機能を使用するようにリソースを動作させようと試みるかもしれない。従って、計算システムは、関連付けられた計算リソースの完全性を保護し、行為者によって許可なくリソースを変更又は改ざんされることのないようにする場合がある。場合によっては、リソースの権限者は、たとえその行為者がリソースの実行については許可されていたとしても、リソースの基本となる構造や設計にはいかなる行為者もアクセスできないようにしようとする場合がある。
【0029】
さらに、計算リソースの権限者は、そのリソースが実行される計算システムの権限者とは異なる実体であり得る。例えば、計算システム用のシステムソフトウエアを提供するシステム権限者は、そのシステムソフトウエアと共に使用するためのリソースとしてのソフトウエアモジュールをリソース権限者が開発できるようにすることがある。この場合、システム権限者は、リソース権限者がシステムのある機能にアクセスできるようにするが、その他の機能にはアクセスできないようにしようとする場合がある。したがって、ある計算リソースには利用可能な機能の特定の集合へのアクセスを提供し、かつ、その他の計算リソースには他の利用可能な機能の集合のそれぞれへのアクセスをさらに提供するための機構をシステムが備える場合があり、これらの集合は互いに重複してもしていなくてもよい。
【0030】
複合計算システムは、多くの異なる計算リソースと関連付けられていてもよく、これらの計算リソースのすべては、計算リソースの複数のインスタンスの形式で実行されてもよく、互いに相互作用してもよい。例えば、システムが1つの計算リソースを実行すると、それが第2の計算リソースの実行を引き起こす場合がある。同時に、第3の計算リソースが、第2の計算リソースの別のインスタンスの実行を引き起こすかもしれない。この種の複合計算システムは、ある計算リソースのどのインスタンスが計算リソースの別のどのインスタンスと関連付けられているかについて追跡するような機構を備えていてもよい。さらに、システムは、このような情報を用いて、オペレータやユーザによって実行される第1のリソース等の計算リソースうちのただ一つのアクセス特権を基に、特定の機能へのアクセスを許可してもよい。このシナリオでは、第1の計算リソースと関連付けられた計算リソースの実行されるすべてのインスタンスは、第1の計算リソースにアクセス可能な機能にのみアクセスすることになる。
【0031】
図1Aは、関連付けられた主要素間の相互関係を示す計算システムの配置の一例を表すブロック図である。実行システム100は、実行モジュール110を備え、実行可能コンポーネント120を処理する。実行可能コンポーネント120は、コンピュータ・プログラム、ソフトウエアコード、その他の種類の実行可能な要素等の実行可能な任意の個別の計算構成要素を備える。
【0032】
実行可能コンポーネント120は、コンポーネントコンテナ122に記憶可能である。コンポーネントコンテナ122内の実行可能コンポーネント120は、実行システム100が利用可能な対称曖昧化(obscuring)鍵112を用いて随意暗号化されていてもよい。コンポーネントコンテナ122はさらに、実行可能コンポーネント120に関するその他の情報を備えており、ブランド130及び電子コンポーネント署名124を含む。ブランド130は、機能510、510aのどちらがこのコンポーネントと共に使用可能であるかを示すコンポーネント用の識別子である。ブランド130と関連付けられたコンポーネントは、同じブランドと結びつく他のコンポーネントと同じ機能510、510aにアクセスする。機能510、510aは、実行システム100の異なる要素であってもよい。例えば、機能510、510aは、コマンド、命令、ソフトウエア・プロセス、ハードウエア装置、データファイル、その他の種類の要素、又はこれらの組み合わせに相当可能である。
【0033】
実行システム100は、1つ以上のブランド130、130a、130bをさらに含む鍵コンテナ132にアクセスする。実行モジュール110は、鍵コンテナ132を入力として受け取る。入力としてのシステムの部分とシステムのその他の部分との関係は、図において矢印で表されており、本発明の図面において使用される決まりごととする。鍵コンテナ132内の各ブランド130は、ブランド公開鍵134と関連付けられる。実行システム100は、ブランド公開鍵134を用いて、コンポーネントコンテナ122内のブランド130が有効であることを検証する。各ブランド130はさらに、機能インジケータ(feature indicator)136と関連付けられ、ブランド130と関連付けられた実行システム100の機能510、510aを記載する。ブランド130と関連付けられたコンポーネント120は、機能インジケータ136によって記載された機能510、510aにのみアクセス可能である。
【0034】
実行システム100は、コンポーネントコンテナ122にアクセスすることにより、実行可能コンポーネント120を実行する。実行システム100は、コンポーネント署名124が有効であるかどうかを判断する署名検証モジュール140を備える。署名検証モジュール140は、ブランド公開鍵134を用いて、有効性の確認を行う。実行可能コンポーネント120が暗号化されている場合、署名検証モジュール140は、検証済みのコンポーネントコンテナ122を復号化モジュール142に渡し、曖昧化鍵112を用いて復号化する。これにより実行可能コンポーネント120は、実行システム100により利用可能となる。
【0035】
実行システム100はさらに、ブランドトークン化モジュール144を備える。ブランドトークン化モジュール144は、コンポーネント120と関連付けられたブランド130を含むブランドトークン138を作成する。ブランドトークン138は、コンポーネント120を実行しながら、コンポーネントと関連したブランド130を維持するために使用される。
【0036】
実行モジュール110がコンポーネント120を実行するときに、ブランドトークン化モジュール144は、コンポーネント120にブランドトークン138を確実にアタッチ(添付)する。実行中、コンポーネント120は、ブランドトークン138内のブランド130と関連付けられた機能インジケータ136によって記載される実行システム100の機能にのみアクセス可能である。
【0037】
図1Bは、計算システムの配置の別の例を示すブロック図である。図1Bにおいて、ブランドトークン138は、ブランド130をその他の実行可能コンポーネント120aに関連付けるためにも使用される。実行可能コンポーネント120によって別の実行可能コンポーネント120aのインスタンスの実行が引き起こされる場合には、実行コンテキストモジュール146によって、ブランドトークン138が該他の実行可能コンポーネント120aにアタッチされこととなる。したがって、該他の実行可能コンポーネント120aがそのコンポーネントコンテナ122a内にブランド130を備えていなくても、該他の実行可能コンポーネント120aは、ブランドトークン138内のブランド130と関連付けられた機能インジケータ136によって記載される機能にのみアクセス可能となる。ブランドトークン138は、実行コンテキストモジュール146aを用いて、データコンポーネント121等の実行不可能コンポーネントにアタッチされてもよい。図において、実行コンテキストモジュールは、複数のインスタンス146、146a、146bとして示されているが、実施態様に応じて、唯一のインスタンスのみが必要となる場合もある。
【0038】
実施可能コンポーネント120、120aのうちの1つはさらに、ネットワーク104を介してアクセスされる2次又はリモートシステム等の別の実行システム100a上の実行可能コンポーネント120bにアクセスしてもよい。他の実行システム100aも、曖昧化鍵112にアクセス可能な実行モジュール110aを備え、ブランド130を含む鍵コンテナ132aにアクセスする。実行コンテキストモジュール146bによって、ブランドトークン138が他の実行システム100aによって処理される実行可能コンポーネント120bにアタッチされることを可能にする。したがって、コンポーネントコンテナ122bがブランド130を含んでいなくても、実行可能コンポーネント120bはブランド130の下で動作することになる。実行システム100は、標準的なネットワークプロトコル、標準リモート手続き呼び出しプロトコル、特別仕様プロトコル、別の種類のプロトコル、又はこれらの組み合わせに従って、他の実行システム100aと相互作用してもよい。
【0039】
いくつかの実施態様では、実行可能コンポーネント120は、コンポーネント(データコンポーネント121又は実行可能コンポーネント120のいずれか)を表すグラフ内の頂点、及びコンポーネント間のデータの流れを表すグラフ内の有向リンク又は「辺」とともに有向グラフで表される「データフロー・グラフ」を用いて実装される。グラフはモジュールの実体である。各グラフは、1つ以上の別のグラフで構成可能であり、特定のグラフは、より大きいグラフ内のコンポーネントとなりうる。グラフィカル開発環境(GDE)により、実行可能なグラフを特定し、グラフコンポーネント用のパラメータを定義するためのユーザインタフェースが提供される。このようなグラフに基づく計算を実施するシステムは、米国特許番号5,966,072、「Executing Computations Expressed As Graphs」(グラフとして表された操作の実行)に記載され、その内容は引用によりここに組み込まれる。
【0040】
図2Aを参照すると、データフロー・グラフ201の一例は、データフロー・グラフ201の実行可能コンポーネント204a〜204jによって処理されるデータのコレクションを提供する入力データ集合コンポーネント202を備える。例えば、データ集合コンポーネント202は、データベースシステムと関連付けられたデータ記録又はトランザクション処理システムと関連付けられたトランザクションを備えうる。各実行可能コンポーネント204a〜204jは、データフロー・グラフ201全体によって定義される演算の一部と関連付けられる。作業要素(work elements)(例えば、データコレクションの個々のデータ記録)は、1つ以上のコンポーネントの入力ポートを登録し、出力作業要素(場合によっては、入力作業要素又は入力作業要素の処理済版である)は一般に、コンポーネントの1つ以上の出力ポートを残す。グラフ201において、コンポーネント204e、204g、204jからの出力作業要素は、出力データ集合コンポーネント202a〜202cに記憶される。
【0041】
図2Bは、記憶システム210と連結され、データフロー・グラフ等の1つ以上の安全なプログラムを用いて処理されるデータソース212から受信するデータを処理するよう構成された実行システム100の一例を示す図である。データソース212は、記憶装置やオンラインデータストリームへの接続等の1つ以上のデータ源を備えてもよく、それぞれのデータ源は、いろいろな記憶形式(例えば、データベース・タブレット、表計算ファイル、フラットテキストファイル、又はメインフレームにより使用されるネイティブフォーマット)のいずれかでデータを記憶してもよい。実行システム100は、記憶システム210内に記憶される本明細書に記載された記述子(鍵コンテナ等)を用いて安全性を提供する安全層214及び動作システム216を備える。いくつかの実施態様では、安全層214は、動作システム216の一部である。
【0042】
実行システム100は、データ源212からデータを受信し処理する。データ源212を提供する記憶装置は、例えば、動作システム216(例えば、ハードドライブ218)を実行するコンピュータに接続された記憶媒体上に記憶されるなど、実行システム100に対してローカルであってもよいし、例えば、リモート接続を介して動作システム216を実行するコンピュータと通信するリモートシステム(例えば、メインフレーム220)上にホストされるなど、実行システム100に対してリモートであってもよい。
【0043】
データ記憶システム210は、開発システム230内で開発者234により開発済みの安全なプログラム232を受信してもよい。開発者234は、本明細書に記載の記述子を暗号化により割り当てるよう構成された開発システム230を用いて、実行システム100内の実行用の安全なプログラムを開発することができる。開発システム230は、いくつかの実施態様では、データフロー・グラフ(例えば、上述のGDEを用いた)開発アプリケーション用のシステムである。ここで記載の機能に加えて、このようなシステムの他の機能は、米国特許公開番号2007/0011668、発明の名称:「Managing Parameters For Graph-Based Applications」内により詳細に記載されており、その内容は引用によりここに組み込まれる。
【0044】
開発システム230及び実行システム100はそれぞれ、UNIXオペレーティングシステム等の適切なオペレーティングシステムの制御の下、1つ以上の汎用コンピュータ・システム上で動作してもよく、記憶システム210は、コンピュータ・システムと一体化した又は通信する記憶媒体を備えうる。例えば、コンピュータ・システムは、ローカル(例えばSMPコンピュータなどのマルチプロセッサ・システム)、又はローカル分散型(例えばクラスタ又はMPPとして結合された複数プロセッサ)、又はリモート、又はリモート分散型(例えばLAN及び/又はWANを介して結合された複数プロセッサ)、又はそれらの任意の組み合わせのいずれかの、複数の中央処理ユニット(CPU)を使用するコンピュータ・システムの構成を含む、多重ノード並列計算環境を含むことができる。
【0045】
2 コンテナ
図3Aに示すように、鍵コンテナ132は、複数のブランド130、130a、130bを含むことができる。1つの実行可能コンポーネント120は、1つのブランド130aに従って動作し、別の実行可能コンポーネントは、別のブランド130bに従って動作可能である。ある実行可能コンポーネント120に関して、そのコンポーネントと関連付けられたブランド130が鍵コンテナ132内で利用可能であれば、実行システム100はその実行可能コンポーネント120を処理する。いくつかの例では、鍵コンテナ132は、データファイル、記憶場所、又は別の種類のコンテナでありうる。
【0046】
各ブランド130は、対応する公開鍵134を有し、これにより、署名検証モジュール140は、実行可能コンポーネント120とブランド130との関連付けが有効であるかどうかを判断可能である。各ブランド130はさらに、有効期限インジケータ(expiration indicator)135を有し、これにより、ブランド権限者は、ブランド130が有効である期限を設定可能となる。さらに、各ブランド130は、機能インジケータ136を有し、機能インジケータ136は、このブランド130に従って動作する実行可能コンポーネント120が利用可能な実行システム100の機能510を記載する。
【0047】
図3Bに示すように、コンポーネントコンテナ122は、コンポーネント300に関連する要素を有する。コンポーネント300は、例えば、実行可能コンポーネント120であるかもしれない。いくつかの例では、実行可能コンポーネント120によって使用される情報を有し、それ自身は実行可能ではないデータコンポーネント121のような他のタイプのコンポーネント300を使用することができる。いくつかの例では、コンポーネントコンテナ122は、データファイル、記憶場所、又は別の種類のコンテナとなりうる。
【0048】
コンポーネント300は、無許可の視聴や分析に対してコンポーネントの構造や内容を曖昧にするために随意暗号化される。暗号化モジュール342は、曖昧化鍵112を用いて、コンポーネント300を暗号化する。暗号化モジュール342は、DES(Data Encryption Standard)、AES(the Advanced Encryption Standard)、その他の標準暗号化プロトコル、又はこれらの組み合わせ等の標準的な暗号化プロトコルに基づいていてもよい。暗号化モジュール342は、特別仕様の暗号化プロトコルを単独で又は標準の暗号化プロトコルと組み合わせて使用してもよい。
【0049】
コンポーネントコンテナ122は、コンポーネント300と関連付けられたブランド130を含む。ブランド130は、コンポーネント300に機能の集合を割り当てるために使用される。
【0050】
コンポーネントコンテナ122は、コンポーネント署名124を有し、コンポーネントコンテナ122の内容の有効性を確認するために使用される。署名生成モジュール340は、電子署名プロトコルに従ってコンポーネント300及びブランド130を処理してコンポーネント署名124を作成する。プロトコルとしては、RSA、DSA(Digital Signature Algorithm)、楕円曲線プロトコル、又はその他の種類の暗号化プロトコル等の電子署名に使用される標準的な暗号化プロトコルでよい。署名生成モジュール340は、特別仕様の電子署名プロトコルを単独で又は標準の暗号化プロトコルと組み合わせて使用してもよい。
【0051】
コンポーネント署名124は、ブランド秘密鍵334を用いて生成される。ブランド秘密鍵334は、コンポーネントコンテナ122の権限者が利用可能であり、コンポーネント300を扱う実行システム100では利用可能ではない。実行システム100は、コンポーネント署名124が生成されてから、ブランド130とコンポーネント300とが変更されていないことを検証できるのみである。したがって、コンポーネント署名124は、ブランド130をコンポーネント300と関連付ける他に、コンポーネント300の完全性を確保する、暗号化による安全な手段である。
【0052】
さらに、コンポーネントコンテナ122は、このコンポーネントコンテナ122に特有の識別子であるコンテナ番号302を有する。コンポーネントコンテナはさらに、コンテナフォーマット304を有し、このコンポーネントコンテナ122を構成するデータの特定の配置を示すものである。コンポーネントコンテナ122はさらに、コンポーネントタイプ306を有し、コンポーネントタイプ306は、コンポーネント300が暗号化されているかどうかを含む、コンポーネントコンテナ122に含まれるコンポーネント300を構成するデータの特定の配置を示す。
【0053】
3 ブランドトークン化
上述のように、実行システム100は、ブランドトークン138を実行可能コンポーネント120、120a、120bにアタッチし、実行の前にブランド130を各コンポーネントに関連付ける。実行システム100は、各実行の前にこれらのトークン化工程を行い、この関連付けを安全にするので、悪意のある行為者がブランド130を変更又は置き換えようと実行処理の妨害を試みる場合、このような悪意のある行為を検出可能である。
【0054】
図4Aに示すように、実行システム100は、ブランドトークン138a、138bの複数のインスタンスを使用する。各インスタンスは、コンポーネントのコンポーネントコンテナから生成され、この例では実行可能コンポーネント120のコンポーネントコンテナ122である。
【0055】
実行システム100は、署名検証モジュール140を用いて、コンポーネント署名124を検証する。署名検証モジュール140は、実行可能コンポーネント120又はブランド130はコンポーネントコンテナ122が作成された後のある時点で修正されたか、さもなければ改ざんされたかを判断するためにブランド公開鍵134を使用する。実行可能コンポーネント120又はブランド130のいずれかが改ざんされている場合、署名検証モジュール140は、矛盾を検出しコンポーネントコンテナ122を拒否する。
【0056】
ブランドトークン化モジュール144、144aは、コンポーネントコンテナ122の内容を用いて、ブランドトークンインスタンス138a、138bを生成する。ブランドトークン化モジュールの2つの例が示されているが、いくつかの実装では、1つのインスタンスのみが必要となることもある。ブランドトークン化モジュール144、144aは、コンポーネントコンテナからのブランド130をブランドトークン138a、138bの各インスタンス内に配置する。ブランドトークン化モジュール144はさらに、コンポーネントタイプ306を用いて、実行可能コンポーネント120が暗号化されているかどうかを示すフラグ406を生成する。
【0057】
さらに、乱数生成器410は、ブランドトークン138a、138bの各インスタンスに対して異なるソルト412を使用する。したがって、ブランドトークン138a、138bの各インスタンスは、その他のインスタンスとは異なる特有の乱数値を含むことになる。
【0058】
図4Bに示すように、ブランドトークン化モジュール144は、実行スクリプト420を生成する。実行スクリプト420は、実行可能コンポーネント120のインスタンスを実行するための命令を備えており、いくつかの形式のうちの任意のものを取ることが出来る。実行スクリプト420は、実行可能コンポーネント120を適切に処理するのに必要な特定の情報を実行モジュール110に示す解釈された又はコンパイルされたコマンドの集合であってもよい。
【0059】
実行可能コンポーネント120は、実行スクリプト420と関連付けられる。例えば、実行スクリプト420は、実行可能コンポーネント120そのものを構成する命令を含んでいてもよく、又はその代わりに実行可能コンポーネント120へのポインタや参照を有してもよい。実行スクリプト420内の命令の1つは、このポインタもしくは参照にアクセスしてもよい。
【0060】
実行可能コンポーネント120がコンポーネントコンテナ122に配置される前に暗号化されている場合には、復号化モジュール142が曖昧化鍵112を用いて実行可能コンポーネント120の復号化を取り扱う。
【0061】
ブランドトークン138aのインスタンスの1つは、実行スクリプト420と共に使用される。ブランドトークン化モジュール144は、実行番号408を生成し、それをブランドトークンインスタンス138a内に配置することによりブランドトークンインスタンス138aを終了する。同じ実行番号408が、実行可能コンポーネント120の実行のためのトークン化プロセスで使用されるブランドトークン138のすべてのインスタンスに当てはまる。ブランドトークン化モジュール144は、ブランドトークン138aのこのインスタンスに割り当てる実行番号408を追跡し、その他のインスタンス用に同じ実行番号408を使用する。
【0062】
ブランドトークンインスタンス138aが一旦終了すると、暗号化モジュール342は、曖昧化鍵112を用いてブランドトークンインスタンスを暗号化する。ブランドトークン化モジュール144はその後、実行スクリプト420内に暗号化されたブランドトークン438aを配置する。実行可能コンポーネント120と同様に、実行スクリプト420は、暗号化されたブランドトークン438aそのものを構成するデータを含んでもよく、又はその代わりに暗号化ブランドトークン438aへのポインタや参照を有してもよい。
【0063】
図4Cに示すように、ブランドトークン化モジュール144は、スクリプトコンテナ430を生成し、その内部に実行スクリプト420を配置する。いくつかの実装において、スクリプトコンテナ430は、データファイル又はデータ構造である。ブランドトークン化モジュール144はさらに、ブランドトークン138aの第1のインスタンスに使用された同じ実行番号408を加えることによって、ブランドトークン138bの第2のインスタンスを終了する。ブランドトークン138bの第2のインスタンスは、暗号化モジュール342で暗号化され、暗号化されたブランドトークン438bは、スクリプトコンテナ430内部に配置される。
【0064】
トークン化署名生成モジュール450は、スクリプトコンテナ430を基にスクリプトコンテナ署名424を生成する。トークン化署名生成モジュール450は、実行システム100で利用可能なトークナイザ秘密鍵452を用いる。スクリプトコンテナ署名424は、コンポーネントの実行が始まる際に、スクリプトコンテナ430の有効性を確実にするメカニズムを提供する。
【0065】
トークン化署名生成モジュール450は、他で記載されるその他の署名生成モジュールと同じような方法で動作し、電子署名プロトコルに従ってスクリプトコンテナ430を処理することにより、スクリプトコンテナ署名424を作成する。プロトコルとしては、RSA、DSA(Digital Signature Algorithm)、楕円曲線プロトコル、又はその他の種類の暗号化プロトコル等の電子署名に使用される標準的な暗号化プロトコルでよい。トークン化署名生成モジュール450は、特別仕様の電子署名プロトコルを単独で又は標準の暗号化プロトコルと組み合わせて使用してもよい。スクリプトコンテナ430が確立されたのち、実行可能コンポーネント120に対して、安全な実行のための準備を行う。
【0066】
4 ブランド化された実行
図5Aに示すように、実行モジュール110は、実行可能コンポーネント120を含むスクリプトコンテナ430を受け取る。実行モジュール110は、実行可能コンポーネント120の安全な実行を考慮して構成された、スクリプトコンテナ430の内容を検証するために必要な工程を実行する。
【0067】
実行モジュール110は、コンテナ署名検証モジュール550を用いてスクリプトコンテナ署名424を検証する。コンテナ署名検証モジュール550は、コンテナ公開鍵454を用いて、スクリプトコンテナ430が作成された後のある時期にスクリプトコンテナ430が修正されたか、さもなければ改ざんされたかを判断する。コンテナ署名検証モジュール550は、何らかの矛盾を検出し、スクリプトコンテナ430を拒否する。実行モジュール110はさらに、検証済みのスクリプトコンテナ430から暗号化されたブランドトークン438bを抽出し、曖昧化鍵112を用いて復号化モジュール142を適用する。
【0068】
図5Bに示すように、実行モジュール110は、前もって復号化モジュール142によって復号化された、ブランドトークン138bの復号化されたインスタンスを取得する。実行モジュール110はさらに、検証済みのスクリプトコンテナ430から前もって取得した実行スクリプト420内に含まれる命令を実行する。実行スクリプト420は、実行可能コンポーネント120と共に別の暗号化されたブランドトークン438aを含む。実行モジュール110は、この暗号化されたブランドトークン438aに復号化モジュール142を適用する。
【0069】
図5Cに示すように、トークン検証モジュール148は、実行スクリプト420から抽出されたブランドトークン138aの第1のインスタンスの内容とスクリプトコンテナ430から抽出されたブランドトークン138bの第2のインスタンスとを比較する。ブランドトークン化モジュール144によって作成されたようなブランドトークン138a、138bの2つのインスタンスは、ランダムソルト412a、412bを除いて同一の内容を有することになる。ソルト412a、412bは異なるが、ブランド130及び実行番号408を含み、内容は同じである場合、トークン検証モジュール148は、実行モジュール110に検証済みのブランド130を提供する。
【0070】
ブランドトークン138aの1つのインスタンスが実行スクリプト420と共に実行モジュール110に到着し、ブランドトークン138bの別のインスタンスがスクリプトコンテナ430と共に到着しているので、ブランドトークン138a、138bのこの2つのインスタンスは、実行可能コンポーネント120の信ぴょう性及びブランド130との関連付けを検証するのに使用可能である。新しいスクリプトコンテナ430は、一致する実行番号408でブランドトークン138を有することにならないので、いかなる特定の実行スクリプト420も、新しいスクリプトコンテナ430内部に配置することによって再使用することはできない。実行モジュール110が予測するように、実行スクリプト420からのブランドトークンインスタンスとスクリプトコンテナ430からのブランドトークンインスタンスは、異なるランダムソルト412a、412bを有することにならないので、実行スクリプト420からのブランドトークンインスタンス138aは、スクリプトコンテナ430と共に使用できない。さらに、ブランドトークンインスタンス138aは、暗号化されたブランドトークン438aのように曖昧化鍵112で暗号化されているので、スクリプトコンテナ430用の新しいブランドトークンインスタンスは、許可されてない行為者によって実行スクリプト420内部のブランドトークンインスタンス138aから生成されることはできない。
【0071】
ブランドトークンインスタンス138a、138bが有効なブランド130であることを表すことがトークン検証モジュール148によって実行モジュール110に通知されると、実行モジュール110は、鍵コンテナ132にアクセスし、ブランドトークンインスタンス138a、138b内のブランド130に対応する鍵コンテナ内のブランド130に関連付けられた有効期限インジケータ135及び機能インジケータ136にアクセスする。実行モジュール110は、機能インジケータ136を用いて、実行可能コンポーネントが利用可能な機能集合500内のいくつかの機能510a、510b、510c、510dをイネーブルにし、機能集合500内の他の機能512a、512bをディスエーブルにする。
【0072】
実行モジュール110は、実行スクリプト420から実行可能コンポーネント120にアクセスし、ブランド130の機能インジケータ120に従ってイネーブルとなった機能510のみを用いて実行可能コンポーネントが実行できるようにする。
【0073】
5 ブランド化された実行コンテキストの保持
ブランド130と関連付けられた実行可能コンポーネント120は、他の実行コンポーネント120aの実行を開始することができる。これらの他の実行可能なコンポーネント120aは、例えばそのコンテナファイル122a内のブランド130とは直接関連付けられないかもしれないが、その代わりに実行中、ブランド130と関連付けられる。他の実行可能コンポーネント120aは、たとえ他の実行可能コンポーネント120aが他の機能512a、512bにアクセスしていた場合にも、その実行が別のコンテキストではじめられた場合には、最初の実行可能コンポーネント120と関連付けられたブランド130の機能インジケータ136に従ってイネーブルとなった機能510のみにアクセスすることになる。従って、最初の実行可能コンポーネント120は、他の実行可能コンポーネント120aを用いてディスエーブルになった機能512a、512bへアクセスすることから制限される。
【0074】
さらに、他の実行可能コンポーネント120a、120bは、最初の実行可能コンポーネント120が実行を終えた後であっても、実行可能コンポーネント120bのようなさらに他の実行可能コンポーネントの実行を開始することができる。これらのコンポーネント120、120a、120bの全てにアクセス可能な機能510がそのブランド130の機能インジケータ136に従って決定されるように、実行システム100は、最初の実行可能コンポーネント120と関連付けられたブランド130を追跡する。
【0075】
いくつかの実装では、実行システム100は、複数の実行可能コンポーネント120を処理し、ブランド130をこれらの実行可能コンポーネント120と関連付ける。例えば、実行システム100は、1つの実行可能コンポーネント120の実行を終えた後、他の実行可能コンポーネント120a用に実行可能コンポーネント120の情報を保持するメカニズムを付加してこの情報を保持してもよい。さらに、このメカニズムは、他のコンポーネント、又は悪意のある行為者が保持された情報にアクセスしたり変更したりするのを許可せず、又、メカニズムは、不要なオーバヘッドを追加する又は安全でないポイントとして作用する追加の要素をもたない。
【0076】
図6Aに示すように、実行システム100は、実行可能コンポーネント120のブランド130を検証するのに使用されるブランドトークン138a、138bのインスタンスの内容についてトークン検証モジュール148からの情報を受け取る実行コンテキストモジュール146を備える。実行コンテキストモジュール146は、一時(transient)コンテナ622及び一時コンテナ622の方向に向いた環境レファレンス610を生成する。環境リファレンス610は、実行可能コンポーネント130の実行環境605のコンテキスト内に存在する。いくつかの例において、実行環境605は、記憶場所、変数、データファイル、又は実行可能コンポーネント120の実行に関連する他の種類の情報、又はこれらの種類の情報の組み合わせを含む。
【0077】
一時コンテナ622は、一般に実行システム100によって利用可能ではない。その代り、一時コンテナ622は、環境リファレンス610にアクセスすることによってのみ利用可能である。その結果、環境リファレンス610は、実行可能コンポーネント130の実行環境605においてのみ利用可能である。実行可能コンポーネント120が他の実行可能コンポーネント120aの実行を開始する場合、他の実行可能コンポーネント120aは、環境リファレンス610へのアクセスを認められる。なぜならば、実行を開始する原因となった実行可能コンポーネント120と同じ実行環境605で動作しているからである。いくつかの例において、一時コンテナ622は、環境リファレンス610を用いることなく実行システム100の通常のファイルシステムを用いてアクセス可能ではないデータファイルであってもよい。一時コンテナ622は、別の実行システム100aによって扱われる実行可能コンポーネント120bに提供されうる。
【0078】
実行コンテキストモジュール146は、トークン検証モジュール148から取得した情報を用いて、ブランドトークン138cの新しいインスタンスを生成する。ブランドトークン138cのこのインスタンスは、ブランドトークン138a、138bの他のインスタンスと同じブランド130、フラグ406および実行番号408を有し、さらに乱数生成器410から取得した新しいランダムソルト412cを有する。実行コンテキストモジュール146は、一時コンテナ622内部にブランドトークン138cの新しいインスタンスを配置する。
【0079】
図6Bは、実行可能コンポーネント120aを有するが、ブランド130を有さないコンポーネントコンテナ122aを示す図である。実行モジュール110は、実行可能コンポーネントの実行環境605にアクセスすることにより、実行可能コンポーネント120aを準備する。この実行可能コンポーネント120aのこの実行が別の実行可能コンポーネント120により開始されたものであるならば、この実行可能コンポーネント120aは、他の実行可能コンポーネント120と同じ実行環境605内で動作することになるので、一時コンテナ622への環境リファレンス610が利用可能となるであろう。実行モジュール110は、一時コンテナ622内部のブランドトークンインスタンス138cにアクセスし、ブランドトークン内のブランド130を取得する。ブランドトークンインスタンス138cはさらに、その有効性を確認するために、同じブランドトークン138a、138bの他のインスタンスと比較可能である。例えば、悪意のある行為者がブランドトークン138a、138bの他のインスタンスのうちの1つを一時コンテナ622内にコピーしていた場合、一時コンテナ622内のブランドトークン138cのインスタンスは、他のインスタンスと同じランダムソルト412a、412bを有することになり、したがって、無効であると断定される。
【0080】
ブランドトークン化モジュール144、144aは、実行モジュール110からのブランド130を起動させ取得する。ブランドトークン化モジュールは、図において2つのインスタンス144、144aとして示されているが、実装によっては、1つのインスタンスのみが必要である場合もある。ブランドトークン化モジュール144、144aは次に、ブランドトークン138d、138eの新しいインスタンスを構成し、新しい実行可能コンポーネント120aのコンポーネントコンテナ122a内のコンポーネントタイプ306から決定されたブランド130と、フラグ406a及び乱数発生器410から得られた新しいソルト412d、412eとを含める。ブランドトークン138d、138eのこれら新しいインスタンスはその後、ブランドトークン化モジュール144、144aによって使用され、図4A〜4Cについて上述したような実行可能コンポーネント120を準備する。
【0081】
6 手順
図7は、実行可能コンポーネント120に暗号化によりブランド130を割り当てるのに使用される手続き700の一例を示すフローチャートである。手続きは、702において、実行可能コンポーネント120及びブランド130に基づいてコンポーネントコンテナ122用のデジタル署名を生成する。手続きは、704において、デジタル署名を検証し、706においてブランドトークン138a、138bの複数のインスタンスにブランド130を割り当てる。手続きは、708において、ブランドトークン138aの1つのインスタンスを暗号化し、710において、それを実行スクリプト420にアタッチする。手続き712において、ブランドトークン138bの別のインスタンスを暗号化し、714において、暗号化されたブランドトークンを、実行スクリプト420と共にスクリプトコンテナ430にアタッチする。手続き716において、スクリプトコンテナ430に基づいてスクリプトコンテナ430用のデジタル署名を生成する。
【0082】
図8は、ブランド130に割り当てられた機能インジケータ136にアクセスするのに使用される手続き800の一例を示すフローチャートである。手続きは、802において、デジタル署名を検証し、スクリプトコンテナ430にアクセスする。手続きは、804において、ブランドトークン138bのインスタンスを復号化し、806において、スクリプトコンテナ430内の実行スクリプト420にアクセスする。手続き808において、ブランドトークン138aの別のインスタンスを復号化し、810において、実行スクリプト420内の実行可能コンポーネント120にアクセスする。手続きは、812において、ブランドトークン138a、138bの2つのインスタンスを検証する。ブランドトークン138a、138b内のブランド130を用いて、手続き814において、鍵コンテナ132内のブランド130に割り当てられた機能インジケータ136を取得する。
【0083】
図9は、実行システム100上で実行可能コンポーネント120を実行するのに使用される手続き900の一例を示すフローチャートである。手続きは、902において、一時コンテナ622を生成し、904において、一時コンテナ622を指す環境リファレンスを生成する。手続きは、906において、実行可能コンポーネント120に関連付けられたブランド130を含むブランドトークンインスタンス138cのインスタンスを生成する。手続きは、908において、一時コンテナ622にブランドトークンインスタンス138cのインスタンスを割り当てる。手続きは、910において、環境リファレンス622以外の一時コンテナ622への他のリファレンスを削除する。手続きは、912において、実行可能コンポーネント120を実行し、実行可能コンポーネント120の実行環境605内に環境リファレンス610を配置する。
【0084】
図10は、機能インジケータ136に基づいて、実行システムの機能510へのアクセスを実行可能コンポーネント120に提供するのに使用される手続き1000の一例を示すフローチャートである。手続きは、1002において、ブランド130と関連付けられた取得済みの機能インジケータ136にアクセスする。手続きは、1004において、機能インジケータ136によって記載された機能510と実行システム100に提供される機能集合500内の対応する機能510とを特定する。手続きは、1006において、実行可能コンポーネント120がアクセスするための機能510をイネーブルにする。手続きは、1008において、実行可能コンポーネント120によって開始された実行を有する別の実行可能コンポーネント120aとブランド130とを関連付ける。
【0085】
7 実施態様
上述の計算機能へのアクセスを制御する方法は、コンピュータ上での実行されるソフトウエアを用いて実施可能である。例えば、このソフトウエアは、1つ又は複数のプログラムされた又はプログラム可能なコンピュータ・システム(分散、クライアント/サーバ、又はグリッドなど、様々なアーキテクチャのものにすることができる)上で実行される1つ又は複数のコンピュータ・プログラム内の手順を形成し、それぞれのコンピュータ・システムは、少なくとも1つのプロセッサと、少なくとも1つのデータ記憶システム(揮発性及び不揮発性のメモリ及び/又は記憶素子を含む)と、少なくとも1つの入力装置又はポートと、少なくとも1つの出力装置又はポートを備える。このソフトウエアは、例えば、データフロー・グラフの設計及び構成に関連する他のサービスを提供する、より大きいプログラムの1つ又は複数のモジュールを形成することができる。このグラフのノード及び要素は、コンピュータ可読媒体に保管されたデータ構造又はデータ・リポジトリに記憶されたデータ・モデルに適合するその他の編成済みデータとして実現することができる。
【0086】
このソフトウエアは、汎用又は専用プログラマブル・コンピュータによって読み取り可能であるCD−ROMなどの記憶媒体上で提供するか、或いはそれが実行されるコンピュータに対しネットワークの通信媒体により配信(伝搬信号としてコード化)することができる。すべての機能は、専用コンピュータ上で、又はコプロセッサなどの専用ハードウエアを使用して、実行することができる。このソフトウエアは、ソフトウエアによって指定された計算の種々の部分が種々のコンピュータによって実行される分散方式で実現することができる。このようなコンピュータ・プログラムはそれぞれ、本明細書に記載された手順を実行するために記憶メディア又はデバイスがコンピュータ・システムによって読み取られた時にコンピュータを構成し操作するために、好ましくは、汎用又は専用プログラマブル・コンピュータによって読み取り可能な記憶メディア又はデバイス(例えば、ソリッドステート・メモリ又はメディア、或いは磁気又は光メディア)上に保管されるか又はそれにダウンロードされる。又、本発明のシステムは、コンピュータ・プログラムとともに構成されたコンピュータ可読記憶媒体として実現されるものと見なすこともでき、このように構成された記憶媒体により、コンピュータ・システムは本明細書に記載された機能を実行するように特定かつ定義済みの方式で動作する。
【0087】
本発明のいくつかの実施形態について説明してきた。それにもかかわらず、本発明の思想及び範囲を逸脱せずに様々な変更が可能であることが理解されるであろう。例えば、上記のステップのいくつかは、順序とは無関係なものにすることができ、従って、上記のものとは異なる順序で実行することができる。
【0088】
上記は説明のためのものであって、特許請求の範囲によって定義される本発明の範囲を限定するためのものではないことを理解されたい。例えば、上記の機能ステップのいくつかは、全体的な処理に実質的に影響を及ぼさずに異なる順序で実行することができる。その他の実施形態は以下の特許請求の範囲の範囲内である。
図1A
図1B
図2A
図2B
図3A
図3B
図4A
図4B
図4C
図5A
図5B
図5C
図6A
図6B
図7
図8
図9
図10