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