(57)【要約】【課題】プログラマブルな回路領域を複数有するプログラマブルロジック装置をそなえた情報処理装置におけるセキュリティリスクを低減させる。【解決手段】複数の回路領域のうちの特定の回路領域により実現される演算処理部２２の処理に基づくデータと、前記データに付加された第１チェック用データとを、前記演算処理部２２に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成する暗号化部２４と、前記特定の回路領域から出力される識別情報と、前記暗号化データとを認証部２６に送信する送信部２１ｃと、をそなえ、前記認証部２６は、前記送信部２１ｃから受信した識別情報に対応する暗号鍵に基づき前記送信部２１ｃから受信した暗号化データを復号し、復号したデータに付加された第１チェック用データに基づき前記復号したデータの認証処理を行なう。【選択図】図５
2018029267.tif 000002
【特許請求の範囲】
【請求項１】
プログラマブルな回路領域を複数有するプログラマブルロジック装置であって、
前記複数の回路領域のうちの特定の回路領域により実現される演算処理部の処理に基づくデータと、前記データに付加された第１チェック用データとを、前記演算処理部に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成する暗号化部と、
前記特定の回路領域から出力される識別情報と、前記暗号化データとを認証部に送信する送信部と、をそなえ、
前記認証部は、前記送信部から受信した識別情報に対応する暗号鍵に基づき前記送信部から受信した暗号化データを復号し、復号したデータに付加された第１チェック用データに基づき前記復号したデータの認証処理を行なう、
ことを特徴とする、プログラマブルロジック装置。
【請求項２】
前記第１チェック用データは、前記演算処理部の処理に基づく前記データに特定の処理を施すことで得られるチェック用データであり、
前記認証処理は、前記復号したデータに前記特定の処理を施すことで得られる第２チェック用データが、前記復号したデータに付加された前記第１チェック用データに一致するか否かによって、前記復号したデータを認証することを含む、
ことを特徴とする、請求項１記載のプログラマブルロジック装置。
【請求項３】
前記演算処理部は、前記演算処理部に割り当てられた記憶領域に対する、前記演算処理部の処理に基づくデータを書き込む書込要求を行ない、
前記認証部は、前記記憶領域に前記書込要求に係るデータを書き込む前に、前記書込要求に係るデータに基づく前記認証処理を行なう、
ことを特徴とする、請求項１又は請求項２記載のプログラマブルロジック装置。
【請求項４】
前記送信部は、前記書込要求に係る前記データの書込先のアドレスを、前記特定の回路領域から出力される識別情報と、前記暗号化データとともに前記認証部に送信し、
前記認証処理は、前記送信部から受信した前記書込先のアドレスと、前記演算処理部に割り当てられた記憶領域のアドレスとに基づき前記受信した書込先のアドレスを認証することを含む、
ことを特徴とする、請求項３記載のプログラマブルロジック装置。
【請求項５】
前記認証部は、前記演算処理部に割り当てられた識別情報と、前記演算処理部に割り当てられた記憶領域のアドレスとを管理する管理情報を記憶し、
前記認証処理は、前記送信部から受信した識別情報に対応する、前記管理情報により管理されるアドレスが、前記受信した書込先のアドレスに一致するか否かによって、前記受信した書込先のアドレスを認証することを含む、
ことを特徴とする、請求項４記載のプログラマブルロジック装置。
【請求項６】
前記認証部は、前記書込要求に係る前記認証処理が成功した場合、前記書込要求に係るデータを前記演算処理部に割り当てられた記憶領域に書き込み、前記書込要求に係る前記認証処理が失敗した場合、前記書込要求に係るデータの書き込みを抑止する、
ことを特徴とする、請求項３〜５のいずれか１項記載のプログラマブルロジック装置。
【請求項７】
プログラマブルな回路領域を複数有するプログラマブルロジック装置と、
認証部と、をそなえ、
前記プログラマブルロジック装置は、
前記複数の回路領域のうちの特定の回路領域により実現される演算処理部の処理に基づくデータと、前記データに付加された第１チェック用データとを、前記演算処理部に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成する暗号化部と、
前記特定の回路領域から出力される識別情報と、前記暗号化データとを前記認証部に送信する送信部と、をそなえ、
前記認証部は、前記送信部から受信した識別情報に対応する暗号鍵に基づき前記送信部から受信した暗号化データを復号し、復号したデータに付加された第１チェック用データに基づき前記復号したデータの認証処理を行なう、
ことを特徴とする、情報処理装置。
【請求項８】
プログラマブルな回路領域を複数有するプログラマブルロジック装置における前記複数の回路領域のうちの特定の回路領域により実現される演算処理部の処理に基づくデータと、前記データに付加された第１チェック用データとを、前記演算処理部に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成し、
前記特定の回路領域から出力される識別情報と、前記暗号化データとを認証部に送信し、
前記認証部が、受信した識別情報に対応する暗号鍵に基づき、受信した暗号化データを復号し、復号したデータに付加された第１チェック用データに基づき前記復号したデータの認証処理を行なう、
ことを特徴とする、処理方法。
【請求項９】
プログラマブルな回路領域を複数有するプログラマブルロジック装置における前記複数の回路領域のうちの特定の回路領域に演算処理部を構成するのに用いる第１情報と、暗号化部及び送信部の構成に用いる第２情報と、を取得し、
前記第１及び第２情報に基づき、前記プログラマブルロジック装置に対して、前記演算処理部、前記暗号化部、及び前記送信部を構成する制御を行なう、
処理をコンピュータに実行させ、
前記暗号化部は、前記演算処理部の処理に基づくデータと、前記データに付加された第１チェック用データとを、前記演算処理部に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成し、
前記送信部は、前記特定の回路領域から出力される識別情報と、前記暗号化データとを認証部に送信し、
前記認証部は、受信した識別情報に対応する暗号鍵に基づき、受信した暗号化データを復号し、復号したデータに付加された第１チェック用データに基づき前記復号したデータの認証処理を行なう、
ことを特徴とする、処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルロジック装置、情報処理装置、処理方法、及び処理プログラムに関する。
【背景技術】
【０００２】
近年、回路の再構成が可能な集積回路（ＩＣ；Integrated Circuit）、例えばＦＰＧＡを、サーバ等の情報処理装置におけるコンピューティングに利用する技術が研究されている。なお、ＦＰＧＡはField-Programmable Gate Arrayの略称である。ＦＰＧＡ等の集積回路は、「プログラマブルロジック装置」と称されてもよい。
【０００３】
ＦＰＧＡを搭載する情報処理装置では、ＦＰＧＡに任意の論理回路を構成して動作させることができる。
【０００４】
情報処理装置におけるＦＰＧＡの利用形態の一例として、ＦＰＧＡにメモリアクセスを行なう論理回路が構成され、ＦＰＧＡが情報処理装置のそなえるプロセッサとして機能する場合がある。換言すれば、ＦＰＧＡがCentral Processing Unit（ＣＰＵ）等のプロセッサと同等に扱われる場合がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２００８−５１２９０９号公報
【特許文献２】特開２００９−８０７９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
クラウドサービスの普及に伴い、上述したＦＰＧＡが、クラウドサービスを提供するサーバ（以下、クラウドサーバ、又は、ホストマシンと表記する場合がある）に搭載されることが想定される。
【０００７】
クラウドサーバでは、例えばクライアントマシンを用いるユーザにより、ＦＰＧＡに所望の演算回路が構成され、クライアントマシンからのアクセスに応じて演算回路による演算結果を返すといった運用が行なわれることが考えられる。
【０００８】
しかしながら、クラウドシステムにおいて、ユーザによりＦＰＧＡに作成される演算回路について個別にセキュリティリスクを調査することが難しい場合がある。
【０００９】
１つの側面では、本発明は、プログラマブルな回路領域を複数有するプログラマブルロジック装置をそなえた情報処理装置におけるセキュリティリスクを低減させることを目的とする。
【００１０】
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【００１１】
１つの側面では、プログラマブルロジック装置は、プログラマブルな回路領域を複数有してよい。前記プログラマブルロジック装置は、暗号化部と、送信部とをそなえてよい。前記暗号化部は、前記複数の回路領域のうちの特定の回路領域により実現される演算処理部の処理に基づくデータと、前記データに付加された第１チェック用データとを暗号化して暗号化データを生成してよい。前記暗号化は、前記演算処理部に割り当てられた識別情報に対応する暗号鍵に基づき行なわれてよい。前記送信部は、前記特定の回路領域から出力される識別情報と、前記暗号化データとを認証部に送信してよい。前記認証部は、前記送信部から受信した識別情報に対応する暗号鍵に基づき前記送信部から受信した暗号化データを復号し、復号したデータに付加された第１チェック用データに基づき前記復号したデータの認証処理を行なってよい。
【発明の効果】
【００１２】
１つの側面では、プログラマブルな回路領域を複数有するプログラマブルロジック装置をそなえた情報処理装置におけるセキュリティリスクを低減できる。
【図面の簡単な説明】
【００１３】
【図１】クラウドシステムの動作例を説明する図である。
【図２】ＣＰＵによるページテーブルの管理の一例を説明する図である。
【図３】クラウドシステムの動作例を説明する図である。
【図４】ＦＰＧＡ型プロセッサによるページテーブルの管理の一例を説明する図である。
【図５】一実施形態に係る情報処理システムの構成例を示すブロック図である。
【図６】一実施形態に係る情報処理システムの動作例を説明するシーケンス図である。
【図７】一実施形態に係る情報処理システムの動作例を説明するシーケンス図である。
【図８】一実施形態に係る情報処理システムの動作例を説明するシーケンス図である。
【図９】一実施形態に係るコンピュータのハードウェア構成例を示す図である。
【図１０】一実施形態に係るホストマシンの機能構成例を示すブロック図である。
【図１１】一実施形態に係る管理マシンの機能構成例を示すブロック図である。
【図１２】ユーザＤＢのデータ構成例を示す図である。
【図１３】一実施形態の実施例に係る情報処理システムの構成を示すブロック図である。
【図１４】図１３に示すＦＰＧＡの構成例を示すブロック図である。
【図１５】図１４に示す回路領域Ｂから出力されるＩＤ及びアドレスに応じたＦＰＧＡの動作例を示す図である。
【図１６】図１４に示す回路領域Ｂから出力されるＩＤ及びアドレスに応じたＦＰＧＡの動作例を示す図である。
【図１７】図１４に示す回路領域Ｂから出力されるＩＤ及びアドレスに応じたＦＰＧＡの動作例を示す図である。
【図１８】図１４に示す回路領域Ｂから出力されるＩＤ及びアドレスに応じたＦＰＧＡの動作例を示す図である。
【図１９】図１３に示すＦＰＧＡの構成の第１変形例を示すブロック図である。
【図２０】図１３に示すＦＰＧＡの構成の第２変形例を示すブロック図である。
【図２１】一実施形態の変形例に係る情報処理システムの構成を示すブロック図である。
【図２２】一実施形態の変形例に係る情報処理システムの動作を説明するシーケンス図である。
【図２３】一実施形態の変形例に係る管理マシンの機能構成を示すブロック図である。
【図２４】変形例の実施例に係る情報処理システムの構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【００１５】
なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。また、以下の説明において、同一名称の複数の装置を区別しない場合には、符号のハイフン“−”以降の数字を省略して表記する、又は、符号のアルファベットを省略して表記する場合がある。例を挙げると、図１に示すクライアントマシン１３０−１及び１３０−２を区別しない場合には、単にクライアントマシン１３０と表記する。また、図１に示すアプリケーション１３１ａ及び１３１ｂを区別しない場合には、単にアプリケーション１３１と表記する。
【００１６】
〔１〕一実施形態
〔１−１〕クラウドシステムにおけるセキュリティリスクについて
はじめに、クラウドシステムにおけるセキュリティ面のリスクについて説明する。
【００１７】
図１は、ホストマシン１１０のプロセッサとしてＣＰＵが用いられるクラウドシステム１００の動作例を説明する図である。図１に示すように、クラウドシステム１００は、例示的に、ホストマシン１１０、管理マシン１２０、及び、複数（図１の例では２つ）のクライアントマシン１３０−１及び１３０−２をそなえる。
【００１８】
図１に例示するように、クライアントマシン１３０−１及び１３０−２のアプリケーション１３１ａ及び１３１ｂは、それぞれ、管理マシン１２０へサービス利用の要求を送信する（図１の矢印（ｉ）参照）。以下、サービスが仮想マシンの提供であるものとする。
【００１９】
クラウドシステムを管理する管理マシン１２０は、要求に基づきサービスの認証を行ない、アプリケーション１３１の各々に対して、例えば仮想マシンの識別子（ＩＤ；Identifier）を送信する（矢印（ii）参照）。また、管理マシン１２０は、クライアントマシン１３０から受信した情報、例えば仮想マシンの利用に用いられるプログラムやデータ等をホストマシン１１０に送付する（矢印（iii）参照）。
【００２０】
ホストマシン１１０は、ＣＰＵ１１０ａ及びメモリ１１０ｂ等のハードウェア資源を用いてOperating System（ＯＳ）又はハイパバイザ１１１（以下、ＯＳ／ＨＰＶ１１１と表記する場合がある）を実行する。また、ＯＳ／ＨＰＶ１１１の制御下で、仮想マシン１１２ａ及び１１２ｂがそれぞれ実行される。
【００２１】
ホストマシン１１０では、ＣＰＵ１１０ａやメモリ１１０ｂ等のハードウェア資源が複数の仮想マシン１１２ａ及び１１２ｂで共用される。例えば、仮想マシン１１２ａは、ハードウェア資源の少なくとも一部により実現されるＣＰＵ１１３ａ及び共用メモリ（ＳＨＭ；Shared Memory）１１４ａを利用する。また、仮想マシン１１２ｂは、ハードウェア資源の少なくとも一部により実現されるＣＰＵ１１３ｂ及び共用メモリ１１４ｂを利用する。
【００２２】
ここで、コンピュータでのメモリアドレスの管理について説明する。図２に例示するように、ユーザは、仮想アドレスでアプリケーションを記述し、仮想アドレスに割り当てる物理アドレスをＯＳが決定する。仮想アドレスと物理アドレスとの対応付けは、ページテーブル（Page Table）により管理される。ページテーブルは、メモリの割り当てを管理する情報の一例である。
【００２３】
ＣＰＵは、ＯＳのページテーブルへのアクセスをハードウェアで高速化するために、頻繁に使われるアドレスの変換テーブルをＣＰＵ内部のTable Lookup Buffer（ＴＬＢ）にコピーする。そして、ＣＰＵは、アプリケーションで指定される仮想アドレスを、ＴＬＢに基づき物理アドレスに変換し、変換した物理アドレスでメモリにアクセスする。
【００２４】
このように、ユーザは物理アドレスを認識せずに仮想アドレスを認識するため、ユーザが他のユーザのアプリケーションで用いる物理アドレスにアクセスすることは困難である。
【００２５】
図１の例においても、共用メモリ１１４ａ及び１１４ｂは仮想アドレスにより管理され、それぞれメモリ１１０ｂの物理アドレスに割り当てられる。以下、共用メモリ１１４ａに割り当てられるメモリ１１０ｂのアドレス領域をメモリ領域１１５ａと表記し、共用メモリ１１４ｂに割り当てられるメモリ１１０ｂのアドレス領域をメモリ領域１１５ｂと表記する。
【００２６】
仮想マシン１１２ａ及び１１２ｂでは、それぞれ対応するメモリ領域１１５ａ及び１１５ｂ以外のメモリ１１０ｂ上の記憶領域へのアクセスが、ＯＳ／ＨＰＶ１１１により制限される。
【００２７】
このため、例えばアプリケーション１３１ｂのユーザが、仮想マシン１１２ｂを通じて他のユーザの仮想マシン１１２ａに対応するメモリ領域１１５ａへのアクセスを試みたとしても、ＯＳ／ＨＰＶ１１１により、当該アクセスは抑止される。例えば図１に矢印（iv）で示すように、ＯＳ／ＨＰＶ１１１はセグメンテーション違反（Segmentation Fault）を検出し、エラー処理等を行なう。
【００２８】
メモリ領域１１５に記憶される仮想マシン１１２の演算結果は、ホストマシン１１０のネットワーク装置１１６を介して、仮想マシン１１２を利用するクライアントマシン１３０のネットワーク装置１３３との間で送受信される（矢印（ｖ）参照）。
【００２９】
例えばメモリ領域１１５ａに記憶された演算結果は、パケット（Ａ）に格納されてネットワーク装置１１６からクライアントマシン１３０−１のネットワーク装置１３３へ送信され、パケット（Ａ）内のデータ（Ａ）がアプリケーション１３１ａに渡される。また、メモリ領域１１５ｂに記憶された演算結果は、パケット（Ｂ）に格納されてネットワーク装置１１６からクライアントマシン１３０−２のネットワーク装置１３３へ送信され、パケット（Ｂ）内のデータ（Ｂ）がアプリケーション１３１ｂに渡される。
【００３０】
以上のように、ホストマシン１１０のプロセッサとしてＣＰＵ１１０ａが用いられるクラウドシステム１００では、アプリケーション１３１のユーザは、ＯＳ／ＨＰＶ１１１が提供する仮想マシン１１２を通じて処理を行なう。このため、ユーザが他のユーザのメモリ１１０ｂの記憶領域にアクセスしようとしても、ＯＳ／ＨＰＶ１１１により当該アクセスを抑止することができる。
【００３１】
次に、ホストマシンのプロセッサとしてＦＰＧＡが用いられる場合を説明する。図３は、ホストマシン１６０のプロセッサとしてＦＰＧＡが用いられるクラウドシステム１５０の動作例を説明する図である。
【００３２】
図３に例示するように、クライアントマシン１８０−１及び１８０−２のアプリケーション１８１ａ及び１８１ｂは、それぞれ、管理マシン１７０へサービス利用の要求を送信する（図３の矢印（vi）参照）。また、アプリケーション１８１は、ホストマシン１６０のＦＰＧＡ１６１に書き込む処理回路の情報、例えばIntellectual Property（ＩＰ）コアを管理マシン１７０へ送信する。
【００３３】
ＩＰは、ＦＰＧＡにおいて再利用可能な機能ブロックの一例であり、ＩＰコアは、ＦＰＧＡに構成する機能ブロックの設計に用いる情報の一例である。ＩＰコアには、ソフトウェアマクロ、ハードウェアマクロ、又はこれらの組み合わせが含まれてよい。ソフトウェアマクロは、Register Transfer Level（ＲＴＬ）で提供されるプログラムコードを含んでよい。なお、ＲＴＬは論理回路の設計データを記述するためのスキームの一例である。ハードウェアマクロは、ＦＰＧＡの内部に組み込まれる回路ブロックの情報を含んでよい。なお、ＩＰコアは、ソフトウェアマクロが改変される危険性を考慮し、ハードウェアマクロで提供されることもある。
【００３４】
管理マシン１７０は、要求に基づきサービスの認証を行ない、アプリケーション１８１の各々に対して、例えば仮想マシンのＩＤを送信する（矢印（vii）参照）。また、管理マシン１７０は、クライアントマシン１８０から受信したＩＰコアに基づいて、ホストマシン１６０のＦＰＧＡ１６１に処理回路１６２ａ及び１６２ｂ、換言すればアクセラレータを実装する（矢印（viii）参照）。
【００３５】
ホストマシン１６０では、ＦＰＧＡ１６１に構成された処理回路１６２ａ及び１６２ｂが、メモリコントローラ１６４を介して、それぞれメモリ１６０ｂのアドレス領域であるメモリ領域１６３ａ及び１６３ｂを利用して動作する。なお、ホストマシン１６０では、ＣＰＵ１６０ａ及びＦＰＧＡ１６１がそれぞれプロセッサとして機能する。例えば、処理回路１６２ａ及び１６２ｂからのライト（Write）要求は、ライトブロック（Write Block）でまとめられ、バスを通じてメモリ１６０ｂに書き込まれる。
【００３６】
ここで、コンピュータでのメモリアドレスの管理について、ＦＰＧＡ型のプロセッサが用いられる場合を説明する。図４に例示するように、ＣＰＵと同等に扱われるキャッシュコヒーレントバスに配置されたＦＰＧＡは、ＯＳからページテーブルをコピーする。
【００３７】
クラウドシステム１５０では、ＦＰＧＡに実装される処理回路は、ユーザによって作成されることが想定される。従って、処理回路の設計によっては、ユーザはＦＰＧＡにより、コピーしたページテーブルを操作することも可能である。例えばＦＰＧＡは、ページテーブルに設定された物理アドレスを、他のユーザが利用するメモリの物理アドレスに変換することもできる。
【００３８】
このページテーブルに設定された物理アドレスの変換は、ページテーブルに設定された情報自体の書き換えによって行なわれる場合があり、又はページテーブルから読み出された情報がＦＰＧＡからメモリへのアクセスの過程で変換される場合もある。
【００３９】
なお、ＦＰＧＡが他のユーザの利用するメモリにアクセス可能となるのは、ユーザの悪意によるＦＰＧＡの操作のほか、処理回路の設計ミス等によって生じる場合もある。
【００４０】
図３の例において、例えば処理回路１６２ｂが、アプリケーション１８１ｂのユーザによって作成されたマリシアス（Malicious）ＩＰである場合、処理回路１６２ｂからメモリ領域１６３ａへのアクセスにはＯＳの防御機構が作用しない（矢印（ix）参照）。
【００４１】
従って、処理回路１６２ｂから、他のユーザが用いるメモリ領域１６３ａに対して書き込みが発生した場合、ホストマシン１６０はこのような不正な書き込みを検出することが困難である。なお、マリシアスＩＰは、不正なプロセッサ、例えば悪意あるユーザにプログラムされたリコンフィギュアブル（Re-configurable）なプロセッサであるといえる。
【００４２】
このように、プロセッサをユーザが自由に設計できると、ＦＰＧＡ型のプロセッサは、ＯＳの提供するセキュアなアクセスを越えて、直接ハードウェアにアクセスできてしまう。従って、ＦＰＧＡをそなえるホストマシンにおけるセキュリティリスクが高まる。
【００４３】
〔１−２〕一実施形態に係る情報処理システムの構成例
そこで、一実施形態においては、以下の構成により、回路の再構成が可能な集積回路をそなえる情報処理装置におけるセキュリティリスクを低減させる。図５は、一実施形態に係る情報処理システム１の構成例を示すブロック図である。
【００４４】
図５に示すように、情報処理システム１は、例示的に、ホストマシン２、管理マシン３、並びに、複数（図５の例では２つ）のクライアントマシン４−１及び４−２をそなえる。なお、ホストマシン２及び管理マシン３の一方又は双方は、情報処理システム１に複数存在してもよく、クライアントマシン４は、情報処理システム１に３つ以上存在してもよい。
【００４５】
ホストマシン２は、情報処理装置の一例である。ホストマシン２としては、例えばサーバ又はPersonal Computer（ＰＣ）等の種々のコンピュータが挙げられる。例えばホストマシン２は、ユーザからの要求に応じて、ユーザの希望する処理回路を構成した、キャッシュコヒーレントなＦＰＧＡをプロセッサとして提供するクラウドサービスで利用されてよい。
【００４６】
ホストマシン２は、例示的に、ＣＰＵ２ａ、メモリ２ｂ、メモリコントローラ２ｃ、ＦＰＧＡ２１、及びネットワーク装置２８をそなえてよい。ＣＰＵ２ａは、種々の制御や演算を行なうプロセッサの一例である。メモリ２ｂは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。メモリ２ｂとしては、例えばRandom Access Memory（ＲＡＭ）等の揮発性メモリが挙げられる。メモリコントローラ２ｃは、ＣＰＵ２ａ及びＦＰＧＡ２１が要求するメモリアクセスを処理する。メモリコントローラ２ｃとしては、例えば、Memory Management Unit（ＭＭＵ）が挙げられる。
【００４７】
ＦＰＧＡ２１は、回路の再構成が可能な集積回路であり、プログラマブルな回路領域を複数有するプログラマブルロジック装置の一例である。ＦＰＧＡ２１は、ホストマシン２に複数存在してもよい。
【００４８】
ＦＰＧＡ２１には、ホストマシン２の製造時或いは出荷時、又はホストマシン２の起動時等のクラウドサービスの提供前においては、論理ブロックが構成されていない状態が存在してもよい。図５の例は、情報処理システム１の運用段階において、クライアントマシン４−１及び４−２からの要求に応じて論理ブロックが構成された状態を示す。
【００４９】
ＦＰＧＡ２１は、ＣＰＵ２ａと同等に扱われるキャッシュコヒーレントバスに配置されてよく、ＦＰＧＡ２１とＣＰＵ２ａとの間でメモリアクセスに用いるキャッシュの一貫性が保たれるような制御が行なわれてよい。
【００５０】
図５に示すように、ＦＰＧＡ２１は、例示的に、第１回路領域２１ａ、第２回路領域２１ｂ、セレクタ２１ｃ、及び監視装置２６をそなえてよい。
【００５１】
第１回路領域２１ａ及び第２回路領域２１ｂは、それぞれ、ＦＰＧＡ２１の複数の回路領域のうちの特定の回路領域の一例である。特定の回路領域とは、図５の例では、第１回路領域２１ａ及び第２回路領域２１ｂのように、ユーザに対して割り当てられた回路領域を意味してよい。
【００５２】
第１回路領域２１ａには、処理回路２２ａ、生成部２３ａ、暗号装置２４ａ、及びＩＤ出力部２５ａが構成されてよい。第２回路領域２１ｂには、処理回路２２ｂ、生成部２３ｂ、暗号装置２４ｂ、及びＩＤ出力部２５ｂが構成されてよい。
【００５３】
処理回路２２、生成部２３、及びＩＤ出力部２５は、クライアントマシン４からの要求（例えばＩＰコア）に応じて構成される回路であってよい。暗号装置２４は、管理マシン３によりＩＰコアが用意される回路であって、クライアントマシン４から干渉できないように構成されてもよい。
【００５４】
なお、処理回路２２は、一般のユーザにより自由に設計されてよい。一方、生成部２３及びＩＤ出力部２５については、自由に設計できるようにした場合にメモリアクセス等の動作に影響を与える可能性がある。そこで、例えば、既存のライブラリ等の予め用意されたＩＰコアをユーザに利用させることで、生成部２３及びＩＤ出力部２５が提供されてもよい。
【００５５】
処理回路２２（図５の例では「ＰＲＯＣ」（PROCESSOR）と表記）は、ＦＰＧＡ２１の複数の回路領域のうちの特定の回路領域により実現される演算処理部の一例である。処理回路２２は、例えば、クライアントマシン４が送信する情報に応じた処理を行ない、処理に基づくデータを生成部２３及び暗号装置２４に出力してよい。また、処理回路２２は、メモリ２ｂのアドレスを管理する管理情報（図示省略）に基づき、処理回路２２に割り当てられたメモリ領域２７へのアクセス要求をセレクタ２１ｃに出力してよい。
【００５６】
管理情報は、処理回路２２に割り当てられた識別情報と、処理回路２２に割り当てられた記憶領域のアドレスとを管理する情報の一例である。管理情報としては、ＣＰＵ２ａ又はＦＰＧＡ２１で実行されるＯＳが管理するページテーブルが挙げられる。図５に示すように、メモリ２ｂは、処理回路２２ａに割り当てられた物理アドレスのアドレス領域であるメモリ領域２７ａと、処理回路２２ｂに割り当てられた物理アドレスのアドレス領域であるメモリ領域２７ｂとを有してよい。
【００５７】
処理回路２２ａ及び２２ｂの各々の管理情報には、他方の回路領域の管理情報に定められたアドレスに対して排他的に予め定められるアドレスが設定されてよい。換言すれば、第１回路領域２１ａ又は第２回路領域２１ｂの管理情報には、互いに重複しないメモリ領域２７のアドレスが設定されてよい。
【００５８】
なお、ホストマシン２は、ＦＰＧＡ２１からの暗号化データが書き込まれるメモリ領域２７（又はメモリ２ｂ）を持たない場合もある。例えば、メモリ領域２７（メモリ２ｂ）は、他のホストマシン又は任意の情報処理装置にそなえられてもよい。
【００５９】
生成部２３（図５の例では「ＧＥＮ」（GENERATOR）と表記）は、処理回路２２の処理に基づくデータに特定の処理を施すことにより第１チェック用データを生成し、処理回路２２から出力されたデータに付加してよい。
【００６０】
第１チェック用データとしては、例えば、元データに基づき生成される誤り検出訂正符号等のような、元データに関連する情報であってよい。なお、特定の処理には、例えば、誤り検出訂正符号の生成処理が含まれてよい。誤り検出訂正符号としては、チェックサムやCyclic Redundancy Code（ＣＲＣ）等が挙げられる。以下の説明では、第１チェック用データを生成するための特定の処理がチェックサムの生成であるものとし、第１チェック用データを、「Ｓｕｍ」又は「ｓｅｃ」と表記する場合がある。
【００６１】
暗号装置２４は、処理回路２２の処理に基づくデータと、当該データに付加された第１チェック用データとを、処理回路２２に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成する暗号化部の一例である。
【００６２】
処理回路２２に割り当てられた識別情報は、例えば、クラウドサービスの提供に用いられる識別子であり、一例として、回路領域２１ａ又は２１ｂのＩＤ、或いは、処理回路２２（アクセラレータ）のＩＤであってもよい。暗号装置２４は、ＦＰＧＡ２１に構成される際に、管理マシン３により、暗号装置２４の構成先の処理回路２２（又は回路領域２１ａ又は２１ｂ）に割り当てられた識別情報に対応する暗号鍵を設定されてよい。
【００６３】
また、暗号装置２４は、メモリ領域２７から読み出された暗号化データを、処理回路２２に割り当てられた識別情報に対応する暗号鍵を用いて復号し、復号したデータを処理回路２２に出力してよい。
【００６４】
暗号装置２４による暗号化及び復号は、既知の種々の手法により行なうことが可能である。例えば暗号化方式として、対称暗号化方式が用いられてよい。なお、対称暗号化方式に代えて、非対称暗号化方式が用いられてもよい。
【００６５】
ＩＤ出力部２５（図５の例では「ＩＤ」と表記）は、処理回路２２の識別情報をセレクタ２１ｃに出力してよい。ＩＤ出力部２５が出力する識別情報は、処理回路２２に割り当てられた識別情報と同一であるが、マリシアスＩＰにおいては、ＩＤ出力部２５が他のユーザの処理回路２２に割り当てられた識別情報を出力する（偽る）場合もある。
【００６６】
セレクタ２１ｃは、特定の回路領域から出力される識別情報と、暗号化データとを認証部に送信する送信部の一例である。例えばセレクタ２１ｃは、複数の回路領域（図５の例では符号２１ａ及び２１ｂ）から入力された暗号化データ、識別情報、及びアドレスの入力のうちのいずれか１組の暗号化データ、識別情報、及びアドレスを選択して監視装置２６に出力する。セレクタ２１ｃとしては、例えば、複数の入力信号のいずれかを出力へ分配するマルチプレクサ（ＭＵＸ；multiplexer）が挙げられる。
【００６７】
監視装置２６は、セレクタ２１ｃから受信した識別情報に対応する暗号鍵に基づきセレクタ２１ｃから受信した暗号化データを復号し、復号したデータに付加された第１チェック用データに基づき復号したデータの認証処理を行なう認証部の一例である。
【００６８】
例えば、監視装置２６は、以下の手順により認証処理を行なってよい。
【００６９】
（ａ）ＩＤ出力部２５から受信した識別情報に対応する暗号鍵を、識別情報と暗号鍵との対応関係を表す情報（図示省略）から取得し、取得した暗号鍵を用いて、暗号装置２４から受信した暗号化データを復号する。
【００７０】
（ｂ）復号したデータに特定の処理を施して第２チェック用データを生成する。なお、特定の処理は、生成部２３が実施する処理と同一である。
【００７１】
（ｃ）生成した第２チェック用データが、復号した第１チェック用データに一致するか否かを判定する。
【００７２】
上記（ａ）〜（ｃ）の処理を行なうことで、監視装置２６は、第２チェック用データが第１チェック用データに一致する場合、認証に成功したと判断してよい。一方、監視装置２６は、第２チェック用データが第１チェック用データに一致しない場合、認証に失敗したと判断し、復号したデータのメモリ領域２７への書き込みを抑止してよい。
【００７３】
このように、例えば、演算処理部を含む特定の回路領域が識別情報を偽った場合、認証部における認証処理が失敗する。従って、マリシアスＩＰが他の回路領域に成り済ます（他の回路領域の識別情報を用いる）ことにより、他人の記憶領域に不正なデータが書き込まれることを防止できる。
【００７４】
また、監視装置２６は、ページテーブル等の管理情報を保持し、処理回路２２から受信した書込先のアドレスと、処理回路２２に割り当てられたメモリ領域２７のアドレスとに基づき受信した書込先のアドレスを認証してもよい。
【００７５】
認証処理において、データ及びアドレスの双方の認証に成功した場合、監視装置２６は、アドレスと、復号したデータとをメモリコントローラ２ｃに送信してよい。このとき、監視装置２６は、当該復号したデータを、復号に用いた暗号鍵を用いて暗号化し、暗号化したデータをメモリコントローラ２ｃに送信してもよい。
【００７６】
なお、監視装置２６は、図５の例ではＦＰＧＡ２１にそなえられているが、これに限定されるものではなく、ＦＰＧＡ２１の外部においてＦＰＧＡ２１とメモリコントローラ２ｃとの間に介設される集積回路（ＩＣ）であってもよい。
【００７７】
メモリコントローラ２ｃは、監視装置２６から入力されたデータを、メモリ２ｂ内の処理回路２２に割り当てられたメモリ領域２７に書き込む制御を行なってよい。
【００７８】
ネットワーク装置２８は、図示しないネットワークを介してクライアントマシン４との間で通信を行なってよい。なお、ネットワーク装置２８は、管理マシン３とホストマシン２との間の通信でも用いられてよい。ネットワークとしては、例えばインターネット、又はLocal Area Network（ＬＡＮ）若しくはWide Area Network（ＷＡＮ）等が挙げられる。
【００７９】
管理マシン３は、ホストマシン２を管理する管理装置の一例である。管理マシン３としては、情報処理装置、例えば、サーバ又はＰＣ等の種々のコンピュータが挙げられる。
【００８０】
管理マシン３は、クライアントマシン４からの要求に応じて、処理回路２２等の構成に用いる第１情報と、暗号装置２４及びセレクタ２１ｃ等の構成に用いる第２情報とに基づき、これらをＦＰＧＡ２１に構成する制御を行なってよい。第２情報には、監視装置２６の構成に用いる情報が含まれてもよい。
【００８１】
第１情報及び第２情報は、それぞれＩＰコアであってよい。ＩＰコアには、上述のように、ソフトウェアマクロ、ハードウェアマクロ、又はこれらの組み合わせが含まれてよい。以下の説明において、第１情報を処理ＩＰコア、第２情報を暗号化ＩＰコアと表記する場合がある。
【００８２】
論理回路をＦＰＧＡ２１に構成する制御は、種々の手法により実現されてよい。例えば、図５に示すように、管理マシン３とホストマシン２のＦＰＧＡ２１とを専用線１ａで接続し、管理マシン３がＦＰＧＡ２１にアクセラレータを実装してもよい。なお、図５の例では、便宜上、専用線１ａをＦＰＧＡ２１に直接接続しているが、専用線１ａは、ネットワークを介してＦＰＧＡ２１に接続されてもよい。
【００８３】
或いは、管理マシン３が、ホストマシン２のＣＰＵ２ａが実行するＯＳに対して、ＦＰＧＡ２１へのアクセラレータの実装を通信線１ｂ経由で指示し、指示を受けたＯＳは、制御線２９を介してＦＰＧＡ２１にアクセラレータを実装してもよい。なお、図５の例では、便宜上、通信線１ｂをＣＰＵ２ａに接続しているが、通信線１ｂは、ネットワークを介して又は直接、ネットワーク装置２８に接続されてもよい。
【００８４】
クライアントマシン４は、ホストマシン２にアクセスする端末装置の一例である。クライアントマシン４としては、情報処理装置、例えば、ＰＣ、サーバ、スマートホン、又はタブレット等の種々のコンピュータが挙げられる。
【００８５】
クライアントマシン４は、例示的に、ネットワーク装置４４をそなえ、図示しないＣＰＵ及びメモリ等によりアプリケーション４１を実行する。例えばクライアントマシン４−１では、ユーザによりアプリケーション４１ａが操作され、クライアントマシン４−２では、ユーザによりアプリケーション４１ｂが操作される。
【００８６】
ネットワーク装置４４は、図示しないネットワークを介してホストマシン２との間で通信を行なう。なお、ネットワーク装置４４は、クライアントマシン４と管理マシン３との間の通信でも用いられてよい。ネットワークとしては、例えばインターネット、又はＬＡＮ若しくはＷＡＮ等が挙げられる。
【００８７】
また、クライアントマシン４は、管理マシン３から通知されたＩＤ４２及び暗号鍵、並びに、管理マシン３に送信するＩＰコア４３（例えば処理ＩＰコア）を記憶するメモリ等の記憶領域をそなえてよい。
【００８８】
なお、クライアントマシン４によるデータの読出先のメモリは、上述したメモリ領域２７ではなく、メモリ領域２７からデータが転送されたメモリ或いはＨＤＤ等の記憶装置であってもよい。データが転送された記憶装置は、ホストマシン２の内部にそなえられてもよいし、ホストマシン２とは異なる装置にそなえられてもよい。
【００８９】
〔１−３〕動作例
次に、図６〜図８を参照して、上述の如く構成された情報処理システム１の動作例を説明する。
【００９０】
図６に示すように、クライアントマシン４は、管理マシン３へ、ＦＰＧＡ２１を用いるサービスの要求を送信する（処理Ｔ１；図５の矢印（Ｉ））。管理マシン３は、受信した要求についてサービスの認証を行ない（処理Ｔ２）、ＩＤを発行し、アプリケーション４１に対してＩＤを送信する（処理Ｔ３；図５の矢印（II））。
【００９１】
また、クライアントマシン４は、管理マシン３にアクセラレータの論理、例えばＩＰコア４３を送信する（処理Ｔ４）。アクセラレータの論理は、顧客、例えばアプリケーション４１のユーザが用意したＩＰコア４３であってよい。なお、処理Ｔ４は、処理Ｔ１の送信とともに行なわれてもよい。
【００９２】
次いで、管理マシン３は、暗号鍵を取得し（処理Ｔ５）、取得した暗号鍵をクライアントマシン４に提供する（処理Ｔ６）。また、管理マシン３は、アクセラレータの論理の論理合成を行なう（処理Ｔ７）。
【００９３】
一例として、論理合成では、ハードウェア記述言語（ＨＤＬ；Hardware Description Language）で表されるＲＴＬ等のＩＰコアが、ゲート・レベルのネットリストへ変換されて、論理回路の実装設計が行なわれてよい。ネットリストは、素子間を接続する配線（ネット）の一覧を記述した設計データの表現形式である。
【００９４】
なお、ＨＤＬとしては、Verilog HDLや、VHSIC HDL（ＶＨＤＬ）等のハードウェア記述言語が使われてよい。VHSICは、very high speed integrated circuitsの略称である。
【００９５】
そして、管理マシン３は、論理合成により合成された処理回路２２等のデザインをＦＰＧＡ２１に配置するとともに、取得した暗号鍵を用いて暗号化を行なう暗号装置２４やセレクタ２１ｃ等を、ＦＰＧＡ２１のメモリインタフェースに配置する。
【００９６】
例えば、管理マシン３は、処理回路２２（及び生成部２３やＩＤ出力部２５等の周辺回路）並びに暗号装置２４やセレクタ２１ｃをＦＰＧＡ２１に書き込む（処理Ｔ８；図５の矢印（III））。なお、管理マシン３は、周辺回路の書き込みの際に、アプリケーション４１に割り当てたＩＤをＩＤ出力部２５に登録してもよい。
【００９７】
また、管理マシン３は、監視装置２６に対して、ＦＰＧＡ２１に実装した処理回路２２及び暗号装置２４に対応するＩＤ及び暗号鍵、並びに、ページテーブルを登録する（処理Ｔ９）。
【００９８】
ＦＰＧＡ２１への書き込みが完了すると、ＦＰＧＡ２１は書込完了通知を管理マシン３へ送信する（処理Ｔ１０）。書込完了通知を受信すると、管理マシン３は、クライアントマシン４に準備完了通知を送信する（処理Ｔ１１）。
【００９９】
他の例として、図７に示すように、管理マシン３は、処理Ｔ７でアクセラレータの論理合成を行なうと、処理回路２２及び暗号装置２４等のＦＰＧＡ２１への書き込みを、ホストマシン２のＣＰＵ２ａに通知してもよい（処理Ｔ２１）。また、管理マシン３は、ＩＤ及び暗号鍵並びに管理情報の監視装置２６への登録を、ＣＰＵ２ａに通知してもよい（処理Ｔ２２）。
【０１００】
ＣＰＵ２ａは、ＯＳにより、処理回路２２及び暗号装置２４等をＦＰＧＡ２１に書き込むとともに（処理Ｔ２３）、ＩＤ及び暗号鍵並びに管理情報を監視装置２６に登録してよい（処理Ｔ２４）。処理Ｔ１０は図６と同様である。なお、図７において、処理Ｔ７の論理合成はホストマシン２で行なわれてもよい。
【０１０１】
次いで、クライアントマシン４は、ＩＤ４２により特定したＦＰＧＡ２１の処理回路２２に対して、特定の演算の開始指示（計算開始合図）を送信する（処理Ｔ１２）。計算開始合図を受信すると、ホストマシン２ではランタイムが起動されてＦＰＧＡ２１のドライバがロードされる。
【０１０２】
そして、ＦＰＧＡ２１は、処理回路２２により演算を行なう。なお、演算の過程で、処理回路２２に割り当てられたメモリ領域２７に対する暗号化データのストア（処理Ｔ１３）、及び、メモリ領域２７に記憶された暗号化データのＦＰＧＡ２１へのロード（処理Ｔ１４）の少なくとも一方が実行されてもよい。
【０１０３】
図８に示すように、ストア（図６の処理Ｔ１３）では、処理回路２２のＩＤ及びストア対象のメモリ領域２７のアドレスが、ＦＰＧＡ２１から監視装置２６に送信される（処理Ｔ３１及びＴ３２）。また、生成部２３が、処理回路２２の演算結果に基づきＳｕｍを生成し、暗号装置２４が、演算結果にＳｕｍを付加したデータを暗号化する（処理Ｔ３３）。そして、データ及びｓｅｃ（Ｓｕｍ）を含む暗号化データが監視装置２６に送信される（処理Ｔ３４）。
【０１０４】
監視装置２６は、セレクタ２１ｃを介して受信したＩＤ、アドレス、及び、暗号化データに基づき認証処理を行なう。（処理Ｔ３５）、認証に成功すると、監視装置２６は、メモリコントローラ２ｃに対して、アドレスと、演算結果を暗号化した暗号化データとを送信する（処理Ｔ３６及びＴ３７）。これにより、暗号化データが、アドレスで指定されたメモリ領域２７に書き込まれる。なお、認証に失敗した場合、監視装置２６は、メモリ領域２７への暗号化データの書き込みを抑止する（図５の符号（IV）参照）。
【０１０５】
一方、ストア（図６の処理Ｔ１４）では、ロード対象のメモリ領域２７のアドレスが、ＦＰＧＡ２１からメモリ領域２７に送信される（処理Ｔ３８）。ＦＰＧＡ２１は、メモリ領域２７からロードされた暗号化データを受信し（処理Ｔ３９）、受信した暗号化データを復号する（処理Ｔ４０）。
【０１０６】
図６の説明に戻り、処理回路２２による演算が終了すると、ＦＰＧＡ２１はクライアントマシン４へ計算終了通知を送信する（処理Ｔ１５）。また、メモリ領域２７に記憶された演算結果のデータ（例えば暗号化データ）が、ネットワーク装置２８及び４４を介してクライアントマシン４に転送される（処理Ｔ１６）。
【０１０７】
クライアントマシン４のアプリケーション４１は、受信したデータが暗号化されている場合、管理マシン３から通知された暗号鍵を用いて暗号化データを復号する（処理Ｔ１７）。処理が終了すると、アプリケーション４１は、管理マシン３に対してサービス終了通知を送信し（処理Ｔ１８）、ＦＰＧＡ２１を用いたサービスが終了する。
【０１０８】
〔１−４〕ハードウェア構成例
次に、ホストマシン２、管理マシン３、及びクライアントマシン４のハードウェア構成例について説明する。なお、ホストマシン２、管理マシン３、及びクライアントマシン４は、いずれも同様のハードウェア構成をそなえてよい。以下、便宜上、ホストマシン２、管理マシン３、及びクライアントマシン４をまとめてコンピュータ５と表記し、コンピュータ５のハードウェア構成例について説明する。
【０１０９】
図９に示すように、コンピュータ５は、例示的に、ＣＰＵ５ａ、メモリ５ｂ、記憶部５ｃ、Interface（ＩＦ）部５ｄ、Input / Output（Ｉ／Ｏ）部５ｅ、及び読取部５ｆをそなえてよい。
【０１１０】
ＣＰＵ５ａは、種々の制御や演算を行なうプロセッサの一例である。ＣＰＵ５ａは、コンピュータ５内の各ブロックとバスで相互に通信可能に接続されてよい。なお、プロセッサとしては、ＣＰＵ５ａ等の演算処理装置に代えて、電子回路、例えばMicro Processing Unit（ＭＰＵ）、やApplication Specific Integrated Circuit（ＡＳＩＣ）等の集積回路（ＩＣ）が用いられてもよい。
【０１１１】
メモリ５ｂは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。メモリ５ｂとしては、例えばＲＡＭ等の揮発性メモリが挙げられる。
【０１１２】
なお、図５に示すホストマシン２のＣＰＵ２ａ及びメモリ２ｂは、図９に示すＣＰＵ５ａ及びメモリ５ｂの一例である。
【０１１３】
記憶部５ｃは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。記憶部５ｃとしては、例えばHard Disk Drive（ＨＤＤ）等の磁気ディスク装置、Solid State Drive（ＳＳＤ）等の半導体ドライブ装置、フラッシュメモリやRead Only Memory（ＲＯＭ）等の不揮発性メモリ等の各種記憶装置が挙げられる。
【０１１４】
例えば記憶部５ｃは、コンピュータ５の各種機能の全部若しくは一部を実現するプログラム５０を格納してよい。ＣＰＵ５ａは、例えば記憶部５ｃに格納されたプログラム５０をメモリ５ｂに展開して実行することにより、コンピュータ５の機能を実現することができる。
【０１１５】
ＩＦ部５ｄは、ネットワーク等との間の接続及び通信の制御等を行なう通信インタフェースの一例である。例えばＩＦ部５ｄは、ＬＡＮ、Infiniband（インフィニバンド）、Fibre Channel（ＦＣ、ファイバチャネル）、Universal Serial Bus（ＵＳＢ）、又はＢｌｕｅｔｏｏｔｈ（登録商標）等に準拠したアダプタが挙げられる。図５に示すホストマシン２のネットワーク装置２８及びクライアントマシン４のネットワーク装置４４は、図９に示すＩＦ部５ｄの一例である。
【０１１６】
なお、プログラム５０は、ネットワーク等からＩＦ部５ｄを介してコンピュータ５にダウンロードされてもよい。
【０１１７】
Ｉ／Ｏ部５ｅは、マウス、キーボード、又は操作ボタン等の入力部、並びに、ディスプレイ又はプリンタ等の出力部、の一方又は双方を含んでよい。
【０１１８】
読取部５ｆは、記録媒体５ｇに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部５ｆは、記録媒体５ｇを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部５ｆとしては、例えばＵＳＢ等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、ＳＤカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体５ｇにはプログラム５０が格納されてもよい。
【０１１９】
記録媒体５ｇとしては、例示的に、磁気／光ディスクやフラッシュメモリ等の非一時的な記録媒体が挙げられる。磁気／光ディスクとしては、例示的に、フレキシブルディスク、Compact Disc（ＣＤ）、Digital Versatile Disc（ＤＶＤ）、ブルーレイディスク、Holographic Versatile Disc（ＨＶＤ）等が挙げられる。フラッシュメモリとしては、例示的に、ＵＳＢメモリやＳＤカード等が挙げられる。なお、ＣＤとしては、例示的に、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ等が挙げられる。また、ＤＶＤとしては、例示的に、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等が挙げられる。
【０１２０】
上述したコンピュータ５のハードウェア構成は例示である。従って、コンピュータ５内でのハードウェアの増減（例えば任意のブロックの追加や削除）、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。また、ホストマシン２、管理マシン３、及びクライアントマシン４の間で、異なるハードウェア構成がそなえられてもよい。なお、ホストマシン２のハードウェア構成例については、図９に示す構成に加えて、図５に示すＦＰＧＡ２１及び関連する装置或いは回路がさらにそなえられてよい。
【０１２１】
〔１−５〕ホストマシンの構成例
次に、図１０を参照して、一実施形態に係るホストマシン２の機能構成例について説明する。図１０に示すように、ホストマシン２は、例示的に、通信部１１及び書込処理部１２をそなえてよい。
【０１２２】
通信部１１は、ネットワーク装置２８を介して、又は、図５に示す通信線１ｂを介して、管理マシン３及びクライアントマシン４と通信を行なう。クライアントマシン４との間の通信には、処理回路２２の実行に係る要求若しくはデータの送受信が含まれてよい。管理マシン３との間の通信には、処理回路２２、生成部２３、暗号装置２４、及びＩＤ出力部２５の書き込みに係る要求若しくはデータの送受信や、監視装置２６への情報登録に係る要求若しくはデータの送受信が含まれてよい。
【０１２３】
書込処理部１２は、ＯＳ又はドライバの機能を用いて、ＦＰＧＡ２１に対して論理の書き込みを行なう。例えば書込処理部１２は、管理マシン３からのＦＰＧＡ２１へのアクセラレータの実装指示に基づき、図５に示す制御線２９を介して、ＦＰＧＡ２１にアクセラレータの論理を書き込んでよい。この場合、通信部１１は、アクセラレータの実装指示を管理マシン３から受信し、書込処理部１２による書込処理の完了に応じて、アクセラレータの実装完了通知を管理マシン３へ送信してもよい。管理マシン３が専用線１ａを介してこれらの処理を行なう場合には、書込処理部１２は不要である。
【０１２４】
なお、アクセラレータの論理合成が書込処理部１２により行なわれてもよい。この場合、書込処理部１２は、通信部１１を介してＦＰＧＡ２１から処理ＩＰコア、暗号化ＩＰコア、及びＩＤの情報を取得してよい。
【０１２５】
上述したホストマシン２の機能は、ホストマシン２のＣＰＵ５ａ（例えば図５に示すＣＰＵ２ａ）が、メモリ５ｂ（例えば図５に示すメモリ２ｂ）に格納されたプログラム５０を実行することにより実現されてよい。
【０１２６】
〔１−６〕管理マシンの構成例
次に、図１１及び図１２を参照して、一実施形態に係る管理マシン３の機能構成例について説明する。
【０１２７】
図１１に示すように、管理マシン３は、例示的に、メモリ部１３、通信部１４、ユーザ管理部１５、暗号鍵取得部１６、暗号化ＩＰコア生成部１７、及び書込制御部１８をそなえてよい。
【０１２８】
メモリ部１３は、ユーザDatabase（ＤＢ）１３ａ、１以上の処理ＩＰコア１３ｂ、及び、１以上の暗号化ＩＰコア１３ｃを記憶してよい。メモリ部１３は、例えば、図５に示すメモリ２ｂの記憶領域により実現されてもよい。
【０１２９】
通信部１４は、ホストマシン２及びクライアントマシン４と通信を行なう。クライアントマシン４との間の通信には、サービスの提供に関する情報、例えばユーザ情報、アクセラレータの論理に関する情報、暗号鍵に関する情報等の送受信が含まれてよい。
【０１３０】
ユーザ管理部１５は、クラウドサービスを利用するユーザを管理する。例えばユーザ管理部１５は、ユーザＤＢ１３ａに基づき、ユーザ、ＩＤ、ＩＰコア、及び暗号鍵を対応付けて管理してよい。また、ユーザ管理部１５は、クライアントマシン４からのサービス要求に対する認証や、受信したＩＰコアを処理ＩＰコア１３ｂ又は暗号化ＩＰコア１３ｃとして管理する処理、ユーザＤＢの更新等を行なってもよい。
【０１３１】
ユーザＤＢ１３ａは、ユーザごとの情報を管理するデータベースの一例である。ユーザＤＢ１３ａは、例えばメモリ５ｂ又は記憶部５ｃ（図９参照）によって実現されてよい。ユーザＤＢのデータ構成例を図１２に示す。
【０１３２】
図１２に例示するように、ユーザＤＢ１３ａには、ユーザＩＤ、サービスＩＤ、暗号鍵、処理ＩＰコア、及び、暗号化ＩＰコアの各情報が含まれてよい。ユーザＩＤはユーザ、例えばアプリケーション４１を識別する情報の一例であり、サービスＩＤは、ユーザが利用するサービスを識別する情報の一例である。サービスＩＤとしては、例えばＦＰＧＡ２１において割り当てられる処理回路２２又は回路領域のＩＤや、アクセラレータのＩＤが用いられてもよい。
【０１３３】
暗号鍵は、暗号鍵の情報そのものであってもよいし、暗号鍵取得部１６が取得した暗号鍵を特定できる情報であってもよい。処理ＩＰコア及び暗号化ＩＰコアは、ユーザ管理部１５又は暗号化ＩＰコア生成部１７が取得したこれらのＩＰコアの情報そのものであってもよいし、これらのＩＰコアを特定できる情報であってもよい。
【０１３４】
処理ＩＰコア１３ｂは、例えばクライアントマシン４から受信した、処理回路２２、生成部２３、及びＩＤ出力部２５等を構成するためのＩＰコアである。
【０１３５】
暗号化ＩＰコア１３ｃは、暗号装置２４及びセレクタ２１ｃ等を構成するためのＩＰコアである。暗号化ＩＰコア１３ｃは、例えばクライアントマシン４から受信した暗号化ＩＰコア、暗号化ＩＰコア生成部１７が生成した暗号化ＩＰコアの情報、又は、予め記憶しておいた暗号化ＩＰコアの情報、等であってよい。
【０１３６】
処理ＩＰコア１３ｂ及び暗号化ＩＰコア１３ｃは、例えば論理合成が行なわれるまでメモリ５ｂ又は記憶部５ｃ等に蓄積されてよい。また、ＩＰコアは再利用可能な機能ブロックであるため、再利用の可能性があれば、処理ＩＰコア１３ｂ及び暗号化ＩＰコア１３ｃの一方又は双方は、論理合成後も例えばメモリ５ｂ又は記憶部５ｃ等に記憶させ続けてもよい。
【０１３７】
暗号鍵取得部１６は、暗号装置２４及び監視装置２６における暗号化又は復号、並びにクライアントマシン４における復号に用いる暗号鍵を取得する。暗号鍵の取得では、暗号化ＩＰコア１３ｃの情報とともにクライアントマシン４から暗号鍵を受信してもよいし、既知の手法により暗号鍵取得部１６が暗号鍵を生成してもよい。生成された暗号鍵は、例えば論理合成が行なわれるまでメモリ５ｂ又は記憶部５ｃ等に蓄積されてよい。
【０１３８】
暗号化ＩＰコア生成部１７は、暗号化ＩＰコア１３ｃを生成する。例えば暗号化ＩＰコア生成部１７は、暗号鍵取得部１６が取得した暗号鍵を暗号化のキーとして含む暗号化ＩＰコア１３ｃを生成し、メモリ５ｂ又は記憶部５ｃ等に蓄積してよい。或いは、暗号化ＩＰコア生成部１７は、メモリ等に予め蓄積された暗号化ＩＰコアに対して、暗号鍵取得部１６が取得した暗号鍵を暗号化のキーとして設定してもよい。なお、暗号化のキーを設定された暗号化ＩＰコア１３ｃがクライアントマシン４から送付される場合には、暗号化ＩＰコア生成部１７の構成は不要である。
【０１３９】
換言すれば、ユーザ管理部１５及び暗号化ＩＰコア生成部１７の少なくとも一方は、第１情報と第２情報とを取得する取得部の一例である。また、通信部１４は、処理回路２２をＦＰＧＡ２１に構成することを指示する要求を、クライアントマシン４から受信する受信部の一例である。
【０１４０】
書込制御部１８は、処理ＩＰコア１３ｂ及び暗号化ＩＰコア１３ｃの論理合成を行ない、処理回路２２、暗号装置２４、及びセレクタ２１ｃ等をＦＰＧＡ２１に書き込む制御を行なう。また、書込制御部１８は、監視装置２６に対して、処理回路２２ごとの暗号鍵及びＩＤの情報、並びに、管理情報を登録する制御を行なう。
【０１４１】
換言すれば、書込制御部１８は、処理ＩＰコアと、暗号化ＩＰコアとに基づき、ＦＰＧＡ２１に対して、少なくとも、処理回路２２、暗号装置２４、及びＭＵＸ２１６を構成する制御を行なう制御部の一例である。また、書込制御部１８は、処理回路２２を構成する制御を行なう際に、処理回路２２に割り当てられた識別情報と、当該識別情報に対応する暗号鍵とに関する情報を、監視装置２６に登録する登録部の一例である。
【０１４２】
上述した管理マシン３の機能は、管理マシン３のＣＰＵ５ａ（図９参照）が、メモリ５ｂに格納されたプログラム５０を実行することにより実現されてよい。
【０１４３】
〔１−７〕実施例
次に、一実施形態に係る情報処理システム１の実施例について説明する。
【０１４４】
〔１−７−１〕実施例の構成例
図１３及び図１４を参照して、実施例に係る情報処理システム１０の構成例について説明する。図１３は一実施形態の実施例に係る情報処理システム１０の構成を示すブロック図であり、図１４は、図１３に示すＦＰＧＡ２１０の構成例を示すブロック図である。
【０１４５】
図１３に示すように、情報処理システム１０は、例示的に、ホストマシン２０、管理マシン３０、並びに複数（図１３の例では２つ）のクライアントマシン４０−１及び４０−２をそなえてよい。なお、ホストマシン２０及び管理マシン３０の一方又は双方は、情報処理システム１０に複数存在してもよく、クライアントマシン４０は、情報処理システム１０に３つ以上存在してもよい。
【０１４６】
ホストマシン２０は、例示的に、ＣＰＵコア２００、ローカルキャッシュ２０１、ラストレベルキャッシュ２０２、及びキャッシュコヒーレントバス２０３、ＭＭＵ２０４、及びDynamic RAM（ＤＲＡＭ）２０５をそなえてよい。また、ホストマシン２０は、例示的に、ＦＰＧＡ２１０、サウスブリッジ２８０、及びNetwork Interface Card（ＮＩＣ）２８２をそなえてよい。なお、ＣＰＵ２００及びＦＰＧＡ２１０の一方又は双方は、ホストマシン２０に複数存在してもよい。
【０１４７】
ＣＰＵコア２００は、ストアバッファ２００ａ、ロードバッファ２００ｂ、及びＴＬＢ２００ｃをそなえてよい。ストアバッファ２００ａは、ローカルキャッシュ２０１にストアするデータのバッファとして用いられてよく、ロードバッファ２００ｂは、ローカルキャッシュ２０１からロードするデータのバッファとして用いられてよい。ＴＬＢ２００ｃは、ＤＲＡＭ２０５が記憶するページテーブル２０５ａのうちの一部の情報、例えば頻繁に使われるアドレスの変換テーブルを記憶してよい。
【０１４８】
ローカルキャッシュ２０１は、ＣＰＵコア２００ごとに設けられるキャッシュであり、例えばＬ１キャッシュと位置付けられてよい。ＣＰＵコア２００及びローカルキャッシュ２０１は、図５に示すＣＰＵ２ａの一例である。
【０１４９】
ラストレベルキャッシュ２０２は、ＣＰＵコア２００及びＦＰＧＡ２１０とＭＭＵ２０４との間に設けられるキャッシュであり、例えば最終段のキャッシュと位置付けられてよい。ラストレベルキャッシュ２０２は、ＣＰＵコア２００及びＦＰＧＡ２１０との間に、キャッシュコヒーレントバス２０３を提供してよい。換言すれば、ホストマシン２０では、ＣＰＵコア２００とＦＰＧＡ２１０とが同等なプロセッサとして扱われる。
【０１５０】
ＭＭＵ２０４は、ＣＰＵコア２００又はＦＰＧＡ２１０が要求するメモリアクセスを処理する。ＭＭＵ２０４は、例えばキャッシュの制御やバスの調停等の機能を有してよい。ＭＭＵ２０４は、図５に示すメモリコントローラ２ｃの一例である。
【０１５１】
ＤＲＡＭ２０５は、ホストマシン２０の主記憶装置として機能するメモリである。一例として、ＤＲＡＭ２０５は、複数のＤＲＡＭチップを搭載したメモリモジュール、例えばDual Inline Memory Module（ＤＩＭＭ）であってもよい。なお、図１３には、ＤＲＡＭ２０５が４つのＤＩＭＭをそなえる例を示す。ＤＲＡＭ２０５は、図５に示すメモリ２ｂの一例である。
【０１５２】
ＤＲＡＭ２０５は、ホストマシン２０のＯＳが用いるページテーブル２０５ａを記憶してよい。なお、ページテーブル２０５は、メモリの割り当てを管理する情報の一例である。
【０１５３】
ＦＰＧＡ２１０は、図５に示すＦＰＧＡ２１の一例である。ＦＰＧＡ２１０は、例示的に、複数（図１３の例では２つ）の回路領域２１０ａ及び２１０ｂ、ＦＰＧＡコンフィグポート２１２、demultiplexer（ＤＥＭＵＸ）２１４、ＭＵＸ２１６、ローカルキャッシュ２１８、及び監視装置２６０をそなえてよい。
【０１５４】
回路領域２１０ａ及び２１０ｂには、それぞれ、例えばクライアントマシン４０−１のユーザが利用する論理回路と、クライアントマシン４０−２のユーザが利用する論理回路とが構成される。回路領域２１０ａ及び２１０ｂの詳細については後述する。
【０１５５】
ＦＰＧＡコンフィグポート２１２は、ＦＰＧＡ２１０に論理回路を構成する際に用いられるポートである。管理マシン３０は、専用線１ａを介してＦＰＧＡコンフィグポート２１２にアクセスすることで、ＦＰＧＡ２１０に論理回路を構成することができる。
【０１５６】
ＤＥＭＵＸ２１４は、入力信号を複数の出力のいずれかへ分配する回路である。例えばＤＥＭＵＸ２１４は、ローカルキャッシュ２１８から入力されたアドレス、データ、及びＶａｌｉｄの情報を、回路領域２１０ａ及び２１０ｂのいずれか一方に出力する。なお、ＦＰＧＡ２１０への入力側にはアドレス線が存在しない場合がある。Ｖａｌｉｄは、ＤＲＡＭ２０５からのどのタイミングのデータが有効かを示す信号である。
【０１５７】
ＭＵＸ２１６は、複数の入力からいずれか１つを選択して信号を出力する回路であり、図５に示すセレクタ２１ｃの一例である。例えばＭＵＸ２１６は、回路領域２１０ａから入力されたＩＤ、アドレス、データ、及びＶａｌｉｄの情報、又は、回路領域２１０ｂから入力されたＩＤ、アドレス、データ、及びＶａｌｉｄの情報を選択し、監視装置２６に出力する。
【０１５８】
ＦＰＧＡ２１０の出力側のＶａｌｉｄとして、回路領域２１０ａ又は２１０ｂからリード及びライトのいずれの処理が要求されているかを示す信号であるコマンドが用いられてもよい。例えば、コマンドがライトを示す状態を、Ｖａｌｉｄが有効な状態（例えばアサートされた状態）と扱ってよい。なお、Ｖａｌｉｄがアサートされたタイミングで入力されるアドレス及びデータが、メモリリクエストとして有効になる。
【０１５９】
監視装置２６０は、図５に示す監視装置２６の一例である。監視装置２６０は、ＭＵＸ２１６から入力されるＩＤ、アドレス、データ、及びＶａｌｉｄに基づいて、アドレス及びデータのそれぞれの認証を行なう。認証に成功した場合、監視装置２６０は、ＩＤ、アドレス、データ、及びＶａｌｉｄをそのままローカルキャッシュ２１８に出力する。一方、認証に失敗した場合、監視装置２６０は、Ｖａｌｉｄをディアサートして無効化し、ローカルキャッシュ２１８からのアドレス及びデータの出力を停止させることで、メモリアクセスを抑止させる。
【０１６０】
ローカルキャッシュ２１８は、ＦＰＧＡ２１０ごとに設けられるキャッシュである。ローカルキャッシュ２１８は、ローカルキャッシュ２０１とともに、キャッシュコヒーレントバス２０３に接続されてよい。ローカルキャッシュ２１８は、Ｖａｌｉｄが有効な場合に、入力されるアドレス及びデータをラストレベルキャッシュ２０２に出力する。
【０１６１】
サウスブリッジ（South Bridge）２８０は、プロセッサの周辺回路として機能するチップセットを有する集積回路（ＩＣ）の一例である。図１３の例では、サウスブリッジ２８０は、ＮＩＣ２８２等の周辺デバイスを制御するコントローラである。なお、サウスブリッジ２８０としては、例えばI/O Controller Hub（ＩＣＨ）が挙げられる。
【０１６２】
ＮＩＣ２８２は、ホストマシン２０をＬＡＮ等のネットワークに接続する装置である。ＮＩＣ２８２は、図５に示すネットワーク装置２８の一例である。ＮＩＣ２８２は、例えば管理マシン３０及びクライアントマシン４０の各々と有線又は無線により接続されてよい。
【０１６３】
管理マシン３０は、例示的に、ＣＰＵ３ａ、メモリ３ｂ、ＮＩＣ３１０、ＦＰＧＡ書込装置３２０、及びユーザＤＢ１３０ａをそなえる。
【０１６４】
ＣＰＵ３ａ及びメモリ３ｂは、図９に示すＣＰＵ５ａ及びメモリ５ｂの一例である。ユーザＤＢ１３０ａは、ユーザごとの情報を管理するデータベースの一例であり、図１１に示すユーザＤＢ１３ａと同様のデータ構成であってよい。
【０１６５】
ＮＩＣ３１０は、管理マシン３０をＬＡＮ等のネットワークに接続する装置である。ＮＩＣ３１０は、例えばホストマシン２０及びクライアントマシン４０の各々と有線又は無線により接続されてよい。なお、管理マシン３０は、ＮＩＣ３１０により通信線１ｂ経由で、ホストマシン２０のＣＰＵコア２００が実行するＯＳに対して、ＦＰＧＡ２１０へのアクセラレータの実装を指示してよい。
【０１６６】
ＦＰＧＡ書込装置３２０は、専用線１ａを介して、ホストマシン２０のＦＰＧＡ２１０にそなえられたＦＰＧＡコンフィグポート２１２に対して、ＦＰＧＡ２１０の回路領域２１０ａ又は２１０ｂにアクセラレータを書き込む制御を行なう。なお、ＦＰＧＡ２１０へのアクセラレータの書き込みは、既知の種々の手法により実現可能である。
【０１６７】
クライアントマシン４０は、例示的に、ＣＰＵ４ａ、メモリ４ｂ、及びＮＩＣ４１０をそなえる。
【０１６８】
ＣＰＵ４ａ及びメモリ４ｂは、図９に示すＣＰＵ５ａ及びメモリ５ｂの一例である。
【０１６９】
ＮＩＣ４１０は、クライアントマシン４０をＬＡＮ等のネットワークに接続する装置である。ＮＩＣ４１０は、例えばホストマシン２０及び管理マシン３０の各々と有線又は無線により接続されてよい。
【０１７０】
次に、図１４を参照して、ホストマシン２０のＦＰＧＡ２１０及び監視装置２６０の構成例について説明する。
【０１７１】
回路領域２１０ａ及び２１０ｂには、それぞれ、例示的に、演算処理装置２２０、メモリＩ／Ｆ２２１及び２２３、生成部２３０、復号装置２４０、暗号化装置２４２、並びにＩＤ出力部２５０が構成されてよい。また、回路領域２１０ａ及び２１０ｂには、それぞれ、例示的に、ページテーブル２２２の情報を記憶する記憶素子が構成されてよい。
【０１７２】
演算処理装置２２０は、図５に示す処理回路２２の一例である。演算処理装置２２０には、対応するユーザにより設計等された論理が含まれてよい。演算処理装置２２０は、ＣＰＵコア２００とともに、プロセッサとしてＯＳを実行してもよい。
【０１７３】
メモリＩ／Ｆ２２１及び２２３は、ＤＲＡＭ２０５に対するインタフェースを提供する。なお、メモリＩ／Ｆ２２１及び２２３は、処理ＩＰコアによって構成されてよい。
【０１７４】
メモリＩ／Ｆ２２１は、ＤＥＭＵＸ２１４から受信したＤＲＡＭ２０５からのアドレス及びデータを、Ｖａｌｉｄが有効な場合に、それぞれページテーブル２２２及び復号装置２４０に出力する。メモリＩ／Ｆ２２３は、ページテーブル２２２から出力された（又は通過した）アドレスと、暗号化装置２４２から出力されたデータと、Ｖａｌｉｄとを、それぞれＭＵＸ２１６に出力する。
【０１７５】
ページテーブル２２２は、演算処理装置２２０による仮想アドレス−物理アドレス間の変換に用いられる。例えば演算処理装置２２０又は管理マシン３０は、ＤＲＡＭ２０５が記憶するページテーブル２０５ａをコピーして、ページテーブル２２２に格納してよい。ページテーブル２２２は、ＤＲＡＭ２０５のアドレスを管理する管理情報の一例である。
【０１７６】
生成部２３０は、図５に示す生成部２３の一例である。生成部２３０は、演算処理装置２２０から出力される演算結果のデータのチェックサムを生成し、暗号化装置２４２に出力する。
【０１７７】
復号装置２４０は、メモリＩ／Ｆ２２１から入力される暗号化データを、演算処理装置２２０に対応付けられた暗号鍵を用いて復号し、復号データを演算処理装置２２０に出力する。暗号化装置２４２は、演算処理装置２２０から出力されるデータと、生成部２３０から出力されるチェックサム（ｓｅｃ）とを、演算処理装置２２０に対応付けられた暗号鍵を用いて暗号化し、メモリＩ／Ｆ２２３に出力する。換言すれば、復号装置２４０及び暗号化装置２４２は、図５に示す暗号装置２４の一例である。
【０１７８】
ＩＤ出力部２５０は、図５に示すＩＤ出力部２５の一例である。ＩＤ出力部２５０には、回路領域２１０ａ若しくは２１０ｂ、又は演算処理装置２２０のＩＤが設定される。ＩＤ出力部２５０は、設定されたＩＤをＭＵＸ２１６に出力する。
【０１７９】
監視装置２６０は、例示的に、復号装置２６２、生成部２６３、比較部２６４、暗号化装置２６５、第１ＡＮＤ演算部２６７、及び第２ＡＮＤ演算部２６８をそなえてよい。また、監視装置２６０は、例示的に、関係情報２６１及びページテーブル２６６の情報を記憶する記憶素子が構成されてよい。
【０１８０】
関係情報２６１は、演算処理装置２２０に割り当てられたＩＤと、当該ＩＤに対応する暗号鍵との対応関係を管理する情報である。監視装置２６０は、ＭＵＸ２１６から受信したＩＤに対応する暗号鍵を関係情報２６１から取得し、取得した暗号鍵を復号装置２６２及び暗号化装置２６５に出力する。
【０１８１】
復号装置２６２は、ＭＵＸ２１６から受信した、データ及びｓｅｃの暗号化データを、関係情報２６１から得られた暗号鍵を用いて復号し、復号したデータを生成部２６３及び暗号化装置２６５に出力し、復号したｓｅｃを比較部２６４に出力する。
【０１８２】
生成部２６３は、復号装置２６２から入力されるデータからｓｅｃを生成し、生成したｓｅｃを比較部２６４に出力する。
【０１８３】
比較部２６４は、復号装置２６２から入力されたｓｅｃと、生成部２６３から入力されたｓｅｃとを比較し、両者が一致すれば有効を示し、不一致であれば無効を示す信号を、第１ＡＮＤ演算部２６７に出力する。例えば、比較部２６４は、第１ＡＮＤ演算部２６７に接続される信号線を、Ｖａｌｉｄと同様に、有効の場合はアサート、無効の場合はディアサートに制御してよい。
【０１８４】
暗号化装置２６５は、復号装置２６２から入力されたデータを、関係情報２６１から得られた暗号鍵を用いて暗号化し、暗号化したデータをローカルキャッシュ２１８に出力する。
【０１８５】
ページテーブル２６６は、演算処理装置２２０に割り当てられたＩＤと、当該演算処理装置２２０に割り当てられたＤＲＡＭ２０５の記憶領域のアドレス範囲とを管理する情報である。
【０１８６】
監視装置２６０は、ＭＵＸ２１６から受信したＩＤに対応する、ページテーブル２６６で管理されるアドレス範囲と、ＭＵＸ２１６から受信したアクセス先のアドレスと、を比較する。そして、監視装置２６０は、両者が一致すれば有効を示し、不一致であれば無効を示す信号を、第２ＡＮＤ演算部２６８に出力する。例えば、監視装置２６０は、ページテーブル２６６と第２ＡＮＤ演算部２６８との間の信号線を、Ｖａｌｉｄと同様に、有効の場合はアサート、無効の場合はディアサートに制御してよい。
【０１８７】
第１ＡＮＤ演算部２６７は、ＭＵＸ２１６から受信したＶａｌｉｄと、比較部２６４からの出力と、のＡＮＤ演算を行ない、演算結果を第２ＡＮＤ演算部２６８に出力する。例えば、第１ＡＮＤ演算部２６７は、ＭＵＸ２１６から受信したＶａｌｉｄ、及び、比較部２６４からの出力信号の双方が有効を示す場合（アサートの場合）に、有効を示す信号を第２ＡＮＤ演算部２６８に出力してよい。
【０１８８】
第２ＡＮＤ演算部２６８は、第１ＡＮＤ演算部２６７からの出力と、ページテーブル２６６での比較結果と、のＡＮＤ演算を行ない、演算結果をＶａｌｉｄとしてローカルキャッシュ２１８に出力する。例えば、第２ＡＮＤ演算部２６８は、第１ＡＮＤ演算部２６７からの出力信号、及び、ページテーブル２６６での比較結果の双方が有効を示す場合（アサートの場合）に、出力側のＶａｌｉｄをアサートして有効にしてよい。
【０１８９】
なお、第１ＡＮＤ演算部２６７と第２ＡＮＤ演算部２６８とが、１つのＡＮＤ演算部により構成されてもよい。
【０１９０】
以上のように、監視装置２６０における関係情報２６１、復号装置２６２、生成部２６３、比較部２６４、及び第１ＡＮＤ演算部２６７を用いた処理は、ＩＤ及びデータに係る認証処理の一例である。また、監視装置２６０における関係情報２６１及び第２ＡＮＤ演算部２６８を用いた処理は、アドレスに係る認証処理の一例である。
【０１９１】
〔１−７−２〕実施例の動作例
次に、図１５〜図１８を参照して、実施例に係るＦＰＧＡ２１０における動作例について説明する。図１５〜図１８は、回路領域２１０ｂから出力されるＩＤ及びアドレスに応じたＦＰＧＡ２１０の動作例を示す図である。なお、以下の説明では、図の簡略化のため、一部の構成の図示を省略する。
【０１９２】
（回路領域２１０ｂから出力されるＩＤ及びアドレスが正しい場合）
図１５に例示するように、演算処理装置２２０ｂは、アクセス先のアドレスとして、回路領域２１０ｂに割り当てられた正しいＤＲＡＭ２０５のアドレス「ａｄｄｒ：ｘｙｘ」をメモリＩ／Ｆ２２３に出力する。
【０１９３】
暗号化装置２４２ｂは、演算処理装置２２０ｂから出力されたデータ「ｄａｔａ：ｄ」と、生成部２３０ｂが「ｄａｔａ：ｄ」に基づき生成したチェックサム「ｓｕｍ（ｄ）」とを、暗号鍵「ｋｅｙ２」を用いて暗号化し、メモリＩ／Ｆ２２３に出力する。
【０１９４】
メモリＩ／Ｆ２２３ｂは、Ｖａｌｉｄを有効にするとともに、演算処理装置２２０ｂからの「ａｄｄｒ：ｘｙｘ」と、暗号化装置２４２ｂからの暗号化データとをＭＵＸ２１６に出力する。
【０１９５】
また、ＩＤ出力部２５０ｂは、ＩＤとして、回路領域２１０ｂに割り当てられた正しいＩＤ「ＩＤ：Ｂ」をＭＵＸ２１６に出力する。
【０１９６】
監視装置２６０は、ＭＵＸ２１６から受信した「ＩＤ：Ｂ」に対応する「ｋｅｙ２」を関係情報２６１から読み出し、復号装置２６２及び暗号化装置２６５に出力する。
【０１９７】
復号装置２６２は、ＭＵＸ２１６から受信した暗号化データを「ｋｅｙ２」で復号し、復号結果の「ｄａｔａ：ｄ」及び「ｓｕｍ（ｄ）」を出力する。暗号化装置２６５は、復号結果の「ｄａｔａ：ｄ」を「ｋｅｙ２」で暗号化し、ローカルキャッシュ２１８に出力する。
【０１９８】
生成部２６３は、復号結果の「ｄａｔａ：ｄ」からチェックサム「ｓｕｍ’（ｄ）」を生成する。比較部２６４は、復号結果の「ｓｕｍ（ｄ）」と、生成部２６３からの「ｓｕｍ’（ｄ）」とが一致するため、「ＯＫ」（有効）を出力する。
【０１９９】
第１ＡＮＤ演算部２６７は、ＭＵＸ２１６から受信したＶａｌｉｄ「ＯＫ」と、比較部２６４からの「ＯＫ」とのＡＮＤ演算結果である「ＯＫ」を出力する。
【０２００】
監視装置２６０は、ＭＵＸ２１６から受信した「ＩＤ：Ｂ」に対応する、ページテーブル２６６内のアドレス範囲「ｘｘｘ−ｙｙｙ」と、ＭＵＸ２１６から受信した「ａｄｄｒ：ｘｙｘ」とを比較する。アドレス範囲に「ａｄｄｒ：ｘｙｘ」と一致するアドレスが存在するため、監視装置２６０は「ＯＫ」を出力する。なお、「ａｄｄｒ：ｘｙｘ」は、ローカルキャッシュ２１８に出力される。
【０２０１】
第２ＡＮＤ演算部２６８は、第１ＡＮＤ演算部２６７からの「ＯＫ」と、アドレスの比較結果の「ＯＫ」とのＡＮＤ演算結果である「ＯＫ」を、ローカルキャッシュ２１８へのＶａｌｉｄとして出力する。
【０２０２】
ローカルキャッシュ２１８では、Ｖａｌｉｄが「ＯＫ」であるため、「ａｄｄｒ：ｘｙｘ」及び「ｄａｔａ：ｄ」がキャッシュコヒーレントバス２０３に出力される。これにより、ＤＲＡＭ２０５の「ａｄｄｒ：ｘｙｘ」に、「ｋｅｙ２」で暗号化された「ｄａｔａ：ｄ」が書き込まれる。
【０２０３】
なお、暗号化データが演算処理装置２２０ｂにより読み出される場合、復号装置２４０ｂは、「ｄａｔａ：ｄ」を「ｋｅｙ２」で正しく復号できる。
【０２０４】
（回路領域２１０ｂから出力されるＩＤが誤っている場合）
例えば、回路領域２１０ｂにマリシアスＩＰが構成されている場合、マリシアスＩＰがＩＤ出力部２５０ｂから出力されるＩＤを偽り、他の回路領域に成り済ましてメモリアクセスを行なうことが想定される。以下、ＩＤ出力部２５０ｂが回路領域２１０ａの「ＩＤ：Ａ」を出力する場合を考える。
【０２０５】
図１６に例示するように、ＩＤ出力部２５０ｂが「ＩＤ：Ａ」をＭＵＸ２１６に出力した場合、監視装置２６０は、関係情報２６１から「ＩＤ：Ａ」に対応する「ｋｅｙ１」を読み出し、復号装置２６２及び暗号化装置２６５に出力する。
【０２０６】
復号装置２６２は、ＭＵＸ２１６から受信した暗号化データを「ｋｅｙ１」を用いて復号するが、当該暗号化データは「ｋｅｙ２」で暗号化されている。このため、「ｄａｔａ：ｄ」とは異なる「ｄａｔａ：ｅ」、及び、「ｓｕｍ（ｄ）」とは異なる「ｓｕｍ（ｆ）」が、それぞれ復号結果として出力される。暗号化装置２６５は、復号結果の「ｄａｔａ：ｅ」を「ｋｅｙ１」を用いて暗号化し、ローカルキャッシュ２１８に出力する。
【０２０７】
生成部２６３は、復号結果の「ｄａｔａ：ｅ」からチェックサム「ｓｕｍ’（ｅ）」を生成する。比較部２６４は、「ｓｕｍ（ｆ）」と「ｓｕｍ’（ｅ）」とが一致しないため、「ＮＧ」（無効）を出力する。
【０２０８】
第１ＡＮＤ演算部２６７は、ＭＵＸ２１６から受信したＶａｌｉｄ「ＯＫ」と、比較部２６４からの「ＮＧ」とのＡＮＤ演算結果である「ＮＧ」を出力する。
【０２０９】
監視装置２６０は、ＭＵＸ２１６から受信した「ＩＤ：Ａ」に対応する、ページテーブル２６６内のアドレス範囲「ｙｙｙ−ｚｚｚ」と、ＭＵＸ２１６から受信した「ａｄｄｒ：ｘｙｘ」とを比較する。アドレス範囲に「ａｄｄｒ：ｘｙｘ」と一致するアドレスが存在しないため、監視装置２６０は「ＮＧ」を出力する。なお、「ａｄｄｒ：ｘｙｘ」は、ローカルキャッシュ２１８に出力される。
【０２１０】
第２ＡＮＤ演算部２６８は、第１ＡＮＤ演算部２６７からの「ＮＧ」と、アドレスの比較結果の「ＮＧ」とのＡＮＤ演算結果である「ＮＧ」を、ローカルキャッシュ２１８へのＶａｌｉｄとして出力する。
【０２１１】
ローカルキャッシュ２１８では、Ｖａｌｉｄが「ＮＧ」であるため、「ａｄｄｒ：ｘｙｘ」及び「ｄａｔａ：ｅ」はキャッシュコヒーレントバス２０３に出力されない。これにより、ＤＲＡＭ２０５の「ａｄｄｒ：ｘｙｘ」には、「ｋｅｙ１」で暗号化された「ｄａｔａ：ｅ」が書き込まれない。
【０２１２】
（回路領域２１０ｂから出力されるアドレスが誤っている場合）
他の例として、マリシアスＩＰが演算処理装置２２０ｂから出力されるアクセス先のアドレスを偽り、他の演算処理装置２２０に割り当てられたＤＲＡＭ２０５内の記憶領域にアクセスを行なうことが想定される。
【０２１３】
例えば、演算処理装置２２０ｂは、回路領域２１０ｂのページテーブル２２２ｂに対して、回路領域２１０ａのページテーブル２２２ａに定められたアドレスに対して排他的に予め定められるアドレスとは異なるアドレスを設定する場合がある。この「異なるアドレス」は、例えば、マリシアスＩＰにより回路領域２１０ａのページテーブル２２２ａに定められたアドレスと重複するようなアドレスである。
【０２１４】
或いは、回路領域２１０ｂのページテーブル２２２ｂ内のアドレスは正常（回路領域２１０ａのページテーブル２２２ａ内のアドレスに対して排他的）であるものの、読み出し後に当該アドレスが上記「異なるアドレス」に変換される場合もある。
【０２１５】
以下、演算処理装置２２０ｂが、アクセス先として演算処理装置２２０ａに割り当てられた「ａｄｄｒ：ｙｚｙ」を出力する場合を考える。
【０２１６】
図１７に例示するように、演算処理装置２２０ｂが「ａｄｄｒ：ｙｚｙ」をメモリＩ／Ｆ２２３に出力した場合、監視装置２６０は、ＭＵＸ２１６から受信した「ＩＤ：Ｂ」に対応する、ページテーブル２６６内のアドレス範囲「ｘｘｘ−ｙｙｙ」を参照する。そして、監視装置２６０は、アドレス範囲「ｘｘｘ−ｙｙｙ」と、ＭＵＸ２１６から受信した「ａｄｄｒ：ｙｚｙ」とを比較するが、アドレス範囲に「ａｄｄｒ：ｙｚｙ」と一致するアドレスが存在しないため、「ＮＧ」を出力する。なお、「ａｄｄｒ：ｙｚｙ」は、ローカルキャッシュ２１８に出力される。
【０２１７】
なお、この場合、「ＩＤ：Ｂ」は正常であるため、データの認証処理は成功する（第１ＡＮＤ演算部２６７からの出力が「ＯＫ」）。
【０２１８】
第２ＡＮＤ演算部２６８は、第１ＡＮＤ演算部２６７からの「ＯＫ」と、アドレスの比較結果の「ＮＧ」とのＡＮＤ演算結果である「ＮＧ」を、ローカルキャッシュ２１８へのＶａｌｉｄとして出力する。
【０２１９】
ローカルキャッシュ２１８では、Ｖａｌｉｄが「ＮＧ」であるため、「ａｄｄｒ：ｙｚｙ」及び「ｄａｔａ：ｄ」はキャッシュコヒーレントバス２０３に出力されない。従って、ＤＲＡＭ２０５の「ａｄｄｒ：ｙｚｙ」には、「ｋｅｙ２」で暗号化された「ｄａｔａ：ｄ」が書き込まれない。
【０２２０】
（回路領域２１０ｂから出力されるＩＤ及びアドレスが誤っている場合）
他の例として、マリシアスＩＰがＩＤ及びアドレスの双方を偽り、他の演算処理装置２２０に成り済ましてメモリアクセスを行なうことが想定される。以下、マリシアスＩＰが、演算処理装置２２０ａに割り当てられた「ＩＤ：Ａ」及び「ａｄｄｒ：ｙｚｙ」を出力する場合を考える。
【０２２１】
図１８に例示するように、アドレスに係る認証処理では、監視装置２６０は、ＭＵＸ２１６から受信した「ＩＤ：Ａ」に対応する、ページテーブル２６６内のアドレス範囲「ｙｙｙ−ｚｚｚ」を参照する。そして、監視装置２６０は、アドレス範囲「ｙｙｙ−ｚｚｚ」と、ＭＵＸ２１６から受信した「ａｄｄｒ：ｙｚｙ」とを比較する。アドレス範囲に「ａｄｄｒ：ｙｚｙ」と一致するアドレスが存在するため、監視装置２６０は「ＯＫ」を出力する。また、「ａｄｄｒ：ｙｚｙ」は、ローカルキャッシュ２１８に出力される。
【０２２２】
このように、マリシアスＩＰが、演算処理装置２２０ａに割り当てられたＩＤ及びアドレスを出力する場合、アドレスの認証処理の結果は「ＯＫ」になる。
【０２２３】
しかし、ＩＤ及びデータの認証では、図１６と同様に、暗号化装置２４２ｂにより「ｋｅｙ２」で暗号化された暗号化データを、復号装置２６２が「ｋｅｙ１」で復号する。このため、復号装置２６２からは誤った復号結果が得られ、結果として、比較部２６４から「ＮＧ」が出力され、ローカルキャッシュ２１８に出力される最終的なＶａｌｉｄも「ＮＧ」となる。
【０２２４】
ローカルキャッシュ２１８では、Ｖａｌｉｄが「ＮＧ」であるため、「ａｄｄｒ：ｙｚｙ」及び「ｄａｔａ：ｅ」はキャッシュコヒーレントバス２０３に出力されない。従って、ＤＲＡＭ２０５の「ａｄｄｒ：ｙｚｙ」には、「ｋｅｙ１」で暗号化された「ｄａｔａ：ｅ」が書き込まれない。
【０２２５】
以上のように、情報処理システム１又は１０によれば、ホストマシン２０において、マリシアスＩＰが他人のメモリ領域２７の記憶領域に不正な書込アクセスを行なうことが抑止される。従って、マリシアスＩＰにより他人のデータが改ざんされることを防止できる。これにより、例えば、クラウド上に保存された個人データが不正に操作されるといった脅威を未然に防止できる。また、情報を外部に送信するような不正なプログラムが他人のメモリ領域２７に書き込まれることも防止できるため、情報漏えいの脅威を未然に防止できる。
【０２２６】
さらに、メモリ領域２７に記憶されたデータは、メモリ領域２７にアクセスできる処理回路２２ａに対応する暗号鍵を用いて暗号化されたデータである。従って、他の処理回路２２ｂを利用するユーザが、当該暗号化データを取得できたとしても、適切な暗号鍵を有していないため、暗号化データを復号できない。
【０２２７】
従って、マリシアスＩＰが他人のメモリ領域２７の記憶領域からデータを盗み見ることを防止でき、情報漏えいの脅威を未然に防止できる。なお、情報漏えいの脅威としては、例えば、発表前の経理情報を盗まれ、株価が不正に操作されたり、クレジットカードの番号が盗まれ、不正に使用されるといった脅威が考えられる。
【０２２８】
従って、一実施形態に係る情報処理システム１又は１０によれば、ユーザデータについて、信頼性の高いデータ管理を実現できる。
【０２２９】
なお、一実施形態に係る情報処理システム１又は１０では、ＦＰＧＡ２１に対して、生成部２３や暗号装置２４等が追加され、ＦＰＧＡ２１内部又は外部に監視装置２６が追加される。しかし、追加される回路によるＦＰＧＡ２１の使用コスト、例えば回路規模を、僅かな増加に留めることができる。また、情報処理システム１では、生成部２３、暗号装置２４、監視装置２６等のハードウェアによる暗号化、復号、認証等の処理によってレイテンシが生じる場合がある。しかし、ＦＰＧＡ２１の処理がパイプラインであるため、帯域を維持することができる。
【０２３０】
なお、ＦＰＧＡをそなえる情報処理装置におけるセキュリティリスクを低減させる手法として、管理装置が、受け取った論理について悪意のあるアルゴリズムであるか否かを判別するという手法も考えられる。しかし、判別が困難になるケースがあり、マリシアスＩＰによるデータ改ざんやデータ漏えいを完全に防げるとはいえない。
【０２３１】
また、他の手法として、情報処理装置にＦＰＧＡを監視するハードウェアを追加する手法も考えられるが、プロセッサのメモリアクセスはボトルネックになるケースが多い。従って、性能低下やハードウェアコストの増大を招く可能性が高く、費用対効果が良いとはいい難い。
【０２３２】
以上のことから、ＦＰＧＡをそなえる情報処理装置におけるセキュリティリスクを低減させる手法として、上述した一実施形態に係る手法が効果的であるといえる。
【０２３３】
〔１−７−３〕実施例の変形例
図１４に示す回路領域２１０ａ及び２１０ｂ、或いは、監視装置２６０は、以下のように構成されてもよい。
【０２３４】
〔１−７−３−１〕実施例の第１変形例
例えば、図１９に示すように、実施例の第１変形例に係るＦＰＧＡ２１０１では、回路領域２１０ａ及び２１０ｂは、それぞれ、暗号化装置２４２に代えて暗号化装置２４４をそなえてもよい。
【０２３５】
暗号化装置２４４は、暗号化装置２４２が出力する暗号化データに加えて、さらに、演算処理装置２２０の演算結果を暗号鍵を用いて暗号化した書込用暗号化データを出力してよい。書込用暗号化データは、メモリＩ／Ｆ２２３及びＭＵＸ２１６を介して監視装置２６０に送信される。
【０２３６】
監視装置２６０は、当該書込用暗号化データを、そのまま、ローカルキャッシュ２１８に出力してよい。これにより、監視装置２６０から、図１６に示す暗号化装置２６５の構成を削除できる。
【０２３７】
この場合、データ及びｓｅｃの暗号化データは、復号装置２６２、生成部２６３、及び比較部２６４による認証処理用のデータとして扱われてよく、復号装置２６２で復号されたデータは、生成部２６３でのｓｅｃの生成に用いられた後は読み捨てられてよい。
【０２３８】
以上の構成によっても、実施例と同様の効果を奏することができる。また、監視装置２６０において暗号化装置２６５が不要となるため、監視装置２６０の回路規模（コスト）を削減できる。
【０２３９】
〔１−７−３−２〕実施例の第２変形例
ＤＲＡＭ２０５に書き込まれるデータは、暗号化されていないデータ（平文）であってもよい。図２０に例示するように、実施例の第２変形例に係るＦＰＧＡ２１０２では、回路領域２１０ａ及び２１０ｂから、それぞれ、復号装置２４０（図１４参照）の構成を削除してもよい。また、監視装置２６０から、暗号化装置２６５（図１６参照）の構成を削除してもよい。
【０２４０】
これにより、ローカルキャッシュ２１８には、復号装置２６２で復号されたデータ（平文）が出力される。
【０２４１】
このような構成により、少なくとも、マリシアスＩＰによる他人のメモリ領域２７又はＤＲＡＭ２０５のデータ改ざんを防止できる。また、回路領域２１０ａ及び２１０ｂにおいて復号装置２４０が不要となり、監視装置２６０において暗号化装置２６５が不要となるため、ＦＰＧＡ２１０２全体の回路規模（コスト）を削減できる。
【０２４２】
以上のように、一実施形態に係る手法によれば、図１３〜図２０に示す情報処理システム１０においても、データの改ざん又はデータ漏えいを防止でき、セキュリティリスクを低減できる。
【０２４３】
〔１−８〕変形例
次に、一実施形態の変形例について説明する。
【０２４４】
一実施形態では、管理マシン３は、ユーザが用意したＩＰコアをクライアントマシン４から受信し、当該ＩＰコアに基づき、ＦＰＧＡ２１に処理回路２２を構成する。
【０２４５】
ここで、上述のようにＩＰは再利用可能な機能ブロックである。ＦＰＧＡを利用するサービスでは、ＩＰを再利用可能であるため、或るユーザが過去に設計したものを、機能ブロックごと当該ユーザ又は他のユーザが再利用したり、機能ブロックを作成して販売したりすることも可能である。
【０２４６】
そこで、一実施形態の変形例では、図２１に示すように、情報処理システム１ＡがＩＰコアのリソースプール６をそなえてもよい。なお、情報処理システム１Ａは、図５に示す情報処理システム１と同様のホストマシン２及びクライアントマシン４をそなえてよく、情報処理システム１と一部の機能が異なる管理マシン３Ａをそなえてよい。
【０２４７】
リソースプール６は、複数のＩＰコア、換言すれば複数種類の処理回路２２に対応する複数の第１情報を蓄積するストレージ装置の一例である。なお、リソースプール６は、暗号装置２４の構成に用いる第２情報を更に蓄積してもよい。リソースプール６としては、例えばサーバ又はＰＣ等の種々のコンピュータが挙げられる。
【０２４８】
リソースプール６は、図９に示すコンピュータ５と同様のハードウェア構成をそなえてよい。なお、リソースプール６は、記憶部５ｃとして、ＨＤＤ又はＳＳＤを複数そなえてよく、これらを用いて例えばRedundant Arrays of Inexpensive Disks（ＲＡＩＤ）等が構成されてもよい。
【０２４９】
図２１に示すように、リソースプール６は、例示的に、ＩＰコアＤＢ６１をそなえてよい。ＩＰコアＤＢ６１には、複数のＩＰコアが登録され、管理マシン３Ａからの要求に応じて、要求されたＩＰコアがＩＰコアＤＢ６１から読み出され、管理マシン３Ａに送信されてよい。なお、ＩＰコアＤＢ６１は、例えば記憶部５ｃ等のストレージにより実現されてよい。
【０２５０】
リソースプール６では、例えばＦＰＧＡ２１のベンダや他の提供者がＩＰコアを登録し、登録したＩＰコアを販売又は提供してもよい。
【０２５１】
クライアントマシン４は、管理マシン３Ａに対して、どのような処理を実現したいのかといった情報、例えば処理シーケンスや、ＩＰコアを特定する情報等の、ＦＰＧＡ２１に構成する処理回路２２に関する情報を送信してよい。クライアントマシン４から処理シーケンスが送信される場合、管理マシン３Ａは、受信した処理シーケンスに基づき、リソースプール６からＩＰコアを選定し、選定したＩＰコアに基づく処理回路２２をアプリケーション４１に利用させてよい。
【０２５２】
或いは、クライアントマシン４は、例えば、リソースプール６に登録されたＩＰコアの中から利用したいＩＰコアを選択し、管理マシン３Ａに対して、選択したＩＰコアに基づく処理回路２２の利用登録を行なってもよい。
【０２５３】
管理マシン３Ａは、クライアントマシン４のユーザが利用するホストマシン２のＦＰＧＡ２１に対して、クライアントマシン４から要求されるＩＰコアに基づく処理回路２２の書き込みを制御及び管理してよい。
【０２５４】
なお、暗号化ＩＰコア１３ｃについては、管理マシン３Ａは、一実施形態と同様の手法で暗号化ＩＰコア１３ｃを取得し、ＦＰＧＡ２１に書き込んでよい。或いは、管理マシン３Ａは、暗号化ＩＰコアについてもリソースプール６から取得してもよい。
【０２５５】
なお、ホストマシン２、管理マシン３Ａ、及びリソースプール６の少なくとも１つは、データセンタ等の施設に設置されてよい。
【０２５６】
次に、図２２を参照して、上述の如く構成された情報処理システム１Ａの動作例について、一実施形態に係る情報処理システム１と異なる動作を説明する。
【０２５７】
図２２に示すように、クライアントマシン４は、管理マシン３ＡへＦＰＧＡ２１を用いるサービスの要求を送信し（処理Ｔ１；図２１の矢印（Ｉ′））、管理マシン３Ａから認証を受けて（処理Ｔ２）、ＩＤ４２の提供を受ける（処理Ｔ３；図２１の矢印（II））。
【０２５８】
クライアントマシン４は、利用したい処理シーケンスを管理マシン３Ａに送信する（処理Ｔ４１）。管理マシン３Ａは、暗号鍵を取得し（処理Ｔ５）、取得した暗号鍵をクライアントマシン４に提供する（処理Ｔ６）。
【０２５９】
処理シーケンスを受信した管理マシン３Ａは、図示しないネットワークを介して接続されたリソースプール６にアクセスし、ＩＰコアＤＢ６１から処理シーケンスに合致するＩＰコアをピックアップする（処理Ｔ４２；図２１の矢印（II-2））。そして、管理マシン３Ａは、リソースプール６からピックアップしたＩＰコアを取得する（処理Ｔ４３）。
【０２６０】
図２２の処理Ｔ７以降の処理は、一実施形態に係る情報処理システム１と同様でよい。
【０２６１】
なお、図２２の処理Ｔ４２及びＴ４３において、ＩＰコアは、リソースプール６からホストマシン２に直接渡されてもよい。この場合、図２２の処理Ｔ７以降（図６の処理Ｔ７〜Ｔ９参照）におけるＦＰＧＡ２１へのＩＰコアの書き込みは、以下に例示するように、例えばリソースプール６又はホストマシン２により行なわれてよい。なお、ＩＰコアには、処理ＩＰコア及び暗号化ＩＰコアの少なくとも一方が含まれてよい。
【０２６２】
一例として、管理マシン３Ａは、リソースプール６に対して、処理シーケンスに合致するＩＰコアをホストマシン２へ送信する旨の指示を行なってよい。
【０２６３】
この場合、リソースプール６は、指定されたＩＰコアをＦＰＧＡ２１への書込指示とともにホストマシン２に送信し、ホストマシン２のＣＰＵ２ａが書込指示に基づきＩＰコアをＦＰＧＡ２１に書き込んでもよい。或いは、リソースプール６とホストマシン２とが専用線で接続される場合には、リソースプール６は、指定されたＩＰコアを専用線を介してＦＰＧＡ２１に書き込んでもよい。換言すれば、ＩＰコアの論理合成をリソースプール６又はホストマシン２が行なってもよい。
【０２６４】
以上のように、変形例に係る情報処理システム１Ａによっても、一実施形態に係る情報処理システム１と同様の効果を奏することができる。
【０２６５】
また、変形例で想定するような、ＦＰＧＡ２１のベンダ等がＩＰコアを提供する態様であっても、管理マシン３Ａが、ユーザ及び処理ＩＰコアに暗号鍵を対応付けるため、ユーザに通知する暗号鍵を適切に管理できる。
【０２６６】
さらに、ＦＰＧＡ２１への処理回路２２の書き込みに用いられるＩＰコアは、リソースプール６に登録されたＩＰコアの中から選択される。このため、リソースプール６に登録されたＩＰコアについて、例えばリソースプール６や管理マシン３Ａが事前にセキュリティリスクを判断することも可能となる。従って、一実施形態及び変形例に係る手法に加えて、事前のセキュリティリスクの判断も行なうことで、セキュリティリスクをより低減させることもできる。
【０２６７】
次に、図２３を参照して、変形例に係る管理マシン３Ａの機能構成例について説明する。図２３は変形例に係る管理マシン３Ａの機能構成を示すブロック図である。図２３に示すように、管理マシン３Ａは、例示的に、図１１に示す管理マシン３の機能構成に加えて、処理ＩＰコア取得部１９をそなえてよい。
【０２６８】
なお、受信部の一例としての通信部１４は、一実施形態の場合と同様に、処理回路２２をＦＰＧＡ２１に構成することを指示する要求を、クライアントマシン４から受信してよい。
【０２６９】
処理ＩＰコア取得部１９は、リソースプール６からクライアントマシン４が要求する処理ＩＰコアを取得する。なお、クライアントマシン４が要求する処理ＩＰコアは、クライアントマシン４から受信した処理シーケンスに基づき処理ＩＰコア取得部１９が特定してもよいし、クライアントマシン４がリソースプール６を参照して選定した処理ＩＰコアであってもよい。例えば処理ＩＰコア取得部１９は、図２２の処理Ｔ４２及びＴ４３に示す処理を行なってよい。
【０２７０】
換言すれば、処理ＩＰコア取得部１９は、クライアントマシン４からの要求を満たす第１情報、及び、第２情報の少なくとも一方を、リソースプール６から取得する取得部の一例である。
【０２７１】
書込制御部１８は、管理マシン３Ａが取得した処理ＩＰコア１３ｂ及び暗号化ＩＰコア１３ｃをＦＰＧＡ２１に構成する制御を行なってよい。
【０２７２】
なお、処理ＩＰコアがリソースプール６からホストマシン２に直接渡される場合、管理マシン３Ａは、リソースプール６に対するホストマシン２への処理ＩＰコアの送信指示により、ＦＰＧＡ２１に処理回路２２等を構成する制御を行なうことができる。
【０２７３】
また、暗号化ＩＰコアがリソースプール６からホストマシン２に直接渡される場合、管理マシン３Ａは、リソースプール６に対するホストマシン２への暗号化ＩＰコアの送信指示により、ＦＰＧＡ２１に暗号装置２４を構成する制御を行なうことができる。
【０２７４】
送信指示は、通信部１４、書込制御部１８、及び処理ＩＰコア取得部１９の少なくとも１つの機能によって発行されてよい。換言すれば、通信部１４、書込制御部１８、及び処理ＩＰコア取得部１９の少なくとも１つは、第１及び第２情報に基づき、処理回路２２及び暗号装置２４等をＦＰＧＡ２１に構成する制御を行なう制御部の一例である。
【０２７５】
なお、管理マシン３Ａが処理ＩＰコア又は／及び暗号化ＩＰコアをリソースプール６から取得するか、リソースプール６からホストマシン２へ直接送信させるかは、リソースプール６やホストマシン２が有する機能等に応じて決定されてよい。或いは、ＩＰコアＤＢ６１におけるＩＰコアの格納状況又は運用状況等に応じて決定されてもよい。
【０２７６】
次に、図２４を参照して、変形例に係る情報処理システム１Ａの実施例について説明する。図２４は変形例の実施例に係る情報処理システム１０Ａの構成を示すブロック図である。なお、図２４では、便宜上、管理マシン３０ＡのＣＰＵ３ａ及びメモリ３ｂ、クライアントマシン４０−１及び４０−２のＣＰＵ４ａ及びメモリ４ｂ、並びにリソースプールマシン６０のＣＰＵ及びメモリの図示を省略している。以下、一実施形態の実施例に係る情報処理システム１０と異なる構成について説明する。
【０２７７】
図２４に示すように、情報処理システム１０Ａは、例示的に、情報処理システム１０の構成に加えて、リソースプールマシン６０をそなえてよい。
【０２７８】
リソースプールマシン６０は、図２１に示すものと同様のＩＰコアＤＢ６１をそなえてよい。また、リソースプールマシン６０は、ＮＩＣ６１０をそなえてよい。
【０２７９】
ＮＩＣ６１０は、リソースプールマシン６０をＬＡＮ等のネットワークに接続する装置である。ＮＩＣ６１０は、例えば管理マシン３０と有線又は無線により接続されてよく、さらに、ホストマシン２０又はクライアントマシン４０と接続されてもよい。
【０２８０】
なお、ホストマシン２０のＦＰＧＡ２１０は、図１４参照に示す一実施形態の実施例、図１９に示す実施例の第１変形例、並びに、図２０に示す実施例の第２変形例のうちのいずれの構成であってもよい。
【０２８１】
〔２〕その他
上述した一実施形態及び変形例に係る技術は、以下のように変形、変更して実施することができる。
【０２８２】
例えば、図１０に示すホストマシン２の各機能ブロックは、それぞれ任意の組み合わせで併合してもよく、分割してもよい。また、図１１に示す管理マシン３の各機能ブロックは、それぞれ任意の組み合わせで併合してもよく、分割してもよい。
【０２８３】
また、一実施形態の変形例において、情報処理システム１Ａが管理マシン３Ａ及びリソースプール６をそなえるものとしたが、これに限定されるものではない。管理マシン３Ａ及びリソースプール６のいずれか一方の機能は、他方の装置に併合されてもよく、或いは管理マシン３Ａ及びリソースプール６の少なくとも一部の機能を１以上のコンピュータに集約してもよい。この場合、当該他方の装置又は当該コンピュータが、ホストマシン２を管理する管理装置と位置付けられてよい。
【０２８４】
一実施形態及び変形例において、ＦＰＧＡ２１には、処理回路２２、周辺回路、及び暗号装置２４等を含む論理回路が複数、例えば２つ構成されるものとしたが、１つのＦＰＧＡ２１に構成される論理回路は、１つ、又は３つ以上であってもよい。１つのＦＰＧＡ２１に複数の論理回路が構成される場合、ＦＰＧＡ２１内の複数の処理回路２２の各々には、メモリ２ｂの互いに異なるアドレス領域、例えばメモリ領域２７が割り当てられてよい。
【０２８５】
また、一実施形態及び変形例において、ホストマシン２が複数のＦＰＧＡ２１をそなえ、複数のＦＰＧＡ２１の各々に、処理回路２２、周辺回路、及び暗号装置２４等を含む論理回路が１つ以上構成されてもよい。この場合においても、複数のＦＰＧＡ２１における複数の処理回路２２の各々には、メモリ２ｂの互いに異なるアドレス領域が割り当てられてよい。
【０２８６】
さらに、一実施形態及び変形例において、監視装置２６が複数の論理回路で共通に用いられるものとしたが、監視装置２６はホストマシン２に複数存在してもよい。この場合、複数の監視装置２６は、それぞれ、１以上の論理回路を担当してよい。
【０２８７】
また、一実施形態及び変形例において、ＦＰＧＡ２１は、処理回路２２よりも少ない数の暗号装置２４をそなえてもよい。この場合、暗号装置２４は、例えば図１４に示す監視装置２６０の関係情報２６１のように、識別情報と暗号鍵とを対応付ける情報を保持してもよい。
【０２８８】
〔３〕付記
以上の実施形態に関し、更に以下の付記を開示する。
【０２８９】
（付記１）
プログラマブルな回路領域を複数有するプログラマブルロジック装置であって、
前記複数の回路領域のうちの特定の回路領域により実現される演算処理部の処理に基づくデータと、前記データに付加された第１チェック用データとを、前記演算処理部に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成する暗号化部と、
前記特定の回路領域から出力される識別情報と、前記暗号化データとを認証部に送信する送信部と、をそなえ、
前記認証部は、前記送信部から受信した識別情報に対応する暗号鍵に基づき前記送信部から受信した暗号化データを復号し、復号したデータに付加された第１チェック用データに基づき前記復号したデータの認証処理を行なう、
ことを特徴とする、プログラマブルロジック装置。
【０２９０】
（付記２）
前記第１チェック用データは、前記演算処理部の処理に基づく前記データに特定の処理を施すことで得られるチェック用データであり、
前記認証処理は、前記復号したデータに前記特定の処理を施すことで得られる第２チェック用データが、前記復号したデータに付加された前記第１チェック用データに一致するか否かによって、前記復号したデータを認証することを含む、
ことを特徴とする、付記１記載のプログラマブルロジック装置。
【０２９１】
（付記３）
前記演算処理部は、前記演算処理部に割り当てられた記憶領域に対する、前記演算処理部の処理に基づくデータを書き込む書込要求を行ない、
前記認証部は、前記記憶領域に前記書込要求に係るデータを書き込む前に、前記書込要求に係るデータに基づく前記認証処理を行なう、
ことを特徴とする、付記１又は付記２記載のプログラマブルロジック装置。
【０２９２】
（付記４）
前記送信部は、前記書込要求に係る前記データの書込先のアドレスを、前記特定の回路領域から出力される識別情報と、前記暗号化データとともに前記認証部に送信し、
前記認証処理は、前記送信部から受信した前記書込先のアドレスと、前記演算処理部に割り当てられた記憶領域のアドレスとに基づき前記受信した書込先のアドレスを認証することを含む、
ことを特徴とする、付記３記載のプログラマブルロジック装置。
【０２９３】
（付記５）
前記認証部は、前記演算処理部に割り当てられた識別情報と、前記演算処理部に割り当てられた記憶領域のアドレスとを管理する管理情報を記憶し、
前記認証処理は、前記送信部から受信した識別情報に対応する、前記管理情報により管理されるアドレスが、前記受信した書込先のアドレスに一致するか否かによって、前記受信した書込先のアドレスを認証することを含む、
ことを特徴とする、付記４記載のプログラマブルロジック装置。
【０２９４】
（付記６）
前記認証部は、前記書込要求に係る前記認証処理が成功した場合、前記書込要求に係るデータを前記演算処理部に割り当てられた記憶領域に書き込み、前記書込要求に係る前記認証処理が失敗した場合、前記書込要求に係るデータの書き込みを抑止する、
ことを特徴とする、付記３〜５のいずれか１項記載のプログラマブルロジック装置。
【０２９５】
（付記７）
プログラマブルな回路領域を複数有するプログラマブルロジック装置と、
認証部と、をそなえ、
前記プログラマブルロジック装置は、
前記複数の回路領域のうちの特定の回路領域により実現される演算処理部の処理に基づくデータと、前記データに付加された第１チェック用データとを、前記演算処理部に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成する暗号化部と、
前記特定の回路領域から出力される識別情報と、前記暗号化データとを前記認証部に送信する送信部と、をそなえ、
前記認証部は、前記送信部から受信した識別情報に対応する暗号鍵に基づき前記送信部から受信した暗号化データを復号し、復号したデータに付加された第１チェック用データに基づき前記復号したデータの認証処理を行なう、
ことを特徴とする、情報処理装置。
【０２９６】
（付記８）
前記第１チェック用データは、前記演算処理部の処理に基づく前記データに特定の処理を施すことで得られるチェック用データであり、
前記認証処理は、前記復号したデータに前記特定の処理を施すことで得られる第２チェック用データが、前記復号したデータに付加された前記第１チェック用データに一致するか否かによって、前記復号したデータを認証することを含む、
ことを特徴とする、付記７記載の情報処理装置。
【０２９７】
（付記９）
前記演算処理部は、前記演算処理部に割り当てられた記憶領域に対する、前記演算処理部の処理に基づくデータを書き込む書込要求を行ない、
前記認証部は、前記記憶領域に前記書込要求に係るデータを書き込む前に、前記書込要求に係るデータに基づく前記認証処理を行なう、
ことを特徴とする、付記７又は付記８記載の情報処理装置。
【０２９８】
（付記１０）
前記送信部は、前記書込要求に係る前記データの書込先のアドレスを、前記特定の回路領域から出力される識別情報と、前記暗号化データとともに前記認証部に送信し、
前記認証処理は、前記送信部から受信した前記書込先のアドレスと、前記演算処理部に割り当てられた記憶領域のアドレスとに基づき前記受信した書込先のアドレスを認証することを含む、
ことを特徴とする、付記９記載の情報処理装置。
【０２９９】
（付記１１）
前記認証部は、前記演算処理部に割り当てられた識別情報と、前記演算処理部に割り当てられた記憶領域のアドレスとを管理する管理情報を記憶し、
前記認証処理は、前記送信部から受信した識別情報に対応する、前記管理情報により管理されるアドレスが、前記受信した書込先のアドレスに一致するか否かによって、前記受信した書込先のアドレスを認証することを含む、
ことを特徴とする、付記１０記載の情報処理装置。
【０３００】
（付記１２）
前記認証部は、前記書込要求に係る前記認証処理が成功した場合、前記書込要求に係るデータを前記演算処理部に割り当てられた記憶領域に書き込み、前記書込要求に係る前記認証処理が失敗した場合、前記書込要求に係るデータの書き込みを抑止する、
ことを特徴とする、付記９〜１１のいずれか１項記載の情報処理装置。
【０３０１】
（付記１３）
プログラマブルな回路領域を複数有するプログラマブルロジック装置における前記複数の回路領域のうちの特定の回路領域により実現される演算処理部の処理に基づくデータと、前記データに付加された第１チェック用データとを、前記演算処理部に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成し、
前記特定の回路領域から出力される識別情報と、前記暗号化データとを認証部に送信し、
前記認証部が、受信した識別情報に対応する暗号鍵に基づき、受信した暗号化データを復号し、復号したデータに付加された第１チェック用データに基づき前記復号したデータの認証処理を行なう、
ことを特徴とする、処理方法。
【０３０２】
（付記１４）
プログラマブルな回路領域を複数有するプログラマブルロジック装置における前記複数の回路領域のうちの特定の回路領域に演算処理部を構成するのに用いる第１情報と、暗号化部及び送信部の構成に用いる第２情報と、を取得し、
前記第１及び第２情報に基づき、前記プログラマブルロジック装置に対して、前記演算処理部、前記暗号化部、及び前記送信部を構成する制御を行なう、
処理をコンピュータに実行させ、
前記暗号化部は、前記演算処理部の処理に基づくデータと、前記データに付加された第１チェック用データとを、前記演算処理部に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成し、
前記送信部は、前記特定の回路領域から出力される識別情報と、前記暗号化データとを認証部に送信し、
前記認証部は、受信した識別情報に対応する暗号鍵に基づき、受信した暗号化データを復号し、復号したデータに付加された第１チェック用データに基づき前記復号したデータの認証処理を行なう、
ことを特徴とする、処理プログラム。
【０３０３】
（付記１５）
前記演算処理部を構成する制御を行なう際に、前記演算処理部に割り当てられた識別情報と、前記識別情報に対応する暗号鍵とに関する情報を、前記認証部に登録する、
処理を前記コンピュータに実行させることを特徴とする、付記１４記載の処理プログラム。
【０３０４】
（付記１６）
プログラマブルな回路領域を複数有するプログラマブルロジック装置における前記複数の回路領域のうちの特定の回路領域に演算処理部を構成するのに用いる第１情報と、暗号化部及び送信部の構成に用いる第２情報と、を取得する取得部と、
前記第１及び第２情報に基づき、前記プログラマブルロジック装置に対して、前記演算処理部、前記暗号化部、及び前記送信部を構成する制御を行なう制御部と、をそなえ、
前記暗号化部は、前記演算処理部の処理に基づくデータと、前記データに付加された第１チェック用データとを、前記演算処理部に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成し、
前記送信部は、前記特定の回路領域から出力される識別情報と、前記暗号化データとを認証部に送信し、
前記認証部は、受信した識別情報に対応する暗号鍵に基づき、受信した暗号化データを復号し、復号したデータに付加された第１チェック用データに基づき前記復号したデータの認証処理を行なう、
ことを特徴とする、管理装置。
【０３０５】
（付記１７）
前記制御部が前記演算処理部を構成する制御を行なう際に、前記演算処理部に割り当てられた識別情報と、前記識別情報に対応する暗号鍵とに関する情報を、前記認証部に登録する登録部、をそなえる
ことを特徴とする、付記１６記載の管理装置。
【０３０６】
（付記１８）
プログラマブルな回路領域を複数有するプログラマブルロジック装置と、認証部と、をそなえる情報処理装置と、
前記情報処理装置を管理する管理装置と、をそなえ、
前記管理装置は、前記複数の回路領域のうちの特定の回路領域により実現される演算処理部の構成に用いる第１情報と、暗号化部及び送信部の構成に用いる第２情報と、に基づき、前記プログラマブルロジック装置に対して、前記演算処理部、前記暗号化部、及び前記送信部を構成する制御を行ない、
前記プログラマブルロジック装置に構成された前記暗号化部は、前記演算処理部の処理に基づくデータと、前記データに付加された第１チェック用データとを、前記演算処理部に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成し、
前記プログラマブルロジック装置に構成された前記送信部は、前記特定の回路領域から出力される識別情報と、前記暗号化データとを前記認証部に送信し、
前記認証部は、前記送信部から受信した識別情報に対応する暗号鍵に基づき前記送信部から受信した暗号化データを復号し、復号したデータに付加された第１チェック用データに基づき前記復号したデータの認証処理を行なう、
ことを特徴とする、情報処理システム。
【符号の説明】
【０３０７】
１、１Ａ、１０、１０Ａ    情報処理システム
１１、１４    通信部
１２    書込処理部
１３    メモリ部
１３ａ    ユーザＤＢ
１３ｂ    処理ＩＰコア
１３ｃ    暗号化ＩＰコア
１５    ユーザ管理部
１６    暗号鍵取得部
１７    暗号化ＩＰ生成部
１８    書込制御部
１９    処理ＩＰコア取得部
２、２０    ホストマシン
２ａ    ＣＰＵ
２ｂ    メモリ
２１、２１０    ＦＰＧＡ
２１ａ    第１回路領域
２１ｂ    第２回路領域
２１ｃ    セレクタ
２２、２２ａ、２２ｂ    処理回路
２３、２３ａ、２３ｂ    生成部
２４、２４ａ、２４ｂ    暗号装置
２５、２５ａ、２５ｂ    ＩＤ出力部
２６、２６０    監視装置
２７、２７ａ、２７ｂ    メモリ領域
２８、４４    ネットワーク装置
３、３Ａ、３０、３０Ａ    管理マシン
４、４−１、４−２、４０、４０−１、４０−２    クライアントマシン
４１、４１ａ、４１ｂ    アプリケーション
４２、４２ａ、４２ｂ    ＩＤ
４３、４３ａ、４３ｂ    ＩＰコア
【図１】
2018029267.tif 000003
【図２】
2018029267.tif 000004
【図３】
2018029267.tif 000005
【図４】
2018029267.tif 000006
【図５】
2018029267.tif 000007
【図６】
2018029267.tif 000008
【図７】
2018029267.tif 000009
【図８】
2018029267.tif 000010
【図９】
2018029267.tif 000011
【図１０】
2018029267.tif 000012
【図１１】
2018029267.tif 000013
【図１２】
2018029267.tif 000014
【図１３】
2018029267.tif 000015
【図１４】
2018029267.tif 000016
【図１５】
2018029267.tif 000017
【図１６】
2018029267.tif 000018
【図１７】
2018029267.tif 000019
【図１８】
2018029267.tif 000020
【図１９】
2018029267.tif 000021
【図２０】
2018029267.tif 000022
【図２１】
2018029267.tif 000023
【図２２】
2018029267.tif 000024
【図２３】
2018029267.tif 000025
【図２４】
2018029267.tif 000026