(58)【調査した分野】(Int.Cl.,DB名)
前記自身の組の管理情報には、前記少なくとも1つの組における管理情報に定められたアドレスに対して排他的に予め定められるアドレスとは異なるアドレスが設定されており、
前記異なるアドレスは、前記少なくとも1つの組における管理情報に定められたアドレスと重複する、
ことを特徴とする、請求項8記載の情報処理装置。
前記制御部は、複数種類の演算回路に対応する複数の第1情報を蓄積するストレージ装置に対して、前記端末装置からの要求を満たす第1情報に基づく前記演算回路を、前記集積回路に構成させる制御を行なう、
ことを特徴とする、請求項11記載の管理装置。
【発明を実施するための形態】
【0014】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【0015】
なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。また、以下の説明において複数の装置を区別しない場合には、符号のハイフン“−”以降の数字を省略して表記する、又は、符号のアルファベットを省略して表記する場合がある。例えば
図1に示すクライアントマシン130−1及び130−2を区別しない場合には、単にクライアントマシン130と表記し、
図1に示すアプリケーション131a及び131bを区別しない場合には、単にアプリケーション131と表記する。
【0016】
〔1〕一実施形態
〔1−1〕クラウドシステムにおけるセキュリティリスクについて
はじめに、クラウドシステムにおけるセキュリティ面のリスクについて説明する。
【0017】
図1は、ホストマシン110のプロセッサとしてCPUが用いられるクラウドシステム100の動作例を説明する図である。
図1に示すように、クラウドシステム100は、例示的に、ホストマシン110、管理マシン120、及び、複数(
図1の例では2つ)のクライアントマシン130−1及び130−2をそなえる。
【0018】
図1に例示するように、クライアントマシン130−1及び130−2のアプリケーション131a及び131bは、それぞれ、管理サーバ120へサービス利用の要求を送信する(
図1の矢印(i)参照)。以下、サービスが仮想マシンの提供であるものとする。
【0019】
クラウドシステムを管理する管理マシン120は、要求に基づきサービスの認証を行ない、アプリケーション131の各々に対して、例えば仮想マシンの識別子(ID;Identifier)を送信する(矢印(ii)参照)。また、管理マシン120は、クライアントマシン130から受信した情報、例えば仮想マシンの利用に用いられるプログラムやデータ等をホストマシン110に送付する(矢印(iii)参照)。
【0020】
ホストマシン110は、CPU110a及びメモリ110b等のハードウェア資源を用いてOperating System(OS)又はハイパバイザ111(以下、OS/HPV111と表記する場合がある)を実行する。また、OS/HPV111の制御下で、仮想マシン112a及び112bがそれぞれ実行される。
【0021】
ホストマシン110では、CPU110aやメモリ110b等のハードウェア資源が複数の仮想マシン112a及び112bで共用される。例えば、仮想マシン112aは、ハードウェア資源の少なくとも一部により実現されるCPU113a及び共用メモリ(SHM;Shared Memory)114aを利用する。また、仮想マシン112bは、ハードウェア資源の少なくとも一部により実現されるCPU113b及び共用メモリ114bを利用する。
【0022】
ここで、コンピュータでのメモリアドレスの管理について説明する。
図2に例示するように、ユーザは、仮想アドレスでアプリケーションを記述し、仮想アドレスに割り当てる物理アドレスをOSが決定する。仮想アドレスと物理アドレスとの対応付けは、ページテーブル(Page Table)により管理される。ページテーブルは、メモリの割り当てを管理する情報の一例である。
【0023】
CPUは、OSのページテーブルへのアクセスをハードウェアで高速化するために、頻繁に使われるアドレスの変換テーブルをCPU内部のTable Lookup Buffer(TLB)にコピーする。そして、CPUは、アプリケーションで指定される仮想アドレスを、TLBに基づき物理アドレスに変換し、変換した物理アドレスでメモリにアクセスする。
【0024】
このように、ユーザは物理アドレスを認識せずに仮想アドレスを認識するため、ユーザが他のユーザのアプリケーションで用いる物理アドレスにアクセスすることは困難である。
【0025】
図1の例においても、共用メモリ114a及び114bは仮想アドレスにより管理され、それぞれメモリ110bの物理アドレスに割り当てられる。以下、共用メモリ114aに割り当てられるメモリ110bのアドレス領域をメモリ115aと表記し、共用メモリ114bに割り当てられるメモリ110bのアドレス領域をメモリ115bと表記する。
【0026】
仮想マシン112a及び112bでは、それぞれ対応するメモリ115a及び115b以外のメモリ110b上の記憶領域へのアクセスが、OS/HPV111により制限される。
【0027】
このため、例えばアプリケーション131bのユーザが、仮想マシン112bを通じて他のユーザの仮想マシン112aに対応するメモリ115aへのアクセスを試みたとしても、OS/HPV111により、メモリ115aに対するアクセスは抑止される。例えば
図1に矢印(iv)で示すように、OS/HPV111はセグメンテーション違反(Segmentation Fault)を検出し、エラー処理等を行なう。
【0028】
メモリ115に記憶される仮想マシン112の演算結果は、ホストマシン110のネットワーク装置116を介して、仮想マシン112を利用するクライアントマシン130のネットワーク装置133との間で送受信される(矢印(v)参照)。
【0029】
例えばメモリ115aに記憶された演算結果は、パケット(A)に格納されてネットワーク装置116からクライアントマシン130−1のネットワーク装置133へ送信され、パケット(A)内のデータ(A)がアプリケーション131aに渡される。また、メモリ115bに記憶された演算結果は、パケット(B)に格納されてネットワーク装置116からクライアントマシン130−2のネットワーク装置133へ送信され、パケット(B)内のデータ(B)がアプリケーション131bに渡される。
【0030】
以上のように、ホストマシン110のプロセッサとしてCPU110aが用いられるクラウドシステム100では、アプリケーション131のユーザは、OS/HPV111が提供する仮想マシン112を通じて処理を行なう。このため、ユーザが他のユーザのメモリ110bの記憶領域にアクセスしようとしても、OS/HPV111により当該アクセスを抑止することができる。
【0031】
次に、ホストマシンのプロセッサとしてFPGAが用いられる場合を説明する。
図3は、ホストマシン160のプロセッサとしてFPGAが用いられるクラウドシステム150の動作例を説明する図である。
【0032】
図3に例示するように、クライアントマシン180−1及び180−2のアプリケーション181a及び181bは、それぞれ、管理マシン170へサービス利用の要求を送信する(
図3の矢印(vi)参照)。また、アプリケーション181は、ホストマシン160のFPGA161に書き込む処理回路の情報、例えばIntellectual Property(IP)コアを管理サーバ170へ送信する。
【0033】
IPは、FPGAにおいて再利用可能な機能ブロックの一例であり、IPコアは、FPGAに構成する機能ブロックの設計に用いる情報の一例である。IPコアには、ソフトウェアマクロ、ハードウェアマクロ、又はこれらの組み合わせが含まれてよい。ソフトウェアマクロは、Register Transfer Level(RTL)で提供されるプログラムコードを含んでよい。なお、RTLは論理回路の設計データを記述するためのスキームの一例である。ハードウェアマクロは、FPGAの内部に組み込まれる回路ブロックの情報を含んでよい。なお、IPコアは、ソフトウェアマクロが改変される危険性を考慮し、ハードウェアマクロで提供されることもある。
【0034】
管理マシン170は、要求に基づきサービスの認証を行ない、アプリケーション181の各々に対して、例えば仮想マシンのIDを送信する(矢印(vii)参照)。また、管理マシン170は、クライアントマシン180から受信したIPコアに基づいて、ホストマシン160のFPGA161に処理回路162、換言すればアクセラレータを実装する(矢印(viii)参照)。
【0035】
ホストマシン160では、FPGA161に構成された処理回路162a及び162bが、それぞれメモリ160bのアドレス領域であるメモリ163a及び163bを利用して動作する。なお、ホストマシン160では、CPU160a及びFPGA161がそれぞれプロセッサとして機能する。
【0036】
ここで、コンピュータでのメモリアドレスの管理について、FPGA型のプロセッサが用いられる場合を説明する。
図4に例示するように、CPUと同等に扱われるキャッシュコヒーレントバスに配置されたFPGAは、OSからページテーブルをコピーする。
【0037】
ところで、FPGAに実装される処理回路はユーザによって作成される。従って、処理回路の設計によっては、ユーザはFPGAにより、コピーしたページテーブルを操作することも可能である。例えばFPGAは、ページテーブルに設定された物理アドレスを、他のユーザが利用するメモリの物理アドレスに変換することもできる。
【0038】
このページテーブルに設定された物理アドレスの変換は、ページテーブルに設定された情報自体の書き換えによって行なわれる場合があり、又はページテーブルから読み出された情報がFPGAからメモリへのアクセスの過程で変換される場合もある。
【0039】
なお、FPGAが他のユーザの利用するメモリにアクセス可能となるのは、ユーザの悪意によるFPGAの操作のほか、処理回路の設計ミス等によっても生じ得る。
【0040】
図3の例においても、例えば処理回路162bが、アプリケーション181bのユーザによって作成されたマリシアス(Malicious)IPである場合、処理回路162bからメモリ163aへのハードウェアアクセスには、OSの防御機構が作用しない(矢印(ix)参照)。従って、処理回路162bは、他のユーザが用いるメモリ163aに記憶されたデータを読み出すことができる。なお、マリシアスIPは、不正なプロセッサ、例えば悪意あるユーザにプログラムされたリコンフィギュアブル(Re-configurable)なプロセッサであるといえる。
【0041】
また、処理回路162bがメモリ163a及び163bから読み出したデータは、ホストマシン160のネットワーク装置164を介して、処理回路162bを利用するクライアントマシン180−2のネットワーク装置183との間で送受信される(矢印(x)参照)。
【0042】
例えばメモリ163a及び163bに記憶されたデータは、それぞれパケット(A)及び(B)に格納されてネットワーク装置164からクライアントマシン180−2のネットワーク装置183へ送信される。そして、パケット(A)内のデータ(A)及びパケット(B)内のデータ(B)の双方が、アプリケーション181bに渡され、ユーザは他のユーザのデータ(A)を盗むことができる(矢印(xi)参照)。
【0043】
このように、プロセッサをユーザが自由に設計できると、FPGA型のプロセッサは、OSの提供するセキュアなアクセスを越えて、直接ハードウェアにアクセスできてしまう。従って、FPGAをそなえるホストマシンにおけるセキュリティリスクが高い。
【0044】
〔1−2〕一実施形態に係る情報処理システムについて
そこで、一実施形態においては、以下の構成により、回路の再構成が可能な集積回路をそなえる情報処理装置におけるセキュリティリスクを低減させることができる。
【0045】
例えば、情報処理システムは、情報処理装置と、情報処理装置にアクセスする端末装置と、情報処理装置を管理する管理装置と、をそなえてよく、情報処理装置は、回路の再構成が可能な集積回路をそなえてよい。
【0046】
集積回路は、
(1)端末装置が送信する情報に応じた演算を行なう演算回路と、
(2)演算回路により演算された演算結果に対して、演算回路に対応する暗号鍵を用いて暗号化を行ない暗号化データを生成する暗号化回路と、
が構成されてよい。
【0047】
管理装置は、暗号鍵を演算回路と対応付けて管理し、端末装置へ演算回路に対応する暗号鍵を通知してよい。
【0048】
端末装置は、暗号化データを記憶する記憶装置から暗号化データを読み出し、読み出した暗号化データを、管理装置から通知される暗号鍵を用いて復号してよい。
【0049】
このような構成により、情報処理システムでは、記憶装置が記憶するデータは、演算回路に対応する暗号鍵により暗号化された暗号化データとなる。従って、他の演算回路のユーザが当該暗号化データを読み出しても、適切な暗号鍵を有していなければ正しく復号できず、他人がデータを盗み出すことを防止できる。また、演算回路のユーザは、管理装置から暗号鍵を通知されており、当該暗号化データを適切な暗号鍵で復号できるため、利便性の低下を抑制できる。以下、情報処理システムの構成例を説明する。
【0050】
〔1−3〕一実施形態に係る情報処理システムの構成例
図5は、一実施形態に係る情報処理システム1の構成例を示すブロック図である。
図5に示すように、情報処理システム1は、例示的に、ホストマシン2、管理マシン3、並びに、複数(
図5の例では2つ)のクライアントマシン4−1及び4−2をそなえる。なお、ホストマシン2及び管理マシン3の一方又は双方は、情報処理システム1に複数存在してもよく、クライアントマシン4は、情報処理システム1に3つ以上存在してもよい。
【0051】
ホストマシン2は、情報処理装置の一例である。ホストマシン2としては、例えばサーバ又はPersonal Computer(PC)等の種々のコンピュータが挙げられる。例えばホストマシン2は、ユーザからの要求に応じて、ユーザの希望する処理回路を構成した、キャッシュコヒーレントなFPGAをプロセッサとして提供するクラウドサービスで利用されてよい。
【0052】
ホストマシン2は、例示的に、CPU2a、メモリ2b、FPGA21、及びネットワーク装置26をそなえてよい。CPU2aは、種々の制御や演算を行なうプロセッサの一例である。メモリ2bは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。メモリ2bとしては、例えばRandom Access Memory(RAM)等の揮発性メモリが挙げられる。
【0053】
FPGA21は、回路の再構成が可能な集積回路の一例である。FPGA21は、ホストマシン2に複数存在してもよい。
【0054】
FPGA21には、ホストマシン2の製造時或いは出荷時、又はホストマシン2の起動時等のクラウドサービスの提供前においては、論理ブロックが構成されていなくてもよい。
図5の例は、情報処理システム1の運用段階において、クライアントマシン4−1及び4−2からの要求に応じて論理ブロックが構成された状態を示す。
【0055】
FPGA21は、CPU2aと同等に扱われるキャッシュコヒーレントバスに配置されてよい。この場合、FPGA21とCPU2aとの間でメモリアクセスに用いるキャッシュの一貫性が保たれるような制御が行なわれてよい。
【0056】
図5に示すように、FPGA21は、処理回路22a、暗号装置23a、及びID24aが構成された第1領域21aと、処理回路22b、暗号装置23b、及びID24bが構成された第2領域21bとを含んでよい。
【0057】
処理回路22は、クライアントマシン4が送信する情報に応じた演算を行なう演算回路の一例である。
【0058】
暗号装置23は、処理回路22により演算された演算結果に対して、処理回路22に対応する暗号鍵を用いて暗号化を行ない暗号化データを生成する暗号化回路の一例である。なお、暗号装置23により暗号化された暗号化データは、メモリ2bのアドレスを管理する管理情報(図示省略)に基づき、メモリ2b内の処理回路22に割り当てられたメモリ25に書き込まれてよい。また、暗号装置23は、メモリ25から読み出された暗号化データを暗号鍵を用いて復号し、処理回路22に渡してよい。暗号化データのメモリ25への書き込み及び読み出しは、処理回路22、暗号装置23、FPGA21内の他の回路、CPU2a、その他の任意の装置又は回路等によって行なわれてよい。
【0059】
なお、管理情報としては、CPU2a又はFPGA21で実行されるOSが管理するページテーブルが挙げられる。
図5に示すように、メモリ2bは、処理回路22aに割り当てられた物理アドレスのアドレス領域であるメモリ25aと、処理回路22bに割り当てられた物理アドレスのアドレス領域であるメモリ25bとを有してよい。
【0060】
暗号装置23による暗号化は、既知の種々の手法により行なうことが可能である。例えば暗号化方式として、対称暗号化方式が用いられてよい。なお、対称暗号化方式に代えて、非対称暗号化方式が用いられてもよい。
【0061】
なお、ホストマシン2は、FPGA21からの暗号化データが書き込まれるメモリ25(又はメモリ2b)を持たなくてもよい。例えば、メモリ25(メモリ2b)は、他のホストマシン又は任意の情報処理装置にそなえられてもよい。
【0062】
ID24は、クラウドサービスの提供に用いられる識別子の情報であり、例えば領域21a若しくは21bのID、又は処理回路22(アクセラレータ)のIDであってよい。
【0063】
ネットワーク装置26は、図示しないネットワークを介してクライアントマシン4との間で通信を行なう。なお、ネットワーク装置26は、管理マシン3とホストマシン2との間の通信でも用いられてよい。ネットワークとしては、例えばインターネット、又はLocal Area Network(LAN)若しくはWide Area Network(WAN)等が挙げられる。
【0064】
管理マシン3は、ホストマシン2を管理する管理装置の一例である。管理マシン3としては、例えばサーバ又はPC等の種々のコンピュータが挙げられる。管理マシン3は、暗号鍵を処理回路22と対応付けて管理し、処理回路22を利用するクライアントマシン4へ処理回路22に対応する暗号鍵を通知してよい。
【0065】
また、管理マシン3は、クライアントマシン4からの要求に応じて、処理回路22の構成に用いる第1情報と、暗号装置23の構成に用いる第2情報と、に基づき、処理回路22及び暗号装置23をFPGA21に構成する制御を行なってよい。なお、管理マシン3によりFPGA21に対するID24の書き込みも制御されてよい。第1情報及び第2情報は、それぞれIPコアであってよい。IPコアには、上述のように、ソフトウェアマクロ、ハードウェアマクロ、又はこれらの組み合わせが含まれてよい。以下の説明において、第1情報を処理IPコア、第2情報を暗号化IPコアと表記する場合がある。
【0066】
なお、処理IPコアの情報は、管理マシン3がクライアントマシン4から受信してよい。また、暗号化IPコアの情報は、管理マシン3がクライアントマシン4から受信してもよいし、処理IPコアに対応付ける暗号鍵の取得に応じて、管理マシン3が作成してもよい。或いは、管理マシン3が予め記憶しておいた暗号化IPコアを読み出し、読み出した暗号化IPコアに対して、取得した暗号鍵を設定してもよい。
【0067】
暗号鍵は、管理マシン3が暗号化IPコアとともにクライアントマシン4から受信してもよいし、既知の手法により管理マシン3が生成してもよい。
【0068】
論理回路をFPGA21に構成する制御は、種々の手法により実現されてよい。例えば、
図5に示すように、管理マシン3とホストマシン2のFPGA21とを専用線1aで接続し、管理マシン3がFPGA21に処理回路22及び暗号装置23等のアクセラレータを実装してもよい。なお、
図5の例では、便宜上、専用線1aをFPGA21に直接接続しているが、専用線1aは、ネットワークを介してFPGA21に接続されてもよい。
【0069】
或いは、管理マシン3が、ホストマシン2のCPU2aが実行するOSに対して、FPGA21へのアクセラレータの実装を通信線1b経由で指示し、指示を受けたOSは、制御線27を介してFPGA21にアクセラレータを実装してもよい。なお、
図5の例では、便宜上、通信線1bをCPU2aに接続しているが、通信線1bは、ネットワークを介して又は直接、ネットワーク装置26に接続されてもよい。
【0070】
クライアントマシン4は、ホストマシン2にアクセスする端末装置の一例である。クライアントマシン4としては、PC、サーバ、スマートホン、又はタブレット等の種々のコンピュータが挙げられる。
【0071】
クライアントマシン4は、例示的に、ネットワーク装置44をそなえるとともに、図示しないCPU及びメモリ等によりアプリケーション41を実行する。例えばクライアントマシン4−1では、ユーザによりアプリケーション41aが操作され、クライアントマシン4−2では、ユーザによりアプリケーション41bが操作される。
【0072】
ネットワーク装置44は、図示しないネットワークを介してホストマシン2との間で通信を行なう。なお、ネットワーク装置44は、クライアントマシン4と管理マシン3との間の通信でも用いられてよい。ネットワークとしては、例えばインターネット、又はLAN若しくはWAN等が挙げられる。
【0073】
例えば、クライアントマシン4は、管理マシン3から、自装置が利用する処理回路22に対応する暗号鍵43を受信し、メモリ等に記憶してよい。また、サービスに関するID42についても、管理マシン3から受信しメモリ等に記憶してよい。
【0074】
また、クライアントマシン4は、ネットワーク装置44を介して、メモリ25から、暗号装置23によりメモリ25に書き込まれた暗号化データを読み出し、読み出した暗号化データを、管理マシン3から通知される暗号鍵を用いて復号してよい。
【0075】
なお、クライアントマシン4による暗号化データの読出先のメモリは、上述した暗号化データの書き込まれたメモリ25でなくてもよく、メモリ25から暗号化データが転送されたメモリ或いはHDD等の記憶装置であってもよい。暗号化データが転送された記憶装置は、ホストマシン2の内部にそなえられてもよいし、ホストマシン2とは異なる装置にそなえられてもよい。
【0076】
〔1−4〕動作例
次に、
図5〜
図7を参照して、上述の如く構成された情報処理システム1の動作例を説明する。
【0077】
図5に矢印(I)で示すように、例えばクライアントマシン4−1のアプリケーション41aは、管理マシン3に対して、FPGA21を用いるサービスを要求し、アクセラレータの論理を送付する。アクセラレータの論理は、顧客、例えばアプリケーション41aのユーザが用意したIPコアであってよい。
【0078】
管理マシン3は、サービスに関するID、及び、例えば対称暗号化方式の暗号鍵を取得して、アプリケーション41aに送付する(矢印(II)参照)。アプリケーション41aは、受信したID及び暗号鍵を、それぞれID42a及び暗号鍵43aとして記憶する。
【0079】
具体例として、
図6に示すように、クライアントマシン4は、管理マシン3へサービスの要求を送信する(処理T1)。管理マシン3は、受信した要求についてサービスの認証を行ない(処理T2)、例えばID42を発行し、アプリケーション41に対してID42を送信する(処理T3)。
【0080】
また、クライアントマシン4は、管理マシン3にアクセラレータの論理を送信する(処理T4)。管理マシン3は、暗号鍵43を取得し(処理T5)、取得した暗号鍵43をクライアントマシン4に提供する(処理T6)。
【0081】
次に、
図5に示すように、論理を受信した管理マシン3は、論理合成を行ない、処理回路22a及び暗号装置23aをFPGA21に実装する(矢印(III)参照)。このとき、管理マシン3は、論理合成により合成された処理回路22aのデザインをFPGA21に配置するとともに、取得した暗号鍵を用いて暗号化を行なう暗号装置23aを、FPGA21のメモリインタフェースに配置する。
【0082】
例えば、論理合成では、ハードウェア記述言語(HDL;Hardware Description Language)で表されるRTL等のIPコアが、ゲート・レベルのネットリストへ変換されて、論理回路の実装設計が行なわれてよい。ネットリストは、素子間を接続する配線(ネット)の一覧を記述した設計データの表現形式である。
【0083】
なお、HDLとしては、Verilog HDLや、VHSIC HDL(VHDL)等のハードウェア記述言語が使われてよい。VHSICは、very high speed integrated circuitsの略称である。
【0084】
具体例として、
図6に示すように、管理マシン3は、アクセラレータの論理の論理合成を行なう(処理T7)。そして、管理マシン3は、処理回路22、暗号装置23、及びID24をFPGA21に書き込む(処理T8)。書き込みが完了すると、FPGA21は書込完了通知を管理マシン3へ送信する(処理T9)。書込完了通知を受信すると、管理マシン3は、クライアントマシン4に準備完了通知を送信する(処理T10)。
【0085】
他の例として、
図7に示すように、管理マシン3は、処理T7でアクセラレータの論理合成を行なうと、処理回路22、暗号装置23、及びID24のFPGA21への書き込みを、ホストマシン2のCPU2aに通知してもよい(処理T20)。CPU2aは、OSにより、処理回路22、暗号装置23、及びID24をFPGA21に書き込んでよい(処理T21)。処理T9及びT10は
図6と同様である。なお、
図7において、処理T7の論理合成はホストマシン2で行なわれてもよい。
【0086】
次に、
図5に示すように、アプリケーション41aは、管理マシン3から通知されたID43aを用いてハードウェア、例えばホストマシン2のFPGA21に構成された処理回路22aを特定し、処理回路22aに特定の演算を実行させる。FPGA21の暗号装置23aは、処理回路22aでの演算結果を、設定された暗号鍵で暗号化する。暗号化データは、メモリ25aに保存される(矢印(IV)参照)。
【0087】
また、演算結果(データ(A))は、ネットワーク装置26及び44を通じてパケット(A)としてネットワークを伝送され、ホストマシン2からクライアントマシン4−1に転送される(矢印(V)参照)。アプリケーション41aは、管理マシン3から通知された暗号鍵43aを用いて、データ(A)を復号する。
【0088】
具体例として、
図6に示すように、クライアントマシン4は、ID42により特定したFPGA21の処理回路22に対して計算開始合図を送信する(処理T11)。計算開始合図を受信すると、ホストマシン2ではランタイムが起動されてFPGA21のドライバがロードされる。
【0089】
そして、FPGA21は、処理回路22により演算を行ない、暗号装置23により演算結果を暗号化し(処理T12)、暗号化データを処理回路22に割り当てられたメモリ25にストアする(処理T13)。なお、演算の過程で、メモリ25に記憶された暗号化データがFPGA21にロードされ(処理T14)、暗号装置23により暗号化データが復号され(処理T15)、復号されたデータが処理回路22で用いられてよい。
【0090】
処理回路22による演算が終了すると、FPGA21はクライアントマシン4へ計算終了通知を送信し(処理T16)、メモリ25に記憶された演算結果の暗号化データが、ネットワーク装置26及び44を介してクライアントマシン4に転送される(処理T17)。
【0091】
クライアントマシン4のアプリケーション41は、受信した暗号化データを、暗号鍵43を用いて復号する(処理T18)。処理が終了すると、アプリケーション41は、管理マシン3に対してサービス終了通知を送信し(処理T19)、FPGA21を用いたサービスが終了する。
【0092】
ここで、悪意あるユーザ、例えばクライアントマシン4−2のアプリケーション41bのユーザが、
図5の矢印(IV)において、マリシアスIPである処理回路22bを用いて、メモリ25aに記憶されたデータにアクセスする場合を考える。
【0093】
なお、処理回路22a及び22bがいずれもマリシアスIPではない場合、第1領域21a又は第2領域21bの管理情報には、他方の領域(第2領域21b又は第1領域21a)の管理情報に定められたアドレスに対して排他的に予め定められるアドレスが設定されていてよい。
【0094】
一方、例えば処理回路22bがマリシアスIPである場合、第2領域21bの管理情報には、第1領域21aの管理情報に定められたアドレスに対して排他的に予め定められるアドレスとは異なるアドレスが設定され得る。この「異なるアドレス」は、例えば、マリシアスIPにより第1領域21aの管理情報に定められたアドレスと重複するように設定されることがある。
【0095】
或いは、処理回路22bがマリシアスIPである場合、第2領域21bの管理情報内のアドレスは正常(第1領域21aの管理情報内のアドレスに対して排他的)であるものの、処理回路22bによる読み出し後に当該アドレスが上記「異なるアドレス」に変換される場合もある。
【0096】
いずれの場合においても、マリシアスIPは、第2領域21bの管理情報に基づき、処理回路22aに対応するメモリ25aにアクセスし得る。
【0097】
しかし、メモリ25aに記憶されたデータは、アプリケーション41aが利用する処理回路22aに対応する暗号鍵により暗号化されたデータである。従って、アプリケーション41bのユーザは、アプリケーション41aの暗号化データを取得できたとしても、暗号鍵43aを有していないため、暗号化データを復号できない(矢印(VI)参照)。
【0098】
このように、情報処理システム1によれば、FPGA21がプロセッサとして用いられるホストマシン2において、マリシアスIPにより他人のメモリ25からデータを盗み見ることを防止でき、情報漏えいの脅威を未然に防止できる。なお、情報漏えいの脅威としては、例えば、マリシアスIPによるデータ漏えいにより、例えば発表前の経理情報を盗まれ、株価が不正に操作されたり、クレジットカードの番号が盗まれ、不正に使用されるといった脅威が考えられる。
【0099】
従って、一実施形態に係る情報処理システム1によれば、ホストマシン2のメモリ25が記憶するユーザデータについて、信頼性の高いデータ管理を実現できる。
【0100】
一実施形態に係る情報処理システム1では、FPGA21に対して、処理回路22に加えて暗号装置23が追加されるものの、暗号装置23によるFPGA21の使用コスト、例えば回路規模を、僅かな増加に留めることができる。例えば、ユーザ粒度にもよるが、近年のFPGAの回路規模に対して2〜5%程度の増加に留めることができる。
【0101】
また、情報処理システム1では、暗号装置23のハードウェアによる暗号化及び復号によって10%程度のレイテンシが生じ得るものの、FPGA21の処理がパイプラインであるため、帯域を維持することができる。
【0102】
なお、FPGAをそなえる情報処理装置におけるセキュリティリスクを低減させる手法として、管理装置が、受け取った論理について悪意のあるアルゴリズムであるか否かを判別するという手法も考えられる。しかし、判別が困難になるケースがあり、マリシアスIPによるデータ漏えいを完全に防げるとはいえない。
【0103】
また、他の手法として、情報処理装置にFPGAを監視するハードウェアを追加する手法も考えられるが、プロセッサのメモリアクセスはボトルネックになるケースが多い。従って、性能低下やハードウェアコストの増大を招く可能性が高く、費用対効果が良いとはいい難い。
【0104】
以上のことから、FPGAをそなえる情報処理装置におけるセキュリティリスクを低減させる手法として、上述した一実施形態に係る手法が効果的であるといえる。
【0105】
〔1−5〕ハードウェア構成例
次に、ホストマシン2、管理マシン3、及びクライアントマシン4のハードウェア構成例について説明する。なお、ホストマシン2、管理マシン3、及びクライアントマシン4は、いずれも同様のハードウェア構成をそなえてよい。以下、便宜上、ホストマシン2、管理マシン3、及びクライアントマシン4をまとめてコンピュータ5と表記し、コンピュータ5のハードウェア構成例について説明する。
【0106】
図8に示すように、コンピュータ5は、例示的に、CPU5a、メモリ5b、記憶部5c、インタフェース部5d、入出力部5e、及び読取部5fをそなえる。
【0107】
CPU5aは、種々の制御や演算を行なうプロセッサの一例である。CPU5aは、コンピュータ5内の各ブロックとバスで相互に通信可能に接続されてよい。なお、プロセッサとしては、CPU5a等の演算処理装置に代えて、電子回路、例えばMicro Processing Unit(MPU)、やApplication Specific Integrated Circuit(ASIC)等の集積回路(IC)が用いられてもよい。
【0108】
メモリ5bは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。メモリ5bとしては、例えばRAM等の揮発性メモリが挙げられる。
【0109】
なお、
図5に示すホストマシン2のCPU2a及びメモリ2bは、
図8に示すCPU5a及びメモリ5bの一例である。
【0110】
記憶部5cは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。記憶部5cとしては、例えばHard Disk Drive(HDD)等の磁気ディスク装置、Solid State Drive(SSD)等の半導体ドライブ装置、フラッシュメモリやRead Only Memory(ROM)等の不揮発性メモリ等の各種記憶装置が挙げられる。
【0111】
例えば記憶部5cは、コンピュータ5の各種機能の全部若しくは一部を実現するプログラム50を格納してよい。CPU5aは、例えば記憶部5cに格納されたプログラム50をメモリ5bに展開して実行することにより、コンピュータ5の機能を実現することができる。
【0112】
インタフェース部5dは、ネットワーク等との間の接続及び通信の制御等を行なう通信インタフェースの一例である。例えばインタフェース部5dは、LAN、Infiniband(インフィニバンド)、Fibre Channel(FC、ファイバチャネル)、Universal Serial Bus(USB)、又はBluetooth(登録商標)等に準拠したアダプタが挙げられる。
図5に示すホストマシン2のネットワーク装置26及びクライアントマシン4のネットワーク装置44は、
図8に示すインタフェース部5dの一例である。
【0113】
なお、プログラム50は、ネットワーク等からインタフェース部5dを介してコンピュータ5にダウンロードされてもよい。
【0114】
入出力部5eは、マウス、キーボード、又は操作ボタン等の入力部、並びに、ディスプレイ又はプリンタ等の出力部、の一方又は双方を含んでよい。
【0115】
読取部5fは、記録媒体5gに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部5fは、コンピュータが読取可能な記録媒体5gを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部5fとしては、例えばUSB等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体5gにはプログラム50が格納されてもよい。
【0116】
記録媒体5gとしては、例示的に、フレキシブルディスク、CD、DVD、ブルーレイディスク等の光ディスクや、USBメモリやSDカード等のフラッシュメモリ、等の非一時的な記録媒体が挙げられる。なお、CDとしては、例示的に、CD−ROM、CD−R、CD−RW等が挙げられる。また、DVDとしては、例示的に、DVD−ROM、DVD−RAM、DVD−R、DVD−RW、DVD+R、DVD+RW等が挙げられる。
【0117】
上述したコンピュータ5のハードウェア構成は例示である。従って、コンピュータ5内でのハードウェアの増減(例えば任意のブロックの追加や省略)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。また、ホストマシン2、管理マシン3、及びクライアントマシン4の間で、異なるハードウェア構成がそなえられてもよい。なお、ホストマシン2のハードウェア構成例については、
図8に示す構成に加えて、
図5に示すFPGA21及び関連する装置或いは回路がさらにそなえられてよい。
【0118】
〔1−6〕ホストマシンの構成例
次に、
図9を参照して、一実施形態に係るホストマシン2の機能構成例について説明する。
図9に示すように、ホストマシン2は、例示的に、通信部28及び書込処理部29をそなえる。
【0119】
通信部28は、ネットワーク装置26を介して、又は、
図5に示す通信線1bを介して、管理マシン3及びクライアントマシン4と通信を行なう。クライアントマシン4との間の通信には、処理回路22の実行に係る要求若しくはデータの送受信が含まれてよく、管理マシン3との間の通信には、処理回路22、暗号装置23、及びID24の書き込みに係る要求若しくはデータの送受信が含まれてよい。
【0120】
書込処理部29は、管理マシン3からの制御により、ホストマシン2がFPGA21に処理回路22、暗号装置23、及びID24を書き込む場合に用いられる。管理マシン3がFPGA21に処理回路22、暗号装置23、及びID24を書き込む場合には、書込処理部29はホストマシン2にそなえられなくてよい。
【0121】
書込処理部29は、OS又はドライバの機能を用いて、FPGA21に対して論理の書き込みを行なう。例えば書込処理部29は、管理マシン3からのFPGA21へのアクセラレータの実装指示に基づき、
図5に示す制御線27を介して、FPGA21にアクセラレータの論理を書き込んでよい。この場合、通信部28は、アクセラレータの実装指示を管理マシン3から受信し、書込処理部29による書込処理の完了に応じて、アクセラレータの実装完了通知を管理マシン3へ送信してもよい。
【0122】
換言すれば、書込処理部29は、管理マシン3から受信する処理IPコア34及び暗号化IPコア35(
図10参照)に基づき、処理回路22及び暗号装置23をFPGA21に構成する構成部の一例である。
【0123】
なお、書込処理部29は、アクセラレータの論理合成を行なってもよい。この場合、書込処理部29は、通信部28を介してFPGA21から処理IPコア、暗号化IPコア(例えば暗号鍵の情報を含んでよい)、及びIDの情報を取得してよい。
【0124】
上述したホストマシン2の機能は、ホストマシン2のCPU5a(例えば
図5に示すCPU2a)が、メモリ5b(例えば
図5に示すメモリ2b)に格納されたプログラム50を実行することにより実現されてよい。
【0125】
〔1−7〕管理マシンの構成例
次に、
図10及び
図11を参照して、一実施形態に係る管理マシン3の機能構成例について説明する。
【0126】
図10に示すように、管理マシン3は、例示的に、通信部31、ユーザ管理部32、ユーザDatabase(DB)33、1以上の処理IPコア34、1以上の暗号化IPコア35、暗号鍵取得部36、暗号化IPコア生成部37、及び書込制御部38をそなえる。
【0127】
通信部31は、ホストマシン2及びクライアントマシン4と通信を行なう。ホストマシン2との間の通信には、図示しないネットワークを介した、又は、
図5に示す制御線1a若しくは通信線1bを介した、処理回路22、暗号装置23、及びID24の書き込みに係る要求若しくはデータの送受信が含まれてよい。クライアントマシン4との間の通信には、サービスの提供に関する情報、例えばユーザ情報、アクセラレータの論理に関する情報、暗号鍵に関する情報等の送受信が含まれてよい。
【0128】
ユーザ管理部32は、クラウドサービスを利用するユーザを管理する。例えばユーザ管理部32は、ユーザDB33に基づき、ユーザとIPコア及び暗号鍵とを対応付けて管理してよい。また、ユーザ管理部32は、クライアントマシン4からのサービス要求に対する認証や、受信したIPコアを処理IPコア34又は暗号化IPコア35として管理する処理、ユーザDBの更新等を行なってもよい。
【0129】
ユーザDB33は、ユーザごとの情報を管理するデータベースの一例である。ユーザDB33は、例えばメモリ5b又は記憶部5c(
図8参照)によって実現されてよい。ユーザDBのデータ構成例を
図11に示す。
【0130】
図11に例示するように、ユーザDB33には、ユーザID、サービスID、暗号鍵、処理IPコア、及び、暗号化IPコアの各情報が含まれてよい。ユーザIDはユーザ、例えばアプリケーション41を識別する情報の一例であり、サービスIDは、ユーザが利用するサービスを識別する情報の一例である。サービスIDとしては、例えばFPGA21において割り当てられる領域のIDや、アクセラレータのIDが用いられてもよい。
【0131】
暗号鍵は、暗号鍵の情報そのものであってもよいし、暗号鍵取得部36が取得した暗号鍵を特定できる情報であってもよい。処理IPコア及び暗号化IPコアは、ユーザ管理部32又は暗号化IPコア生成部37が取得したこれらのIPコアの情報そのものであってもよいし、これらのIPコアを特定できる情報であってもよい。なお、サービスIDがFPGA21の領域のIDやアクセラレータのIDである場合、IDで処理IPコア又は/及び暗号化IPコアを特定できれば、処理IPコア又は/及び暗号化IPコアの情報はユーザDB33に含まれなくてもよい。
【0132】
換言すれば、ユーザ管理部32は、暗号鍵を処理回路22と関連付けて管理する管理部の一例である。また、通信部31は、クライアントマシン4へ処理回路22に対応する暗号鍵を通知する通知部の一例である。
【0133】
処理IPコア34は、例えばクライアントマシン4から受信した、処理回路22を生成するためのIPコアである。
【0134】
暗号化IPコア35は、暗号装置23を生成するためのIPコアであり、例えばクライアントマシン4から受信した暗号化IPコア、暗号化IPコア生成部37が生成した暗号化IPコアの情報、又は、予め記憶しておいた暗号化IPコアの情報、等であってよい。
【0135】
処理IPコア34及び暗号化IPコア35は、例えば論理合成が行なわれるまでメモリ5b又は記憶部5c等に蓄積されてよい。また、IPコアは再利用可能な機能ブロックであるため、再利用の可能性があれば、処理IPコア34及び暗号化IPコア35の一方又は双方は、論理合成後も例えばメモリ5b又は記憶部5c等に記憶させ続けてもよい。
【0136】
暗号鍵取得部36は、暗号装置23による暗号化又は復号、並びにクライアントマシン4における復号に用いる暗号鍵を取得する。暗号鍵の取得では、暗号化IPコア35の情報とともにクライアントマシン4から暗号鍵を受信してもよいし、既知の手法により暗号鍵取得部36が暗号鍵を生成してもよい。生成された暗号鍵は、例えば論理合成が行なわれるまでメモリ5b又は記憶部5c等に蓄積されてよい。
【0137】
暗号化IPコア生成部37は、暗号化IPコア35を生成する。例えば暗号化IPコア生成部37は、暗号鍵取得部36が取得した暗号鍵を暗号化のキーとして含む暗号化IPコア35を生成し、メモリ5b又は記憶部5c等に蓄積してよい。或いは、暗号化IPコア生成部37は、メモリ等に予め蓄積された暗号化IPコアに対して、暗号鍵取得部36が取得した暗号鍵を暗号化のキーとして設定してもよい。なお、暗号化のキーを設定された暗号化IPコア35がクライアントマシン4から送付される場合には、暗号化IPコア生成部37はそなえられなくてもよい。
【0138】
換言すれば、ユーザ管理部32及び暗号化IPコア生成部37の少なくとも一方は、処理回路22の構成に用いる第1情報と、暗号装置23の構成に用いる第2情報と、を取得する取得部の一例である。また、通信部31は、処理回路22をFPGA21に構成することを指示する要求を、クライアントマシン4から受信する受信部の一例である。
【0139】
書込制御部38は、処理IPコア34及び暗号化IPコア35の論理合成を行ない、処理回路22及び暗号装置23をFPGA21に書き込む制御を行なう。
【0140】
なお、書込制御部38による、処理回路22及び暗号装置23等のアクセラレータをFPGA21に構成する制御は、上述のように種々の手法により実現されてよい。例えば、書込制御部38は、FPGA21に対して専用線1a(
図5参照)を介してアクセラレータを書き込んでもよい。
【0141】
或いは、書込制御部38は、ホストマシン2のCPU2aが実行するOSに対して、FPGA21へのアクセラレータの実装を通信線1b(
図5参照)経由で指示してもよい。
【0142】
換言すれば、書込制御部38は、処理回路22の構成に用いる第1情報と、暗号装置23の構成に用いる第2情報と、に基づき、処理回路22及び暗号装置23をFPGA21に構成する制御を行なう制御部の一例である。
【0143】
上述した管理マシン3の機能は、管理マシン3のCPU5a(
図8参照)が、メモリ5bに格納されたプログラム50を実行することにより実現されてよい。
【0144】
〔1−8〕実施例
次に、
図12及び
図13を参照して、一実施形態に係る情報処理システム1の実施例について説明する。
図12は一実施形態の実施例に係る情報処理システム10の構成を示すブロック図であり、
図13は、
図12に示すFPGA210の構成例を示すブロック図である。
【0145】
図12に示すように、情報処理システム10は、例示的に、ホストマシン20、管理マシン30、並びに複数(
図12の例では2つ)のクライアントマシン40−1及び40−2をそなえる。なお、ホストマシン20及び管理マシン30の一方又は双方は、情報処理システム10に複数存在してもよく、クライアントマシン40は、情報処理システム10に3つ以上存在してもよい。
【0146】
ホストマシン20は、例示的に、CPUコア200、ローカルキャッシュ201、ラストレベルキャッシュ202、及びキャッシュコヒーレントバス203をそなえる。また、ホストマシン20は、例示的に、Memory Management Unit(MMU)204、Dynamic RAM(DRAM)205、FPGA210、サウスブリッジ260、及びNetwork Interface Card(NIC)262をそなえる。なお、CPU200及びFPGA210の一方又は双方は、ホストマシン20に複数存在してもよい。
【0147】
CPUコア200は、ストアバッファ200a、ロードバッファ200b、及びTLB200cをそなえてよい。ストアバッファ200aは、ローカルキャッシュ201にストアするデータのバッファとして用いられてよく、ロードバッファ200bは、ローカルキャッシュ201からロードするデータのバッファとして用いられてよい。TLB200cは、DRAM205が記憶するページテーブル205aのうちの一部の情報、例えば頻繁に使われるアドレスの変換テーブルを記憶してよい。
【0148】
ローカルキャッシュ201は、CPUコア200ごとに設けられるキャッシュであり、例えばL1キャッシュと位置付けられてよい。CPUコア200及びローカルキャッシュ201は、
図5に示すCPU2aの一例である。
【0149】
ラストレベルキャッシュ202は、CPUコア200及びFPGA210とMMU204との間に設けられるキャッシュであり、例えば最終段のキャッシュと位置付けられてよい。ラストレベルキャッシュ202は、CPUコア200及びFPGA210との間に、キャッシュコヒーレントバス203を提供してよい。換言すれば、ホストマシン20では、CPUコア200とFPGA210とが同等なプロセッサとして扱われる。
【0150】
MMU204は、CPUコア200又はFPGA210が要求するメモリアクセスを処理する。MMU204は、例えばキャッシュの制御やバスの調停等の機能を有してよい。
【0151】
DRAM205は、ホストマシン20の主記憶装置として機能するメモリである。一例として、DRAM205は、複数のDRAMチップを搭載したメモリモジュール、例えばDual Inline Memory Module(DIMM)であってもよい。なお、
図12には、DRAM205が4つのDIMMをそなえる例を示す。DRAM205は、
図5に示すメモリ2bの一例である。
【0152】
DRAM205は、ホストマシン20のOSが用いるページテーブル205aを記憶してよい。なお、ページテーブル205は、メモリの割り当てを管理する情報の一例である。
【0153】
FPGA210は、
図5に示すFPGA21の一例である。
図12に示すように、FPGA210は、例示的に、複数(
図12の例では2つ)の回路領域210a及び210b、FPGAコンフィグポート250、デマルチプレクサ252、マルチプレクサ254、及びローカルキャッシュ256をそなえる。
【0154】
回路領域210a及び210bには、それぞれ、例えばクライアントマシン40−1のユーザが利用する論理回路と、クライアントマシン40−2のユーザが利用する論理回路とが構成される。回路領域210a及び210bの詳細については後述する。
【0155】
FPGAコンフィグポート250は、FPGA210に論理回路を構成する際に用いられるポートである。管理マシン30は、専用線1aを介してFPGAコンフィグポート250にアクセスすることで、FPGA210に論理回路を構成することができる。
【0156】
換言すれば、FPGAコンフィグポート250は、管理マシン30と接続される接続部の一例であり、処理回路22及び暗号装置23は、管理マシン30によって、FPGAコンフィグポート250を介してFPGA210に構成されるといえる。
【0157】
デマルチプレクサ(DEMUX;demultiplexer)252は、入力信号を複数の出力のいずれかへ分配する回路である。例えばデマルチプレクサ252は、ローカルキャッシュ256から入力されたアドレス及びデータの情報を、回路領域210a及び210bのいずれか一方に出力する。
【0158】
マルチプレクサ(MUX;multiplexer)254は、複数の入力からいずれか1つを選択して信号を出力する回路であり、セレクタの一例である。例えばマルチプレクサ254は、回路領域210aから入力されたアドレス及びデータの情報、又は、回路領域210bから入力されたアドレス及びデータの情報を選択し、ローカルキャッシュ256に出力する。
【0159】
ローカルキャッシュ256は、FPGA210ごとに設けられるキャッシュである。ローカルキャッシュ256は、ローカルキャッシュ201とともに、キャッシュコヒーレントバス203に接続されてよい。
【0160】
サウスブリッジ(South Bridge)260は、プロセッサの周辺回路として機能するチップセットを有する集積回路(IC)の一例である。
図12の例では、サウスブリッジ260は、NIC262等の周辺デバイスを制御するコントローラである。なお、サウスブリッジ260としては、例えばInput/Output Controller Hub(ICH)が挙げられる。
【0161】
NIC262は、ホストマシン20をLAN等のネットワークに接続する装置である。NIC262は、
図5に示すネットワーク装置26の一例である。NIC262は、例えば管理マシン30及びクライアントマシン40の各々と有線又は無線により接続されてよい。
【0162】
管理マシン30は、例示的に、CPU3a、メモリ3b、NIC310、FPGA書込装置320、及びユーザDB330をそなえる。
【0163】
CPU3a及びメモリ3bは、
図8に示すCPU5a及びメモリ5bの一例である。ユーザDB330は、ユーザごとの情報を管理するデータベースの一例であり、
図10に示すユーザDB33と同様のデータ構成であってよい。
【0164】
NIC310は、管理マシン30をLAN等のネットワークに接続する装置である。NIC310は、例えばホストマシン20及びクライアントマシン40の各々と有線又は無線により接続されてよい。なお、管理マシン30は、NIC310により通信線1b経由で、ホストマシン20のCPUコア200が実行するOSに対して、FPGA210へのアクセラレータの実装を指示してよい。
【0165】
FPGA書込装置320は、専用線1aを介して、ホストマシン20のFPGA210にそなえられたFPGAコンフィグポート250に対して、FPGA210の回路領域210a又は210bにアクセラレータを書き込む制御を行なう。なお、FPGA210へのアクセラレータの書き込みは、既知の種々の手法により実現可能である。
【0166】
クライアントマシン40は、例示的に、CPU4a、メモリ4b、及びNIC410をそなえる。
【0167】
CPU4a及びメモリ4bは、
図8に示すCPU5a及びメモリ5bの一例である。
【0168】
NIC410は、クライアントマシン40をLAN等のネットワークに接続する装置である。NIC410は、例えばホストマシン20及び管理マシン30の各々と有線又は無線により接続されてよい。
【0169】
次に、ホストマシン20のFPGA210の構成例について説明する。
図13に示すように、回路領域210a及び210bには、それぞれ、例示的に、演算処理装置220、メモリインタフェース221及び223、ページテーブル222、復号装置230、並びに暗号化装置232が構成される。
【0170】
演算処理装置220は、
図5に示す処理回路22の一例である。演算処理装置220には、対応するユーザにより設計等された論理が含まれてよい。演算処理装置220は、CPUコア200とともに、プロセッサとしてOSを実行してもよい。
【0171】
メモリインタフェース221及び223は、DRAM205に対するインタフェースを提供する。例えばメモリインタフェース221は、デマルチプレクサ252で選択された、DRAM205からのアドレス及びデータを、それぞれページテーブル222及び復号装置230に出力する。また、メモリインタフェース223は、ページテーブル222から出力された(又は通過した)アドレスと、暗号化装置232から出力されたデータとを、それぞれマルチプレクサ254に出力する。
【0172】
ページテーブル222は、演算処理装置220による仮想アドレス−物理アドレス間の変換に用いられる。例えば演算処理装置220は、DRAM205が記憶するページテーブル205aをコピーして、ページテーブル222に格納してよい。ページテーブル222は、DRAM205のアドレスを管理する管理情報の一例である。
【0173】
復号装置230は、メモリインタフェース221から入力される暗号化データを、演算処理装置220に対応付けられた暗号鍵を用いて復号し、復号データを演算処理装置220に出力する。
【0174】
暗号化装置232は、演算処理装置220から出力されるデータを、演算処理装置220に対応付けられた暗号鍵を用いて暗号化する。暗号化データはメモリインタフェース223に出力される。
【0175】
換言すれば、復号装置230及び暗号化装置232は、
図5に示す暗号装置23の一例である。
【0176】
ID240は、
図5に示すID24の一例である。ID240には、回路領域210a若しくは210b、又はアクセラレータ(例えば演算処理装置220)のIDが設定されてよい。このID240は、ユーザが利用する演算処理装置220の識別に用いられてよい。
【0177】
ここで、復号装置230及び暗号化装置232が用いる暗号鍵は、管理マシン30により演算処理装置220と対応付けて管理されるとともに、演算処理装置220のユーザに通知される。従って、DRAM205に格納される演算処理装置220の演算結果は、演算処理装置220を利用するユーザであれば暗号鍵を用いて復号できる一方、他のユーザは、暗号鍵を有してないため、当該演算結果を取得したとしても正しく復号できない。
【0178】
このように、一実施形態に係る手法によれば、
図12及び
図13に示す情報処理システム10においても、他人がデータを盗み出すことを防止でき、セキュリティリスクを低減できる。
【0179】
〔1−9〕変形例
次に、一実施形態の変形例について説明する。
【0180】
一実施形態では、管理マシン3は、ユーザが用意したIPコアをクライアントマシン4から受信し、当該IPコアに基づき、FPGA21に処理回路22を構成する。
【0181】
ここで、上述のようにIPは再利用可能な機能ブロックである。FPGAを利用するサービスでは、IPを再利用可能であるため、或るユーザが過去に設計したものを、機能ブロックごと当該ユーザ又は他のユーザが再利用したり、機能ブロックを作成して販売したりすることも可能である。
【0182】
そこで、一実施形態の変形例では、
図14に示すように、情報処理システム1AがIPコアのリソースプール6をそなえてもよい。なお、情報処理システム1Aは、
図5に示す情報処理システム1と同様のホストマシン2及びクライアントマシン4をそなえてよく、情報処理システム1と一部の機能が異なる管理マシン3Aをそなえてよい。
【0183】
リソースプール6は、複数のIPコア、換言すれば複数種類の処理回路22に対応する複数の第1情報を蓄積するストレージ装置の一例である。なお、リソースプール6は、暗号装置23の構成に用いる第2情報を更に蓄積してもよい。リソースプール6としては、例えばサーバ又はPC等の種々のコンピュータが挙げられる。
【0184】
リソースプール6は、
図8に示すコンピュータ5と同様のハードウェア構成をそなえてよい。なお、リソースプール6は、記憶部5cとして、HDD又はSSDを複数そなえてよく、これらを用いて例えばRedundant Arrays of Inexpensive Disks(RAID)等が構成されてもよい。
【0185】
図14に示すように、リソースプール6は、例示的に、IPコアDB61をそなえてよい。IPコアDB61には、複数のIPコアが登録され、管理マシン3Aからの要求に応じて、要求されたIPコアがIPコアDB61から読み出され、管理マシン3Aに送信されてよい。なお、IPコアDB61は、例えば記憶部5c等のストレージにより実現されてよい。
【0186】
リソースプール6では、例えばFPGA21のベンダや他の提供者がIPコアを登録し、登録したIPコアを販売又は提供してもよい。
【0187】
クライアントマシン4は、管理マシン3Aに対して、どのような処理を実現したいのかといった情報、例えば処理シーケンスや、IPコアを特定する情報等の、FPGA21に構成する処理回路21に関する情報を送信してよい。クライアントマシン4から処理シーケンスが送信される場合、管理マシン3Aは、受信した処理シーケンスに基づき、リソースプール6からIPコアを選定し、選定したIPコアに基づく処理回路22をアプリケーション41に利用させてよい。
【0188】
或いは、クライアントマシン4は、例えば、リソースプール6に登録されたIPコアの中から利用したいIPコアを選択し、管理マシン3Aに対して、選択したIPコアに基づく処理回路22の利用登録を行なってもよい。
【0189】
管理マシン3Aは、クライアントマシン4のユーザが利用するホストマシン2のFPGA21に対して、クライアントマシン4から要求されるIPコアに基づく処理回路22の書き込みを制御及び管理してよい。
【0190】
なお、暗号装置23については、管理マシン3Aは、一実施形態と同様の手法で暗号化IPコア35を取得し、FPGA21に書き込んでよい。或いは、管理マシン3Aは、暗号化IPコアについてもリソースプール6から取得してもよい。
【0191】
なお、ホストマシン2、管理マシン3A、及びリソースプール6の少なくとも1つは、データセンタ等の施設に設置されてよい。
【0192】
次に、
図14及び
図15を参照して、上述の如く構成された情報処理システム1Aの動作例を説明する。なお、以下、一実施形態に係る情報処理システム1と異なる動作について説明する。
【0193】
図14に矢印(I′)で示すように、例えばクライアントマシン4−1のアプリケーション41aは、管理マシン3Aに対して、FPGA21を用いるサービスを要求し、利用したい処理シーケンスを送付する。
【0194】
管理マシン3Aは、サービスに関するID、及び、例えば対称暗号化方式の暗号鍵を取得して、アプリケーション41aに送付する(矢印(II)参照)。アプリケーション41aは、受信したID及び暗号鍵を、それぞれID42a及び暗号鍵43aとして記憶する。
【0195】
具体例として、
図15に示すように、クライアントマシン4は、管理マシン3Aへサービスの要求を送信し(処理T1)、管理マシン3Aから認証を受けて(処理T2)、ID42の提供を受ける(処理T3)。
【0196】
そして、クライアントマシン4は、管理マシン3Aに処理シーケンスを送信する(処理T31)。管理マシン3Aは、暗号鍵43を取得し(処理T5)、取得した暗号鍵43をクライアントマシン4に提供する(処理T6)。
【0197】
次に、
図14に矢印(II-2)で示すように、処理シーケンスを受信した管理マシン3Aは、図示しないネットワークを介して接続されたリソースプール6にアクセスし、IPコアDB61から処理シーケンスに合致するIPコアをピックアップする(
図15の処理T32)。そして、管理マシン3Aは、リソースプール6からピックアップしたIPコアを取得する(
図15の処理T33)。
【0198】
図14の矢印(III)以降の処理、及び、
図15の処理T7以降の処理は、一実施形態に係る情報処理システム1と同様でよい。
【0199】
なお、
図15の処理T32及びT33において、IPコアは、リソースプール6からホストマシン2に直接渡されてもよい。この場合、
図15の処理T7〜T9におけるFPGA21へのIPコアの書き込みは、以下に例示するように、例えばリソースプール6又はホストマシン2により行なわれてよい。なお、IPコアには、処理IPコア及び暗号化IPコアの少なくとも一方が含まれてよい。
【0200】
一例として、管理マシン3Aは、リソースプール6に対して、処理シーケンスに合致するIPコアをホストマシン2へ送信する旨の指示を行なってよい。
【0201】
この場合、リソースプール6は、指定されたIPコアをFPGA21への書込指示とともにホストマシン2に送信し、ホストマシン2のCPU2aが書込指示に基づきIPコアをFPGA21に書き込んでもよい。或いは、リソースプール6とホストマシン2とが専用線で接続される場合には、リソースプール6は、指定されたIPコアを専用線を介してFPGA21に書き込んでもよい。換言すれば、IPコアの論理合成をリソースプール6又はホストマシン2が行なってもよい。
【0202】
以上のように、変形例に係る情報処理システム1Aによっても、一実施形態に係る情報処理システム1と同様の効果を奏することができる。
【0203】
また、変形例で想定するような、FPGA21のベンダ等がIPコアを提供する態様であっても、管理マシン3Aが、ユーザ及び処理IPコアに暗号鍵を対応付けるため、ユーザに通知する暗号鍵を適切に管理できる。
【0204】
さらに、FPGA21への処理回路22の書き込みに用いられるIPコアは、リソースプール6に登録されたIPコアの中から選択される。このため、リソースプール6に登録されたIPコアについて、例えばリソースプール6や管理マシン3Aが事前にセキュリティリスクを判断することも可能となる。従って、一実施形態及び変形例に係る手法に加えて、事前のセキュリティリスクの判断も行なうことで、セキュリティリスクをより低減させることもできる。
【0205】
次に、
図16を参照して、変形例に係る管理マシン3Aの機能構成例について説明する。
図16は変形例に係る管理マシン3Aの機能構成を示すブロック図である。
図16に示すように、管理マシン3Aは、例示的に、
図10に示す管理マシン3の機能構成に加えて、処理IPコア取得部39をさらにそなえる。
【0206】
なお、受信部の一例としての通信部31は、一実施形態の場合と同様に、処理回路22をFPGA21に構成することを指示する要求を、クライアントマシン4から受信してよい。
【0207】
処理IPコア取得部39は、複数種類の処理回路22の構成に用いる複数の処理IPコアを蓄積するリソースプール6から、クライアントマシン4が要求する処理IPコアを取得する。なお、クライアントマシン4が要求する処理IPコアは、クライアントマシン4から受信した処理シーケンスに基づき処理IPコア取得部39が特定してもよいし、クライアントマシン4がリソースプール6を参照して選定した処理IPコアであってもよい。
【0208】
例えば処理IPコア取得部39は、
図15の処理T32及びT33に示す処理を行なってよい。なお、処理IPコア取得部39は、取得した処理IPコアを処理IPコア34としてメモリ5b又は記憶部5cに記憶してよい。なお、管理マシン3Aは、処理IPコア34とともに、暗号化IPコア35をリソースプール6から取得してもよい。
【0209】
換言すれば、処理IPコア取得部39は、クライアントマシン4からの要求を満たす第1情報、及び、第2情報の少なくとも一方を、リソースプール6から取得する取得部の一例である。
【0210】
書込制御部38は、管理マシン3Aが取得した処理IPコア34及び暗号化IPコア35をFPGA21に構成する制御を行なってよい。
【0211】
なお、処理IPコアがリソースプール6からホストマシン2に直接渡される場合、管理マシン3Aは、リソースプール6に対するホストマシン2への処理IPコアの送信指示により、FPGA21に処理回路22を構成する制御を行なうことができる。
【0212】
また、暗号化IPコアがリソースプール6からホストマシン2に直接渡される場合、管理マシン3Aは、リソースプール6に対するホストマシン2への暗号化IPコアの送信指示により、FPGA21に暗号装置23を構成する制御を行なうことができる。
【0213】
送信指示は、通信部31、書込制御部38、及び処理IPコア取得部39の少なくとも1つの機能によって発行されてよい。換言すれば、通信部31、書込制御部38、及び処理IPコア取得部39の少なくとも1つは、処理回路22の構成に用いる第1情報と、暗号装置23の構成に用いる第2情報と、に基づき、処理回路22及び暗号装置23をFPGA21に構成する制御を行なう制御部の一例である。
【0214】
なお、管理マシン3Aが処理IPコア又は/及び暗号化IPコアをリソースプール6から取得するか、リソースプール6からホストマシン2へ直接送信させるかは、リソースプール6やホストマシン2が有する機能、IPコアDB61におけるIPコアの格納状況、又は運用状況等に応じて決定されてよい。
【0215】
次に、
図17を参照して、変形例に係る情報処理システム1Aの実施例について説明する。
図17は変形例の実施例に係る情報処理システム10Aの構成を示すブロック図である。なお、
図17では、便宜上、管理マシン30AのCPU3a及びメモリ3b、クライアントマシン40−1及び40−2のCPU4a及びメモリ4b、並びにリソースプールマシン60のCPU及びメモリの図示を省略している。以下、一実施形態に係る情報処理システム1と異なる構成について説明する。
【0216】
図17に示すように、情報処理システム10Aは、例示的に、情報処理システム10の構成に加えて、リソースプールマシン60をそなえてよい。
【0217】
リソースプールマシン60は、
図14に示すものと同様のIPコアDB61をそなえてよい。また、リソースプールマシン60は、NIC610をそなえてよい。
【0218】
NIC610は、リソースプールマシン60をLAN等のネットワークに接続する装置である。NIC610は、例えば管理マシン30と有線又は無線により接続されてよく、さらに、ホストマシン20又はクライアントマシン40と接続されてもよい。
【0219】
〔2〕その他
上述した一実施形態及び変形例に係る技術は、以下のように変形、変更して実施することができる。
【0220】
例えば、
図9に示すホストマシン2の各機能ブロックは、それぞれ任意の組み合わせで併合してもよく、分割してもよい。また、
図10に示す管理マシン3の各機能ブロックは、それぞれ任意の組み合わせで併合してもよく、分割してもよい。
【0221】
また、変形例において、情報処理システム1Aが管理マシン3A及びリソースプール6をそなえるものとしたが、これに限定されるものではない。管理マシン3A及びリソースプール6のいずれか一方の機能は、他方の装置に併合されてもよく、或いは管理マシン3A及びリソースプール6の少なくとも一部の機能を1以上のコンピュータに集約してもよい。この場合、当該他方の装置又は当該コンピュータが、ホストマシン2を管理する管理装置と位置付けられてよい。
【0222】
一実施形態及び変形例において、FPGA21は、処理回路22及び暗号装置23が複数、例えば2つ構成されるものとしたが、1つのFPGA21に構成される論理回路は、1つ、又は3つ以上であってもよい。1つのFPGA21に複数の論理回路が構成される場合、FPGA21内の複数の処理回路22の各々には、メモリ2bの互いに異なるアドレス領域、例えばメモリ25が割り当てられてよい。
【0223】
また、一実施形態及び変形例において、ホストマシン2は、FPGA21を複数そなえ、複数のFPGA21の各々に、処理回路22及び暗号装置23が1つ以上構成されてもよい。この場合においても、複数のFPGA21における複数の処理回路22の各々には、メモリ2bの互いに異なるアドレス領域が割り当てられてよい。
【0224】
さらに、一実施形態及び変形例において、FPGA21には、同じ数の処理回路22及び暗号装置23が構成されるものとして説明したが、これに限定されるものではない。例えば、FPGA21に構成される複数の処理回路22のうちの少なくとも1つの処理回路22が、演算結果を暗号装置23により暗号化してもよい。
【0225】
図12及び
図13の構成例を用いて説明すると、FPGA210は、入力される情報に応じた演算を行なう演算処理装置220と、DRAM205のアドレスを管理するページテーブル222とを含む組を複数有してよい。また、複数の組のうちの少なくとも1つの組は、当該少なくとも1つの組の演算処理回路220により演算された演算結果に対して、当該演算処理回路220に対応する暗号鍵を用いて暗号化を行ない暗号化データを生成する暗号装置23、例えば復号装置230及び暗号化装置232をさらに有してよい。
【0226】
そして、当該少なくとも1つの組の演算処理装置220は、演算結果を暗号化装置232により暗号化した暗号化データを、当該少なくとも1つの組のページテーブル222に基づくDRAM205のアドレスに書き込んでよい。一方、当該少なくとも1つの組以外の組における演算処理回路220は、演算結果を自身の組のページテーブル222に基づくDRAM205のアドレスに書き込んでよい。
【0227】
このような構成により、例えば、FPGA21に暗号装置23をそなえない、又は、マリシアスIPが暗号装置23を利用しないように構成されていても、他の処理回路22が暗号装置23を用いるように構成されていれば、マリシアスIPが他の処理回路22が用いるメモリ25からデータを盗み見ることを防止できる。換言すれば、マリシアスIPが自身が用いるページテーブル222内のアドレスを異なるアドレスに書き換えたり、ページテーブル222からアドレスを読み出した後に異なるアドレスに変換したとしても、当該異なるアドレスから他の処理回路22のデータを盗み見ることを防止できる。
同様である。
【0228】
〔3〕付記
以上の実施形態に関し、更に以下の付記を開示する。
【0229】
(付記1)
情報処理装置と、前記情報処理装置にアクセスする端末装置と、前記情報処理装置を管理する管理装置と、をそなえ、
前記情報処理装置は、
回路の再構成が可能な集積回路をそなえ、
前記集積回路は、
前記端末装置が送信する情報に応じた演算を行なう演算回路と、
前記演算回路により演算された演算結果に対して、前記演算回路に対応する暗号鍵を用いて暗号化を行ない暗号化データを生成する暗号化回路と、
が構成され、
前記管理装置は、
前記暗号鍵を前記演算回路と対応付けて管理し、前記端末装置へ前記演算回路に対応する暗号鍵を通知し、
前記端末装置は、
前記暗号化データを記憶する記憶装置から前記暗号化データを読み出し、
読み出した前記暗号化データを、前記管理装置から通知される前記暗号鍵を用いて復号する、
ことを特徴とする、情報処理システム。
【0230】
(付記2)
前記管理装置は、
前記演算回路の構成に用いる第1情報と、
前記暗号化回路の構成に用いる第2情報と、
に基づき、前記演算回路及び前記暗号化回路を前記集積回路に構成する制御を行なう、
ことを特徴とする、付記1記載の情報処理システム。
【0231】
(付記3)
前記暗号化回路により生成された前記暗号化データは、前記記憶装置のアドレスを管理する管理情報に基づき前記記憶装置に書き込まれる、
ことを特徴とする、付記1又は付記2記載の情報処理システム。
【0232】
(付記4)
回路の再構成が可能な集積回路をそなえ、
前記集積回路は、
入力される情報に応じた演算を行なう演算回路と、
前記演算回路により演算された演算結果に対して、前記演算回路に対応する暗号鍵を用いて暗号化を行ない暗号化データを生成する暗号化回路と、
が構成される、
ことを特徴とする、情報処理装置。
【0233】
(付記5)
前記暗号鍵は、前記情報処理装置を管理する管理装置により、前記演算回路と対応付けて管理され、
前記暗号化データは、端末装置により、前記暗号化データを記憶する記憶装置から読み出され、前記管理装置から前記端末装置に通知される前記暗号鍵を用いて復号される、
ことを特徴とする、付記4記載の情報処理装置。
【0234】
(付記6)
前記暗号化回路により生成された前記暗号化データは、前記記憶装置のアドレスを管理する管理情報に基づき前記記憶装置に書き込まれる、
ことを特徴とする、付記5記載の情報処理装置。
【0235】
(付記7)
前記情報処理装置を管理する管理装置と接続される接続部をさらにそなえ、
前記演算回路及び前記暗号化回路は、前記管理装置によって、前記接続部を介して前記集積回路に構成される、
ことを特徴とする、付記4〜6のいずれか1項記載の情報処理装置。
【0236】
(付記8)
前記演算回路の構成に用いる第1情報と、
前記暗号化回路の構成に用いる第2情報と、
に基づき、前記演算回路及び前記暗号化回路を前記集積回路に構成する構成部をさらにそなえる、
ことを特徴とする、付記4〜6のいずれか1項記載の情報処理装置。
【0237】
(付記9)
前記集積回路には、前記演算回路及び前記暗号化回路がそれぞれ複数構成され、
前記複数の演算回路の各々には、前記記憶装置の互いに異なるアドレス領域が割り当てられる、
ことを特徴とする、付記4〜8のいずれか1項記載の情報処理装置。
【0238】
(付記10)
前記集積回路を複数そなえ、
前記複数の集積回路の各々には、前記演算回路及び前記暗号化回路が構成され、
前記複数の集積回路における前記複数の演算回路の各々には、前記記憶装置の互いに異なるアドレス領域が割り当てられる、
ことを特徴とする、付記4〜9のいずれか1項記載の情報処理装置。
【0239】
(付記11)
回路の再構成が可能な集積回路をそなえ、
前記集積回路は、入力される情報に応じた演算を行なう演算回路と、記憶装置のアドレスを管理する管理情報とを含む組を複数有し、
前記複数の組のうちの少なくとも1つの組は、前記少なくとも1つの組の演算回路により演算された演算結果に対して、前記演算回路に対応する暗号鍵を用いて暗号化を行ない暗号化データを生成する暗号化回路をさらに有し、
前記少なくとも1つの組の演算回路は、前記演算結果を前記暗号化回路により暗号化した前記暗号化データを、前記少なくとも1つの組の管理情報に基づく前記記憶装置のアドレスに書き込み、
前記複数の組のうちの前記少なくとも1つの組以外の組における演算回路は、演算結果を自身の組の管理情報に基づく前記記憶装置のアドレスに書き込む、
ことを特徴とする、情報処理装置。
【0240】
(付記12)
前記自身の組の管理情報には、前記少なくとも1つの組における管理情報に定められたアドレスに対して排他的に予め定められるアドレスとは異なるアドレスが設定されており、
前記異なるアドレスは、前記少なくとも1つの組における管理情報に定められたアドレスと重複する、
ことを特徴とする、付記11記載の情報処理装置。
【0241】
(付記13)
前記自身の組の管理情報には、前記少なくとも1つの組における管理情報に定められたアドレスに対して排他的に予め定められるアドレスが設定されており、
前記複数の組のうちの前記少なくとも1つの組以外の組における演算回路は、前記自身の組の管理情報から読み出したアドレスを当該アドレスとは異なるアドレスに変換し、演算結果を前記異なるアドレスに書き込み、
前記異なるアドレスは、前記少なくとも1つの組における管理情報に定められたアドレスと重複する、
ことを特徴とする、付記11記載の情報処理装置。
【0242】
(付記14)
回路の再構成が可能な集積回路に演算回路を構成することを指示する要求を、端末装置から受信する受信部と、
前記演算回路であって前記端末装置が送信する情報に応じた演算を行なう前記演算回路の構成に用いる第1情報と、
前記演算回路により演算された演算結果に対して、前記演算回路に対応する暗号鍵を用いて暗号化を行ない暗号化データを生成する暗号化回路の構成に用いる第2情報と、
に基づき、前記集積回路に対して、前記演算回路及び前記暗号化回路を構成する制御を行なう制御部と、をそなえる、
ことを特徴とする、管理装置。
【0243】
(付記15)
前記第1情報及び前記第2情報を取得する取得部、をさらにそなえ、
前記制御部は、取得した前記第1情報及び前記第2情報に基づき、前記集積回路に対して、前記演算回路及び前記暗号化回路を構成する制御を行なう、
ことを特徴とする、付記14記載の管理装置。
【0244】
(付記16)
前記取得部は、複数種類の演算回路に対応する複数の第1情報を蓄積するストレージ装置から、前記端末装置からの要求を満たす第1情報を取得する、
ことを特徴とする、付記15記載の管理装置。
【0245】
(付記17)
前記ストレージ装置は、前記第2情報をさらに蓄積し、
前記取得部は、前記ストレージ装置から前記第2情報を取得する、
ことを特徴とする、付記16記載の管理装置。
【0246】
(付記18)
前記制御部は、複数種類の演算回路に対応する複数の第1情報を蓄積するストレージ装置に対して、前記端末装置からの要求を満たす第1情報に基づく前記演算回路を、前記集積回路に構成させる制御を行なう、
ことを特徴とする、付記14記載の管理装置。
【0247】
(付記19)
前記ストレージ装置は、前記第2情報をさらに蓄積し、
前記制御部は、前記ストレージ装置に対して、前記端末装置からの要求を満たす第1情報に基づく前記演算回路と、前記第2情報に基づく前記暗号化回路とを、前記集積回路に構成させる制御を行なう、
ことを特徴とする、付記18記載の管理装置。
【0248】
(付記20)
前記第2情報を取得する取得部、をさらにそなえ、
前記制御部は、取得した前記第2情報に基づき、前記集積回路に対して、前記暗号化回路を構成する制御を行なう、
ことを特徴とする、付記18記載の管理装置。
【0249】
(付記21)
前記暗号鍵を前記演算回路と対応付けて管理する管理部と、
前記端末装置へ前記演算回路に対応する暗号鍵を通知する通知部と、をさらにそなえる、
ことを特徴とする、付記14〜20のいずれか1項記載の管理装置。
【0250】
(付記22)
コンピュータに、
回路の再構成が可能な集積回路に演算回路を構成することを指示する要求を、端末装置から受信し、
前記演算回路であって前記端末装置が送信する情報に応じた演算を行なう前記演算回路の構成に用いる第1情報と、
前記演算回路により演算された演算結果に対して、前記演算回路に対応する暗号鍵を用いて暗号化を行ない暗号化データを生成する暗号化回路の構成に用いる第2情報と、
に基づき、前記集積回路に対して、前記演算回路及び前記暗号化回路を構成する制御を行なう、
処理を実行させることを特徴とする、処理プログラム。
【0251】
(付記23)
前記コンピュータに、
前記第1情報及び前記第2情報を取得し、
取得した前記第1情報及び前記第2情報に基づき、前記集積回路に対して、前記演算回路及び前記暗号化回路を構成する制御を行なう、
処理をさらに実行させることを特徴とする、付記22記載の処理プログラム。
【0252】
(付記24)
前記コンピュータに、
複数種類の演算回路に対応する複数の第1情報を蓄積するストレージ装置から、前記端末装置からの要求を満たす第1情報を取得する、
処理をさらに実行させることを特徴とする、付記23記載の処理プログラム。
【0253】
(付記25)
前記ストレージ装置は、前記第2情報をさらに蓄積し、
前記コンピュータに、
前記ストレージ装置から前記第2情報を取得する、
処理をさらに実行させることを特徴とする、付記24記載の処理プログラム。
【0254】
(付記26)
前記コンピュータに、
複数種類の演算回路に対応する複数の第1情報を蓄積するストレージ装置に対して、前記端末装置からの要求を満たす第1情報に基づく前記演算回路を、前記集積回路に構成させる制御を行なう、
処理をさらに実行させることを特徴とする、付記22記載の処理プログラム。
【0255】
(付記27)
前記ストレージ装置は、前記第2情報をさらに蓄積し、
前記コンピュータに、
前記ストレージ装置に対して、前記端末装置からの要求を満たす第1情報に基づく前記演算回路と、前記第2情報に基づく前記暗号化回路とを、前記集積回路に構成させる制御を行なう、
処理をさらに実行させることを特徴とする、付記26記載の処理プログラム。
【0256】
(付記28)
前記コンピュータに、
前記第2情報を取得し、
取得した前記第2情報に基づき、前記集積回路に対して、前記暗号化回路を構成する制御を行なう、
処理をさらに実行させることを特徴とする、付記26記載の処理プログラム。
【0257】
(付記29)
前記コンピュータに、
前記暗号鍵を前記演算回路と対応付けて管理し、
前記端末装置へ前記演算回路に対応する暗号鍵を通知する、
処理をさらに実行させることを特徴とする、付記22〜28のいずれか1項記載の処理プログラム。
【0258】
(付記30)
情報処理装置と、前記情報処理装置を管理する管理装置と、をそなえる情報処理システムにおける処理方法であって、
前記管理装置は、
回路の再構成が可能な集積回路に演算回路を構成することを指示する要求を、端末装置から受信し、
前記演算回路の構成に用いる第1情報と、暗号化回路の構成に用いる第2情報と、に基づき、前記情報処理装置がそなえる前記集積回路に対して、前記演算回路及び前記暗号化回路を構成する制御を行ない、
前記集積回路に構成された前記演算回路は、
前記端末装置が送信する情報に応じた演算を行ない、
前記集積回路に構成された前記暗号化回路は、
前記演算回路により演算された演算結果に対して、前記演算回路に対応する暗号鍵を用いて暗号化を行ない暗号化データを生成する、
ことを特徴とする、処理方法。
【0259】
(付記31)
前記管理装置は、
前記暗号鍵を前記演算回路と対応付けて管理し、
前記端末装置へ前記演算回路に対応する暗号鍵を通知する、
ことを特徴とする、付記30記載の処理方法。