IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7482909プロセッサ加速型の検証可能なコンピューティングを提供する方法、システム及びコンピュータ・プログラム
<>
  • 特許-プロセッサ加速型の検証可能なコンピューティングを提供する方法、システム及びコンピュータ・プログラム 図1a
  • 特許-プロセッサ加速型の検証可能なコンピューティングを提供する方法、システム及びコンピュータ・プログラム 図1b
  • 特許-プロセッサ加速型の検証可能なコンピューティングを提供する方法、システム及びコンピュータ・プログラム 図2
  • 特許-プロセッサ加速型の検証可能なコンピューティングを提供する方法、システム及びコンピュータ・プログラム 図3a
  • 特許-プロセッサ加速型の検証可能なコンピューティングを提供する方法、システム及びコンピュータ・プログラム 図3b
  • 特許-プロセッサ加速型の検証可能なコンピューティングを提供する方法、システム及びコンピュータ・プログラム 図4
  • 特許-プロセッサ加速型の検証可能なコンピューティングを提供する方法、システム及びコンピュータ・プログラム 図5
  • 特許-プロセッサ加速型の検証可能なコンピューティングを提供する方法、システム及びコンピュータ・プログラム 図6
  • 特許-プロセッサ加速型の検証可能なコンピューティングを提供する方法、システム及びコンピュータ・プログラム 図7
  • 特許-プロセッサ加速型の検証可能なコンピューティングを提供する方法、システム及びコンピュータ・プログラム 図8
  • 特許-プロセッサ加速型の検証可能なコンピューティングを提供する方法、システム及びコンピュータ・プログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-02
(45)【発行日】2024-05-14
(54)【発明の名称】プロセッサ加速型の検証可能なコンピューティングを提供する方法、システム及びコンピュータ・プログラム
(51)【国際特許分類】
   G06F 21/57 20130101AFI20240507BHJP
   G06F 11/30 20060101ALI20240507BHJP
【FI】
G06F21/57
G06F11/30 140H
G06F11/30 155
【請求項の数】 7
(21)【出願番号】P 2021574749
(86)(22)【出願日】2020-06-22
(65)【公表番号】
(43)【公表日】2022-09-07
(86)【国際出願番号】 IB2020055864
(87)【国際公開番号】W WO2021001721
(87)【国際公開日】2021-01-07
【審査請求日】2022-11-21
(31)【優先権主張番号】16/503,424
(32)【優先日】2019-07-03
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】リントン、ジェブ
(72)【発明者】
【氏名】クレーマー、ジェームズ
【審査官】吉田 歩
(56)【参考文献】
【文献】欧州特許出願公開第03471006(EP,A1)
【文献】米国特許出願公開第2014/0223554(US,A1)
【文献】特開2015-079440(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
G06F 11/30
(57)【特許請求の範囲】
【請求項1】
コンピュータの情報処理によって、検証可能なコンピューティングを提供する方法であって、
主プロセッサ及びコプロセッサを備えるコンピューティング・デバイスにおいて、対象機能に基づいて生成された1次プログラム及び検証ロジックを受け取るステップと、
前記1次プログラムを実行するように前記主プロセッサを構成し、前記検証ロジックを実施するように前記コプロセッサを構成するステップと、
前記1次プログラムを実行している前記主プロセッサからテレメトリを収集し、前記テレメトリを前記コプロセッサに提供するステップと、
前記検証ロジックを実施している前記コプロセッサにおいて前記テレメトリを用いて、証明を生成するステップと、
前記1次プログラムが改竄されているかどうかを判断するために、前記証明を検証器コンピューティング・デバイスに提供するステップと
を含む方法であって、
前記テレメトリを前記コプロセッサに提供するステップは、前記テレメトリを、一方向トランスペアレント・バスを通して転送することを含
前記テレメトリは、前記主プロセッサのデータ・メモリに格納され、さらに、
前記テレメトリを前記コプロセッサに提供するステップは、前記コプロセッサが双方向キャッシュ・コヒーレント相互接続を通して前記主プロセッサの前記データ・メモリにアクセスできるようにすることを含む、方法。
【請求項2】
前記コプロセッサは、前記データ・メモリのコンテンツを修正し、
前記修正されたコンテンツは、前記主プロセッサの実行に影響を及ぼす、
請求項に記載の方法。
【請求項3】
前記テレメトリは、前記主プロセッサにおいて実行している前記1次プログラムのプログラム状態を含む、請求項1に記載の方法。
【請求項4】
前記証明及び前記プログラム状態は、パブリック・キーに従って生成され、
前記検証器コンピューティング・デバイスは、前記証明をプライベート・キーに基づいてチェックし、
前記パブリック・キー及び前記プライベート・キーは、セキュリティ・パラメータに基づいて生成される、
請求項に記載の方法。
【請求項5】
請求項1から請求項までのいずれか1項に記載の方法の全てのステップを実行するように適合された手段を備えるシステム。
【請求項6】
コンピュータ・システム上で実行されたときに、請求項1から請求項までのいずれか1項に記載の方法の全てのステップを実行するための命令を含む、コンピュータ・プログラム。
【請求項7】
請求項に記載のコンピュータ・プログラムが格納されたコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、検証可能なコンピューティングに関する。
【背景技術】
【0002】
検証可能なコンピューティング(又は検証型コンピューティング)は、コンピュータが、ある関数の計算を、信頼できるかどうかわからない作業器コンピューティング・デバイス(worker computing devices)に、検証可能な結果を維持しながらオフロードすることを可能にする。作業器コンピューティング・デバイスは、その関数を評価し、その結果を関数の計算が正しく実行されたことの証明とともに戻す。検証可能なコンピューティングはまた、信頼できないプログラムを実行しているコンピューティング・デバイスが、プログラムが期待通りに動作していることを検証するために使用することができる。検証可能なコンピューティングの導入は、信頼できないユーザ・デバイスに計算をアウトソースするという現象がますます一般的になってきたこと、また、計算能力の低いクライアントが、クラウド・コンピューティングなどの計算能力の高いサービスにタスクをアウトソースすることの要望が高まってきたことに起因する。
【発明の概要】
【0003】
本開示の幾つかの実施形態は、検証可能なコンピューティング・システムを提供する。検証可能なコンピューティング・システムの作業器コンピューティング・デバイスは、対象機能に基づいて生成される1次プログラム及び検証ロジックを受け取る。作業器コンピューティング・デバイスは、主プロセッサ及びコプロセッサを含む。主プロセッサは、1次プログラムを実行するように構成され、コプロセッサは検証ロジックを実施するように構成される。1次プログラムを実行している主プロセッサからテレメトリが収集され、コプロセッサに提供される。テレメトリは、主プロセッサ上で実行中の1次プログラムのプログラム状態を含むことができる。検証ロジックを実施中のコプロセッサは、テレメトリを用いて証明を生成する。証明は、1次プログラムが改竄されているかどうかを判断するために、検証器コンピューティング・デバイスに提供される、
【0004】
幾つかの実施形態において、テレメトリは、一方向トランスペアレント・バスを通して転送される。幾つかの実施形態において、テレメトリは、主プロセッサのデータ・メモリ内に格納され、コプロセッサは、双方向キャッシュ・コヒーレント相互接続を通して主プロセッサのデータ・メモリにアクセスできるようになる。コプロセッサは、1次プログラムのテンポラリ変数を含むデータ・メモリのコンテンツを修正することができ、修正されたコンテンツは、1次プログラムの実行に影響を及ぼすことがある。
【0005】
図面は、例示的な実施形態のものである。図面は、全ての実施形態を例示するものではない。他の実施形態を付加的に又は代わりに用いることもできる。明白又は不必要であり得る詳細は、スペースを節約するため又はより効果的な例示のために、省略されることがある。幾つかの実施形態は、付加的なコンポーネント又はステップを用いて、もしくは例示されるコンポーネント又はステップの全てを用いずに、又はその両方で実施することができる。同じ番号が異なる図面において出現する場合、それは同じ又は類似のコンポーネント又はステップを指す。
【図面の簡単な説明】
【0006】
図1a】例示的な一実施形態による、主プロセッサ内で1次プログラムを実行し、コプロセッサ内で検証ロジックを実行することにより対象機能を実施する、検証可能なコンピューティング・システムを概念的に示す図である。
図1b】例示的な一実施形態による、主プロセッサ内で1次プログラムを実行し、コプロセッサ内で検証ロジックを実行することにより対象機能を実施する、検証可能なコンピューティング・システムを概念的に示す図である。
図2】例示的な一実施形態による、検証可能なコンピューティング・システムのデータフローを概念的に示す図である。
図3a】テレメトリから証明を生成することを概念的に示す図である。
図3b】テレメトリから証明を生成することを概念的に示す図である。
図4】主プロセッサとコプロセッサとの間のリンクとしての双方向キャッシュ・コヒーレント相互接続を示す図である。
図5】主プロセッサとコプロセッサとの間の一方向トランスペアレント・バスを示す図である。
図6】例示的な一実施形態による、検証可能なコンピューティング・システムを動作させるためのプロセスを概念的に示す図である。
図7】本開示の例示的な一実施形態による、データ処理システムのコンポーネントのブロック図を示す。
図8】一つの例示的なクラウド・コンピューティング環境を示す図である。
図9】例示的な一実施形態による、クラウド・コンピューティング環境によって提供される一組の機能抽象化層を示す図である。
【発明を実施するための形態】
【0007】
以下の詳細な説明において、例として多数の特定の詳細が、関連する教示の完全な理解を与えるために、示される。しかし、本教示は、それらの詳細なしに実施することができることが明らかとなるはずである。他の例では、周知の方法、手順、コンポーネントもしくは回路、又はそれらの組み合わせは、本教示の態様を不必要に不明瞭にすることを避けるために、比較的高レベルにおいて詳細なしに説明されている。
【0008】
本開示の幾つかの実施形態は、具体的には、主プロセッサ(例えば、中央処理装置又はCPU)内で1次プログラムを実行し、コヒーレントに取り付けられた高度にパラレルなコプロセッサ内で検証ロジックを実行することによって、1次プログラム処理を検証ロジックから分離する検証可能なコンピューティング・システムを提供する。そのようなシステムにおいて、プログラム動作及びシステム状態の収集は、証明を計算するときにその情報の数学的処理から分離される。1次プログラムを実行している主プロセッサのテレメトリは、リンクを介してコプロセッサに渡される。コプロセッサは、並列化計算を用いて、証明を生成するために受け取ったテレメトリに基づいて効率的な数学的演算を行う。証明は、プログラムの実行から帯域外で検証器に送られ、プログラムが改竄されていないこと及びプログラムの結果が損なわれていないことを証明することができる。この設計により、主プロセッサ及びコプロセッサの作業負荷を効率的にバランスさせ、最適化することができる。
【0009】
幾つかの実施形態において、CPUとコプロセッサとの間の双方向キャッシュ・コヒーレント相互接続が、主プロセッサとコプロセッサとの間でテレメトリ(収集されたシステム状態を含む)を渡すためのリンクとして用いられる。主プロセッサ上で実行中のプログラムは、証明の計算及びその結果によって直接影響される場合がある。幾つかの他の実施形態においては、一方向トランスペアレント・バスが、主プロセッサとコプロセッサとの間でテレメトリを渡すためのリンクとして用いられる。コプロセッサによる証明の計算は、プログラムを実行中の主プロセッサの動作に実時間の影響を有さなくてもよい。
【0010】
図1a及び図1bは、例示的な一実施形態による、1次プログラムを主プロセッサ内で実行し、検証ロジックをコプロセッサ内で実行することによって対象機能を実施する、検証可能なコンピューティング・システム100を概念的に示す。この例において、ユーザは、検証可能なコンピューティング・システムを用いて、ユーザが信頼できるかどうかわからない1つ又は複数の作業器コンピューティング・デバイスにおいて対象機能105を実施する。対象機能の実施中又は対象機能の完了により、検証可能なコンピューティング・システムは、作業器コンピューティング・デバイスが対象機能を正しく実行したこと及び対象機能の1次プログラムが改竄されていないことを示す証明195を生成する。
【0011】
検証可能なコンピューティング・システム100は、作業器コンピューティング・デバイス110(「作業器」)、検証器コンピューティング・デバイス120(「検証器」)、及びコンパイラ・コンピューティング・デバイス130(「コンパイラ」)を相互接続するコンピューティング・クラウドによって実施される。幾つかの実施形態において、作業器コンピューティング・デバイス110、検証器コンピューティング・デバイス120、及びコンパイラ・コンピューティング・デバイス130は、コンピューティング・クラウドにおいてユーザが利用できるリソースである。作業器コンピューティング・デバイス110は、ユーザによって信頼されても信頼されなくともよく、他方、コンパイラ・コンピューティング・デバイス130及び検証器コンピューティング・デバイス120は、ユーザによって信頼される。幾つかの実施形態において、ユーザによって信頼されるクライアント・コンピューティング・デバイス140(「クライアント」)が、コンパイラ・コンピューティング・デバイス130及び検証器コンピューティング・デバイス120を実施する
【0012】
作業器コンピューティング・デバイス110は、主プロセッサ150及びコプロセッサ160を含むことができる。幾つかの実施形態において、主プロセッサ150及びコプロセッサ160は、作業器コンピューティング・デバイス110内の異なる集積回路(IC)である。幾つかの実施形態において、主プロセッサ150及びコプロセッサ160は、コンピューティング・デバイスの1つ又は複数の処理ユニット(例えば、プロセッサ)により実行されるソフトウェア命令のモジュールである。幾つかの実施形態において、主プロセッサ150及びコプロセッサ160は、電子装置の1つ又は複数のICによって実装されるハードウェア回路のモジュールである。作業器コンピューティング・デバイス110、検証器コンピューティング・デバイス120、コンパイラ・コンピューティング・デバイス130、又は、クライアント・コンピューティング・デバイス140を実装することができる例示的なコンピューティング・デバイス700は、以下で図7を参照して説明されることになる。
【0013】
対象機能105は、1次プログラム155及び検証ロジック165にコンパイルされる。図1aは、1次プログラム155及び検証ロジック165への対象機能105のコンパイルを示す。コンパイラ・コンピューティング・デバイス130は、対象機能105のソースコードを1次プログラム155及び対応する検証ロジック165にコンパイルする。1次プログラム155は、主プロセッサ150によって実行されるようにコンパイルされ、検証ロジック165は、コプロセッサ160によって実行されるように(又はコプロセッサ160を構成するように)コンパイルされる。1次プログラム155は、1次プログラムのプログラム状態を含むテレメトリを生成するようにコンパイルされる。幾つかの実施形態において、1次プログラム155は、エンコードされる、もしくは特定の位置及びシーケンスに置かれる、又はその両方のプログラム状態を生成するようにコンパイルされる。検証ロジック165は、1次プログラム155から生成されたテレメトリを処理して証明を生成するようにコンパイルされる。
【0014】
図1bは、主プロセッサ150による1次プログラムの実行、及びコプロセッサ160による検証ロジック165の実行を示す。主プロセッサ150は、プログラム入力170に基づいて1次プログラム155を実行し、出力175を生成する。プログラム入力170は、暗号化されていてもよいし、ゼロ知識証明プロトコルの一部としての根本的秘密に関するステートメントであってもよい。幾つかの実施形態において、根本的秘密は、作業器コンピューティング・デバイス110によって保持され、対象機能105及びクライアント140には明らかにされない。幾つかの実施形態において、根本的秘密は、クライアント・コンピューティング・デバイス140によって保持され、1次プログラム155を実行している作業器コンピューティング・デバイスには明らかにされない。
【0015】
主プロセッサ150内の動作は、計測又はテレメトリ180として監視され、記録される。テレメトリ180は、主プロセッサ150によって用いられる種々のメモリ、レジスタ、又はストレージ・デバイスのコンテンツを含むことができる。テレメトリ180は、さらに、主プロセッサ150内の種々のコンポーネントを相互接続するバスから捕捉されたデータを含むことができる。主プロセッサ150が、対象機能105の1次プログラム155を実行するとき、テレメトリ180は、1次プログラムのプログラム状態を含むことができる。テレメトリ180は、リンク190を通してコプロセッサ160が利用できるようにされる。
【0016】
コプロセッサ160は、数学的演算を行うための高度に並列化された計算を実施することができるリソースを含む。コプロセッサ160のリソースは、検証ロジック165が主プロセッサ150のテレメトリ180を処理して証明195を生成するように構成される。図1bは、主プロセッサ150からのテレメトリ180に基づいて証明195を生成するコプロセッサ160を示す。幾つかの実施形態において、テレメトリ180は、1次プログラム155のプログラム状態を含み、証明195は、プログラム状態に基づいて生成される。1次プログラムが改竄されているか、さもなければ損なわれている場合、プログラム状態は期待されるように挙動せず、証明195は、検証器コンピューティング・デバイス120におけるチェックに失敗することになる。
【0017】
検証器コンピューティング・デバイス120は、証明195を受け取り、この証明を用いて、1次プログラムが改竄されているかどうかを判断する。具体的には、証明195は、1次プログラム155が、出力175に達するために期待される様式でプログラム状態を生成したかどうかを判断するために用いられる。証明195は、(例えば、検証器コンピューティング・デバイスにより)出力175が主プロセッサ150によって正当に生成されるかどうかを判断するために用いることもできる。
【0018】
幾つかの実施形態において、証明195は、テレメトリ180内のプログラム状態に基づいて数学的に生成され、改竄されることなく対象機能が忠実に実行されることを保証する。図2は、例示的な一実施形態による、検証可能なコンピューティング・システム100のデータフローを概念的に示す。示されているように、クライアント・コンピューティング・デバイス140は、パブリック・キー210及びプライベート・キー220(又は秘密キー)の二つのキーを生成する。キー210及び220は、クライアントのセキュリティ・パラメータに基づいて生成される。プライベート・キー220は、検証器120により、最終的な証明195を検証するために使用されるものである。パブリック・キー210は、対象機能105をコンパイルして1次プログラム155及び検証ロジック165を生成するために用いられる。
【0019】
プログラム入力170は、暗号化されていてもよいし、ゼロ知識証明プロトコルの一部としての根本的秘密に関するステートメントであってもよい。主プロセッサ150は、テレメトリ180内のプログラム状態を含むように構成された1次プログラム155を実行する。コプロセッサ160は、パブリック・キー210に従ってテレメトリ180を証明195内にエンコードする検証ロジックを実施する。検証ロジック165及び1次プログラム155が改竄されていない場合、コプロセッサ160によって生成された証明195は、検証器120におけるプライベート・キー220を用いるチェックをパスすると期待される。しかし、1次プログラム155又は検証ロジック165が損なわれている場合、証明195は、検証器120におけるチェックをパスする見込みがない。
【0020】
図3a及び図3bは、テレメトリから証明を生成することを概念的に示す。テレメトリのコンテンツは、主プロセッサ150の種々の部分から収集される。コンテンツは、1次プログラムのプログラム状態(例えば、S1からS8まで)を含む。図3aは、1次プログラムが改竄されてない場合のテレメトリ180の例示的なコンテンツを示す。テレメトリ内のプログラム状態は、適切にコード化される(例えば、パブリック・キー210に基づく適切な多項式表示で)、もしくは予期される位置及びシーケンスにある、又はその両方である。このテレメトリのコンテンツに基づいて、コプロセッサ160(検証ロジック165を実行する)は、検証器コンピューティング・デバイス120におけるチェックをパスする証明を生成する。図3bは、1次プログラムが改竄されている場合のテレメトリ180の別の例示的なコンテンツを示す。このコンテンツは、不適切にコード化されている(例えば、太字で示されている、パブリック・キーに基づく適切な多項式表現でない)か、予期される位置もしくはシーケンスにないか、又は全体が欠けているプログラム状態を含む場合がある。このテレメトリのコンテンツに基づいて、コプロセッサ160は、検証器コンピューティング・デバイス120におけるチェックに失敗する証明を生成する。
【0021】
図1に示されるように、リンク190は、テレメトリ180を主プロセッサ150からコプロセッサ160へ伝える。幾つかの実施形態において、リンク190は、コプロセッサ160が主プロセッサ150の動作に実時間で影響を及ぼすことを可能にする双方向リンクである。図4は、例示的な一実施形態による、主プロセッサ150とコプロセッサ160との間のリンクとしての双方向キャッシュ・コヒーレント相互接続を示す。
【0022】
示されるように、主プロセッサ150は、1次プログラム155によって生成される1次プログラムのプログラム状態及びプログラムの他の変数又は状態を含むデータを格納するために、データ・メモリ410を用いる。データ・メモリ410は、また、コプロセッサ160によってアクセス可能であり、コプロセッサ160は、データ・メモリ410のコンテンツをテレメトリ180として用いて、証明195を生成する。幾つかの実施形態において、コプロセッサ160は、データ・メモリ410の、1次プログラムのテンポラリ変数を含むコンテンツを修正することができる。従って、主プロセッサ150上で実行中の1次プログラム155は、コプロセッサ160による証明の計算によって直接影響される場合がある。1次プログラム155のプログラム状態のシーケンスもまた、コプロセッサ160における証明の計算によって影響される場合がある。
【0023】
幾つかの実施形態において、リンク190は、テレメトリを主プロセッサからコプロセッサに渡す一方向リンクである。図5は、主プロセッサとコプロセッサとの間の一方向トランスペアレント・バスを示す。示されるように、主プロセッサ150によって生成されるプログラム状態は、信号バス520を通して、コプロセッサ160へ、テレメトリの一部として送られる。コプロセッサ160による証明の計算は、主プロセッサ150の動作に実時間の影響を及ぼさない。主プロセッサ150は、1次プログラムのプログラム状態及び他の変数を格納するためにデータ・メモリ510を用いる。しかし、コプロセッサ160は、データ・メモリ510への書き込みアクセスを有さない。換言すれば、1次プログラムのプログラム状態のシーケンスは、コプロセッサ160における証明の計算には影響されない。
【0024】
図6は、例示的な一実施形態による、検証可能なコンピューティング・システムを動作させるためのプロセス600を概念的に示す。幾つかの実施形態において、プロセス600は、主プロセッサ上で走る1次プログラムに関する証明を生成するためにコプロセッサを用いる作業器コンピューティング・デバイスによって行われる。幾つかの実施形態において、検証可能なコンピューティング・システム内の作業器コンピューティング・デバイス(例えば、作業器コンピューティング・デバイス110)の1つ又は複数の処理ユニット(例えば、プロセッサ)が、コンピュータ可読媒体内に格納されている命令を実行することによってプロセス600を行う。
【0025】
作業器コンピューティング・デバイスは、(ステップ610において)対象機能に基づいて生成された1次プログラム及び検証ロジックを受け取る。作業器コンピューティング・デバイスは、(ステップ620において)1次プログラムを実行するように主プロセッサを構成する。作業器コンピューティング・デバイスは、(ステップ630において)検証ロジックを実施するようにコプロセッサを構成する。コプロセッサは、主プロセッサのテレメトリを処理して1次プログラムが改竄されているかどうかを判断するための証明にする検証ロジックを実施するように構成することができる、多数の並列コンピューティング・リソースを含む設計可能ロジック・アレイとすることができる。
【0026】
作業器コンピューティング・デバイスは、(ステップ640において)主プロセッサが1次プログラムを実行している際に主プロセッサからテレメトリを収集する。テレメトリは、主プロセッサにおいて走っている1次プログラムのプログラム状態、又はプログラムの他の変数もしくは状態を含むことができる。
【0027】
作業器コンピューティング・デバイスは、(ステップ650において)テレメトリをコプロセッサに提供する。幾つかの実施形態において、テレメトリは、一方向トランスペアレント・バスを通してテレメトリを転送することによって、コプロセッサに提供される。幾つかの実施形態において、テレメトリは、主プロセッサのデータ・メモリ内に格納され、それ故に、コプロセッサが双方向キャッシュ・コヒーレント相互接続を通して主プロセッサのデータ・メモリにアクセスできるようにすることによって、テレメトリがコプロセッサに提供される。これらの実施形態の幾つかにおいて、コプロセッサは、データ・メモリのコンテンツを修正することができ、修正されたコンテンツは、1次プログラムの実行に影響を及ぼす場合がある。
【0028】
作業器コンピューティング・デバイスは、(ステップ660において)検証ロジックを実施するコプロセッサにおいてテレメトリを用いて、一組の数学的演算に従って証明を生成する。テレメトリが適切にコード化されるか、もしくはプログラム状態が期待される位置及びシーケンスにあるか、又はその両方である場合、一組の数学的演算は、検証器におけるチェックをパスする証明を生成することが予期される。他方、テレメトリが、不適切にコード化されているか、予期される位置もしくはシーケンスにないか、又は全体が欠けているプログラム状態を含む場合、一組の数学的演算は、検証器において失敗する証明を生成すると予期される。
【0029】
作業器コンピューティング・デバイスは、(ステップ670において)1次プログラムが改竄されているかどうかを判断するための証明を検証器コンピューティング・デバイスに提供する。証明は、プログラムの実行から帯域外で検証器に送られ、プログラムが改竄さなかったこと及びプログラムの結果が信頼できることを証明する。
【0030】
本開示は、システム、方法、もしくはコンピュータ・プログラム製品又はそれらの組み合わせとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。
【0031】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの:すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、命令がそこに記録された機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
【0032】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくは無線ネットワーク又はそれらの組み合わせなどのネットワークを介して、外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ又はそれらの組み合わせを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納する。本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコア、ファームウェア命令、状態設定データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述されるソース・コア又はオブジェクト・コアとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラム可能ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、本開示の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して、電子回路を個別化することができる。
【0033】
本開示の態様は、本開示の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図もしくはブロック図又はその両方を参照して説明される。フローチャート図もしくはブロック図又はその両方の各ブロック、並びにフローチャート図もしくはブロック図又はその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて機械を製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、もしくは他のデバイス又はその組み合わせを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を含むようにすることもできる。
【0034】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ、他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。図面(例えば図6)内のフローチャート及びブロック図は、本開示の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、テンソルレット、ブロック、又は命令の一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で行われることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図もしくはフローチャート図又はその両方の各ブロック、及びブロック図もしくはフローチャート図又はその両方におけるブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
【0035】
図7は、本開示の例示的な一実施形態による検証可能なコンピューティング・システム内に作業器コンピューティング・デバイスを実装するために使用することができるデータ処理システム700及び750のコンポーネントのブロック図を示す。図7は、1つの実装の例のみを与えるものであり、種々の実施形態を実施することができる環境に関する何らかの制限を意味するものではないことを認識されたい。図示された環境に対して、多くの修正を、設計及び実装要件に基づいて、加えることができる。
【0036】
データ処理システム700及び750は、機械可読プログラム命令を実行することができる任意の電子デバイスを表す。データ処理システム700及び750は、スマートフォン、コンピュータ・システム、PDA、又は他の電子デバイスを表すことができる。コンピューティング・システム、環境、もしくはデータ処理システム700及び750によって表すことができる構成、又はそれらの両方は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンド・ヘルド又はラップ・トップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、ネットワークPC、ミニコンピュータ・システム、及び、任意の上記のシステム又はデバイスを含む分散型クラウド・コンピューティング環境を含むが、それらに限定されない。
【0037】
データ処理システム700及び750は、図7に示されるように、内部コンポーネント705のセット及び外部コンポーネント755のセットを含むことができる。内部コンポーネント705のセットは、1つ又は複数のバス726上に、1つ又は複数のプロセッサ720、1つ又は複数のコンピュータ可読RAM722、及び1つ又は複数のコンピュータ可読ROM724、並びに、1つ又は複数のオペレーティング・システム728、及び1つ又は複数のコンピュータ可読有形ストレージ・デバイス730を含む。1つ又は複数のオペレーティング・システム728、及びプロセス600を実行するためのプログラムなどのプログラムは、1つ又は複数のコンピュータ可読RAM722(典型的にはキャッシュ・メモリを含む)を介して1つ又は複数のプロセッサ720による実行のために、1つ又は複数のコンピュータ可読有形ストレージ・デバイス730に格納される。図7に示される実施形態において、コンピュータ可読有形ストレージ・デバイス730の各々は、内部ハード・ドライブの磁気ディスク・ストレージ・デバイスである。代替的に、コンピュータ可読有形ストレージ・デバイス730の各々は、ROM724、EPROM、フラッシュ・メモリ、又は、コンピュータ・プログラム及びデジタル情報を格納することができる任意の他のコンピュータ可読有形ストレージ・デバイスなどの半導体ストレージ・デバイスである。
【0038】
内部コンポーネント705のセットは、さらに、CD-ROM、DVD、メモリ・スティック、磁気テープ、磁気ディスク、光ディスク、又は半導体ストレージ・デバイスなどの、1つ又は複数の携帯コンピュータ可読有形ストレージ・デバイス786から読み出し及びそれらへ書き込むための、R/Wドライブ又はインターフェース732を含む。プロセス600を実行するための命令は、1つ又は複数の、それぞれの携帯コンピュータ可読有形ストレージ・デバイス786に格納することができ、それぞれR/Wドライブ又はインターフェース732を介して読み出すことができ、それぞれのハード・ドライブ730にロードすることができる。
【0039】
内部コンポーネント705のセットは、さらに、ネットワーク・アダプタ(又は切替えポート・カード)、又は、TCP/IPアダプタ・カード、無線Wi-Fiインターフェース・カード、3Gもしくは4G無線インターフェース・カードなどのインターフェース736、又は、他の有線もしくは無線通信リンクを含むことができる。上記のプロセス又はプログラムの命令は、外部コンピュータ(例えば、サーバー)から、ネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、又は他の広域ネットワーク)及びそれぞれのネットワーク・アダプタ又はインターフェース736を介して、ダウンロードすることができる。ネットワーク・アダプタ(又は切替えポート・カード)又はインターフェース736から、前述のプログラム又はプロセスの命令及びデータが、それぞれのハード・ドライブ730にロードされる。ネットワークは、銅線、光ファイバ、無線伝送、ルータ、ファイアウォール、スウィッチ、ゲートウェイ・コンピュータもしくはエッジ・サーバ、又はそれらの組み合わせを含むことができる。
【0040】
外部コンポーネント755のセットは、コンピュータ・ディスプレイ・モニタ770、キーボード780、及びコンピュータ・マウス784を含むことができる。外部コンポーネント755のセットは、さらに、タッチ・スクリーン、仮想キーボード、タッチ・パッド、ポインティング・デバイス、及び他のヒューマン・インタフェース・デバイスを含むことができる。内部コンポーネント705のセットは、さらに、コンピュータ・ディスプレイ・モニタ770、キーボード780、及びコンピュータ・マウス784にインターフェース接続するためのデバイス・ドライバ740を含む。デバイス・ドライバ740、R/Wドライブ又はインターフェース732及びネットワーク・アダプタ又はインターフェース736は、ハードウェア及びソフトウェア(ストレージ・デバイス730もしくはROM724又はそれらの両方に格納される)を備える。
【0041】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載される教示の実装は、クラウド・コンピューティング環境に限定されないことが予め理解される。むしろ、本発明の実施形態は、現在知られている又は後に開発される任意の他のタイプのコンピューティング環境と関連して実施することが可能である。クラウド・コンピューティングは、最小限の管理労力又はサービス・プロバイダとの対話で迅速にプロビジョニング及び解放することができる構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの、便利なオンデマンドのネットワークアクセスを可能にするためのサービス配信のモデルである。このクラウドモデルは、少なくとも5つの特徴、少なくとも3つのサービスモデル、及び少なくとも4つのデプロイメント・モデルを含むことができる。
【0042】
オンデマンド・セルフ・サービス:クラウド・コンシューマは、必要に応じて、サーバ時間及びネットワーク・ストレージ等のコンピューティング機能を、人間がサービスのプロバイダと対話する必要なく自動的に、一方的にプロビジョニングすることができる。
【0043】
広範なネットワークアクセス:機能は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的な機構を通じてアクセスされる。
【0044】
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを用いて、異なる物理及び仮想リソースを要求に応じて動的に割り当て及び再割り当てすることにより、複数のコンシューマにサービスを提供するためにプールされる。コンシューマは、一般に、提供されるリソースの正確な位置についての制御又は知識を持たないという点で位置とは独立しているといえるが、より抽象化レベルの高い位置(例えば、国、州、又はデータセンタ)を特定できる場合がある。
【0045】
迅速な弾力性:機能は、迅速かつ弾力的に、幾つかの場合自動的に、プロビジョニングして素早くスケールアウトし、迅速にリリースして素早くスケールインさせることができる。コンシューマにとって、プロビジョニングに利用可能なこれらの機能は、多くの場合、無制限であり、いつでもどんな量でも購入できるように見える。
【0046】
サービスの測定:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザアカウント)に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御及び最適化する。リソース使用を監視し、制御し、報告し、利用されるサービスのプロバイダとコンシューマの両方に対して透明性をもたらすことができる。
【0047】
Software as a Service(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。これらのアプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定の考え得る例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション機能をも含めて、基礎をなすクラウド・インフラストラクチャを管理又は制御しない。
【0048】
Platform as a Service(PaaS):プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが生成した又は取得したアプリケーションを、クラウド・インフラストラクチャ上にデプロイするために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージなどの基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、デプロイされたアプリケーション、及び場合によってはアプリケーションホスティング環境構成に対して制御を有する。Infrastructure as a Service(IaaS):コンシューマが、オペレーティング・システム及びアプリケーションを含み得る任意のソフトウェアをデプロイ及び動作させることができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースをプロビジョニンングするために、コンシューマに提供される機能である。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションに対する制御、及び場合によってはネットワーク・コンポーネント(例えば、ホストのファイアウォール)選択の限定された制御を有する。
【0049】
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運営される。このクラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
【0050】
コミュニティ・クラウド:クラウド・インフラストラクチャは、幾つかの組織によって共有され、共通の関心事項(例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンス上の考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、オンプレミス又はオフプレミスに存在することができる。
【0051】
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループに利用可能であり、クラウド・サービスを販売する組織によって所有される。
【0052】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術(例えば、クラウド間の負荷分散のためのクラウドバースティング)によって結び付けられる2つ又はそれより多いクラウド(プライベート、コミュニティ、又はパブリック)の混成物である。
【0053】
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、及びセマンティック相互運用性に焦点を置くことを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0054】
ここで図8を参照すると、例示的なクラウド・コンピューティング環境850が示される。図示のように、クラウド・コンピューティング環境850は、例えば、携帯情報端末(PDA)又は携帯電話854A、デスクトップ・コンピュータ854B、ラップトップ・コンピュータ854C、もしくはコンピュータ・システム854N又はそれらの組み合わせなどのような、クラウド・コンシューマによって用いられるローカル・コンピューティング・デバイスと通信することができる、1つ又は複数のクラウド・コンピューティング・ノード810を含む。ノード810は、互いに通信することができる。これらのノードは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、又はこれらの組み合わせなど、1つ又は複数のネットワークにおいて物理的又は仮想的にグループ化することができる(図示せず)。このことは、クラウド・コンピューティング環境850が、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のない、infrastructure as a service、platform as a service、もしくはsoftware as a service又はそれらの組み合わせを提供することを可能にする。図8に示されるコンピューティング・デバイス854A~Nのタイプは単に例示であることを意図し、コンピューティング・ノード810及びクラウド・コンピューティング環境850は、任意のタイプのネットワーク上でもしくはネットワーク・アドレス指定可能な接続(例えば、ウェブ・ブラウザを用いる)上で又はその両方で、任意のタイプのコンピュータ化されたデバイスと通信できることを理解されたい。
【0055】
ここで図9を参照すると、クラウド・コンピューティング環境850(図8)によって提供される機能抽象化層のセットが示される。図9に示されるコンポーネント、層、及び機能は単に例示であることを意図し、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示されるように、以下の層及び対応する機能が提供される。
【0056】
ハードウェア及びソフトウェア層960は、ハードウェア及びソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、メインフレーム961と、RISC(Reduced Instruction Set Computer(縮小命令セットコンピュータ))アーキテクチャ・ベースのサーバ962と、サーバ963と、ブレード・サーバ964と、ストレージ・デバイス965と、ネットワーク及びネットワーク・コンポーネント966と、が含まれる。幾つかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア967と、データベース・ソフトウェア968とを含む。
【0057】
仮想化層970は、抽象化層を提供し、この層により、仮想エンティティの以下の例、すなわち、仮想サーバ971、仮想ストレージ972、仮想プライベート・ネットワークを含む仮想ネットワーク973、仮想アプリケーション及びオペレーティング・システム974、並びに仮想クライアント975を提供することができる。
【0058】
一例においては、管理層980は、以下で説明される機能を提供することができる。リソース・プロビジョニング981は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格決定982は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡と、これらのリソースの消費に対する課金又は請求とを提供する。一例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクに対する識別情報の検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータル983は、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理984、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント(Service Level Agreement、SLA)の計画及び履行985は、SLAに従って将来の要件が予測されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
【0059】
ワークロード層990は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロード及び機能の例として、マッピング及びナビゲーション991、ソフトウェア開発及びライフサイクル管理992、仮想教室教育配信993、データ分析処理994、トランザクション処理995、並びにワークロード996が挙げられる。幾つかの実施形態において、ワークロード996は、コンパイラー・コンピューティング・デバイス130、検証器コンピューティング・デバイス120、もしくはクライアント・コンピューティング・デバイス140又はそれらの組み合わせの動作の幾つかを実行する。ワークロード996は、さらに、作業器コンピューティング・デバイス110の機能を、1次プログラム及び検証ロジックを作業器コンピューティング・デバイス110内の主プロセッサ(単数又は複数)及びコプロセッサ(単数又は複数)に分散させることによって実行することができる。
【0060】
前述の1つ又は複数の実施形態は、対象機能の1次プログラムを実行する主プロセッサと、1次プログラムが改竄されているかどうかを判断するために主プロセッサのテレメトリに基づく証明を生成するコプロセッサとを有する1つ又は複数のコンピューティング・デバイスを有することによって、コンピュータ・インフラストラクチャ内部に検証可能なコンピューティング・システムを実装する。そのコンピュータ・インフラストラクチャはまた、対象機能をコンパイルして、主プロセッサ及びコプロセッサにおいて実行される1次プログラム及び検証ロジックを生成するために用いられる。
図1a
図1b
図2
図3a
図3b
図4
図5
図6
図7
図8
図9