説明

複数のCPUコアを備えたFPGAを用いた暗号装置

【課題】最近は複数のCPUコアを内蔵するFPGAも現れており、これらのCPUコアをうまく連携させることで、少ない部品点数を維持したままで、FPGAに内蔵されたCPUコアの処理能力不足に伴う課題を解決する。すなわち、暗号処理を伴うトランザクション処理を効率的に実行する暗号装置を提供する。
【解決手段】FPGA100は、複数のCPUコアを備えている。アプリケーション用CPUコア110は、所定のアプリケーションプログラムから要求された暗号処理を伴う複数のトランザクション処理を並行処理する。暗号処理用CPU120は、アプリケーション用CPUコア110により並行処理される複数のトランザクション処理にともなって処理の実行が必要な暗号処理が発生すると、発生した暗号処理を実行する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、複数のCPUコアを備えたFPGAを用いた暗号装置に関する。
【背景技術】
【0002】
暗号処理を必要とする組込み機器が増えてきている。このような機器では、少ない部品点数で柔軟なシステムを構築するためにCPU(Central Processing Unit)コアを内蔵する大容量FPGA(Field Programmable Gate Array)が利用されることが多い。暗号処理は通常、
(1)FPGA内蔵のCPUコア上のソフトウェアのみで実現する(図7)、
あるいは、
(2)FPGA内に実装した暗号回路(ハードウェア)をFPGA内蔵CPUコア上のソフトウェアが制御する(図8)、
ことで実行する。
図8中の暗号回路は、例えば、AESやRSA(登録商標)のコプロセッサ(ハードウェア)などである。図7、図8ともに、暗号処理に直接関係無いFPGA内部の回路は省略している(以下同様)。FPGA内蔵CPUコアのメモリ領域(作業用メモリやプログラム格納用メモリ)にはFPGA内部メモリと外部メモリの双方または一方が充てられる(以下同様)。外部メモリには、外部メモリIF(インタフェース)を介してシステムバスからアクセスできる。一般に、FPGA内蔵CPUコアの処理性能は、単体の高性能プロセッサチップの処理性能よりも劣るため、図7と図8のいずれの場合も、暗号処理を必要とする大量のトランザクションが発生すると、FPGA内蔵CPUコアの処理能力不足によって、十分な数のトランザクションを受け付けられなくなるか、または個々のトランザクションの処理性能が大幅に低下する。
【特許文献1】特開2005−157653号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
最近は複数のCPUコアを内蔵するFPGA(マルチCPUコア内蔵FPGA)も現れており、これらのCPUコアをうまく連携させることで、少ない部品点数を維持したままで、FPGA内蔵CPUコアの処理能力不足に伴う上記課題を解決可能性がある。
【0004】
本発明は、マルチCPUコア内蔵FPGAの複数のCPUコアを連携させて、暗号処理を伴うトランザクション処理を効率的に実行する暗号システムを実現することを目的とする。
【課題を解決するための手段】
【0005】
この発明の暗号装置は、
複数のCPUコアを備えたFPGAを用いた暗号装置において、
所定のアプリケーションプログラムから要求された暗号処理を伴う複数のトランザクション処理を並行処理するアプリケーション用CPUコアと、
前記アプリケーション用CPUコアにより並行処理される前記複数のトランザクション処理にともなって処理の実行が必要な暗号処理が発生すると、発生した暗号処理を実行する暗号処理用CPUコアと
を備えたことを特徴とする。
【発明の効果】
【0006】
この発明により、暗号処理を伴うトランザクション処理を効率的に実行する暗号装置を提供できる。
【発明を実施するための最良の形態】
【0007】
実施の形態1.
図1は、実施の形態1のFPGA(Field Programmable Gate Array)の構成を示す図である。図1に示すFPGAは、以下に説明する実施の形態1から実施の形態13のFPGAの基本コンセプトとなるものである。すなわち、図1のFPGA100では、FPGA100に内蔵された複数のCPU(Central Processing Unit)コア(FPGA内蔵CPUコアともいう)を「FPGA外部とトランザクションのやり取りを行うアプリケーション用CPUコア110」と「アプリケーション用CPUコアからの依頼に基づいて暗号処理を行う暗号処理用CPUコア120」のように役割分担し、それらが協調してトランザクション処理を行う。これにより、「背景技術」で述べたFPGA内蔵CPUコアの処理能力不足に伴う課題を解決することができる。
【0008】
図1に示すように、FPGA100は、アプリケーション用CPUコア110、暗号処理用CPUコア120、FPGA内部メモリ111、FPGA内部メモリ121、外部メモリIF(インタフェース)112(インタフェース)、外部メモリIF122を備えている。外部メモリIF112は、外部メモリ113に接続し、外部メモリIF122は、外部メモリ123に接続している。前述のように、FPGAに内蔵されたCPUコアのメモリ領域(作業用メモリやプログラム格納用メモリ)には、FPGA内部メモリと外部メモリの双方または一方が充てられる。
【0009】
FPGA100外部から暗号処理を伴うトランザクション要求を受け取ったアプリケーション用CPUコア110は、当該トランザクション処理の中で発生する必要な暗号処理を暗号処理用CPUコア120に依頼する。暗号処理用CPUコア120が暗号処理を行っている間も、アプリケーション用CPUコア110は、新たなトランザクション要求を受け付けることや、暗号処理用CPUコア120への暗号処理要求を行うこと(並行処理)ができる。暗号処理用CPUコア120は、暗号処理を終える度に暗号処理結果をアプリケーション用CPUコア110に返し、アプリケーション用CPUコア110は、FPGA100の外部にトランザクション応答を返す。通常のオペレーションシステム(OS)上のプログラムであれば、マルチプロセス動作環境で、複数のこれらの処理を並列に実行できる。このように、複数のCPUコアによる並列処理と、マルチプロセス動作による並列処理により、暗号システムのトランザクション処理性能が向上する。
【0010】
より具体的には、アプリケーション用CPUコア110は、所定のアプリケーションプログラムから要求された暗号処理を伴う複数のトランザクション処理を並行処理することこ可能である。暗号処理用CPUコア120は、アプリケーション用CPUコア110により並行処理される複数のトランザクション処理にともなって処理の実行が必要な暗号処理が発生すると、発生した暗号処理を実行する。この場合、暗号処理用CPUコア120は、アプリケーション用CPUコア110により並行処理される複数のトランザクション処理にともなって、処理の実行が必要な「複数の暗号処理」が発生した場合には、複数の暗号処理を並行処理により実行可能である。
【0011】
なお、アプリケーション用CPUコア110と暗号処理用CPUコア120は、それぞれメモリ領域を持つが、図1では各CPUコアと各メモリの接続関係は特に限定しない。
【0012】
また、図1ではアプリケーション用CPUコア110と暗号処理用CPUコア120を1つずつ図示したが、それぞれ複数であってもかまわない(以下の実施の形態も同様である)。
【0013】
以上のように実施の形態1では、複数のCPUコアを内蔵する1つのFPGAで暗号処理を伴うトランザクション処理を実行する暗号システムであって、内蔵CPUコアをアプリケーション用CPUコアと暗号処理用CPUコアに分け、それらが協調してトランザクション処理を実行する暗号システムについて説明した。
【0014】
実施の形態2.
次に図2を参照して実施の形態2のFPGA200を説明する。実施の形態2は、実施の形態1の暗号システム(FPGA)を具体化するために、実施の形態1で特定しなかったメモリ構成やFPGA内CPUコア間の通信手段を提供するものである。図2は、アプリケーション用CPUコア110と暗号処理用CPUコア120とは基本的に「疎結合」、すなわちアドレス空間を共有しないが、例外として、両者から共通にアクセス可能な通信用メモリ130(格納部の一例)を両者間に設け、通信用メモリ130を介して暗号処理要求や暗号処理結果を通信する暗号システムである。
【0015】
通常、通信用メモリ130には、FPGAがもともと備えているメモリを使用する。通信用メモリ130への転送は、CPUコアのメモリアクセス命令を用いてプログラムで行うか、図2には示していないが、DMA(Direct Memory Access controller)コントローラを用いて行う。
【0016】
このように、FPGA200は、情報を格納する通信用メモリ130を備えており、アプリケーション用CPUコア110と暗号処理用CPUコア120とは、通信用メモリ130に自身の生成した情報を格納すると共に通信用メモリ130から情報を読み取ることにより、互いに通信する。
【0017】
以上のように実施の形態2では、アプリケーション用CPUコアと暗号処理用CPUコアとは基本的に「疎結合」であるが、両者の間に設けた通信用メモリ130を介して、暗号処理要求や暗号処理結果を通信する暗号システムを説明した。
【0018】
実施の形態3.
次に図3を参照して実施の形態3のFPGA300を説明する。図3は、実施の形態2を示す図2に、さらに、暗号回路141、142・・・を追加した構成である。図3では、暗号処理用CPUコア120のシステムバス2に暗号回路141,142等を接続し、暗号処理用CPUコア120からこれらの暗号回路(暗号回路は一つでも複数でもよい)を制御して暗号処理をアクセラレートする暗号システムである。これにより、実施の形態3で示した図2の構成よりも暗号処理性能が向上する。なお、暗号回路はハードウェアにより暗号処理を実行する。
【0019】
このように、FPGA300は、さらに、暗号処理を実行する複数の暗号回路141等を備える。そして、暗号処理用CPUコア120は、複数の暗号回路を制御することにより、複数の暗号回路に複数の暗号処理を並列処理で実行させることができる。
【0020】
以上のように実施の形態3では、暗号処理用CPUコア120に接続されるシステムバス2には、暗号処理用CPUコア120から制御可能な1つまたは複数の暗号回路が実装され、暗号処理用CPUコア120は当該暗号回路を用いて高速に暗号処理を実行する暗号システムを説明した。
【0021】
実施の形態4.
次に実施の形態4の暗号装置を説明する。本実施の形態4のFPGAのハードウェア構成は、実施の形態3のFPGA300(図3)と同一であるが、「全ての暗号回路の動作中に、新たな暗号処理要求が発生した場合は、アプリケーション用CPUコア110と暗号処理用CPUコア120とのうちの少なくともいずれかが、ソフトウェアだけで新たな要求に対する暗号処理を行う」というプログラムを備えることを特徴とする。この追加プログラムは、暗号回路が動作中であるかどうかを示すフラグ(通常、実施の形態3のシステムでもこのようなフラグは設ける)に基づいて動作する。「アプリケーション用CPUコア110と暗号処理用CPUコア120とのうちの少なくともいずれか」であり、両者が暗号処理してもよいし、両者のうち一方のCPUコアが暗号処理してもよい。
【0022】
このように、暗号処理用CPUコア120とアプリケーション用CPUコア110との少なくともいずれかは、複数の暗号回路のすべてが暗号処理の実行中である場合に、複数のトランザクション処理にともなって処理の実行が必要な新たな暗号処理が発生すると、新たな暗号処理を自身で実行する。
【0023】
以上のように実施の形態4では、全ての暗号回路が暗号処理を実行している最中に新たな暗号処理を伴うトランザクション処理が発生した場合は、暗号処理用CPUコア120またはアプリケーション用CPUコア110がソフトウェアだけで暗号処理を実行する暗号システムを説明した。
【0024】
実施の形態5.
次に図4を参照して実施の形態5を説明する。図4は、実施の形態2の図2(疎結合)の場合とは別の構成であり、実施の形態1に記載の暗号システムを具体化するために、実施の形態1で特定していなかったメモリ構成やFPGA内CPUコア間通信手段を提供するものである。図4に示すように、アプリケーション用CPUコア110と暗号処理用CPUコア120とは密結合、すなわちアドレス空間を共有し(「FPGA内部メモリ151、外部メモリ」(格納部の一例)に対してアドレス空間を共有する)、その共有空間を介して、両者間で暗号処理要求や暗号処理結果をやり取りする構成である。前述の実施の形態2のシステムでは、CPUコア間の通信のために、各CPUコアの固有空間から通信用メモリ130へのデータ転送が必要であるが、本実施の形態5のシステムではアドレス空間を共有するため、通信をポインタ渡しとすることができるので、CPUコア間のデータ転送が不要となる。
【0025】
このように、アプリケーション用CPUコア110と暗号処理用CPUコア120とは、「FPGA内部メモリ151や外部メモリ」(格納部)に対して論理アドレス空間を共有する。
【0026】
以上のように実施の形態5では、アプリケーション用CPUコア110と暗号処理用CPUコア120とは密結合であり、共通のアドレス空間の下で、両者が協調してトランザクション処理を実行する暗号システムを説明した。
【0027】
実施の形態6.
図5を参照して実施の形態6のFPGA500を説明する。図5は、実施の形態5を示す図4のFPGA400に対して、FPGA500が、FPGA内部メモリ160を備えた構成である。なお、図5では、FPGA内部メモリ160を個別に設けているが、FPGA内部メモリ151にFPGA内部メモリ160に対応する領域を設けても構わない。
【0028】
図5に示すFPGA500では、密結合された複数の対等なCPUコア(CPU番号0,1,...)が、自身のCPU番号を知るための専用のリソースを持たない場合に、前述の実施の形態5で述べたシステムを実現するための手段を提供するものである。
【0029】
図5において、システムが起動すると、各CPUコアは共通の論理空間上の同一アドレスからプログラムの実行を開始する。すなわち、各CPUコアは、同じプログラムを実行し始める。従って、各CPUコアが自身のCPU番号を知る術がないと、アプリケーション用CPUコアと暗号処理用CPUコアとの役割分担ができない。このため、図5では、各CPUコアのプログラムはシステム起動後に、FPGA内部メモリ160において「0(又は1)」(指示情報の一例)に初期化されている特定のアドレスに対して、「不可分なリード&ライト命令」(*:下記*印参照)を実行する。各CPUコアが同時に同じプログラムを開始しても、システムバスを介した命令読み出しは、バスアービタ(図5には示していない)によって調停される。このため、各CPUコアが同一命令を実行するタイミングには時間差が生じる。従って、最初にFPGA内部メモリ160の上記アドレスにアクセスしたCPUコアのみが初期値をFPGA内部メモリ160から読み出し、その後上記アドレスにアクセスするCPUコアは初期値以外の値をFPGA内部メモリ160から読み出すことになる。読み出した値に応じた条件分岐を行うことで、以降はアプリケーション用CPUコアと暗号処理用CPUコアとの役割分担が可能となる(例えば、上記アドレスから初期値を読み出したCPUコアのみがアプリケーション用CPUコア110となり、他のCPUコアは暗号処理用CPUコア120となる)。
【0030】
(*)前記の「不可分なリード&ライト命令」には、例えば、Test&Set(当該アドレスのデータを読み出した後、当該アドレスに1を書き込む)や、Load&Clear(当該アドレスのデータを読み出した後、当該アドレスに0を書き込む)などを使用する。なお、不可分なリード&ライトを用いず、リード命令とライト命令に分けて実行すると、複数のCPUコアが初期値を読み出す可能性があるため、その場合は各CPUコア間の役割分担がうまくいかない。
【0031】
このようにFPGA500は、複数のCPUコアを備えている。そしてFPGA内部メモリ160(格納部)は、暗号処理用CPUコアとアプリケーション用CPUコアとのいずれになるべきかを指示する指示情報を格納している。複数のCPUコアの各CPUコアは、FPGA内部メモリ160(格納部)から前記指示情報を読み取り、読み取った前記指示情報に従って、前記暗号処理用CPUコアと前記アプリケーション用CPUコアとのいずれかとして機能する。
【0032】
以上のように実施の形態6では、0(または1)に初期化されるメモリ領域を備え、そのアドレスに対するアトミック(不可分)なリードとライトを行うプログラムにより、密結合された複数のCPUコアが、自身がアプリケーション用CPUコアとなるか暗号処理用CPUコアとなるかを判定する暗号システムを説明した。
【0033】
実施の形態7.
実施の形態6で示した図5において、図5の「0(又は1)に初期化されるFPGA内部メモリ160」の代わりに、「システム起動後、1回目に読み出された時だけ0(または1)が読め、以降は1(または0)が読めるような回路」(図示していない)をシステムバス上の特定のアドレスに割付けることで、実施の形態6と同等の機能を実現することも可能である。
【0034】
このようにFPGA500は、複数のCPUコアを備えている。そして「システム起動後、1回目に読み出された時だけ0(または1)が読め、以降は1(または0)が読めるような回路」(格納部の一例)は、前記の「0(または1)」を暗号処理用CPUコアとアプリケーション用CPUコアとのいずれになるべきかを指示する指示情報として格納している。複数のCPUコアの各CPUコアは、前記回路(格納部)から前記指示情報を読み取り、読み取った前記指示情報に従って、前記暗号処理用CPUコアと前記アプリケーション用CPUコアとのいずれかとして機能する。
【0035】
以上のように実施の形態7では、システム起動後、1回目に読み出された時だけ「0(または1)」(指示情報の一例)が読め、以降は「1(または0)」が読めるような回路を特定のアドレスに割付け、そのアドレスに対するリードを行うプログラムにより、密結合された複数のCPUコアが、自身がアプリケーション用CPUコアとなるか暗号処理用CPUコアとなるかを判定する暗号システムを説明した。
【0036】
実施の形態8.
図6を参照して実施の形態8のFPGA600を説明する。図6のFPGA600は、実施の形態5の図4(密結合)に暗号回路141等(暗号回路は一つでもよいし複数でもよい)を追加した実施形態であり、実施の形態3に対応する。
【0037】
図6では、システムバスに複数の暗号回路141、142、...を接続し、暗号処理用CPUコア120から暗号回路141等を制御して暗号処理をアクセラレートする暗号システムである。これにより、密結合として示した図4の構成よりも暗号処理性能が向上する。
【0038】
このようにFPGA600は、暗号処理を実行する複数の暗号回路141等を備える。そして暗号処理用CPUコア120は、複数の暗号回路を制御することにより複数の暗号処理を並列処理で実行させる。
【0039】
以上のように実施の形態8では、暗号処理用CPUコアに接続されるバスには、暗号処理用CPUコアから制御可能な1つまたは複数の暗号回路が実装され、暗号処理用CPUコアは当該暗号回路を用いて高速に暗号処理を実行する暗号システムを説明した。
【0040】
実施の形態9.
実施の形態9は、実施の形態4に対応するものであり、ハードウェア構成は、実施の形態8の図6と同じである。実施の形態9は、実施の形態8の場合において、「全ての暗号回路の動作中に、新たな暗号処理要求が発生した場合は、アプリケーション用CPUコアまたは暗号処理用CPUコアのうちの少なくともいずれかが、ソフトウェアだけで新たな要求に対する暗号処理を行う」というプログラムを備えるものである。この追加プログラムは、暗号回路が動作中であるかどうかを示すフラグ(通常、実施の形態8のシステムでもこのようなフラグは設ける)に基づいて動作する。
【0041】
このように、暗号処理用CPUコアとアプリケーション用CPUコアとの少なくともいずれかは、複数の暗号回路のすべてが暗号処理の実行中である場合に、複数のトランザクション処理にともなって処理の実行が必要な新たな暗号処理が発生すると、前記新たな暗号処理を自身で実行する。
【0042】
以上のように実施の形態9では、全ての暗号回路が暗号処理を実行している最中に新たな暗号処理を伴うトランザクション処理が発生した場合は、暗号処理用CPUコアまたはアプリケーション用CPUコアがソフトウェアだけで暗号処理を実行する暗号システムを説明した。
【0043】
実施の形態10.
実施の形態10は、密結合である実施の形態5〜実施の形態9の手当てに関する内容である。前述の実施の形態5〜実施の形態9(図4〜図6が対応)の暗号システムでは、アプリケーション用CPUコア110と暗号処理用CPUコア120とがメモリ空間を共有し、アプリケーション用CPUコア110と暗号処理用CPUコア120との物理メモリが共通であるため、全てのプログラムから全てのメモリ領域をアクセス可能にすると、アプリケーション用CPUコア上のアプリケーションプログラムから暗号処理中の作業用メモリ領域や暗号処理プログラムが読めてしまう。このため、万が一、悪意あるアプリケーションプログラムが混じり込んでしまうと、セキュリティ上の脆弱性となり得る。そのため、実施の形態10はこの課題を解決するものである。実施の形態10は、CPUコアのMMU(Memory Management Unit:メモリ管理ユニット:図示していない)が提供する、アドレス毎の特権/非特権モードを利用して、アプリケーションプログラムから暗号用の作業領域やプログラムへのアクセスを抑制する。
【0044】
すなわち、暗号処理用CPUコア120の「FPGA内部メモリ151または外部メモリ153」(これらは格納部の一例)における作業用メモリ領域と暗号処理プログラム領域との少なくともいずれかは、アプリケーション用CPUコア110の特権領域とされる。そして、アプリケーション用CPUコア110上の非特権モードのプログラムは、特権領域の作業用メモリ領域、特権領域の暗号処理プログラム領域を参照することができないものとする。
【0045】
以上のように実施の形態10では、暗号処理用CPUコア120の作業用メモリ領域及び/または暗号処理プログラム領域は、アプリケーション用CPUコアの特権領域とし、アプリケーション用CPUコア上の非特権モードのプログラムからは参照できない暗号システムを説明した。
【0046】
実施の形態11.
実施の形態11を説明する。実施の形態11の目的も実施の形態10と同じである。実施の形態11は、実施の形態10で述べた特権/非特権モードではなく、MMUが持つアドレス変換機構(例えば、TLB;Translation Lookaside Buffer)を利用して、アプリケーション用CPUコア110のどの論理アドレスにも暗号処理用CPUコア120の作業用メモリ領域及び/または暗号処理プログラム領域の物理アドレスを割付けないことで、アプリケーション用CPUコア110からそれらの領域へのアクセスを抑制するものである。
【0047】
このように、アプリケーション用CPUコア上のプログラムは、暗号処理用CPUコアの「FPGA内部メモリ151または外部メモリ153」(これらは格納部の一例)における作業用メモリ領域と暗号処理プログラム領域との少なくともいずれかの物理アドレスをアプリケーション用CPUコアの論理アドレス空間に割付けないメモリ管理ルーチンにより管理されることにより、物理アドレスの割付けられていない作業用メモリ領域、物理アドレスの割付けられていない暗号処理プログラム領域を参照することができない構成である。
【0048】
以上のように実施の形態11では、アプリケーション用CPUコアは、暗号処理用CPUコアの作業用メモリ領域及び/または暗号処理プログラム領域の物理アドレスを、自身の論理アドレス空間に割付けないようなメモリ管理ルーチンを実装することで、アプリケーション用CPUコア上のプログラムから上記領域は参照できない暗号システム
を説明した。
【0049】
実施の形態12.
以上の実施の形態では、暗号回路141等の制御は暗号処理用CPUコア120が行うものとしていたが、実施の形態12は、暗号回路をアプリケーション用CPUコア110と暗号処理用CPUコア120との双方から制御可能とする実施形態である。すなわち、システム性能に対する要求に応じて、暗号回路を制御するCPUコアを切り替え可能とするものである。これを実現するためには、例えば、図3(実施の形態3、4)では、暗号回路を2ポート化(またはセレクタを使用)し、2つのシステムバスに接続する。図6(実施の形態8,9)のハードウェア構成であれば、そのまま本実施の形態12を実現可能である。
【0050】
例えば、通常は暗号処理用CPUコアが暗号回路を制御し、特定のアプリケーションプログラム(所定の種別のアプリケーションプログラム)については、コア切替部で暗号回路を制御するCPUコアを暗号処理用CPUコア120からアプリケーション用CPUコア110に切り替える。ここでコア切替部とは、例えば図3の場合であればセレクタと切り替えプログラムの組合せにより実現し、図6の場合には切り替えプログラムにより実現する。
【0051】
実施の形態12では、例えば以下の(1)、(2)により、システム性能に対する要求に応じた最適化が可能となる。
(1)同時に多数のトランザクション処理を受け付ける必要があるアプリケーションプログラムでは、通常どおり、暗号回路の制御を全て暗号処理用CPUコア120が実行し、アプリケーション用CPUコア110はトランザクションの受け付けに注力する。
(2)一方、1つのトランザクション処理をできるだけ短時間で行う必要があるアプリケーションプログラム(所定の種別のアプリケーションプログラム)では、暗号回路の制御を全てアプリケーション用CPUコア110が行うようにコア切替部がCPUコアを切り替える。これにより、アプリケーション用CPUコア110と暗号処理用CPUコア120との間のやり取り(データ転送など)を省くことができ、暗号処理時間を短縮することができる。アプリケーション用CPUコア110が暗号回路を制御する場合は、暗号処理用CPUコア120を停止することにより、システムの低消費電力化も図ることができるという効果もある。
【0052】
このように、実施の形態12の暗号装置は、アプリケーションプログラムが所定の種別の場合に、複数の暗号回路を制御するCPUコアを暗号処理用CPUコア120からアプリケーション用CPUコア110に切り替えるコア切替部(1)を備えた構成である。
【0053】
以上のように実施の形態12では、実施の形態3、実施の形態8において、アプリケーション用CPUコアと暗号処理用CPUコアの双方から制御可能な1つまたは複数の暗号回路が実装され、当該暗号回路の制御を行うCPUコアを次のように切り替える暗号システムを説明した。
(1)同時に多数のトランザクション処理を受け付ける必要があるアプリケーションでは、暗号処理用CPUコアが暗号回路の制御を行う。
(2)1つのトランザクション処理をできるだけ短時間で行う必要があるアプリケーションでは、アプリケーション用CPUコアが暗号回路の制御を行う。
【0054】
実施の形態13.
実施の形態13の目的も実施の形態12と同様である。FPGAのパーシャルリコンフィギュレーション(部分的再構成)機能(コア切替部の一例)を利用して、暗号回路が接続されるCPUコアの切り替えを行うことで、暗号回路の2ポート化やセレクタを追加することなく、実施の形態12と同様に、システム性能に対する要求に応じた最適化が可能となる。
【0055】
このように、実施の形態12の暗号装置は、アプリケーションプログラムが所定の種別の場合に、複数の暗号回路を制御するCPUコアを暗号処理用CPUコア120からアプリケーション用CPUコア110に切り替えるコア切替部(パーシャルリコンフィギュレーション機能)を備えた構成である。
【0056】
以上のように実施の形態13では、FPGA内に実装した1つまたは複数の暗号回路とCPUコア間の接続を、FPGAのパーシャルリコンフィギュレーション(部分的再構成)機能を利用して、次のように切り替える暗号システムを説明した。
(1)同時に多数のトランザクション処理を受け付ける必要があるアプリケーションでは、暗号処理用CPUコアに接続されるバスに暗号回路を接続する。
(2)1つのトランザクション処理をできるだけ短時間で行う必要があるアプリケーションでは、アプリケーション用CPUコアに接続されるバスに暗号回路を接続する。
【0057】
以上の実施の形態1〜13では、FPGAを用いた暗号装置を説明したが、以上に説明した暗号装置は、「FPGAを用いた暗号処理方法」として把握することも可能である。
【図面の簡単な説明】
【0058】
【図1】実施の形態1のFPGA100の構成を示す図。
【図2】実施の形態2のFPGA200の構成を示す図。
【図3】実施の形態3,4のFPGA300の構成を示す図。
【図4】実施の形態5のFPGA400の構成を示す図。
【図5】実施の形態6,7のFPGA500の構成を示す図。
【図6】実施の形態8,9のFPGA600の構成を示す図。
【図7】従来技術を示す図。
【図8】従来技術を示す別の図。
【符号の説明】
【0059】
1,2,3 システムバス、100,200,300 FPGA、110 アプリケーション用CPUコア、111,121,151,160 FPGA内部メモリ、112,122,152 外部メモリIF、113,123,153 外部メモリ、120 暗号処理用CPUコア、130 通信用メモリ、141,142 暗号回路。

【特許請求の範囲】
【請求項1】
複数のCPU(Central Processing Unit)コアを備えたFPGA(Field Programmable Gate Array)を用いた暗号装置において、
所定のアプリケーションプログラムから要求された暗号処理を伴う複数のトランザクション処理を並行処理するアプリケーション用CPUコアと、
前記アプリケーション用CPUコアにより並行処理される前記複数のトランザクション処理にともなって処理の実行が必要な暗号処理が発生すると、発生した暗号処理を実行する暗号処理用CPUコアと
を備えたことを特徴とする暗号装置。
【請求項2】
前記暗号処理用CPUコアは、
前記アプリケーション用CPUコアにより並行処理される前記複数のトランザクション処理にともなって、処理の実行が必要な複数の暗号処理が発生すると、前記複数の暗号処理を並行処理により実行することを特徴とする請求項1記載の暗号装置。
【請求項3】
前記暗号装置は、さらに、
暗号処理を実行する複数の暗号回路を備え、
前記暗号処理用CPUコアは、
前記複数の暗号回路を制御することにより前記複数の暗号処理を並列処理で実行させることを特徴とする請求項2記載の暗号装置。
【請求項4】
前記暗号処理用CPUコアと前記アプリケーション用CPUコアとの少なくともいずれかは、
前記複数の暗号回路のすべてが暗号処理の実行中である場合に、前記複数のトランザクション処理にともなって処理の実行が必要な新たな暗号処理が発生すると、前記新たな暗号処理を自身で実行することを特徴とする請求項3記載の暗号装置。
【請求項5】
前記暗号装置は、
前記アプリケーションプログラムが所定の種別の場合に、前記複数の暗号回路を制御するCPUコアを前記暗号処理用CPUコアから前記アプリケーション用CPUコアに切り替えるコア切替部
を備えたことを特徴とする請求項3または4のいずれかに記載の暗号装置。
【請求項6】
前記暗号装置は、さらに、
情報を格納する格納部を備え、
前記アプリケーション用CPUコアと前記暗号処理用CPUコアとは、
前記格納部に自身の生成した情報を格納すると共に前記格納部から情報を読み取ることにより、互いに通信することを特徴とする請求項1〜5のいずれかに記載の暗号装置。
【請求項7】
前記アプリケーション用CPUコアと前記暗号処理用CPUコアとは、
前記格納部に対して論理アドレス空間を共有することを特徴とする請求項6記載の暗号装置。
【請求項8】
前記暗号装置は、
複数のCPUコアを備え、
前記格納部は、
前記暗号処理用CPUコアと前記アプリケーション用CPUコアとのいずれになるべきかを指示する指示情報を格納しており、
前記複数のCPUコアの各CPUコアは、
前記格納部から前記指示情報を読み取り、読み取った前記指示情報に従って、前記暗号処理用CPUコアと前記アプリケーション用CPUコアとのいずれかとして機能することを特徴とする請求項7記載の暗号装置。
【請求項9】
前記暗号処理用CPUコアの前記格納部における作業用メモリ領域と暗号処理プログラム領域との少なくともいずれかは、
前記アプリケーション用CPUコアの特権領域とされ、
前記アプリケーション用CPUコア上の非特権モードのプログラムは、
特権領域の作業用メモリ領域、特権領域の暗号処理プログラム領域を参照することができないことを特徴とする請求項7記載の暗号装置。
【請求項10】
前記アプリケーション用CPUコア上のプログラムは、
前記暗号処理用CPUコアの前記格納部における作業用メモリ領域と暗号処理プログラム領域との少なくともいずれかの物理アドレスを前記アプリケーション用CPUコアの論理アドレス空間に割付けないメモリ管理ルーチンにより管理されることにより、物理アドレスの割付けられていない作業用メモリ領域、物理アドレスの割付けられていない暗号処理プログラム領域を参照することができないことを特徴とする請求項7記載の暗号装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2009−296195(P2009−296195A)
【公開日】平成21年12月17日(2009.12.17)
【国際特許分類】
【出願番号】特願2008−146460(P2008−146460)
【出願日】平成20年6月4日(2008.6.4)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】