以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。また、以下の説明において、同一名称の複数の装置を区別しない場合には、符号のハイフン“−”以降の数字を省略して表記する、又は、符号のアルファベットを省略して表記する場合がある。例を挙げると、図1に示すクライアントマシン130−1及び130−2を区別しない場合には、単にクライアントマシン130と表記する。また、図1に示すアプリケーション131a及び131bを区別しない場合には、単にアプリケーション131と表記する。
〔1〕一実施形態
〔1−1〕クラウドシステムにおけるセキュリティリスクについて
はじめに、クラウドシステムにおけるセキュリティ面のリスクについて説明する。
図1は、ホストマシン110のプロセッサとしてCPUが用いられるクラウドシステム100の動作例を説明する図である。図1に示すように、クラウドシステム100は、例示的に、ホストマシン110、管理マシン120、及び、複数(図1の例では2つ)のクライアントマシン130−1及び130−2をそなえる。
図1に例示するように、クライアントマシン130−1及び130−2のアプリケーション131a及び131bは、それぞれ、管理マシン120へサービス利用の要求を送信する(図1の矢印(i)参照)。以下、サービスが仮想マシンの提供であるものとする。
クラウドシステムを管理する管理マシン120は、要求に基づきサービスの認証を行ない、アプリケーション131の各々に対して、例えば仮想マシンの識別子(ID;Identifier)を送信する(矢印(ii)参照)。また、管理マシン120は、クライアントマシン130から受信した情報、例えば仮想マシンの利用に用いられるプログラムやデータ等をホストマシン110に送付する(矢印(iii)参照)。
ホストマシン110は、CPU110a及びメモリ110b等のハードウェア資源を用いてOperating System(OS)又はハイパバイザ111(以下、OS/HPV111と表記する場合がある)を実行する。また、OS/HPV111の制御下で、仮想マシン112a及び112bがそれぞれ実行される。
ホストマシン110では、CPU110aやメモリ110b等のハードウェア資源が複数の仮想マシン112a及び112bで共用される。例えば、仮想マシン112aは、ハードウェア資源の少なくとも一部により実現されるCPU113a及び共用メモリ(SHM;Shared Memory)114aを利用する。また、仮想マシン112bは、ハードウェア資源の少なくとも一部により実現されるCPU113b及び共用メモリ114bを利用する。
ここで、コンピュータでのメモリアドレスの管理について説明する。図2に例示するように、ユーザは、仮想アドレスでアプリケーションを記述し、仮想アドレスに割り当てる物理アドレスをOSが決定する。仮想アドレスと物理アドレスとの対応付けは、ページテーブル(Page Table)により管理される。ページテーブルは、メモリの割り当てを管理する情報の一例である。
CPUは、OSのページテーブルへのアクセスをハードウェアで高速化するために、頻繁に使われるアドレスの変換テーブルをCPU内部のTable Lookup Buffer(TLB)にコピーする。そして、CPUは、アプリケーションで指定される仮想アドレスを、TLBに基づき物理アドレスに変換し、変換した物理アドレスでメモリにアクセスする。
このように、ユーザは物理アドレスを認識せずに仮想アドレスを認識するため、ユーザが他のユーザのアプリケーションで用いる物理アドレスにアクセスすることは困難である。
図1の例においても、共用メモリ114a及び114bは仮想アドレスにより管理され、それぞれメモリ110bの物理アドレスに割り当てられる。以下、共用メモリ114aに割り当てられるメモリ110bのアドレス領域をメモリ領域115aと表記し、共用メモリ114bに割り当てられるメモリ110bのアドレス領域をメモリ領域115bと表記する。
仮想マシン112a及び112bでは、それぞれ対応するメモリ領域115a及び115b以外のメモリ110b上の記憶領域へのアクセスが、OS/HPV111により制限される。
このため、例えばアプリケーション131bのユーザが、仮想マシン112bを通じて他のユーザの仮想マシン112aに対応するメモリ領域115aへのアクセスを試みたとしても、OS/HPV111により、当該アクセスは抑止される。例えば図1に矢印(iv)で示すように、OS/HPV111はセグメンテーション違反(Segmentation Fault)を検出し、エラー処理等を行なう。
メモリ領域115に記憶される仮想マシン112の演算結果は、ホストマシン110のネットワーク装置116を介して、仮想マシン112を利用するクライアントマシン130のネットワーク装置133との間で送受信される(矢印(v)参照)。
例えばメモリ領域115aに記憶された演算結果は、パケット(A)に格納されてネットワーク装置116からクライアントマシン130−1のネットワーク装置133へ送信され、パケット(A)内のデータ(A)がアプリケーション131aに渡される。また、メモリ領域115bに記憶された演算結果は、パケット(B)に格納されてネットワーク装置116からクライアントマシン130−2のネットワーク装置133へ送信され、パケット(B)内のデータ(B)がアプリケーション131bに渡される。
以上のように、ホストマシン110のプロセッサとしてCPU110aが用いられるクラウドシステム100では、アプリケーション131のユーザは、OS/HPV111が提供する仮想マシン112を通じて処理を行なう。このため、ユーザが他のユーザのメモリ110bの記憶領域にアクセスしようとしても、OS/HPV111により当該アクセスを抑止することができる。
次に、ホストマシンのプロセッサとしてFPGAが用いられる場合を説明する。図3は、ホストマシン160のプロセッサとしてFPGAが用いられるクラウドシステム150の動作例を説明する図である。
図3に例示するように、クライアントマシン180−1及び180−2のアプリケーション181a及び181bは、それぞれ、管理マシン170へサービス利用の要求を送信する(図3の矢印(vi)参照)。また、アプリケーション181は、ホストマシン160のFPGA161に書き込む処理回路の情報、例えばIntellectual Property(IP)コアを管理マシン170へ送信する。
IPは、FPGAにおいて再利用可能な機能ブロックの一例であり、IPコアは、FPGAに構成する機能ブロックの設計に用いる情報の一例である。IPコアには、ソフトウェアマクロ、ハードウェアマクロ、又はこれらの組み合わせが含まれてよい。ソフトウェアマクロは、Register Transfer Level(RTL)で提供されるプログラムコードを含んでよい。なお、RTLは論理回路の設計データを記述するためのスキームの一例である。ハードウェアマクロは、FPGAの内部に組み込まれる回路ブロックの情報を含んでよい。なお、IPコアは、ソフトウェアマクロが改変される危険性を考慮し、ハードウェアマクロで提供されることもある。
管理マシン170は、要求に基づきサービスの認証を行ない、アプリケーション181の各々に対して、例えば仮想マシンのIDを送信する(矢印(vii)参照)。また、管理マシン170は、クライアントマシン180から受信したIPコアに基づいて、ホストマシン160のFPGA161に処理回路162a及び162b、換言すればアクセラレータを実装する(矢印(viii)参照)。
ホストマシン160では、FPGA161に構成された処理回路162a及び162bが、メモリコントローラ164を介して、それぞれメモリ160bのアドレス領域であるメモリ領域163a及び163bを利用して動作する。なお、ホストマシン160では、CPU160a及びFPGA161がそれぞれプロセッサとして機能する。例えば、処理回路162a及び162bからのライト(Write)要求は、ライトブロック(Write Block)でまとめられ、バスを通じてメモリ160bに書き込まれる。
ここで、コンピュータでのメモリアドレスの管理について、FPGA型のプロセッサが用いられる場合を説明する。図4に例示するように、CPUと同等に扱われるキャッシュコヒーレントバスに配置されたFPGAは、OSからページテーブルをコピーする。
クラウドシステム150では、FPGAに実装される処理回路は、ユーザによって作成されることが想定される。従って、処理回路の設計によっては、ユーザはFPGAにより、コピーしたページテーブルを操作することも可能である。例えばFPGAは、ページテーブルに設定された物理アドレスを、他のユーザが利用するメモリの物理アドレスに変換することもできる。
このページテーブルに設定された物理アドレスの変換は、ページテーブルに設定された情報自体の書き換えによって行なわれる場合があり、又はページテーブルから読み出された情報がFPGAからメモリへのアクセスの過程で変換される場合もある。
なお、FPGAが他のユーザの利用するメモリにアクセス可能となるのは、ユーザの悪意によるFPGAの操作のほか、処理回路の設計ミス等によって生じる場合もある。
図3の例において、例えば処理回路162bが、アプリケーション181bのユーザによって作成されたマリシアス(Malicious)IPである場合、処理回路162bからメモリ領域163aへのアクセスにはOSの防御機構が作用しない(矢印(ix)参照)。
従って、処理回路162bから、他のユーザが用いるメモリ領域163aに対して書き込みが発生した場合、ホストマシン160はこのような不正な書き込みを検出することが困難である。なお、マリシアスIPは、不正なプロセッサ、例えば悪意あるユーザにプログラムされたリコンフィギュアブル(Re-configurable)なプロセッサであるといえる。
このように、プロセッサをユーザが自由に設計できると、FPGA型のプロセッサは、OSの提供するセキュアなアクセスを越えて、直接ハードウェアにアクセスできてしまう。従って、FPGAをそなえるホストマシンにおけるセキュリティリスクが高まる。
〔1−2〕一実施形態に係る情報処理システムの構成例
そこで、一実施形態においては、以下の構成により、回路の再構成が可能な集積回路をそなえる情報処理装置におけるセキュリティリスクを低減させる。図5は、一実施形態に係る情報処理システム1の構成例を示すブロック図である。
図5に示すように、情報処理システム1は、例示的に、ホストマシン2、管理マシン3、並びに、複数(図5の例では2つ)のクライアントマシン4−1及び4−2をそなえる。なお、ホストマシン2及び管理マシン3の一方又は双方は、情報処理システム1に複数存在してもよく、クライアントマシン4は、情報処理システム1に3つ以上存在してもよい。
ホストマシン2は、情報処理装置の一例である。ホストマシン2としては、例えばサーバ又はPersonal Computer(PC)等の種々のコンピュータが挙げられる。例えばホストマシン2は、ユーザからの要求に応じて、ユーザの希望する処理回路を構成した、キャッシュコヒーレントなFPGAをプロセッサとして提供するクラウドサービスで利用されてよい。
ホストマシン2は、例示的に、CPU2a、メモリ2b、メモリコントローラ2c、FPGA21、及びネットワーク装置28をそなえてよい。CPU2aは、種々の制御や演算を行なうプロセッサの一例である。メモリ2bは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。メモリ2bとしては、例えばRandom Access Memory(RAM)等の揮発性メモリが挙げられる。メモリコントローラ2cは、CPU2a及びFPGA21が要求するメモリアクセスを処理する。メモリコントローラ2cとしては、例えば、Memory Management Unit(MMU)が挙げられる。
FPGA21は、回路の再構成が可能な集積回路であり、プログラマブルな回路領域を複数有するプログラマブルロジック装置の一例である。FPGA21は、ホストマシン2に複数存在してもよい。
FPGA21には、ホストマシン2の製造時或いは出荷時、又はホストマシン2の起動時等のクラウドサービスの提供前においては、論理ブロックが構成されていない状態が存在してもよい。図5の例は、情報処理システム1の運用段階において、クライアントマシン4−1及び4−2からの要求に応じて論理ブロックが構成された状態を示す。
FPGA21は、CPU2aと同等に扱われるキャッシュコヒーレントバスに配置されてよく、FPGA21とCPU2aとの間でメモリアクセスに用いるキャッシュの一貫性が保たれるような制御が行なわれてよい。
図5に示すように、FPGA21は、例示的に、第1回路領域21a、第2回路領域21b、セレクタ21c、及び監視装置26をそなえてよい。
第1回路領域21a及び第2回路領域21bは、それぞれ、FPGA21の複数の回路領域のうちの特定の回路領域の一例である。特定の回路領域とは、図5の例では、第1回路領域21a及び第2回路領域21bのように、ユーザに対して割り当てられた回路領域を意味してよい。
第1回路領域21aには、処理回路22a、生成部23a、暗号装置24a、及びID出力部25aが構成されてよい。第2回路領域21bには、処理回路22b、生成部23b、暗号装置24b、及びID出力部25bが構成されてよい。
処理回路22、生成部23、及びID出力部25は、クライアントマシン4からの要求(例えばIPコア)に応じて構成される回路であってよい。暗号装置24は、管理マシン3によりIPコアが用意される回路であって、クライアントマシン4から干渉できないように構成されてもよい。
なお、処理回路22は、一般のユーザにより自由に設計されてよい。一方、生成部23及びID出力部25については、自由に設計できるようにした場合にメモリアクセス等の動作に影響を与える可能性がある。そこで、例えば、既存のライブラリ等の予め用意されたIPコアをユーザに利用させることで、生成部23及びID出力部25が提供されてもよい。
処理回路22(図5の例では「PROC」(PROCESSOR)と表記)は、FPGA21の複数の回路領域のうちの特定の回路領域により実現される演算処理部の一例である。処理回路22は、例えば、クライアントマシン4が送信する情報に応じた処理を行ない、処理に基づくデータを生成部23及び暗号装置24に出力してよい。また、処理回路22は、メモリ2bのアドレスを管理する管理情報(図示省略)に基づき、処理回路22に割り当てられたメモリ領域27へのアクセス要求をセレクタ21cに出力してよい。
管理情報は、処理回路22に割り当てられた識別情報と、処理回路22に割り当てられた記憶領域のアドレスとを管理する情報の一例である。管理情報としては、CPU2a又はFPGA21で実行されるOSが管理するページテーブルが挙げられる。図5に示すように、メモリ2bは、処理回路22aに割り当てられた物理アドレスのアドレス領域であるメモリ領域27aと、処理回路22bに割り当てられた物理アドレスのアドレス領域であるメモリ領域27bとを有してよい。
処理回路22a及び22bの各々の管理情報には、他方の回路領域の管理情報に定められたアドレスに対して排他的に予め定められるアドレスが設定されてよい。換言すれば、第1回路領域21a又は第2回路領域21bの管理情報には、互いに重複しないメモリ領域27のアドレスが設定されてよい。
なお、ホストマシン2は、FPGA21からの暗号化データが書き込まれるメモリ領域27(又はメモリ2b)を持たない場合もある。例えば、メモリ領域27(メモリ2b)は、他のホストマシン又は任意の情報処理装置にそなえられてもよい。
生成部23(図5の例では「GEN」(GENERATOR)と表記)は、処理回路22の処理に基づくデータに特定の処理を施すことにより第1チェック用データを生成し、処理回路22から出力されたデータに付加してよい。
第1チェック用データとしては、例えば、元データに基づき生成される誤り検出訂正符号等のような、元データに関連する情報であってよい。なお、特定の処理には、例えば、誤り検出訂正符号の生成処理が含まれてよい。誤り検出訂正符号としては、チェックサムやCyclic Redundancy Code(CRC)等が挙げられる。以下の説明では、第1チェック用データを生成するための特定の処理がチェックサムの生成であるものとし、第1チェック用データを、「Sum」又は「sec」と表記する場合がある。
暗号装置24は、処理回路22の処理に基づくデータと、当該データに付加された第1チェック用データとを、処理回路22に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成する暗号化部の一例である。
処理回路22に割り当てられた識別情報は、例えば、クラウドサービスの提供に用いられる識別子であり、一例として、回路領域21a又は21bのID、或いは、処理回路22(アクセラレータ)のIDであってもよい。暗号装置24は、FPGA21に構成される際に、管理マシン3により、暗号装置24の構成先の処理回路22(又は回路領域21a又は21b)に割り当てられた識別情報に対応する暗号鍵を設定されてよい。
また、暗号装置24は、メモリ領域27から読み出された暗号化データを、処理回路22に割り当てられた識別情報に対応する暗号鍵を用いて復号し、復号したデータを処理回路22に出力してよい。
暗号装置24による暗号化及び復号は、既知の種々の手法により行なうことが可能である。例えば暗号化方式として、対称暗号化方式が用いられてよい。なお、対称暗号化方式に代えて、非対称暗号化方式が用いられてもよい。
ID出力部25(図5の例では「ID」と表記)は、処理回路22の識別情報をセレクタ21cに出力してよい。ID出力部25が出力する識別情報は、処理回路22に割り当てられた識別情報と同一であるが、マリシアスIPにおいては、ID出力部25が他のユーザの処理回路22に割り当てられた識別情報を出力する(偽る)場合もある。
セレクタ21cは、特定の回路領域から出力される識別情報と、暗号化データとを認証部に送信する送信部の一例である。例えばセレクタ21cは、複数の回路領域(図5の例では符号21a及び21b)から入力された暗号化データ、識別情報、及びアドレスの入力のうちのいずれか1組の暗号化データ、識別情報、及びアドレスを選択して監視装置26に出力する。セレクタ21cとしては、例えば、複数の入力信号のいずれかを出力へ分配するマルチプレクサ(MUX;multiplexer)が挙げられる。
監視装置26は、セレクタ21cから受信した識別情報に対応する暗号鍵に基づきセレクタ21cから受信した暗号化データを復号し、復号したデータに付加された第1チェック用データに基づき復号したデータの認証処理を行なう認証部の一例である。
例えば、監視装置26は、以下の手順により認証処理を行なってよい。
(a)ID出力部25から受信した識別情報に対応する暗号鍵を、識別情報と暗号鍵との対応関係を表す情報(図示省略)から取得し、取得した暗号鍵を用いて、暗号装置24から受信した暗号化データを復号する。
(b)復号したデータに特定の処理を施して第2チェック用データを生成する。なお、特定の処理は、生成部23が実施する処理と同一である。
(c)生成した第2チェック用データが、復号した第1チェック用データに一致するか否かを判定する。
上記(a)〜(c)の処理を行なうことで、監視装置26は、第2チェック用データが第1チェック用データに一致する場合、認証に成功したと判断してよい。一方、監視装置26は、第2チェック用データが第1チェック用データに一致しない場合、認証に失敗したと判断し、復号したデータのメモリ領域27への書き込みを抑止してよい。
このように、例えば、演算処理部を含む特定の回路領域が識別情報を偽った場合、認証部における認証処理が失敗する。従って、マリシアスIPが他の回路領域に成り済ます(他の回路領域の識別情報を用いる)ことにより、他人の記憶領域に不正なデータが書き込まれることを防止できる。
また、監視装置26は、ページテーブル等の管理情報を保持し、処理回路22から受信した書込先のアドレスと、処理回路22に割り当てられたメモリ領域27のアドレスとに基づき受信した書込先のアドレスを認証してもよい。
認証処理において、データ及びアドレスの双方の認証に成功した場合、監視装置26は、アドレスと、復号したデータとをメモリコントローラ2cに送信してよい。このとき、監視装置26は、当該復号したデータを、復号に用いた暗号鍵を用いて暗号化し、暗号化したデータをメモリコントローラ2cに送信してもよい。
なお、監視装置26は、図5の例ではFPGA21にそなえられているが、これに限定されるものではなく、FPGA21の外部においてFPGA21とメモリコントローラ2cとの間に介設される集積回路(IC)であってもよい。
メモリコントローラ2cは、監視装置26から入力されたデータを、メモリ2b内の処理回路22に割り当てられたメモリ領域27に書き込む制御を行なってよい。
ネットワーク装置28は、図示しないネットワークを介してクライアントマシン4との間で通信を行なってよい。なお、ネットワーク装置28は、管理マシン3とホストマシン2との間の通信でも用いられてよい。ネットワークとしては、例えばインターネット、又はLocal Area Network(LAN)若しくはWide Area Network(WAN)等が挙げられる。
管理マシン3は、ホストマシン2を管理する管理装置の一例である。管理マシン3としては、情報処理装置、例えば、サーバ又はPC等の種々のコンピュータが挙げられる。
管理マシン3は、クライアントマシン4からの要求に応じて、処理回路22等の構成に用いる第1情報と、暗号装置24及びセレクタ21c等の構成に用いる第2情報とに基づき、これらをFPGA21に構成する制御を行なってよい。第2情報には、監視装置26の構成に用いる情報が含まれてもよい。
第1情報及び第2情報は、それぞれIPコアであってよい。IPコアには、上述のように、ソフトウェアマクロ、ハードウェアマクロ、又はこれらの組み合わせが含まれてよい。以下の説明において、第1情報を処理IPコア、第2情報を暗号化IPコアと表記する場合がある。
論理回路をFPGA21に構成する制御は、種々の手法により実現されてよい。例えば、図5に示すように、管理マシン3とホストマシン2のFPGA21とを専用線1aで接続し、管理マシン3がFPGA21にアクセラレータを実装してもよい。なお、図5の例では、便宜上、専用線1aをFPGA21に直接接続しているが、専用線1aは、ネットワークを介してFPGA21に接続されてもよい。
或いは、管理マシン3が、ホストマシン2のCPU2aが実行するOSに対して、FPGA21へのアクセラレータの実装を通信線1b経由で指示し、指示を受けたOSは、制御線29を介してFPGA21にアクセラレータを実装してもよい。なお、図5の例では、便宜上、通信線1bをCPU2aに接続しているが、通信線1bは、ネットワークを介して又は直接、ネットワーク装置28に接続されてもよい。
クライアントマシン4は、ホストマシン2にアクセスする端末装置の一例である。クライアントマシン4としては、情報処理装置、例えば、PC、サーバ、スマートホン、又はタブレット等の種々のコンピュータが挙げられる。
クライアントマシン4は、例示的に、ネットワーク装置44をそなえ、図示しないCPU及びメモリ等によりアプリケーション41を実行する。例えばクライアントマシン4−1では、ユーザによりアプリケーション41aが操作され、クライアントマシン4−2では、ユーザによりアプリケーション41bが操作される。
ネットワーク装置44は、図示しないネットワークを介してホストマシン2との間で通信を行なう。なお、ネットワーク装置44は、クライアントマシン4と管理マシン3との間の通信でも用いられてよい。ネットワークとしては、例えばインターネット、又はLAN若しくはWAN等が挙げられる。
また、クライアントマシン4は、管理マシン3から通知されたID42及び暗号鍵、並びに、管理マシン3に送信するIPコア43(例えば処理IPコア)を記憶するメモリ等の記憶領域をそなえてよい。
なお、クライアントマシン4によるデータの読出先のメモリは、上述したメモリ領域27ではなく、メモリ領域27からデータが転送されたメモリ或いはHDD等の記憶装置であってもよい。データが転送された記憶装置は、ホストマシン2の内部にそなえられてもよいし、ホストマシン2とは異なる装置にそなえられてもよい。
〔1−3〕動作例
次に、図6〜図8を参照して、上述の如く構成された情報処理システム1の動作例を説明する。
図6に示すように、クライアントマシン4は、管理マシン3へ、FPGA21を用いるサービスの要求を送信する(処理T1;図5の矢印(I))。管理マシン3は、受信した要求についてサービスの認証を行ない(処理T2)、IDを発行し、アプリケーション41に対してIDを送信する(処理T3;図5の矢印(II))。
また、クライアントマシン4は、管理マシン3にアクセラレータの論理、例えばIPコア43を送信する(処理T4)。アクセラレータの論理は、顧客、例えばアプリケーション41のユーザが用意したIPコア43であってよい。なお、処理T4は、処理T1の送信とともに行なわれてもよい。
次いで、管理マシン3は、暗号鍵を取得し(処理T5)、取得した暗号鍵をクライアントマシン4に提供する(処理T6)。また、管理マシン3は、アクセラレータの論理の論理合成を行なう(処理T7)。
一例として、論理合成では、ハードウェア記述言語(HDL;Hardware Description Language)で表されるRTL等のIPコアが、ゲート・レベルのネットリストへ変換されて、論理回路の実装設計が行なわれてよい。ネットリストは、素子間を接続する配線(ネット)の一覧を記述した設計データの表現形式である。
なお、HDLとしては、Verilog HDLや、VHSIC HDL(VHDL)等のハードウェア記述言語が使われてよい。VHSICは、very high speed integrated circuitsの略称である。
そして、管理マシン3は、論理合成により合成された処理回路22等のデザインをFPGA21に配置するとともに、取得した暗号鍵を用いて暗号化を行なう暗号装置24やセレクタ21c等を、FPGA21のメモリインタフェースに配置する。
例えば、管理マシン3は、処理回路22(及び生成部23やID出力部25等の周辺回路)並びに暗号装置24やセレクタ21cをFPGA21に書き込む(処理T8;図5の矢印(III))。なお、管理マシン3は、周辺回路の書き込みの際に、アプリケーション41に割り当てたIDをID出力部25に登録してもよい。
また、管理マシン3は、監視装置26に対して、FPGA21に実装した処理回路22及び暗号装置24に対応するID及び暗号鍵、並びに、ページテーブルを登録する(処理T9)。
FPGA21への書き込みが完了すると、FPGA21は書込完了通知を管理マシン3へ送信する(処理T10)。書込完了通知を受信すると、管理マシン3は、クライアントマシン4に準備完了通知を送信する(処理T11)。
他の例として、図7に示すように、管理マシン3は、処理T7でアクセラレータの論理合成を行なうと、処理回路22及び暗号装置24等のFPGA21への書き込みを、ホストマシン2のCPU2aに通知してもよい(処理T21)。また、管理マシン3は、ID及び暗号鍵並びに管理情報の監視装置26への登録を、CPU2aに通知してもよい(処理T22)。
CPU2aは、OSにより、処理回路22及び暗号装置24等をFPGA21に書き込むとともに(処理T23)、ID及び暗号鍵並びに管理情報を監視装置26に登録してよい(処理T24)。処理T10は図6と同様である。なお、図7において、処理T7の論理合成はホストマシン2で行なわれてもよい。
次いで、クライアントマシン4は、ID42により特定したFPGA21の処理回路22に対して、特定の演算の開始指示(計算開始合図)を送信する(処理T12)。計算開始合図を受信すると、ホストマシン2ではランタイムが起動されてFPGA21のドライバがロードされる。
そして、FPGA21は、処理回路22により演算を行なう。なお、演算の過程で、処理回路22に割り当てられたメモリ領域27に対する暗号化データのストア(処理T13)、及び、メモリ領域27に記憶された暗号化データのFPGA21へのロード(処理T14)の少なくとも一方が実行されてもよい。
図8に示すように、ストア(図6の処理T13)では、処理回路22のID及びストア対象のメモリ領域27のアドレスが、FPGA21から監視装置26に送信される(処理T31及びT32)。また、生成部23が、処理回路22の演算結果に基づきSumを生成し、暗号装置24が、演算結果にSumを付加したデータを暗号化する(処理T33)。そして、データ及びsec(Sum)を含む暗号化データが監視装置26に送信される(処理T34)。
監視装置26は、セレクタ21cを介して受信したID、アドレス、及び、暗号化データに基づき認証処理を行なう。(処理T35)、認証に成功すると、監視装置26は、メモリコントローラ2cに対して、アドレスと、演算結果を暗号化した暗号化データとを送信する(処理T36及びT37)。これにより、暗号化データが、アドレスで指定されたメモリ領域27に書き込まれる。なお、認証に失敗した場合、監視装置26は、メモリ領域27への暗号化データの書き込みを抑止する(図5の符号(IV)参照)。
一方、ストア(図6の処理T14)では、ロード対象のメモリ領域27のアドレスが、FPGA21からメモリ領域27に送信される(処理T38)。FPGA21は、メモリ領域27からロードされた暗号化データを受信し(処理T39)、受信した暗号化データを復号する(処理T40)。
図6の説明に戻り、処理回路22による演算が終了すると、FPGA21はクライアントマシン4へ計算終了通知を送信する(処理T15)。また、メモリ領域27に記憶された演算結果のデータ(例えば暗号化データ)が、ネットワーク装置28及び44を介してクライアントマシン4に転送される(処理T16)。
クライアントマシン4のアプリケーション41は、受信したデータが暗号化されている場合、管理マシン3から通知された暗号鍵を用いて暗号化データを復号する(処理T17)。処理が終了すると、アプリケーション41は、管理マシン3に対してサービス終了通知を送信し(処理T18)、FPGA21を用いたサービスが終了する。
〔1−4〕ハードウェア構成例
次に、ホストマシン2、管理マシン3、及びクライアントマシン4のハードウェア構成例について説明する。なお、ホストマシン2、管理マシン3、及びクライアントマシン4は、いずれも同様のハードウェア構成をそなえてよい。以下、便宜上、ホストマシン2、管理マシン3、及びクライアントマシン4をまとめてコンピュータ5と表記し、コンピュータ5のハードウェア構成例について説明する。
図9に示すように、コンピュータ5は、例示的に、CPU5a、メモリ5b、記憶部5c、Interface(IF)部5d、Input / Output(I/O)部5e、及び読取部5fをそなえてよい。
CPU5aは、種々の制御や演算を行なうプロセッサの一例である。CPU5aは、コンピュータ5内の各ブロックとバスで相互に通信可能に接続されてよい。なお、プロセッサとしては、CPU5a等の演算処理装置に代えて、電子回路、例えばMicro Processing Unit(MPU)、やApplication Specific Integrated Circuit(ASIC)等の集積回路(IC)が用いられてもよい。
メモリ5bは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。メモリ5bとしては、例えばRAM等の揮発性メモリが挙げられる。
なお、図5に示すホストマシン2のCPU2a及びメモリ2bは、図9に示すCPU5a及びメモリ5bの一例である。
記憶部5cは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。記憶部5cとしては、例えばHard Disk Drive(HDD)等の磁気ディスク装置、Solid State Drive(SSD)等の半導体ドライブ装置、フラッシュメモリやRead Only Memory(ROM)等の不揮発性メモリ等の各種記憶装置が挙げられる。
例えば記憶部5cは、コンピュータ5の各種機能の全部若しくは一部を実現するプログラム50を格納してよい。CPU5aは、例えば記憶部5cに格納されたプログラム50をメモリ5bに展開して実行することにより、コンピュータ5の機能を実現することができる。
IF部5dは、ネットワーク等との間の接続及び通信の制御等を行なう通信インタフェースの一例である。例えばIF部5dは、LAN、Infiniband(インフィニバンド)、Fibre Channel(FC、ファイバチャネル)、Universal Serial Bus(USB)、又はBluetooth(登録商標)等に準拠したアダプタが挙げられる。図5に示すホストマシン2のネットワーク装置28及びクライアントマシン4のネットワーク装置44は、図9に示すIF部5dの一例である。
なお、プログラム50は、ネットワーク等からIF部5dを介してコンピュータ5にダウンロードされてもよい。
I/O部5eは、マウス、キーボード、又は操作ボタン等の入力部、並びに、ディスプレイ又はプリンタ等の出力部、の一方又は双方を含んでよい。
読取部5fは、記録媒体5gに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部5fは、記録媒体5gを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部5fとしては、例えばUSB等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体5gにはプログラム50が格納されてもよい。
記録媒体5gとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク、Compact Disc(CD)、Digital Versatile Disc(DVD)、ブルーレイディスク、Holographic Versatile Disc(HVD)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等が挙げられる。なお、CDとしては、例示的に、CD−ROM、CD−R、CD−RW等が挙げられる。また、DVDとしては、例示的に、DVD−ROM、DVD−RAM、DVD−R、DVD−RW、DVD+R、DVD+RW等が挙げられる。
上述したコンピュータ5のハードウェア構成は例示である。従って、コンピュータ5内でのハードウェアの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。また、ホストマシン2、管理マシン3、及びクライアントマシン4の間で、異なるハードウェア構成がそなえられてもよい。なお、ホストマシン2のハードウェア構成例については、図9に示す構成に加えて、図5に示すFPGA21及び関連する装置或いは回路がさらにそなえられてよい。
〔1−5〕ホストマシンの構成例
次に、図10を参照して、一実施形態に係るホストマシン2の機能構成例について説明する。図10に示すように、ホストマシン2は、例示的に、通信部11及び書込処理部12をそなえてよい。
通信部11は、ネットワーク装置28を介して、又は、図5に示す通信線1bを介して、管理マシン3及びクライアントマシン4と通信を行なう。クライアントマシン4との間の通信には、処理回路22の実行に係る要求若しくはデータの送受信が含まれてよい。管理マシン3との間の通信には、処理回路22、生成部23、暗号装置24、及びID出力部25の書き込みに係る要求若しくはデータの送受信や、監視装置26への情報登録に係る要求若しくはデータの送受信が含まれてよい。
書込処理部12は、OS又はドライバの機能を用いて、FPGA21に対して論理の書き込みを行なう。例えば書込処理部12は、管理マシン3からのFPGA21へのアクセラレータの実装指示に基づき、図5に示す制御線29を介して、FPGA21にアクセラレータの論理を書き込んでよい。この場合、通信部11は、アクセラレータの実装指示を管理マシン3から受信し、書込処理部12による書込処理の完了に応じて、アクセラレータの実装完了通知を管理マシン3へ送信してもよい。管理マシン3が専用線1aを介してこれらの処理を行なう場合には、書込処理部12は不要である。
なお、アクセラレータの論理合成が書込処理部12により行なわれてもよい。この場合、書込処理部12は、通信部11を介してFPGA21から処理IPコア、暗号化IPコア、及びIDの情報を取得してよい。
上述したホストマシン2の機能は、ホストマシン2のCPU5a(例えば図5に示すCPU2a)が、メモリ5b(例えば図5に示すメモリ2b)に格納されたプログラム50を実行することにより実現されてよい。
〔1−6〕管理マシンの構成例
次に、図11及び図12を参照して、一実施形態に係る管理マシン3の機能構成例について説明する。
図11に示すように、管理マシン3は、例示的に、メモリ部13、通信部14、ユーザ管理部15、暗号鍵取得部16、暗号化IPコア生成部17、及び書込制御部18をそなえてよい。
メモリ部13は、ユーザDatabase(DB)13a、1以上の処理IPコア13b、及び、1以上の暗号化IPコア13cを記憶してよい。メモリ部13は、例えば、図5に示すメモリ2bの記憶領域により実現されてもよい。
通信部14は、ホストマシン2及びクライアントマシン4と通信を行なう。クライアントマシン4との間の通信には、サービスの提供に関する情報、例えばユーザ情報、アクセラレータの論理に関する情報、暗号鍵に関する情報等の送受信が含まれてよい。
ユーザ管理部15は、クラウドサービスを利用するユーザを管理する。例えばユーザ管理部15は、ユーザDB13aに基づき、ユーザ、ID、IPコア、及び暗号鍵を対応付けて管理してよい。また、ユーザ管理部15は、クライアントマシン4からのサービス要求に対する認証や、受信したIPコアを処理IPコア13b又は暗号化IPコア13cとして管理する処理、ユーザDBの更新等を行なってもよい。
ユーザDB13aは、ユーザごとの情報を管理するデータベースの一例である。ユーザDB13aは、例えばメモリ5b又は記憶部5c(図9参照)によって実現されてよい。ユーザDBのデータ構成例を図12に示す。
図12に例示するように、ユーザDB13aには、ユーザID、サービスID、暗号鍵、処理IPコア、及び、暗号化IPコアの各情報が含まれてよい。ユーザIDはユーザ、例えばアプリケーション41を識別する情報の一例であり、サービスIDは、ユーザが利用するサービスを識別する情報の一例である。サービスIDとしては、例えばFPGA21において割り当てられる処理回路22又は回路領域のIDや、アクセラレータのIDが用いられてもよい。
暗号鍵は、暗号鍵の情報そのものであってもよいし、暗号鍵取得部16が取得した暗号鍵を特定できる情報であってもよい。処理IPコア及び暗号化IPコアは、ユーザ管理部15又は暗号化IPコア生成部17が取得したこれらのIPコアの情報そのものであってもよいし、これらのIPコアを特定できる情報であってもよい。
処理IPコア13bは、例えばクライアントマシン4から受信した、処理回路22、生成部23、及びID出力部25等を構成するためのIPコアである。
暗号化IPコア13cは、暗号装置24及びセレクタ21c等を構成するためのIPコアである。暗号化IPコア13cは、例えばクライアントマシン4から受信した暗号化IPコア、暗号化IPコア生成部17が生成した暗号化IPコアの情報、又は、予め記憶しておいた暗号化IPコアの情報、等であってよい。
処理IPコア13b及び暗号化IPコア13cは、例えば論理合成が行なわれるまでメモリ5b又は記憶部5c等に蓄積されてよい。また、IPコアは再利用可能な機能ブロックであるため、再利用の可能性があれば、処理IPコア13b及び暗号化IPコア13cの一方又は双方は、論理合成後も例えばメモリ5b又は記憶部5c等に記憶させ続けてもよい。
暗号鍵取得部16は、暗号装置24及び監視装置26における暗号化又は復号、並びにクライアントマシン4における復号に用いる暗号鍵を取得する。暗号鍵の取得では、暗号化IPコア13cの情報とともにクライアントマシン4から暗号鍵を受信してもよいし、既知の手法により暗号鍵取得部16が暗号鍵を生成してもよい。生成された暗号鍵は、例えば論理合成が行なわれるまでメモリ5b又は記憶部5c等に蓄積されてよい。
暗号化IPコア生成部17は、暗号化IPコア13cを生成する。例えば暗号化IPコア生成部17は、暗号鍵取得部16が取得した暗号鍵を暗号化のキーとして含む暗号化IPコア13cを生成し、メモリ5b又は記憶部5c等に蓄積してよい。或いは、暗号化IPコア生成部17は、メモリ等に予め蓄積された暗号化IPコアに対して、暗号鍵取得部16が取得した暗号鍵を暗号化のキーとして設定してもよい。なお、暗号化のキーを設定された暗号化IPコア13cがクライアントマシン4から送付される場合には、暗号化IPコア生成部17の構成は不要である。
換言すれば、ユーザ管理部15及び暗号化IPコア生成部17の少なくとも一方は、第1情報と第2情報とを取得する取得部の一例である。また、通信部14は、処理回路22をFPGA21に構成することを指示する要求を、クライアントマシン4から受信する受信部の一例である。
書込制御部18は、処理IPコア13b及び暗号化IPコア13cの論理合成を行ない、処理回路22、暗号装置24、及びセレクタ21c等をFPGA21に書き込む制御を行なう。また、書込制御部18は、監視装置26に対して、処理回路22ごとの暗号鍵及びIDの情報、並びに、管理情報を登録する制御を行なう。
換言すれば、書込制御部18は、処理IPコアと、暗号化IPコアとに基づき、FPGA21に対して、少なくとも、処理回路22、暗号装置24、及びMUX216を構成する制御を行なう制御部の一例である。また、書込制御部18は、処理回路22を構成する制御を行なう際に、処理回路22に割り当てられた識別情報と、当該識別情報に対応する暗号鍵とに関する情報を、監視装置26に登録する登録部の一例である。
上述した管理マシン3の機能は、管理マシン3のCPU5a(図9参照)が、メモリ5bに格納されたプログラム50を実行することにより実現されてよい。
〔1−7〕実施例
次に、一実施形態に係る情報処理システム1の実施例について説明する。
〔1−7−1〕実施例の構成例
図13及び図14を参照して、実施例に係る情報処理システム10の構成例について説明する。図13は一実施形態の実施例に係る情報処理システム10の構成を示すブロック図であり、図14は、図13に示すFPGA210の構成例を示すブロック図である。
図13に示すように、情報処理システム10は、例示的に、ホストマシン20、管理マシン30、並びに複数(図13の例では2つ)のクライアントマシン40−1及び40−2をそなえてよい。なお、ホストマシン20及び管理マシン30の一方又は双方は、情報処理システム10に複数存在してもよく、クライアントマシン40は、情報処理システム10に3つ以上存在してもよい。
ホストマシン20は、例示的に、CPUコア200、ローカルキャッシュ201、ラストレベルキャッシュ202、及びキャッシュコヒーレントバス203、MMU204、及びDynamic RAM(DRAM)205をそなえてよい。また、ホストマシン20は、例示的に、FPGA210、サウスブリッジ280、及びNetwork Interface Card(NIC)282をそなえてよい。なお、CPU200及びFPGA210の一方又は双方は、ホストマシン20に複数存在してもよい。
CPUコア200は、ストアバッファ200a、ロードバッファ200b、及びTLB200cをそなえてよい。ストアバッファ200aは、ローカルキャッシュ201にストアするデータのバッファとして用いられてよく、ロードバッファ200bは、ローカルキャッシュ201からロードするデータのバッファとして用いられてよい。TLB200cは、DRAM205が記憶するページテーブル205aのうちの一部の情報、例えば頻繁に使われるアドレスの変換テーブルを記憶してよい。
ローカルキャッシュ201は、CPUコア200ごとに設けられるキャッシュであり、例えばL1キャッシュと位置付けられてよい。CPUコア200及びローカルキャッシュ201は、図5に示すCPU2aの一例である。
ラストレベルキャッシュ202は、CPUコア200及びFPGA210とMMU204との間に設けられるキャッシュであり、例えば最終段のキャッシュと位置付けられてよい。ラストレベルキャッシュ202は、CPUコア200及びFPGA210との間に、キャッシュコヒーレントバス203を提供してよい。換言すれば、ホストマシン20では、CPUコア200とFPGA210とが同等なプロセッサとして扱われる。
MMU204は、CPUコア200又はFPGA210が要求するメモリアクセスを処理する。MMU204は、例えばキャッシュの制御やバスの調停等の機能を有してよい。MMU204は、図5に示すメモリコントローラ2cの一例である。
DRAM205は、ホストマシン20の主記憶装置として機能するメモリである。一例として、DRAM205は、複数のDRAMチップを搭載したメモリモジュール、例えばDual Inline Memory Module(DIMM)であってもよい。なお、図13には、DRAM205が4つのDIMMをそなえる例を示す。DRAM205は、図5に示すメモリ2bの一例である。
DRAM205は、ホストマシン20のOSが用いるページテーブル205aを記憶してよい。なお、ページテーブル205は、メモリの割り当てを管理する情報の一例である。
FPGA210は、図5に示すFPGA21の一例である。FPGA210は、例示的に、複数(図13の例では2つ)の回路領域210a及び210b、FPGAコンフィグポート212、demultiplexer(DEMUX)214、MUX216、ローカルキャッシュ218、及び監視装置260をそなえてよい。
回路領域210a及び210bには、それぞれ、例えばクライアントマシン40−1のユーザが利用する論理回路と、クライアントマシン40−2のユーザが利用する論理回路とが構成される。回路領域210a及び210bの詳細については後述する。
FPGAコンフィグポート212は、FPGA210に論理回路を構成する際に用いられるポートである。管理マシン30は、専用線1aを介してFPGAコンフィグポート212にアクセスすることで、FPGA210に論理回路を構成することができる。
DEMUX214は、入力信号を複数の出力のいずれかへ分配する回路である。例えばDEMUX214は、ローカルキャッシュ218から入力されたアドレス、データ、及びValidの情報を、回路領域210a及び210bのいずれか一方に出力する。なお、FPGA210への入力側にはアドレス線が存在しない場合がある。Validは、DRAM205からのどのタイミングのデータが有効かを示す信号である。
MUX216は、複数の入力からいずれか1つを選択して信号を出力する回路であり、図5に示すセレクタ21cの一例である。例えばMUX216は、回路領域210aから入力されたID、アドレス、データ、及びValidの情報、又は、回路領域210bから入力されたID、アドレス、データ、及びValidの情報を選択し、監視装置26に出力する。
FPGA210の出力側のValidとして、回路領域210a又は210bからリード及びライトのいずれの処理が要求されているかを示す信号であるコマンドが用いられてもよい。例えば、コマンドがライトを示す状態を、Validが有効な状態(例えばアサートされた状態)と扱ってよい。なお、Validがアサートされたタイミングで入力されるアドレス及びデータが、メモリリクエストとして有効になる。
監視装置260は、図5に示す監視装置26の一例である。監視装置260は、MUX216から入力されるID、アドレス、データ、及びValidに基づいて、アドレス及びデータのそれぞれの認証を行なう。認証に成功した場合、監視装置260は、ID、アドレス、データ、及びValidをそのままローカルキャッシュ218に出力する。一方、認証に失敗した場合、監視装置260は、Validをディアサートして無効化し、ローカルキャッシュ218からのアドレス及びデータの出力を停止させることで、メモリアクセスを抑止させる。
ローカルキャッシュ218は、FPGA210ごとに設けられるキャッシュである。ローカルキャッシュ218は、ローカルキャッシュ201とともに、キャッシュコヒーレントバス203に接続されてよい。ローカルキャッシュ218は、Validが有効な場合に、入力されるアドレス及びデータをラストレベルキャッシュ202に出力する。
サウスブリッジ(South Bridge)280は、プロセッサの周辺回路として機能するチップセットを有する集積回路(IC)の一例である。図13の例では、サウスブリッジ280は、NIC282等の周辺デバイスを制御するコントローラである。なお、サウスブリッジ280としては、例えばI/O Controller Hub(ICH)が挙げられる。
NIC282は、ホストマシン20をLAN等のネットワークに接続する装置である。NIC282は、図5に示すネットワーク装置28の一例である。NIC282は、例えば管理マシン30及びクライアントマシン40の各々と有線又は無線により接続されてよい。
管理マシン30は、例示的に、CPU3a、メモリ3b、NIC310、FPGA書込装置320、及びユーザDB130aをそなえる。
CPU3a及びメモリ3bは、図9に示すCPU5a及びメモリ5bの一例である。ユーザDB130aは、ユーザごとの情報を管理するデータベースの一例であり、図11に示すユーザDB13aと同様のデータ構成であってよい。
NIC310は、管理マシン30をLAN等のネットワークに接続する装置である。NIC310は、例えばホストマシン20及びクライアントマシン40の各々と有線又は無線により接続されてよい。なお、管理マシン30は、NIC310により通信線1b経由で、ホストマシン20のCPUコア200が実行するOSに対して、FPGA210へのアクセラレータの実装を指示してよい。
FPGA書込装置320は、専用線1aを介して、ホストマシン20のFPGA210にそなえられたFPGAコンフィグポート212に対して、FPGA210の回路領域210a又は210bにアクセラレータを書き込む制御を行なう。なお、FPGA210へのアクセラレータの書き込みは、既知の種々の手法により実現可能である。
クライアントマシン40は、例示的に、CPU4a、メモリ4b、及びNIC410をそなえる。
CPU4a及びメモリ4bは、図9に示すCPU5a及びメモリ5bの一例である。
NIC410は、クライアントマシン40をLAN等のネットワークに接続する装置である。NIC410は、例えばホストマシン20及び管理マシン30の各々と有線又は無線により接続されてよい。
次に、図14を参照して、ホストマシン20のFPGA210及び監視装置260の構成例について説明する。
回路領域210a及び210bには、それぞれ、例示的に、演算処理装置220、メモリI/F221及び223、生成部230、復号装置240、暗号化装置242、並びにID出力部250が構成されてよい。また、回路領域210a及び210bには、それぞれ、例示的に、ページテーブル222の情報を記憶する記憶素子が構成されてよい。
演算処理装置220は、図5に示す処理回路22の一例である。演算処理装置220には、対応するユーザにより設計等された論理が含まれてよい。演算処理装置220は、CPUコア200とともに、プロセッサとしてOSを実行してもよい。
メモリI/F221及び223は、DRAM205に対するインタフェースを提供する。なお、メモリI/F221及び223は、処理IPコアによって構成されてよい。
メモリI/F221は、DEMUX214から受信したDRAM205からのアドレス及びデータを、Validが有効な場合に、それぞれページテーブル222及び復号装置240に出力する。メモリI/F223は、ページテーブル222から出力された(又は通過した)アドレスと、暗号化装置242から出力されたデータと、Validとを、それぞれMUX216に出力する。
ページテーブル222は、演算処理装置220による仮想アドレス−物理アドレス間の変換に用いられる。例えば演算処理装置220又は管理マシン30は、DRAM205が記憶するページテーブル205aをコピーして、ページテーブル222に格納してよい。ページテーブル222は、DRAM205のアドレスを管理する管理情報の一例である。
生成部230は、図5に示す生成部23の一例である。生成部230は、演算処理装置220から出力される演算結果のデータのチェックサムを生成し、暗号化装置242に出力する。
復号装置240は、メモリI/F221から入力される暗号化データを、演算処理装置220に対応付けられた暗号鍵を用いて復号し、復号データを演算処理装置220に出力する。暗号化装置242は、演算処理装置220から出力されるデータと、生成部230から出力されるチェックサム(sec)とを、演算処理装置220に対応付けられた暗号鍵を用いて暗号化し、メモリI/F223に出力する。換言すれば、復号装置240及び暗号化装置242は、図5に示す暗号装置24の一例である。
ID出力部250は、図5に示すID出力部25の一例である。ID出力部250には、回路領域210a若しくは210b、又は演算処理装置220のIDが設定される。ID出力部250は、設定されたIDをMUX216に出力する。
監視装置260は、例示的に、復号装置262、生成部263、比較部264、暗号化装置265、第1AND演算部267、及び第2AND演算部268をそなえてよい。また、監視装置260は、例示的に、関係情報261及びページテーブル266の情報を記憶する記憶素子が構成されてよい。
関係情報261は、演算処理装置220に割り当てられたIDと、当該IDに対応する暗号鍵との対応関係を管理する情報である。監視装置260は、MUX216から受信したIDに対応する暗号鍵を関係情報261から取得し、取得した暗号鍵を復号装置262及び暗号化装置265に出力する。
復号装置262は、MUX216から受信した、データ及びsecの暗号化データを、関係情報261から得られた暗号鍵を用いて復号し、復号したデータを生成部263及び暗号化装置265に出力し、復号したsecを比較部264に出力する。
生成部263は、復号装置262から入力されるデータからsecを生成し、生成したsecを比較部264に出力する。
比較部264は、復号装置262から入力されたsecと、生成部263から入力されたsecとを比較し、両者が一致すれば有効を示し、不一致であれば無効を示す信号を、第1AND演算部267に出力する。例えば、比較部264は、第1AND演算部267に接続される信号線を、Validと同様に、有効の場合はアサート、無効の場合はディアサートに制御してよい。
暗号化装置265は、復号装置262から入力されたデータを、関係情報261から得られた暗号鍵を用いて暗号化し、暗号化したデータをローカルキャッシュ218に出力する。
ページテーブル266は、演算処理装置220に割り当てられたIDと、当該演算処理装置220に割り当てられたDRAM205の記憶領域のアドレス範囲とを管理する情報である。
監視装置260は、MUX216から受信したIDに対応する、ページテーブル266で管理されるアドレス範囲と、MUX216から受信したアクセス先のアドレスと、を比較する。そして、監視装置260は、両者が一致すれば有効を示し、不一致であれば無効を示す信号を、第2AND演算部268に出力する。例えば、監視装置260は、ページテーブル266と第2AND演算部268との間の信号線を、Validと同様に、有効の場合はアサート、無効の場合はディアサートに制御してよい。
第1AND演算部267は、MUX216から受信したValidと、比較部264からの出力と、のAND演算を行ない、演算結果を第2AND演算部268に出力する。例えば、第1AND演算部267は、MUX216から受信したValid、及び、比較部264からの出力信号の双方が有効を示す場合(アサートの場合)に、有効を示す信号を第2AND演算部268に出力してよい。
第2AND演算部268は、第1AND演算部267からの出力と、ページテーブル266での比較結果と、のAND演算を行ない、演算結果をValidとしてローカルキャッシュ218に出力する。例えば、第2AND演算部268は、第1AND演算部267からの出力信号、及び、ページテーブル266での比較結果の双方が有効を示す場合(アサートの場合)に、出力側のValidをアサートして有効にしてよい。
なお、第1AND演算部267と第2AND演算部268とが、1つのAND演算部により構成されてもよい。
以上のように、監視装置260における関係情報261、復号装置262、生成部263、比較部264、及び第1AND演算部267を用いた処理は、ID及びデータに係る認証処理の一例である。また、監視装置260における関係情報261及び第2AND演算部268を用いた処理は、アドレスに係る認証処理の一例である。
〔1−7−2〕実施例の動作例
次に、図15〜図18を参照して、実施例に係るFPGA210における動作例について説明する。図15〜図18は、回路領域210bから出力されるID及びアドレスに応じたFPGA210の動作例を示す図である。なお、以下の説明では、図の簡略化のため、一部の構成の図示を省略する。
(回路領域210bから出力されるID及びアドレスが正しい場合)
図15に例示するように、演算処理装置220bは、アクセス先のアドレスとして、回路領域210bに割り当てられた正しいDRAM205のアドレス「addr:xyx」をメモリI/F223に出力する。
暗号化装置242bは、演算処理装置220bから出力されたデータ「data:d」と、生成部230bが「data:d」に基づき生成したチェックサム「sum(d)」とを、暗号鍵「key2」を用いて暗号化し、メモリI/F223に出力する。
メモリI/F223bは、Validを有効にするとともに、演算処理装置220bからの「addr:xyx」と、暗号化装置242bからの暗号化データとをMUX216に出力する。
また、ID出力部250bは、IDとして、回路領域210bに割り当てられた正しいID「ID:B」をMUX216に出力する。
監視装置260は、MUX216から受信した「ID:B」に対応する「key2」を関係情報261から読み出し、復号装置262及び暗号化装置265に出力する。
復号装置262は、MUX216から受信した暗号化データを「key2」で復号し、復号結果の「data:d」及び「sum(d)」を出力する。暗号化装置265は、復号結果の「data:d」を「key2」で暗号化し、ローカルキャッシュ218に出力する。
生成部263は、復号結果の「data:d」からチェックサム「sum’(d)」を生成する。比較部264は、復号結果の「sum(d)」と、生成部263からの「sum’(d)」とが一致するため、「OK」(有効)を出力する。
第1AND演算部267は、MUX216から受信したValid「OK」と、比較部264からの「OK」とのAND演算結果である「OK」を出力する。
監視装置260は、MUX216から受信した「ID:B」に対応する、ページテーブル266内のアドレス範囲「xxx−yyy」と、MUX216から受信した「addr:xyx」とを比較する。アドレス範囲に「addr:xyx」と一致するアドレスが存在するため、監視装置260は「OK」を出力する。なお、「addr:xyx」は、ローカルキャッシュ218に出力される。
第2AND演算部268は、第1AND演算部267からの「OK」と、アドレスの比較結果の「OK」とのAND演算結果である「OK」を、ローカルキャッシュ218へのValidとして出力する。
ローカルキャッシュ218では、Validが「OK」であるため、「addr:xyx」及び「data:d」がキャッシュコヒーレントバス203に出力される。これにより、DRAM205の「addr:xyx」に、「key2」で暗号化された「data:d」が書き込まれる。
なお、暗号化データが演算処理装置220bにより読み出される場合、復号装置240bは、「data:d」を「key2」で正しく復号できる。
(回路領域210bから出力されるIDが誤っている場合)
例えば、回路領域210bにマリシアスIPが構成されている場合、マリシアスIPがID出力部250bから出力されるIDを偽り、他の回路領域に成り済ましてメモリアクセスを行なうことが想定される。以下、ID出力部250bが回路領域210aの「ID:A」を出力する場合を考える。
図16に例示するように、ID出力部250bが「ID:A」をMUX216に出力した場合、監視装置260は、関係情報261から「ID:A」に対応する「key1」を読み出し、復号装置262及び暗号化装置265に出力する。
復号装置262は、MUX216から受信した暗号化データを「key1」を用いて復号するが、当該暗号化データは「key2」で暗号化されている。このため、「data:d」とは異なる「data:e」、及び、「sum(d)」とは異なる「sum(f)」が、それぞれ復号結果として出力される。暗号化装置265は、復号結果の「data:e」を「key1」を用いて暗号化し、ローカルキャッシュ218に出力する。
生成部263は、復号結果の「data:e」からチェックサム「sum’(e)」を生成する。比較部264は、「sum(f)」と「sum’(e)」とが一致しないため、「NG」(無効)を出力する。
第1AND演算部267は、MUX216から受信したValid「OK」と、比較部264からの「NG」とのAND演算結果である「NG」を出力する。
監視装置260は、MUX216から受信した「ID:A」に対応する、ページテーブル266内のアドレス範囲「yyy−zzz」と、MUX216から受信した「addr:xyx」とを比較する。アドレス範囲に「addr:xyx」と一致するアドレスが存在しないため、監視装置260は「NG」を出力する。なお、「addr:xyx」は、ローカルキャッシュ218に出力される。
第2AND演算部268は、第1AND演算部267からの「NG」と、アドレスの比較結果の「NG」とのAND演算結果である「NG」を、ローカルキャッシュ218へのValidとして出力する。
ローカルキャッシュ218では、Validが「NG」であるため、「addr:xyx」及び「data:e」はキャッシュコヒーレントバス203に出力されない。これにより、DRAM205の「addr:xyx」には、「key1」で暗号化された「data:e」が書き込まれない。
(回路領域210bから出力されるアドレスが誤っている場合)
他の例として、マリシアスIPが演算処理装置220bから出力されるアクセス先のアドレスを偽り、他の演算処理装置220に割り当てられたDRAM205内の記憶領域にアクセスを行なうことが想定される。
例えば、演算処理装置220bは、回路領域210bのページテーブル222bに対して、回路領域210aのページテーブル222aに定められたアドレスに対して排他的に予め定められるアドレスとは異なるアドレスを設定する場合がある。この「異なるアドレス」は、例えば、マリシアスIPにより回路領域210aのページテーブル222aに定められたアドレスと重複するようなアドレスである。
或いは、回路領域210bのページテーブル222b内のアドレスは正常(回路領域210aのページテーブル222a内のアドレスに対して排他的)であるものの、読み出し後に当該アドレスが上記「異なるアドレス」に変換される場合もある。
以下、演算処理装置220bが、アクセス先として演算処理装置220aに割り当てられた「addr:yzy」を出力する場合を考える。
図17に例示するように、演算処理装置220bが「addr:yzy」をメモリI/F223に出力した場合、監視装置260は、MUX216から受信した「ID:B」に対応する、ページテーブル266内のアドレス範囲「xxx−yyy」を参照する。そして、監視装置260は、アドレス範囲「xxx−yyy」と、MUX216から受信した「addr:yzy」とを比較するが、アドレス範囲に「addr:yzy」と一致するアドレスが存在しないため、「NG」を出力する。なお、「addr:yzy」は、ローカルキャッシュ218に出力される。
なお、この場合、「ID:B」は正常であるため、データの認証処理は成功する(第1AND演算部267からの出力が「OK」)。
第2AND演算部268は、第1AND演算部267からの「OK」と、アドレスの比較結果の「NG」とのAND演算結果である「NG」を、ローカルキャッシュ218へのValidとして出力する。
ローカルキャッシュ218では、Validが「NG」であるため、「addr:yzy」及び「data:d」はキャッシュコヒーレントバス203に出力されない。従って、DRAM205の「addr:yzy」には、「key2」で暗号化された「data:d」が書き込まれない。
(回路領域210bから出力されるID及びアドレスが誤っている場合)
他の例として、マリシアスIPがID及びアドレスの双方を偽り、他の演算処理装置220に成り済ましてメモリアクセスを行なうことが想定される。以下、マリシアスIPが、演算処理装置220aに割り当てられた「ID:A」及び「addr:yzy」を出力する場合を考える。
図18に例示するように、アドレスに係る認証処理では、監視装置260は、MUX216から受信した「ID:A」に対応する、ページテーブル266内のアドレス範囲「yyy−zzz」を参照する。そして、監視装置260は、アドレス範囲「yyy−zzz」と、MUX216から受信した「addr:yzy」とを比較する。アドレス範囲に「addr:yzy」と一致するアドレスが存在するため、監視装置260は「OK」を出力する。また、「addr:yzy」は、ローカルキャッシュ218に出力される。
このように、マリシアスIPが、演算処理装置220aに割り当てられたID及びアドレスを出力する場合、アドレスの認証処理の結果は「OK」になる。
しかし、ID及びデータの認証では、図16と同様に、暗号化装置242bにより「key2」で暗号化された暗号化データを、復号装置262が「key1」で復号する。このため、復号装置262からは誤った復号結果が得られ、結果として、比較部264から「NG」が出力され、ローカルキャッシュ218に出力される最終的なValidも「NG」となる。
ローカルキャッシュ218では、Validが「NG」であるため、「addr:yzy」及び「data:e」はキャッシュコヒーレントバス203に出力されない。従って、DRAM205の「addr:yzy」には、「key1」で暗号化された「data:e」が書き込まれない。
以上のように、情報処理システム1又は10によれば、ホストマシン20において、マリシアスIPが他人のメモリ領域27の記憶領域に不正な書込アクセスを行なうことが抑止される。従って、マリシアスIPにより他人のデータが改ざんされることを防止できる。これにより、例えば、クラウド上に保存された個人データが不正に操作されるといった脅威を未然に防止できる。また、情報を外部に送信するような不正なプログラムが他人のメモリ領域27に書き込まれることも防止できるため、情報漏えいの脅威を未然に防止できる。
さらに、メモリ領域27に記憶されたデータは、メモリ領域27にアクセスできる処理回路22aに対応する暗号鍵を用いて暗号化されたデータである。従って、他の処理回路22bを利用するユーザが、当該暗号化データを取得できたとしても、適切な暗号鍵を有していないため、暗号化データを復号できない。
従って、マリシアスIPが他人のメモリ領域27の記憶領域からデータを盗み見ることを防止でき、情報漏えいの脅威を未然に防止できる。なお、情報漏えいの脅威としては、例えば、発表前の経理情報を盗まれ、株価が不正に操作されたり、クレジットカードの番号が盗まれ、不正に使用されるといった脅威が考えられる。
従って、一実施形態に係る情報処理システム1又は10によれば、ユーザデータについて、信頼性の高いデータ管理を実現できる。
なお、一実施形態に係る情報処理システム1又は10では、FPGA21に対して、生成部23や暗号装置24等が追加され、FPGA21内部又は外部に監視装置26が追加される。しかし、追加される回路によるFPGA21の使用コスト、例えば回路規模を、僅かな増加に留めることができる。また、情報処理システム1では、生成部23、暗号装置24、監視装置26等のハードウェアによる暗号化、復号、認証等の処理によってレイテンシが生じる場合がある。しかし、FPGA21の処理がパイプラインであるため、帯域を維持することができる。
なお、FPGAをそなえる情報処理装置におけるセキュリティリスクを低減させる手法として、管理装置が、受け取った論理について悪意のあるアルゴリズムであるか否かを判別するという手法も考えられる。しかし、判別が困難になるケースがあり、マリシアスIPによるデータ改ざんやデータ漏えいを完全に防げるとはいえない。
また、他の手法として、情報処理装置にFPGAを監視するハードウェアを追加する手法も考えられるが、プロセッサのメモリアクセスはボトルネックになるケースが多い。従って、性能低下やハードウェアコストの増大を招く可能性が高く、費用対効果が良いとはいい難い。
以上のことから、FPGAをそなえる情報処理装置におけるセキュリティリスクを低減させる手法として、上述した一実施形態に係る手法が効果的であるといえる。
〔1−7−3〕実施例の変形例
図14に示す回路領域210a及び210b、或いは、監視装置260は、以下のように構成されてもよい。
〔1−7−3−1〕実施例の第1変形例
例えば、図19に示すように、実施例の第1変形例に係るFPGA2101では、回路領域210a及び210bは、それぞれ、暗号化装置242に代えて暗号化装置244をそなえてもよい。
暗号化装置244は、暗号化装置242が出力する暗号化データに加えて、さらに、演算処理装置220の演算結果を暗号鍵を用いて暗号化した書込用暗号化データを出力してよい。書込用暗号化データは、メモリI/F223及びMUX216を介して監視装置260に送信される。
監視装置260は、当該書込用暗号化データを、そのまま、ローカルキャッシュ218に出力してよい。これにより、監視装置260から、図16に示す暗号化装置265の構成を削除できる。
この場合、データ及びsecの暗号化データは、復号装置262、生成部263、及び比較部264による認証処理用のデータとして扱われてよく、復号装置262で復号されたデータは、生成部263でのsecの生成に用いられた後は読み捨てられてよい。
以上の構成によっても、実施例と同様の効果を奏することができる。また、監視装置260において暗号化装置265が不要となるため、監視装置260の回路規模(コスト)を削減できる。
〔1−7−3−2〕実施例の第2変形例
DRAM205に書き込まれるデータは、暗号化されていないデータ(平文)であってもよい。図20に例示するように、実施例の第2変形例に係るFPGA2102では、回路領域210a及び210bから、それぞれ、復号装置240(図14参照)の構成を削除してもよい。また、監視装置260から、暗号化装置265(図16参照)の構成を削除してもよい。
これにより、ローカルキャッシュ218には、復号装置262で復号されたデータ(平文)が出力される。
このような構成により、少なくとも、マリシアスIPによる他人のメモリ領域27又はDRAM205のデータ改ざんを防止できる。また、回路領域210a及び210bにおいて復号装置240が不要となり、監視装置260において暗号化装置265が不要となるため、FPGA2102全体の回路規模(コスト)を削減できる。
以上のように、一実施形態に係る手法によれば、図13〜図20に示す情報処理システム10においても、データの改ざん又はデータ漏えいを防止でき、セキュリティリスクを低減できる。
〔1−8〕変形例
次に、一実施形態の変形例について説明する。
一実施形態では、管理マシン3は、ユーザが用意したIPコアをクライアントマシン4から受信し、当該IPコアに基づき、FPGA21に処理回路22を構成する。
ここで、上述のようにIPは再利用可能な機能ブロックである。FPGAを利用するサービスでは、IPを再利用可能であるため、或るユーザが過去に設計したものを、機能ブロックごと当該ユーザ又は他のユーザが再利用したり、機能ブロックを作成して販売したりすることも可能である。
そこで、一実施形態の変形例では、図21に示すように、情報処理システム1AがIPコアのリソースプール6をそなえてもよい。なお、情報処理システム1Aは、図5に示す情報処理システム1と同様のホストマシン2及びクライアントマシン4をそなえてよく、情報処理システム1と一部の機能が異なる管理マシン3Aをそなえてよい。
リソースプール6は、複数のIPコア、換言すれば複数種類の処理回路22に対応する複数の第1情報を蓄積するストレージ装置の一例である。なお、リソースプール6は、暗号装置24の構成に用いる第2情報を更に蓄積してもよい。リソースプール6としては、例えばサーバ又はPC等の種々のコンピュータが挙げられる。
リソースプール6は、図9に示すコンピュータ5と同様のハードウェア構成をそなえてよい。なお、リソースプール6は、記憶部5cとして、HDD又はSSDを複数そなえてよく、これらを用いて例えばRedundant Arrays of Inexpensive Disks(RAID)等が構成されてもよい。
図21に示すように、リソースプール6は、例示的に、IPコアDB61をそなえてよい。IPコアDB61には、複数のIPコアが登録され、管理マシン3Aからの要求に応じて、要求されたIPコアがIPコアDB61から読み出され、管理マシン3Aに送信されてよい。なお、IPコアDB61は、例えば記憶部5c等のストレージにより実現されてよい。
リソースプール6では、例えばFPGA21のベンダや他の提供者がIPコアを登録し、登録したIPコアを販売又は提供してもよい。
クライアントマシン4は、管理マシン3Aに対して、どのような処理を実現したいのかといった情報、例えば処理シーケンスや、IPコアを特定する情報等の、FPGA21に構成する処理回路22に関する情報を送信してよい。クライアントマシン4から処理シーケンスが送信される場合、管理マシン3Aは、受信した処理シーケンスに基づき、リソースプール6からIPコアを選定し、選定したIPコアに基づく処理回路22をアプリケーション41に利用させてよい。
或いは、クライアントマシン4は、例えば、リソースプール6に登録されたIPコアの中から利用したいIPコアを選択し、管理マシン3Aに対して、選択したIPコアに基づく処理回路22の利用登録を行なってもよい。
管理マシン3Aは、クライアントマシン4のユーザが利用するホストマシン2のFPGA21に対して、クライアントマシン4から要求されるIPコアに基づく処理回路22の書き込みを制御及び管理してよい。
なお、暗号化IPコア13cについては、管理マシン3Aは、一実施形態と同様の手法で暗号化IPコア13cを取得し、FPGA21に書き込んでよい。或いは、管理マシン3Aは、暗号化IPコアについてもリソースプール6から取得してもよい。
なお、ホストマシン2、管理マシン3A、及びリソースプール6の少なくとも1つは、データセンタ等の施設に設置されてよい。
次に、図22を参照して、上述の如く構成された情報処理システム1Aの動作例について、一実施形態に係る情報処理システム1と異なる動作を説明する。
図22に示すように、クライアントマシン4は、管理マシン3AへFPGA21を用いるサービスの要求を送信し(処理T1;図21の矢印(I′))、管理マシン3Aから認証を受けて(処理T2)、ID42の提供を受ける(処理T3;図21の矢印(II))。
クライアントマシン4は、利用したい処理シーケンスを管理マシン3Aに送信する(処理T41)。管理マシン3Aは、暗号鍵を取得し(処理T5)、取得した暗号鍵をクライアントマシン4に提供する(処理T6)。
処理シーケンスを受信した管理マシン3Aは、図示しないネットワークを介して接続されたリソースプール6にアクセスし、IPコアDB61から処理シーケンスに合致するIPコアをピックアップする(処理T42;図21の矢印(II-2))。そして、管理マシン3Aは、リソースプール6からピックアップしたIPコアを取得する(処理T43)。
図22の処理T7以降の処理は、一実施形態に係る情報処理システム1と同様でよい。
なお、図22の処理T42及びT43において、IPコアは、リソースプール6からホストマシン2に直接渡されてもよい。この場合、図22の処理T7以降(図6の処理T7〜T9参照)におけるFPGA21へのIPコアの書き込みは、以下に例示するように、例えばリソースプール6又はホストマシン2により行なわれてよい。なお、IPコアには、処理IPコア及び暗号化IPコアの少なくとも一方が含まれてよい。
一例として、管理マシン3Aは、リソースプール6に対して、処理シーケンスに合致するIPコアをホストマシン2へ送信する旨の指示を行なってよい。
この場合、リソースプール6は、指定されたIPコアをFPGA21への書込指示とともにホストマシン2に送信し、ホストマシン2のCPU2aが書込指示に基づきIPコアをFPGA21に書き込んでもよい。或いは、リソースプール6とホストマシン2とが専用線で接続される場合には、リソースプール6は、指定されたIPコアを専用線を介してFPGA21に書き込んでもよい。換言すれば、IPコアの論理合成をリソースプール6又はホストマシン2が行なってもよい。
以上のように、変形例に係る情報処理システム1Aによっても、一実施形態に係る情報処理システム1と同様の効果を奏することができる。
また、変形例で想定するような、FPGA21のベンダ等がIPコアを提供する態様であっても、管理マシン3Aが、ユーザ及び処理IPコアに暗号鍵を対応付けるため、ユーザに通知する暗号鍵を適切に管理できる。
さらに、FPGA21への処理回路22の書き込みに用いられるIPコアは、リソースプール6に登録されたIPコアの中から選択される。このため、リソースプール6に登録されたIPコアについて、例えばリソースプール6や管理マシン3Aが事前にセキュリティリスクを判断することも可能となる。従って、一実施形態及び変形例に係る手法に加えて、事前のセキュリティリスクの判断も行なうことで、セキュリティリスクをより低減させることもできる。
次に、図23を参照して、変形例に係る管理マシン3Aの機能構成例について説明する。図23は変形例に係る管理マシン3Aの機能構成を示すブロック図である。図23に示すように、管理マシン3Aは、例示的に、図11に示す管理マシン3の機能構成に加えて、処理IPコア取得部19をそなえてよい。
なお、受信部の一例としての通信部14は、一実施形態の場合と同様に、処理回路22をFPGA21に構成することを指示する要求を、クライアントマシン4から受信してよい。
処理IPコア取得部19は、リソースプール6からクライアントマシン4が要求する処理IPコアを取得する。なお、クライアントマシン4が要求する処理IPコアは、クライアントマシン4から受信した処理シーケンスに基づき処理IPコア取得部19が特定してもよいし、クライアントマシン4がリソースプール6を参照して選定した処理IPコアであってもよい。例えば処理IPコア取得部19は、図22の処理T42及びT43に示す処理を行なってよい。
換言すれば、処理IPコア取得部19は、クライアントマシン4からの要求を満たす第1情報、及び、第2情報の少なくとも一方を、リソースプール6から取得する取得部の一例である。
書込制御部18は、管理マシン3Aが取得した処理IPコア13b及び暗号化IPコア13cをFPGA21に構成する制御を行なってよい。
なお、処理IPコアがリソースプール6からホストマシン2に直接渡される場合、管理マシン3Aは、リソースプール6に対するホストマシン2への処理IPコアの送信指示により、FPGA21に処理回路22等を構成する制御を行なうことができる。
また、暗号化IPコアがリソースプール6からホストマシン2に直接渡される場合、管理マシン3Aは、リソースプール6に対するホストマシン2への暗号化IPコアの送信指示により、FPGA21に暗号装置24を構成する制御を行なうことができる。
送信指示は、通信部14、書込制御部18、及び処理IPコア取得部19の少なくとも1つの機能によって発行されてよい。換言すれば、通信部14、書込制御部18、及び処理IPコア取得部19の少なくとも1つは、第1及び第2情報に基づき、処理回路22及び暗号装置24等をFPGA21に構成する制御を行なう制御部の一例である。
なお、管理マシン3Aが処理IPコア又は/及び暗号化IPコアをリソースプール6から取得するか、リソースプール6からホストマシン2へ直接送信させるかは、リソースプール6やホストマシン2が有する機能等に応じて決定されてよい。或いは、IPコアDB61におけるIPコアの格納状況又は運用状況等に応じて決定されてもよい。
次に、図24を参照して、変形例に係る情報処理システム1Aの実施例について説明する。図24は変形例の実施例に係る情報処理システム10Aの構成を示すブロック図である。なお、図24では、便宜上、管理マシン30AのCPU3a及びメモリ3b、クライアントマシン40−1及び40−2のCPU4a及びメモリ4b、並びにリソースプールマシン60のCPU及びメモリの図示を省略している。以下、一実施形態の実施例に係る情報処理システム10と異なる構成について説明する。
図24に示すように、情報処理システム10Aは、例示的に、情報処理システム10の構成に加えて、リソースプールマシン60をそなえてよい。
リソースプールマシン60は、図21に示すものと同様のIPコアDB61をそなえてよい。また、リソースプールマシン60は、NIC610をそなえてよい。
NIC610は、リソースプールマシン60をLAN等のネットワークに接続する装置である。NIC610は、例えば管理マシン30と有線又は無線により接続されてよく、さらに、ホストマシン20又はクライアントマシン40と接続されてもよい。
なお、ホストマシン20のFPGA210は、図14参照に示す一実施形態の実施例、図19に示す実施例の第1変形例、並びに、図20に示す実施例の第2変形例のうちのいずれの構成であってもよい。
〔2〕その他
上述した一実施形態及び変形例に係る技術は、以下のように変形、変更して実施することができる。
例えば、図10に示すホストマシン2の各機能ブロックは、それぞれ任意の組み合わせで併合してもよく、分割してもよい。また、図11に示す管理マシン3の各機能ブロックは、それぞれ任意の組み合わせで併合してもよく、分割してもよい。
また、一実施形態の変形例において、情報処理システム1Aが管理マシン3A及びリソースプール6をそなえるものとしたが、これに限定されるものではない。管理マシン3A及びリソースプール6のいずれか一方の機能は、他方の装置に併合されてもよく、或いは管理マシン3A及びリソースプール6の少なくとも一部の機能を1以上のコンピュータに集約してもよい。この場合、当該他方の装置又は当該コンピュータが、ホストマシン2を管理する管理装置と位置付けられてよい。
一実施形態及び変形例において、FPGA21には、処理回路22、周辺回路、及び暗号装置24等を含む論理回路が複数、例えば2つ構成されるものとしたが、1つのFPGA21に構成される論理回路は、1つ、又は3つ以上であってもよい。1つのFPGA21に複数の論理回路が構成される場合、FPGA21内の複数の処理回路22の各々には、メモリ2bの互いに異なるアドレス領域、例えばメモリ領域27が割り当てられてよい。
また、一実施形態及び変形例において、ホストマシン2が複数のFPGA21をそなえ、複数のFPGA21の各々に、処理回路22、周辺回路、及び暗号装置24等を含む論理回路が1つ以上構成されてもよい。この場合においても、複数のFPGA21における複数の処理回路22の各々には、メモリ2bの互いに異なるアドレス領域が割り当てられてよい。
さらに、一実施形態及び変形例において、監視装置26が複数の論理回路で共通に用いられるものとしたが、監視装置26はホストマシン2に複数存在してもよい。この場合、複数の監視装置26は、それぞれ、1以上の論理回路を担当してよい。
また、一実施形態及び変形例において、FPGA21は、処理回路22よりも少ない数の暗号装置24をそなえてもよい。この場合、暗号装置24は、例えば図14に示す監視装置260の関係情報261のように、識別情報と暗号鍵とを対応付ける情報を保持してもよい。
〔3〕付記
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
プログラマブルな回路領域を複数有するプログラマブルロジック装置であって、
前記複数の回路領域のうちの特定の回路領域により実現される演算処理部の処理に基づくデータと、前記データに付加された第1チェック用データとを、前記演算処理部に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成する暗号化部と、
前記特定の回路領域から出力される識別情報と、前記暗号化データとを認証部に送信する送信部と、をそなえ、
前記認証部は、前記送信部から受信した識別情報に対応する暗号鍵に基づき前記送信部から受信した暗号化データを復号し、復号したデータに付加された第1チェック用データに基づき前記復号したデータの認証処理を行なう、
ことを特徴とする、プログラマブルロジック装置。
(付記2)
前記第1チェック用データは、前記演算処理部の処理に基づく前記データに特定の処理を施すことで得られるチェック用データであり、
前記認証処理は、前記復号したデータに前記特定の処理を施すことで得られる第2チェック用データが、前記復号したデータに付加された前記第1チェック用データに一致するか否かによって、前記復号したデータを認証することを含む、
ことを特徴とする、付記1記載のプログラマブルロジック装置。
(付記3)
前記演算処理部は、前記演算処理部に割り当てられた記憶領域に対する、前記演算処理部の処理に基づくデータを書き込む書込要求を行ない、
前記認証部は、前記記憶領域に前記書込要求に係るデータを書き込む前に、前記書込要求に係るデータに基づく前記認証処理を行なう、
ことを特徴とする、付記1又は付記2記載のプログラマブルロジック装置。
(付記4)
前記送信部は、前記書込要求に係る前記データの書込先のアドレスを、前記特定の回路領域から出力される識別情報と、前記暗号化データとともに前記認証部に送信し、
前記認証処理は、前記送信部から受信した前記書込先のアドレスと、前記演算処理部に割り当てられた記憶領域のアドレスとに基づき前記受信した書込先のアドレスを認証することを含む、
ことを特徴とする、付記3記載のプログラマブルロジック装置。
(付記5)
前記認証部は、前記演算処理部に割り当てられた識別情報と、前記演算処理部に割り当てられた記憶領域のアドレスとを管理する管理情報を記憶し、
前記認証処理は、前記送信部から受信した識別情報に対応する、前記管理情報により管理されるアドレスが、前記受信した書込先のアドレスに一致するか否かによって、前記受信した書込先のアドレスを認証することを含む、
ことを特徴とする、付記4記載のプログラマブルロジック装置。
(付記6)
前記認証部は、前記書込要求に係る前記認証処理が成功した場合、前記書込要求に係るデータを前記演算処理部に割り当てられた記憶領域に書き込み、前記書込要求に係る前記認証処理が失敗した場合、前記書込要求に係るデータの書き込みを抑止する、
ことを特徴とする、付記3〜5のいずれか1項記載のプログラマブルロジック装置。
(付記7)
プログラマブルな回路領域を複数有するプログラマブルロジック装置と、
認証部と、をそなえ、
前記プログラマブルロジック装置は、
前記複数の回路領域のうちの特定の回路領域により実現される演算処理部の処理に基づくデータと、前記データに付加された第1チェック用データとを、前記演算処理部に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成する暗号化部と、
前記特定の回路領域から出力される識別情報と、前記暗号化データとを前記認証部に送信する送信部と、をそなえ、
前記認証部は、前記送信部から受信した識別情報に対応する暗号鍵に基づき前記送信部から受信した暗号化データを復号し、復号したデータに付加された第1チェック用データに基づき前記復号したデータの認証処理を行なう、
ことを特徴とする、情報処理装置。
(付記8)
前記第1チェック用データは、前記演算処理部の処理に基づく前記データに特定の処理を施すことで得られるチェック用データであり、
前記認証処理は、前記復号したデータに前記特定の処理を施すことで得られる第2チェック用データが、前記復号したデータに付加された前記第1チェック用データに一致するか否かによって、前記復号したデータを認証することを含む、
ことを特徴とする、付記7記載の情報処理装置。
(付記9)
前記演算処理部は、前記演算処理部に割り当てられた記憶領域に対する、前記演算処理部の処理に基づくデータを書き込む書込要求を行ない、
前記認証部は、前記記憶領域に前記書込要求に係るデータを書き込む前に、前記書込要求に係るデータに基づく前記認証処理を行なう、
ことを特徴とする、付記7又は付記8記載の情報処理装置。
(付記10)
前記送信部は、前記書込要求に係る前記データの書込先のアドレスを、前記特定の回路領域から出力される識別情報と、前記暗号化データとともに前記認証部に送信し、
前記認証処理は、前記送信部から受信した前記書込先のアドレスと、前記演算処理部に割り当てられた記憶領域のアドレスとに基づき前記受信した書込先のアドレスを認証することを含む、
ことを特徴とする、付記9記載の情報処理装置。
(付記11)
前記認証部は、前記演算処理部に割り当てられた識別情報と、前記演算処理部に割り当てられた記憶領域のアドレスとを管理する管理情報を記憶し、
前記認証処理は、前記送信部から受信した識別情報に対応する、前記管理情報により管理されるアドレスが、前記受信した書込先のアドレスに一致するか否かによって、前記受信した書込先のアドレスを認証することを含む、
ことを特徴とする、付記10記載の情報処理装置。
(付記12)
前記認証部は、前記書込要求に係る前記認証処理が成功した場合、前記書込要求に係るデータを前記演算処理部に割り当てられた記憶領域に書き込み、前記書込要求に係る前記認証処理が失敗した場合、前記書込要求に係るデータの書き込みを抑止する、
ことを特徴とする、付記9〜11のいずれか1項記載の情報処理装置。
(付記13)
プログラマブルな回路領域を複数有するプログラマブルロジック装置における前記複数の回路領域のうちの特定の回路領域により実現される演算処理部の処理に基づくデータと、前記データに付加された第1チェック用データとを、前記演算処理部に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成し、
前記特定の回路領域から出力される識別情報と、前記暗号化データとを認証部に送信し、
前記認証部が、受信した識別情報に対応する暗号鍵に基づき、受信した暗号化データを復号し、復号したデータに付加された第1チェック用データに基づき前記復号したデータの認証処理を行なう、
ことを特徴とする、処理方法。
(付記14)
プログラマブルな回路領域を複数有するプログラマブルロジック装置における前記複数の回路領域のうちの特定の回路領域に演算処理部を構成するのに用いる第1情報と、暗号化部及び送信部の構成に用いる第2情報と、を取得し、
前記第1及び第2情報に基づき、前記プログラマブルロジック装置に対して、前記演算処理部、前記暗号化部、及び前記送信部を構成する制御を行なう、
処理をコンピュータに実行させ、
前記暗号化部は、前記演算処理部の処理に基づくデータと、前記データに付加された第1チェック用データとを、前記演算処理部に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成し、
前記送信部は、前記特定の回路領域から出力される識別情報と、前記暗号化データとを認証部に送信し、
前記認証部は、受信した識別情報に対応する暗号鍵に基づき、受信した暗号化データを復号し、復号したデータに付加された第1チェック用データに基づき前記復号したデータの認証処理を行なう、
ことを特徴とする、処理プログラム。
(付記15)
前記演算処理部を構成する制御を行なう際に、前記演算処理部に割り当てられた識別情報と、前記識別情報に対応する暗号鍵とに関する情報を、前記認証部に登録する、
処理を前記コンピュータに実行させることを特徴とする、付記14記載の処理プログラム。
(付記16)
プログラマブルな回路領域を複数有するプログラマブルロジック装置における前記複数の回路領域のうちの特定の回路領域に演算処理部を構成するのに用いる第1情報と、暗号化部及び送信部の構成に用いる第2情報と、を取得する取得部と、
前記第1及び第2情報に基づき、前記プログラマブルロジック装置に対して、前記演算処理部、前記暗号化部、及び前記送信部を構成する制御を行なう制御部と、をそなえ、
前記暗号化部は、前記演算処理部の処理に基づくデータと、前記データに付加された第1チェック用データとを、前記演算処理部に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成し、
前記送信部は、前記特定の回路領域から出力される識別情報と、前記暗号化データとを認証部に送信し、
前記認証部は、受信した識別情報に対応する暗号鍵に基づき、受信した暗号化データを復号し、復号したデータに付加された第1チェック用データに基づき前記復号したデータの認証処理を行なう、
ことを特徴とする、管理装置。
(付記17)
前記制御部が前記演算処理部を構成する制御を行なう際に、前記演算処理部に割り当てられた識別情報と、前記識別情報に対応する暗号鍵とに関する情報を、前記認証部に登録する登録部、をそなえる
ことを特徴とする、付記16記載の管理装置。
(付記18)
プログラマブルな回路領域を複数有するプログラマブルロジック装置と、認証部と、をそなえる情報処理装置と、
前記情報処理装置を管理する管理装置と、をそなえ、
前記管理装置は、前記複数の回路領域のうちの特定の回路領域により実現される演算処理部の構成に用いる第1情報と、暗号化部及び送信部の構成に用いる第2情報と、に基づき、前記プログラマブルロジック装置に対して、前記演算処理部、前記暗号化部、及び前記送信部を構成する制御を行ない、
前記プログラマブルロジック装置に構成された前記暗号化部は、前記演算処理部の処理に基づくデータと、前記データに付加された第1チェック用データとを、前記演算処理部に割り当てられた識別情報に対応する暗号鍵に基づき暗号化して暗号化データを生成し、
前記プログラマブルロジック装置に構成された前記送信部は、前記特定の回路領域から出力される識別情報と、前記暗号化データとを前記認証部に送信し、
前記認証部は、前記送信部から受信した識別情報に対応する暗号鍵に基づき前記送信部から受信した暗号化データを復号し、復号したデータに付加された第1チェック用データに基づき前記復号したデータの認証処理を行なう、
ことを特徴とする、情報処理システム。