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

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

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

特表2024-512933信頼できるフィールド・プログラマブル・ゲート・アレイ
<>
  • 特表-信頼できるフィールド・プログラマブル・ゲート・アレイ 図1
  • 特表-信頼できるフィールド・プログラマブル・ゲート・アレイ 図2
  • 特表-信頼できるフィールド・プログラマブル・ゲート・アレイ 図3
  • 特表-信頼できるフィールド・プログラマブル・ゲート・アレイ 図4
  • 特表-信頼できるフィールド・プログラマブル・ゲート・アレイ 図5
  • 特表-信頼できるフィールド・プログラマブル・ゲート・アレイ 図6A
  • 特表-信頼できるフィールド・プログラマブル・ゲート・アレイ 図6B
  • 特表-信頼できるフィールド・プログラマブル・ゲート・アレイ 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-21
(54)【発明の名称】信頼できるフィールド・プログラマブル・ゲート・アレイ
(51)【国際特許分類】
   H04L 9/10 20060101AFI20240313BHJP
   G06F 21/76 20130101ALI20240313BHJP
【FI】
H04L9/10 A
G06F21/76
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023556778
(86)(22)【出願日】2022-03-16
(85)【翻訳文提出日】2023-09-14
(86)【国際出願番号】 EP2022056885
(87)【国際公開番号】W WO2022207328
(87)【国際公開日】2022-10-06
(31)【優先権主張番号】17/218,496
(32)【優先日】2021-03-31
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】プルーチャート、ジーン-オリヴァー
(72)【発明者】
【氏名】クマール、アーヴィンド
(72)【発明者】
【氏名】フェイファー、ダーク
(72)【発明者】
【氏名】安藤 崇志
(57)【要約】
不正防止フィールド・プログラマブル・ゲート・アレイ(FPGA)を作り出すこと、および不正防止FPGAをリモートに再プログラミングすることへのアプローチ。1つの態様では、暗号鍵がFPGAの物理複製困難関数(PUF)に格納されているかどうかを判定すること。さらに、暗号鍵がPUFに格納されていないことに応答して、FPGAの配線工程(BEOL)に関連付けられた不正防止メモリに暗号鍵を書き込むこと。別の態様では、プログラム鍵およびルックアップ・テーブル(LUT)を不正防止メモリに書き込むこと。
【特許請求の範囲】
【請求項1】
不正防止フィールド・プログラマブル・ゲート・アレイ(FPGA)を作り出すためのコンピュータ実行方法であって、前記コンピュータ実行方法が、
1つまたは複数のプロセッサによって、暗号鍵が前記FPGAの物理複製困難関数(PUF)に格納されているかどうかを判定することと、
前記暗号鍵がPUFに格納されていないことに応答して、前記1つまたは複数のプロセッサによって、前記FPGAの配線工程(BEOL)に関連付けられた不正防止メモリに暗号鍵を書き込むことと、
前記1つまたは複数のプロセッサによって、前記不正防止メモリにプログラム鍵を書き込むことと、
前記1つまたは複数のプロセッサによって、前記不正防止メモリにルックアップ・テーブル(LUT)を書き込むことと
を含む、コンピュータ実行方法。
【請求項2】
前記不正防止メモリが、抵抗変化型ランダム・アクセス・メモリ(RRAM)、スピン・トランスファ(ST)RRAM、またはスピン・トランスファ・トルク(STT)RRAMのうちの少なくとも1つである、請求項1に記載のコンピュータ実行方法。
【請求項3】
前記FPGAの第1の部分が、信頼できない半導体製造工場で製造され、残りの部分が、信頼できる半導体製造工場で製造される、請求項1または2に記載のコンピュータ実行方法。
【請求項4】
前記第1の部分が、前記FPGAの基板工程(FEOL)であり、前記残りの部分が、前記FPGAの前記BEOLである、請求項3に記載のコンピュータ実行方法。
【請求項5】
前記FPGAが、前記LUTによる使用のための前記FEOLにおける1つまたは複数のマルチプレクサをさらに備える、請求項4に記載のコンピュータ実行方法。
【請求項6】
前記FPGAが、前記LUTによる使用のための前記FEOLにおける1つまたは複数のフリップ・フロップをさらに備える、請求項4に記載のコンピュータ実行方法。
【請求項7】
前記PUFが、前記不正防止メモリに実装される、請求項2に記載のコンピュータ実行方法。
【請求項8】
前記暗号鍵が、プライベート・クラウドの信頼できるデータベースに格納され、信頼できる施設で前記FPGAに書き込まれる、請求項1ないし7のいずれかに記載のコンピュータ実行方法。
【請求項9】
フィールド・プログラマブル・ゲート・アレイ(FPGA)の不正防止リモート再プログラミングのためのコンピュータ実行方法であって、前記コンピュータ実行方法が、
1つまたは複数のプロセッサによって、リモートFPGAからの再プログラミング・リクエストを受け取ることと、
前記1つまたは複数のプロセッサによって、ランダム初期化ベクトルを生成することと、
前記1つまたは複数のプロセッサによって、前記リモートFPGAと共有された暗号鍵でプログラミング鍵およびビット・ファイルを暗号化することと、
前記1つまたは複数のプロセッサによって、前記ランダム初期化ベクトル、前記暗号化済プログラミング鍵、および前記暗号化済ビット・ファイルを前記FPGAに送ることと
を含む、コンピュータ実行方法。
【請求項10】
前記暗号化が、対称暗号化である、請求項9に記載のコンピュータ実行方法。
【請求項11】
前記ビット・ファイルが、LUTのためのブール論理を備える、請求項9または10に記載のコンピュータ実行方法。
【請求項12】
前記暗号鍵が、前記FPGA上の配線工程(BEOL)に関連付けられた不正防止メモリに格納される、請求項9ないし11のいずれかに記載のコンピュータ実行方法。
【請求項13】
前記不正防止メモリが、抵抗変化型ランダム・アクセス・メモリ(RRAM)、スピン・トランスファ(ST)RRAM、またはスピン・トランスファ・トルク(STT)RRAMのうちの少なくとも1つである、請求項12に記載のコンピュータ実行方法。
【請求項14】
前記1つまたは複数のプロセッサによって、復号された暗号化済プログラミング鍵と、前記不正防止メモリに格納されたローカル・プログラミング鍵との間のマッチを指示する確認応答を受け取ること
をさらに含む、請求項12に記載のコンピュータ実行方法。
【請求項15】
前記暗号化済プログラミング鍵が、前記不正防止メモリに格納された前記暗号鍵で復号される、請求項14に記載のコンピュータ実行方法。
【請求項16】
不正防止フィールド・プログラマブル・ゲート・アレイ(FPGA)を作り出すためのコンピュータ・システムであって、前記コンピュータ・システムが、
1つまたは複数のコンピュータ・プロセッサと、
1つまたは複数のコンピュータ可読ストレージ媒体と、
前記1つまたは複数のプロセッサのうちの少なくとも1つによる実行のために前記1つまたは複数のコンピュータ可読ストレージ媒体に格納されたプログラム命令であって、前記プログラム命令が、
暗号鍵が前記FPGAの物理複製困難関数(PUF)に格納されているかどうかを判定するためのプログラム命令、
前記暗号鍵がPUFに格納されていないことに応答して、前記FPGAの配線工程(BEOL)に関連付けられた不正防止メモリに暗号鍵を書き込むためのプログラム命令、
前記不正防止メモリにプログラム鍵を書き込むためのプログラム命令、および
前記不正防止メモリにルックアップ・テーブル(LUT)を書き込むためのプログラム命令
を含む、前記プログラム命令と
を備える、コンピュータ・システム。
【請求項17】
前記不正防止メモリが、抵抗変化型ランダム・アクセス・メモリ(RRAM)、スピン・トランスファ(ST)RRAM、またはスピン・トランスファ・トルク(STT)RRAMのうちの少なくとも1つである、請求項16に記載のシステム。
【請求項18】
前記FPGAの基板工程(FEOL)が、信頼できない半導体製造工場で製造され、前記BEOLが、信頼できる半導体製造工場で製造される、請求項16に記載のシステム。
【請求項19】
前記FPGAが、前記LUTによる使用のための前記FEOLにおける1つまたは複数のマルチプレクサ、および前記LUTによる使用のための前記FEOLにおける1つまたは複数のフリップ・フロップをさらに備える、請求項18に記載のシステム。
【請求項20】
前記PUFが、前記不正防止メモリに実装される、請求項16に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般に、フィールド・プログラマブル・ゲート・アレイ(FPGA:Field Programmable Gate Array)に関し、より詳細には、FPGAの暗号化回路をセキュアにすることに関する。
【背景技術】
【0002】
FPGAは、フラッシュ・メモリに格納された、またはフラッシュ・カードに格納された、ネットワーク接続を通じて典型的にダウンロードされたビット・ファイルで構成される。通常、ビット・ファイルが暗号化されたとしても、ビット・ファイルをセキュアにするために使用される暗号鍵は、暗号鍵がスタティック・ランダム・アクセス・メモリ(SRAM)または埋め込まれたフラッシュに格納されるので、FPGAに対するサイド・チャネル攻撃またはピコ秒撮像回路分析(PICA)などの技術によって発見される恐れがある。暗号鍵が発見されると、ビット・ファイルは、修正またはリバース・エンジニアリングあるいはその両方が行われる恐れがある。このセキュリティ違反の結果は、システムに不正チップおよびコードを導入することと同等である。
【発明の概要】
【0003】
本発明の1つの態様によれば、不正防止フィールド・プログラマブル・ゲート・アレイ(FPGA)を作り出すためのコンピュータ実行方法が提供され、コンピュータ実行方法は、1つまたは複数のプロセッサによって、暗号鍵がFPGAの物理複製困難関数(PUF:physical unclonable function)に格納されているかどうかを判定することと、暗号鍵がPUFに格納されていないことに応答して、1つまたは複数のプロセッサによって、FPGAの配線工程(BEOL:back end of the line)に関連付けられた不正防止メモリ(tamper resistant memory)に暗号鍵を書き込むことと、1つまたは複数のプロセッサによって、不正防止メモリにプログラム鍵を書き込むことと、1つまたは複数のプロセッサによって、不正防止メモリにルックアップ・テーブル(LUT:look-up table)を書き込むこととを含む。
【0004】
本発明の別の態様によれば、フィールド・プログラマブル・ゲート・アレイ(FPGA)の不正防止リモート再プログラミングのためのコンピュータ実行方法が提供され、コンピュータ実行方法は、1つまたは複数のプロセッサによって、リモートFPGAからの再プログラミング・リクエストを受け取ることと、1つまたは複数のプロセッサによって、ランダム初期化ベクトルを生成することと、1つまたは複数のプロセッサによって、リモートFPGAと共有された暗号鍵でプログラミング鍵およびビット・ファイルを暗号化することと、1つまたは複数のプロセッサによって、ランダム初期化ベクトル、暗号化済プログラミング鍵、および暗号化済ビット・ファイルをFPGAに送ることとを含む。
【0005】
本発明の別の態様によれば、不正防止フィールド・プログラマブル・ゲート・アレイ(FPGA)を作り出すためのコンピュータ・システムが提供され、コンピュータ・システムは、1つまたは複数のコンピュータ・プロセッサと、1つまたは複数のコンピュータ可読ストレージ媒体と、1つまたは複数のプロセッサのうちの少なくとも1つによる実行のために1つまたは複数のコンピュータ可読ストレージ媒体に格納されたプログラム命令であって、プログラム命令が、暗号鍵がFPGAの物理複製困難関数(PUF)に格納されているかどうかを判定するためのプログラム命令、暗号鍵がPUFに格納されていないことに応答して、FPGAの配線工程(BEOL)に関連付けられた不正防止メモリに暗号鍵を書き込むためのプログラム命令、不正防止メモリにプログラム鍵を書き込むためのプログラム命令、および不正防止メモリにルックアップ・テーブル(LUT)を書き込むためのプログラム命令を含む、プログラム命令とを備える。
【0006】
本発明の他の態様および実施形態は、図面と共に行われるとき、本発明の諸原理を例として示す、以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【0007】
図1】本発明の実施形態による、クラウド・コンピューティング環境の図である。
図2】本発明の実施形態による、抽象化モデル層の図である。
図3】本発明の実施形態による、高レベル・アーキテクチャの図である。
図4】本発明の実施形態による、例示的詳細アーキテクチャの図である。
図5】本発明の実施形態による、例示的詳細アーキテクチャの図である。
図6A】本発明の実施形態による、方法のフローチャートである。
図6B】本発明の実施形態による、方法のフローチャートである。
図7】本発明の実施形態による、本明細書で説明される実施形態が実行され得るデータ処理システムの内部および外部構成要素のブロック図である。
【発明を実施するための形態】
【0008】
以下の説明は、本発明の一般的な原理を示すために行われ、本明細書で特許請求される発明の概念を限定するためのものではない。さらに、本明細書で説明される特定の特徴は、様々な可能な組合せおよび並べ替えのそれぞれにおいて、他の説明される特徴と組み合わせて使用可能である。
【0009】
本明細書で別途具体的に定義されない限り、すべての用語には、本明細書から示唆される意味、ならびに、当業者によって理解される意味、または辞書、論文などで定義されるような意味、あるいはその両方を含む、用語の最も広い可能な解釈が与えられることになる。
【0010】
本明細書および添付の特許請求の範囲で使用されるような、単数形「a」、「an」、および「the」は、別途指定のない限り、複数形の指示対象を含むことにも留意されなければならない。「備える(comprises)」または「備える(comprising)」という用語あるいはその両方は、本明細書で使用されるとき、述べられた特徴、整数、ステップ、動作、要素、または構成要素、あるいはその組合せの存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、またはそのグループ、あるいはその組合せの存在または追加を排除しないことがさらに理解されよう。
【0011】
以下の説明は、信頼できるフィールド・プログラマブル・ゲート・アレイ(FPGA)の製造および再プログラミングのいくつかの実施形態を開示する。本明細書で使用されるようなソフトウェアという用語は、ファームウェア、マイクロコードなどであるがこれらに限定されない任意のタイプのコンピュータ命令を含むことに留意されたい。
【0012】
本発明の1つの実施形態では、2ステップ製造プロセスでプログラム可能ロジックをFPGAに統合することを可能にする製造構成が提供される。第1のステップでは、「信頼できない」半導体製造工場が、基板工程(FEOL:front end of line)製造および第1の金属層の適用を行うことができる。第2のステップでは、「信頼できる」半導体製造工場が、配線工程(BEOL)製造およびメモリ構成を行うことができる。「信頼できる」対「信頼できない」は、特定の製造業者、およびFPGAの目的に関連付けられたロジックへの特定の製造業者のアクセスに関するものであることに留意されたい。例えば、物理複製困難関数(PUF)、ルックアップ・テーブル(LUT)データ、またはロジックのビット・ファイル、あるいはその組合せへのアクセスは、「信頼できる」半導体製造工場のために確保されるはずである。
【0013】
1つの実施形態では、BEOLメモリは、サイド・チャネル攻撃、ピコ秒撮像回路分析(PICA)攻撃、ディレイアリング攻撃、および測定攻撃などであるがこれらに限定されない攻撃に対する不正防止であるようにデザイン可能である。別の実施形態では、BEOLメモリは、PUFをデザインするために使用可能である。
【0014】
本明細書で開示された実施形態の長所は、メモリがFEOLに統合されるのではなく、メモリがロジックの上にスタックされることに基づく空間節約と、外部フラッシュ・メモリが不要であることと、LUTがロードされるとロードするべきビット・ファイルがないことに基づくエネルギー節約、つまりエネルギー節約と、FPGA「瞬時オン」能力、すなわちビット・ファイルをロードするのに必要な時間がないことに基づくより良い性能とを含む。
【0015】
1つの一般的な実施形態では、不正防止フィールド・プログラマブル・ゲート・アレイ(FPGA)を作り出すためのコンピュータ実行方法。1つの例では、コンピュータ実行方法は、信頼できる製造プロセスの終わりに、不正防止メモリに暗号鍵を書き込むことができる。暗号鍵は、また、クラウドの信頼できるデータベースに格納可能である。別の例では、コンピュータ実行方法は、信頼できる製造プロセスの最後に、不正防止メモリの製造のばらつきに基づいてランダムに生成された、物理複製困難関数(PUF)からの暗号鍵を読み込み、クラウドの信頼できるデータベースに暗号鍵を格納することができる。
【0016】
別の一般的な実施形態では、フィールド・プログラマブル・ゲート・アレイ(FPGA)の不正防止リモート再プログラミングのためのコンピュータ実行方法。コンピュータ実行方法は、リモートFPGAの再プログラミング・リクエストを受け取ることができる。例えば、リクエストは、ソフトウェア・アップデートを担当するクラウド環境のアプリケーションによって生成可能である。ランダム初期化ベクトルを生成すること、および1つまたは複数のプロセッサによって、リモートFPGAと共有された暗号鍵でプログラミング鍵およびビット・ファイルを暗号化すること。1つまたは複数のプロセッサによって、ランダム初期化ベクトル、暗号化済プログラミング鍵、および暗号化済ビット・ファイルをFPGAに送ること。
【0017】
別の一般的な実施形態では、不正防止フィールド・プログラマブル・ゲート・アレイ(FPGA)を作り出すためのコンピュータ・プログラム製品は、プログラム命令を具体化するコンピュータ可読ストレージ媒体を含む。プログラム命令は、前述のコンピュータ実行方法をコンピュータに実施させるようにコンピュータによって実行可能である。
【0018】
本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書で列挙される教示の実装形態は、クラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られているか、後で開発される、他の任意のタイプのコンピューティング環境と共に実行される能力がある。
【0019】
クラウド・コンピューティングは、最低限の管理努力またはサービスの提供者との対話で迅速に提供および解放されることが可能な、構成可能なコンピューティング・リソースの共用プール(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)への便利なオンデマンドのネットワーク・アクセスを可能にするための、サービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含み得る。
【0020】
特性は以下のとおりである。
【0021】
オンデマンド・セルフ・サービス:クラウド利用者は、サービスの提供者との人間対話の必要なく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピュータ処理能力を一方的に提供することができる。
【0022】
ブロード・ネットワーク・アクセス:能力は、ネットワーク上で利用可能であり、ヘテロジニアスなシンまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を推進する標準メカニズムを通じてアクセスされる。
【0023】
リソース・プーリング:提供者のコンピュータ処理リソースは、マルチ・テナント・モデルを使用して多数の利用者をサーブするためにプールされ、要求に従って、種々の物理および仮想リソースの動的な割当ておよび再割当てが行われる。利用者には一般に、提供されるリソースの正確な位置についての制御権も知識もなく、抽象化のより高いレベル(例えば、国、州、またはデータセンタ)で位置を指定でき得るという点で位置独立の意味がある。
【0024】
迅速伸縮性:能力は、素早くスケール・アウトするために迅速かつ伸縮自在に、場合によっては自動的に提供され、素早くスケール・インするために迅速に解放されることが可能である。利用者にとって、提供のために利用可能な能力は、無制限のように見えることが多く、任意の量でいつでも購入可能である。
【0025】
測定されるサービス:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適した抽象化のいくつかのレベルで計量能力を活用することによって、リソース利用を自動的に制御し、最適化する。リソース利用率の監視、制御、レポートが行われることが可能であり、利用されるサービスの提供者と利用者双方に透明性をもたらす。
【0026】
サービス・モデルは以下のとおりである。
【0027】
サービスとしてのソフトウェア(SaaS):利用者に提供される能力は、クラウド・インフラストラクチャ上で動く提供者のアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ(例えば、ウェブベースの電子メール)などの、シン・クライアント・インターフェースを通じて様々なクライアント・デバイスからアクセス可能である。利用者は、限定的なユーザ固有アプリケーション構成設定を例外とする可能性もあるが、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または、ことによると個々のアプリケーション能力を含む、基礎をなすクラウド・インフラストラクチャの管理も制御も行わない。
【0028】
サービスとしてのプラットフォーム(PaaS):利用者に提供される能力は、提供者がサポートするプログラミング言語およびツールを使用して制作された、利用者制作または獲得アプリケーションを、クラウド・インフラストラクチャ上に配置することである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基礎をなすクラウド・インフラストラクチャの管理も制御も行わないが、配置したアプリケーション、および場合によっては、アプリケーションをホストする環境構成に対する制御を行う。
【0029】
サービスとしてのインフラストラクチャ(IaaS):利用者に提供される能力は、処理、ストレージ、ネットワーク、ならびに、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを利用者が配置し、動かすことができる他の基本的なコンピュータ処理リソースを提供することである。利用者は、基礎をなすクラウド・インフラストラクチャの管理も制御も行わないが、オペレーティング・システム、ストレージ、配置したアプリケーションに対する制御、および場合によっては、ネットワーキング構成要素(例えば、ホスト・ファイアウォール)の選択についての限定的な制御を行う。
【0030】
展開モデルは以下のとおりである。
【0031】
プライベート・クラウド:クラウド・インフラストラクチャは、組織のためにだけ運用される。クラウド・インフラストラクチャは、組織またはサード・パーティによって管理されてもよく、敷地内にあっても敷地外にあってもよい。
【0032】
コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織によって共有され、懸念(例えば、ミッション、セキュリティ要件、ポリシ、およびコンプライアンス考慮)を共有してきた固有のコミュニティをサポートする。クラウド・インフラストラクチャは、組織またはサード・パーティによって管理されてもよく、敷地内にあっても敷地外にあってもよい。
【0033】
パブリック・クラウド:クラウド・インフラストラクチャは、一般大衆または大規模業界団体が利用でき、クラウド・サービスを売る組織によって所有される。
【0034】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、一意のエンティティのままであるが、データおよびアプリケーション移植を可能にする標準または独自の技術(例えば、クラウド間の負荷分散のためのクラウド・バースティング)によって一緒に結びつけられた2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の構成物である。
【0035】
クラウド・コンピューティング環境は、無国籍、疎結合、モジュラリティ、および意味論的相互運用性に焦点を置くサービス指向のものである。クラウド・コンピューティングの中心には、相互接続ノードのネットワークを含むインフラストラクチャがある。
【0036】
図1をここで参照すると、例証的なクラウド・コンピューティング環境50が描写されている。図示のように、クラウド・コンピューティング環境50は、例えば、パーソナル・デジタル・アシスタント(PDA)もしくはセルラー電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せなど、クラウド利用者によって使用されるローカル・コンピューティング・デバイスが通信し得る1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信してもよい。ノード10は、以下で説明されるような、プライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはその組合せなど、1つまたは複数のネットワークにおいて物理的または仮想的にグループ化されてもよい(図示せず)。これは、クラウド利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のない、サービスとしてのインフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せをクラウド・コンピューティング環境50が提供することを可能にする。図1に示されたコンピューティング・デバイス54A~Nのタイプは、例証にすぎないことが意図され、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、(例えば、ウェブ・ブラウザを使用して)任意のタイプのネットワークまたはネットワーク・アドレス可能接続あるいはその両方を介して、任意のタイプのコンピュータ化デバイスと通信できることが理解されている。
【0037】
図2をここで参照すると、クラウド・コンピューティング環境50(図1)によって提供される機能抽象化層のセットが示されている。図2に示された構成要素、層、および機能は、例証にすぎないことが意図され、本発明の実施形態は、これらに限定されないことを予め理解されたい。描写されたように、以下の層および対応する機能が提供される。
【0038】
ハードウェアおよびソフトウェア層60は、ハードウェアおよびソフトウェア構成要素を含む。ハードウェア構成要素の例は、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびに、ネットワークおよびネットワーキング構成要素66を含む。いくつかの実施形態では、ソフトウェア構成要素は、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0039】
仮想化層70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75という、仮想エンティティの例が提供され得る抽象化層を提供する。
【0040】
1つの例では、管理層80は、下記で説明される機能を提供し得る。リソース提供81は、クラウド・コンピューティング環境内のタスクを実施するために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を行う。計量および価格設定82は、クラウド・コンピューティング環境内でリソースが利用されるときのコスト追跡、および、これらのリソースの利用量に対する請求またはインボイスを行う。1つの例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでもよい。セキュリティは、クラウド利用者およびタスクのアイデンティティ検証、ならびに、データおよび他のリソースの保護を行う。ユーザ・ポータル83は、利用者およびシステム・アドミニストレータに、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、要求されるサービス・レベルを満たすように、クラウド・コンピューティング・リソースの配分および管理を行う。サービス・レベル・アグリーメント(SLA)計画およびフルフィルメント85は、SLAに応じて、将来の要件が予想されるクラウド・コンピューティング・リソースの事前配置および調達を行う。
【0041】
ワークロード層90は、クラウド・コンピューティング環境が利用され得る機能の例を提供する。この層から提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育配信93、データ分析処理94、トランザクション処理95、ならびに信頼できるFPGA再プログラミング96を含む。
【0042】
本発明の実施形態は、ユーザの許可で動作してもよいことに留意されたい。任意のデータが、ユーザの承諾で、集められること、格納されること、分析されることなどが行われてもよい。本開示を読むと当業者によって理解されるはずのように、様々な構成で、本発明の実施形態のうちの少なくともいくつかが、オプト・イン・アプリケーション、プラグインなどに実装される。
【0043】
図3は、様々な実施形態による、図5の様々な動作を実施するための高レベル・アーキテクチャである。アーキテクチャ300は、様々な実施形態では、特に図1図4に描写された環境のいずれかにおいて、本発明に従って実装されてもよい。本説明を読むと当業者によって理解されるはずのように、当然、図3で具体的に説明されたものより多くのまたは少ない要素が、アーキテクチャ300に含まれてもよい。
【0044】
(下記でさらに詳細に説明される)方法500のステップのそれぞれは、アーキテクチャ300の任意の適切な構成要素で実施されてもよい。ハードウェアまたはソフトウェアあるいはその両方で実行され、少なくとも1つのハードウェア構成要素を有することが好ましい、例えば、処理回路、チップ、またはモジュール、あるいはその組合せといった、プロセッサが、アーキテクチャ300において方法500の1つまたは複数のステップを実施するために、任意のデバイスで利用されてもよい。例証的なプロセッサは、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、その組合せ、または、当技術分野で知られている任意の他の適切なコンピューティング・デバイスを含むがこれらに限定されない。
【0045】
アーキテクチャ300は、FPGAデバイスをプログラミングするための製造環境、または、本発明の原理が適用され得るFPGAデバイスのフィールド再プログラミングのための環境のための、例示的な処理システムを示すブロック図を含む。アーキテクチャ300は、クライアント・コンピュータ302、サーバ・コンピュータ304上で動作可能なFPGAプログラミング構成要素308、および、クライアント・コンピュータ302とサーバ・コンピュータ304との間の通信をサポートするネットワーク306を備える。
【0046】
クライアント・コンピュータ302は、アップデートが望まれるか要求されるソフトウェアがインストールされた任意のコンピューティング・デバイスであることが可能である。クライアント・コンピュータ302は、スタンドアロン・コンピューティング・デバイス、管理サーバ、ウェブ・サーバ、モバイル・コンピューティング・デバイス、または、データを受け取る、送る、および処理する能力がある任意の他の電子デバイスもしくはコンピューティング・システムであることが可能である。他の実施形態では、クライアント・コンピュータ302は、複数のコンピュータをサーバ・システムとして利用するサーバ・コンピューティング・システムを表すことができる。別の実施形態では、クライアント・コンピュータ302は、ラップトップ・コンピュータ、タブレット・コンピュータ、ネットブック・コンピュータ、パーソナル・コンピュータ、デスクトップ・コンピュータ、または、ネットワーク306を介してユーザ・ペルソナ生成環境(user persona generation environment)内の他のコンピューティング・デバイス(図示せず)と通信する能力がある任意のプログラム可能電子デバイスであることが可能である。
【0047】
別の実施形態では、クライアント・コンピュータ302は、アーキテクチャ300のインストール時間有効化環境(install-time validation environment)内でアクセスされるとき、シームレスなリソースの単一のプールとして機能する、クラスタ化されたコンピュータおよび構成要素(例えば、データベース・サーバ・コンピュータ、アプリケーション・サーバ・コンピュータなど)を利用するコンピューティング・システムを表す。クライアント・コンピュータ302は、図5を参照しながらさらに詳細に描写および説明されるような、内部および外部ハードウェア構成要素を含むことができる。
【0048】
サーバ・コンピュータ304は、スタンドアロン・コンピューティング・デバイス、管理サーバ、ウェブ・サーバ、モバイル・コンピューティング・デバイス、または、データを受け取る、送る、および処理する能力がある任意の他の電子デバイスもしくはコンピューティング・システムであることが可能である。他の実施形態では、サーバ・コンピュータ304は、複数のコンピュータをサーバ・システムとして利用するサーバ・コンピューティング・システムを表すことができる。別の実施形態では、サーバ・コンピュータ304は、ラップトップ・コンピュータ、タブレット・コンピュータ、ネットブック・コンピュータ、パーソナル・コンピュータ、デスクトップ・コンピュータ、または、ネットワーク306を介してアーキテクチャ300のインストール時間有効化環境内の他のコンピューティング・デバイス(図示せず)と通信する能力がある任意のプログラム可能電子デバイスであることが可能である。
【0049】
ネットワーク306は、例えば、ローカル・エリア・ネットワーク(LAN)、インターネットなどのワイド・エリア・ネットワーク(WAN)、または2つの組合せであることが可能であり、有線、ワイヤレス、または光ファイバ接続を含むことができる。一般に、ネットワーク306は、クライアント・コンピュータ302とサーバ・コンピュータ304との間の通信をサポートする接続およびプロトコルの任意の組合せであることが可能である。
【0050】
1つの態様では、サーバ・コンピュータ304上で動作可能なFPGAプログラミング構成要素308は、二股に分かれた製造プロセスに基づいてFPGAをプログラムすることができる。FPGAプログラミング構成要素308は、信頼できない製造プロセスおよび信頼できる製造プロセスを組み込むことができる。信頼できない製造プロセスでは、FPGAプログラミング構成要素308は、信頼できない製造業者によってFPGAの基板工程(FEOL)および第1の金属層部分を製造できるようにすることが可能である。製造の信頼できない部分は、どの信頼できない人員に対しても、どのセキュリティ・キーまたはビット・ファイルも露出させない。ビット・ファイルは、ルックアップ・テーブル(LUT)およびその実行ロジックに関連付けられたデータであることが可能であることに留意されたい。
【0051】
別の態様では、サーバ・コンピュータ304上で動作可能なFPGAプログラミング構成要素308は、例えば、アップデートされたロジックをFPGAが利用できるときなど、必要なときにフィールドでFPGAを再プログラムすることができる。FPGAプログラミング構成要素308は、対称暗号化を使用して、信頼できないチャネル、および2つのデバイスのうちの1つに基づいて、FPGAを再プログラムすることができる。
【0052】
1つの非限定的例では、FPGAは、クラウドベース環境における人工知能(AI)または他のタスクのためのプログラム可能ハードウェア・アクセラレータとして、クラウド・センタで使用可能である。(専用サーバであることが可能な)FPGAプログラミング構成要素308は、暗号鍵でセキュアなデータベースにアクセスすることができ、新しいビット・ファイルを暗号化およびアップロードすることによって、1つまたは複数のFPGAをセキュアに再プログラムすることができる。単一のまたは複数の暗号鍵が、ビット・ファイルを暗号化し、これらを、ネットワークを介してFPGAワーカ、すなわち、クラウドの一部であるプロセッサおよびFPGAコンビネーション・ボードに配布するために使用可能であることに留意されたい。
【0053】
2つのタイプの暗号鍵を採用できることに留意されたい。1つのケースでは、信頼できる製造が完了した後、暗号鍵が書き込まれ、次いで、信頼できるデータベースに保存されることが可能である。このアプローチの長所は、複数のFPGAが同じ暗号鍵を使用できることであり、これは、暗号鍵管理、ビット・ファイルの暗号化および配布を簡素化し、したがって、コストを低減させる。短所は、暗号鍵が破られた場合、同じ暗号鍵を共有するFPGAすべてが危険に晒されることである。
【0054】
別のケースでは、暗号鍵は、PUF関数によって生成されることが可能である。このケースでは、暗号鍵は、各FPGAに対して、製造のばらつきに基づいて、ランダムに一回生成される。したがって、FPGAは、少なくとも、2つの暗号鍵が同一でないという確率が非常に高い、異なる暗号鍵を有する。長所は、鍵をFPGAに書き込む必要がないことである。短所は、多くの暗号鍵を管理しなければならないことである。
【0055】
別の非限定的例では、FPGAは、マイクロ・クラウド・センタ環境におけるAIまたは他のタスクのためのプログラム可能ハードウェア・アクセラレータとして使用可能である。マイクロ・クラウドは、例えば、第5世代(5G)セルラー通信サービスのための、低遅延ローカル・サービスの導入を可能にする。したがって、FPGAプログラミング構成要素308は、クラウドのセキュアなデータベースに格納された暗号鍵を使用して、ネットワークを通じたFPGAのビット・ファイル・アップデートを管理することができる。セキュアなデータベースおよびビット・ファイル・リポジトリは、プライベート・クラウドによって管理可能である。ビット・ファイルは、ハイブリッド・クラウド・アーキテクチャに基づいてFPGAアクセラレータが導入されるパブリック・クラウドに、プライベート・クラウドによって導入されることが可能である。
【0056】
別の非限定的実施形態では、FPGAは、モノのインターネット(IoT)環境におけるAIまたは他のタスクのためのプログラム可能ハードウェア・アクセラレータとして使用可能である。IoTデバイスは、機械、輸送デバイス、または、ローカル・コンピューティングを使用する任意のデバイスであることが可能である。本明細書で説明される実施形態を使用するIoTデバイスは、クラウドのセキュアなデータベースに格納された暗号鍵を使用することに基づいて、クラウド環境におけるFPGAプログラミング構成要素308によってセキュアにプログラムされる(または再プログラムされる)ことが可能である。環境は、エッジ・コンピューティング環境であることも可能であることに留意されたい。
【0057】
図4は、様々な実施形態による、図5の様々な動作を実施するための例示的詳細アーキテクチャである。アーキテクチャ400は、様々な実施形態では、特に図1図3および図5において描写された環境のいずれかにおいて、本発明に従って実装されてもよい。本説明を読むと当業者によって理解されるはずのように、当然、図4で具体的に説明されるものより多くのまたは少ない要素が、アーキテクチャ400に含まれてもよい。
【0058】
(下記でさらに詳細に説明される)方法500のステップのそれぞれは、アーキテクチャ400の任意の適切な構成要素で実施されてもよい。ハードウェアまたはソフトウェアあるいはその両方で実行され、少なくとも1つのハードウェア構成要素を有することが好ましい、例えば、処理回路、チップ、またはモジュール、あるいはその組合せといった、プロセッサが、アーキテクチャ400において方法500の1つまたは複数のステップを実施するために、任意のデバイスで利用されてもよい。例証的なプロセッサは、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、その組合せ、または、当技術分野で知られている任意の他の適切なコンピューティング・デバイスを含むがこれらに限定されない。
【0059】
アーキテクチャ400は、アーキテクチャ300のモジュールのうちの少なくともいくつかの詳細な図を提供する。アーキテクチャ400は、FPGAプログラミング構成要素308を備えることができ、FPGAプログラミング構成要素308は、製造プログラミング構成要素402およびフィールド再プログラミング構成要素404をさらに備える。
【0060】
製造プログラミング構成要素402は、信頼できない製造業者によって部分的に製造され、信頼できる製造業者によって部分的に製造されたFPGAをプログラムすることができる。
【0061】
信頼できない製造業者は、例えば、FEOLおよび下位レベル金属層といった、部分的に製造されたFPGAを、製造プログラミング構成要素402に提供することができる。信頼できる製造業者は、抵抗変化型ランダム・アクセス・メモリ(RRAM)、ならびに、磁気抵抗変化型ランダム・アクセス・メモリ(MRAM)、スピン・トランスファ(ST)MRAM、およびスピン・トランスファ・トルク(STT)MRAMなどであるがこれらに限定されない、BEOLに統合された任意の不揮発性メモリを含む、残りの配線工程(BEOL)および上位レベル金属層を追加して、部分的に製造されたFPGA上で動作させることができる。
【0062】
製造プログラミング構成要素402は、物理複製困難関数(PUF)に暗号鍵を組み込むか、または、例えば、BEOLの金属層内の選択されたロケーションにおけるRRAMといった、不正防止メモリに暗号鍵を書き込むことができる。製造プログラミング構成要素402は、例えば、上記で指定されたようなRRAMといった、不正防止メモリにプログラム鍵を書き込み、関連付けられたLUTを不正防止メモリに書き込むことができる。製造プログラミング構成要素402は、LUTおよびRRAMを使用して、任意のブール関数を実行できることに留意されたい。
【0063】
例えば、8ビットのRRAMおよび7つの2:1マルチプレクサを用いて、3つの入力と1つの出力を合成することができる。この例では、2:1マルチプレクサは、FEOLおよび下位レベル金属において、信頼できない製造業者によって製造可能であり、LUTのための8ビットの不正防止RRAMメモリは、上位レベル金属において、信頼できる製造業者によって製造可能である。
【0064】
フィールド再プログラミング構成要素404は、「中間者」、チップ虚偽表示(misrepresentation)、およびクラウド虚偽表示などであるがこれらに限定されない攻撃を防ぐことができる。フィールド再プログラミング構成要素404は、通信リンクがセキュアでない場合、チップが信頼できない場合、またはサーバが信頼できない場合に、FPGA再プログラミングをセキュアにすることができる。フィールド再プログラミング構成要素404は、通信リンクが信頼できず、チップまたはサーバが信頼できない場合でも、PUF、プログラム鍵、および暗号鍵を危険に晒すのを防ぐことができる。
【0065】
フィールド再プログラミング構成要素404は、信頼できないチャネル、および、2つのデバイスのうちの1つ、すなわちチップまたはサーバを、信頼できないものとして使用することができ、対称暗号化を使用してFPGAをセキュアにプログラムすることができる。フィールド再プログラミング構成要素404は、各伝送の前に、初期化ベクトルをランダムに生成することができ、したがって、ビット・ファイルは、各暗号化の後、異なる状態になる。暗号化済プログラミング鍵およびビット・ファイルは、中間者によって傍受されても使用できないことに留意されたい。さらに、不正FPGAは、暗号鍵およびプログラミング鍵にアクセスしないと、ビット・ファイルを使用できず、不正クラウド・システムは、暗号鍵およびプログラミング鍵にアクセスしないと、FPGAをプログラムできない。
【0066】
フィールド再プログラミング構成要素404は、再プログラミングのリクエストをFPGAに送ることができる。リクエストには、初期化ベクトル、暗号化済プログラミング鍵、および暗号化済ビット・ファイルを含めることができる。暗号化は、フィールド再プログラミング構成要素404が知っている暗号鍵、および、上述の不正防止メモリに格納された暗号鍵を用いて行われることに留意されたい。FPGAは、不正防止メモリからの暗号鍵を使用して、プログラミング鍵を復号し、復号されたプログラミング鍵を、不正防止メモリに格納されたプログラミング鍵と比較する。2つのプログラミング鍵がマッチする場合、FPGAは、ビット・ファイルを復号し、これを、不正防止メモリのLUT部分にロードする。2つのプログラミング鍵がマッチしない場合、FPGAは何も行わないか、いくつかのランダム関数を実行する。いくつかの状況では、例えば、FPGAは初期プログラミングの前に導入され、FPGAは、ビット・ファイルのアップデートまたはアクセスをリクエストできることに留意されたい。さらに、FPGAによってFPGAプログラミング・リクエストが開始された場合、FPGAによって初期化ベクトルが生成され、アクティブにされるごとに異なる数でなければならない初期化ベクトルを生成するために、FPGA上でのランダム生成回路または関数の統合を必要とする。
【0067】
図5は、FEOL506、金属層502「m1~m6」とRRAM504とを伴うBEOL508を備えるFPGA500の例である。RRAM504は、LUTの格納場所であり得ることに留意されたい。FEOL506は、マルチプレクサおよびフリップ・フロップを含み得ることにさらに留意されたい。
【0068】
1つの態様では、プログラム可能ロジックは、BEOL508とFEOL506両方に統合されることが可能である。RRAM504は、サイド・チャネル攻撃、ピコ秒撮像回路分析(PICA)、ディレイアリングおよび測定に対する不正防止であるようにデザイン可能である。さらに、RRAM504は、PUFをデザインするために使用可能である。FEOL506は、信頼できない半導体製造工場で製造可能であり、BEOL508は、信頼できる半導体製造工場で製造可能であることに留意されたい。本明細書で説明される実施形態の別の長所は、ロジックの上にRRAM504をスタックすることに基づく空間節約である。本発明の実施形態は、RRAM504の使用に基づき、外部フラッシュ・メモリを必要としない。いくつかの実施形態では、ビット・ファイルは、LUTがロードされた後、必要ではなく、すなわち、エネルギー節約であり、FPGAは、ビット・ファイルのロードが不要なので、「瞬時オン」能力を有する。
【0069】
図6Aは、不正防止FPGAを作り出すための方法600の例示的なフローチャートである。ステップ602において、実施形態は、製造プログラミング構成要素402を介して、暗号鍵がPUFに格納されているかどうかを判定することができる。ステップ604において、暗号鍵がPUFに格納されていない場合、実施形態は、製造プログラミング構成要素402を介して、FPGAのBEOLに関連付けられた不正防止メモリに暗号鍵を書き込むことができる。ステップ606において、実施形態は、製造プログラミング構成要素402を介して、不正防止メモリにプログラミング鍵を書き込むことができる。ステップ608において、実施形態は、製造プログラミング構成要素402を介して、不正防止メモリにLUTを書き込むことができる。
【0070】
図6Bは、FPGAの不正防止リモート・プログラミングのための方法650の例示的なフローチャートである。ステップ652において、実施形態は、フィールド再プログラミング構成要素404を介して、リモートFPGAからの再プログラミング・リクエストを受け取ることができる。ステップ654において、実施形態は、フィールド再プログラミング構成要素404を介して、ランダム初期化ベクトルを生成することができる。ステップ656において、実施形態は、フィールド再プログラミング構成要素404を介して、共有暗号鍵、すなわち対称暗号化で、プログラミング鍵およびビット・ファイルを暗号化することができる。ステップ658において、実施形態は、フィールド再プログラミング構成要素404を介して、暗号化済プログラミング鍵およびビット・ファイルをFPGAに送ることができる。
【0071】
図7は、クライアント・コンピュータ302およびサーバ・コンピュータ304を表す実例のコンピュータ・システムであるコンピュータ・システム700を描写する。コンピュータ・システム700は、通信ファブリック702を含み、通信ファブリック702は、コンピュータ・プロセッサ704、メモリ706、永続ストレージ708、通信ユニット710、および入出力(I/O)インターフェース712の間の通信を提供する。通信ファブリック702は、プロセッサ(マイクロプロセッサ、通信およびネットワーク・プロセッサなど)、システム・メモリ、周辺デバイス、ならびに、システム内の任意の他のハードウェア構成要素の間でデータまたは制御情報あるいはその両方を渡すようにデザインされた任意のアーキテクチャで実装されることが可能である。例えば、通信ファブリック702は、1つまたは複数のバスで実装されることが可能である。
【0072】
コンピュータ・システム700は、プロセッサ704、キャッシュ716、メモリ706、永続ストレージ708、通信ユニット710、入出力(I/O)インターフェース712、および通信ファブリック702を含む。通信ファブリック702は、キャッシュ716、メモリ706、永続ストレージ708、通信ユニット710、および入出力(I/O)インターフェース712との間の通信を提供する。通信ファブリック702は、プロセッサ(マイクロプロセッサ、通信およびネットワーク・プロセッサなど)、システム・メモリ、周辺デバイス、ならびに、システム内の任意の他のハードウェア構成要素の間でデータまたは制御情報あるいはその両方を渡すようにデザインされた任意のアーキテクチャで実装されることが可能である。例えば、通信ファブリック702は、1つまたは複数のバスまたはクロスバー・スイッチで実装されることが可能である。
【0073】
メモリ706および永続ストレージ708は、コンピュータ可読ストレージ媒体である。本実施形態では、メモリ706は、ランダム・アクセス・メモリ(RAM)を含む。一般に、メモリ706は、任意の適切な揮発性または不揮発性コンピュータ可読ストレージ媒体を含むことができる。キャッシュ716は、メモリ706から、最近アクセスされたデータ、および最近アクセスされたデータに近いデータを保持するによって、プロセッサ704の性能を強化する高速メモリである。
【0074】
本発明の実施形態を実践するために使用されるプログラム命令およびデータは、永続ストレージ708に、および、キャッシュ716を介してそれぞれのプロセッサ704のうちの1つまたは複数による実行のためにメモリ706に、格納されてもよい。実施形態では、永続ストレージ708は、磁気ハード・ディスク・ドライブを含む。代替として、または磁気ハード・ディスク・ドライブに加えて、永続ストレージ708は、ソリッド・ステート・ハード・ドライブ、半導体ストレージ・デバイス、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROM)、フラッシュ・メモリ、または、プログラム命令もしくはデジタル情報を格納する能力がある任意の他のコンピュータ可読ストレージ媒体を含むことができる。
【0075】
永続ストレージ708によって使用される媒体も、取外し可能であってもよい。例えば、永続ストレージ708用に、取外し可能ハード・ドライブが使用されてもよい。他の例は、永続ストレージ708の一部でもある別のコンピュータ可読ストレージ媒体に移送するためにドライブに挿入される、光および磁気ディスク、サム・ドライブ、ならびにスマート・カードを含む。
【0076】
通信ユニット710は、これらの例では、他のデータ処理システムまたはデバイスとの通信を提供する。これらの例では、通信ユニット710は、1つまたは複数のネットワーク・インターフェース・カードを含む。通信ユニット710は、物理通信リンクとワイヤレス通信リンクのどちらかまたは両方の使用を通じて通信を提供してもよい。本発明の実施形態を実践するために使用されるプログラム命令およびデータは、通信ユニット710を通じて永続ストレージ708にダウンロードされてもよい。
【0077】
I/Oインターフェース712は、各コンピュータ・システムに接続され得る他のデバイスとのデータの入力および出力を可能にする。例えば、I/Oインターフェース712は、キーボード、キーパッド、タッチ・スクリーン、または他のいくつかの適切な入力デバイス、あるいはその組合せなど、外部デバイス718への接続を提供してもよい。外部デバイス718は、例えば、サム・ドライブ、ポータブル光または磁気ディスク、およびメモリ・カードなど、ポータブル・コンピュータ可読ストレージ媒体も含むことができる。本発明の実施形態を実践するために使用されるソフトウェアおよびデータは、このようなポータブル・コンピュータ可読ストレージ媒体に格納可能であり、I/Oインターフェース712を介して永続ストレージ708にロード可能である。I/Oインターフェース712は、ディスプレイ720にも接続する。
【0078】
ディスプレイ720は、データをユーザに表示するためのメカニズムを提供し、例えば、コンピュータ・モニタでもよい。
【0079】
本明細書で説明される構成要素は、本発明の固有の実施形態において実装される用途に基づいて識別される。それでも、本明細書における任意の特定の構成要素の専門語は、便宜上使用されるにすぎず、したがって、本発明は、このような専門語によって識別または示唆あるいはその両方が行われる任意の固有の用途において単に使用することに限定されるべきではないことを理解されたい。
【0080】
本発明は、統合の任意の可能な技術詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せでもよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(または複数の媒体)を含んでもよい。
【0081】
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持および格納できる有形デバイスであることが可能である。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組合せでもよいがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の完全に網羅されていないリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、命令を記録したパンチ・カードまたは溝内隆起構造などの機械的にエンコードされたデバイス、および前述の任意の適切な組合せを含む。本明細書で使用されるようなコンピュータ可読ストレージ媒体は、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号など、本質的に一時的な信号であると解釈されるべきではない。
【0082】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、あるいは、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せといった、ネットワークを介して外部コンピュータまたは外部ストレージ・デバイスに、ダウンロード可能である。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてもよい。各コンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0083】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路機器用の構成データ、または、Smalltalk(R)、C++、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードでもよい。コンピュータ可読プログラム命令は、全面的にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で、スタンド・アロンのソフトウェア・パッケージとして、あるいは、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、または全面的にリモート・コンピュータもしくはサーバ上で実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてもよく、または、接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラム可能ロジック回路機器、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路機器は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路機器を個別化にすることによって、コンピュータ可読プログラム命令を実行してもよい。
【0084】
本発明の態様は、本発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら本明細書で説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実行可能であることが理解されよう。
【0085】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為を実行するための手段を作り出すべく、機械を生み出すために、コンピュータまたは他のプログラム可能データ処理装置のプロセッサに提供されてもよい。これらのコンピュータ可読プログラム命令は、また、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為の態様を実行する命令を含む製品を、命令を格納したコンピュータ可読ストレージ媒体が備えるべく、コンピュータ可読ストレージ媒体に格納されてもよく、特定の様式で機能するようにコンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに指図することができる。
【0086】
コンピュータ可読プログラム命令は、また、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為を実行するべく、コンピュータ実行処理を生み出すために、コンピュータ、他のプログラム可能装置、または他のデバイスで一連の動作ステップを実施するために、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされてもよい。
【0087】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の中の各ブロックは、指定の論理機能を実行するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または一部を表し得る。いくつかの代替実装形態では、ブロックに記された機能は、図に記された順序とは無関係に行われてもよい。例えば、連続して示された2つのブロックは、実際には、同時に、実質的に同時に、部分的もしくは全面的に時間重複した様式で実行される1つのステップとして行われてもよく、または、ブロックは、時には、含まれる機能に応じて逆の順序で実行されてもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、および、ブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定の機能もしくは行為を行うか、または、専用ハードウェアとコンピュータ命令との組合せを実行する、専用ハードウェア・ベースのシステムによって実行可能であることも指摘される。
【0088】
その上、様々な実施形態によるシステムは、プロセッサ、および、プロセッサと統合されたまたはプロセッサによって実行可能なあるいはその両方のロジックを含んでもよく、ロジックは、本明細書で列挙される処理ステップのうちの1つまたは複数を実施するように構成される。統合されることが意味することは、プロセッサが、特定用途向け集積回路(ASIC)、FPGAなどのハードウェア・ロジックとして、ロジックを埋め込んでいるということである。プロセッサによって実行可能であることが意味することは、ロジックが、ハードウェア・ロジック、(ファームウェア、オペレーティング・システムの一部、アプリケーション・プログラムの一部などの)ソフトウェア・ロジックなど、または、プロセッサによってアクセス可能であり、プロセッサによって実行されるといくつかの機能をプロセッサに実施させるように構成された、ハードウェアとソフトウェア・ロジックとのいくつかの組合せであるということである。ソフトウェア・ロジックは、当技術分野で知られているような、任意のメモリ・タイプのローカルまたはリモートあるいはその両方のメモリに格納されてもよい。ソフトウェア・プロセッサ・モジュール、または、(ASIC、FPGA、中央処理ユニット(CPU)、集積回路(IC)、グラフィックス処理ユニット(GPU)などの)ハードウェア・プロセッサ、あるいはその両方など、当技術分野で知られている任意のプロセッサが使用されてもよい。
【0089】
前述のシステムまたは方法あるいはその両方の様々な特徴は、上記で提示された説明から複数の組合せを作り出す任意の方式で組み合わされてもよいことが明らかであろう。
【0090】
本発明の実施形態は、サービスをオンデマンドで提供するために、顧客の代わりに導入されたサービスの形で提供されてもよいことがさらに認識されよう。
【0091】
本発明の様々な実施形態の説明は、例証のために提示されてきたが、網羅的であること、または開示の実施形態に限定されることを意図するものではない。説明された実施形態の範囲から逸脱することなく、多くの変更形態および変形形態が当業者には明らかであろう。本明細書で使用される専門用語は、実施形態の原理、実用的用途、もしくは市場で見つかる技術に対する技術的改善を最もよく説明するように、または、本明細書で開示された実施形態を当業者が理解できるように、選ばれた。
図1
図2
図3
図4
図5
図6A
図6B
図7
【国際調査報告】