以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の1つである。
[第1の実施形態]
先ず、本実施形態に係る暗号化処理装置の構成例について、図1のブロック図を用いて説明する。図1に示した暗号化処理装置100は、3個のジョブを同時に処理可能とすべく、データ保持部110,120,130を有している。然るに、N(Nは2以上の整数)個のジョブを同時に処理可能とするためには、このようなデータ保持部をN個有するようにすればよい。
プロセッサ101は、主記憶装置102に格納されているコンピュータプログラムやデータを用いて処理を実行することで、暗号化処理装置100を構成する各部の動作制御を行う。
主記憶装置102には、プロセッサ101が暗号化処理装置100を構成する各部の動作制御を行うために用いるコンピュータプログラムやデータ、平文データ、暗号文データ、暗号処理パラメータ等が格納されている。この暗号処理パラメータには、現在設定されている暗号化モード、これから行う処理が暗号化/復号化の何れであるのかを示すデータ、鍵データ、が含まれている。更に、暗号処理パラメータには、暗号化モードとしてCBCモードが設定されている場合には、イニシャル・ベクタのデータが含まれているし、暗号化モードとしてCTRモードが設定されている場合には、カウンタ値が含まれている。
プロセッサ101と主記憶装置102とはシステムバス103に接続されており、更にこのシステムバス103には、データ保持部110,120,130も接続されている。データ保持部110,120,130は何れも、ジョブ毎に暗号処理パラメータや入出力データを保持しておくためのものである。
ここで、データ保持部110,120,130は何れも同じ構成を有し且つ同じ動作を行うものであるため、ここではデータ保持部110を例にとり、データ保持部110,120,130のそれぞれの構成及び動作についてより詳細に説明する。
DMAC111(121,131)は、主記憶装置102とデータ保持部110(120,130)との間でデータ転送を行うためのDMAコントローラである。DMAC111(121,131)は、主記憶装置102から読み出したデータを、一時的に入力バッファ112(122,132)に格納する。
一方、DMAC111(121,131)を介して主記憶装置102に転送されるデータは、出力バッファ113(123,133)に一時的に格納される。然るにDMAC111(121,131)は、この出力バッファ113(123,133)に格納されているデータを読み出して主記憶装置102に転送する。
中間値保持部114(124,134)は、ジョブの処理開始前に設定されるイニシャル・ベクタのデータを保持すると共に、ジョブの処理中には処理済みブロックの中間値を保持しておくためのものである。
カウンタ115(125,135)は、設定された初期値から1ブロック分処理が進むたびにカウントアップする。鍵データレジスタ116(126,136)は、鍵データを保持しておくためのものである。レジスタ117(127,137)は、暗号化処理、復号化処理の何れを行うのかを示すデータや、共通鍵暗号処理の暗号モード等をジョブ単位で設定するためのものである。
暗号処理部141〜144は、入力されたデータに対し、入力された暗号処理パラメータを用いて、暗号化または復号の共通鍵暗号処理を行う。本実施形態では、暗号処理部141〜144は何れも、2つの暗号化モード、即ち、CBCモード、CRTモードに対応しており、設定された暗号化モードに従って動作可能であるものとして説明する。もちろん、ほかの暗号化モードに対応するようにしてもかまわない。
データパス制御部104は、データ保持部110,120,130に保持されている各ジョブの暗号処理パラメータ及び入力データを暗号処理部141〜144のそれぞれ若しくは1つに転送する。更にデータパス制御部104は、暗号処理部141〜144から出力された出力データをデータ保持部110,120,130に転送する。
リソース管理部105は、暗号処理部141〜144が暗号処理中か処理待ち状態か、等の状態を示す情報を管理している。 リソース選択部106は、各ジョブをブロック単位で暗号処理部141〜144のどれに処理させるのかを決定し、決定した先にブロック(ブロックデータ)を転送する。
ジョブ選択レジスタ107は、各ジョブの暗号処理の優先度を設定する。リソース制御部108は、暗号処理部141〜144を動作させるための制御信号を生成して供給する。
次に、暗号化処理装置100の動作の一例について、暗号処理部141〜144に対するブロックの割り当てを示す図2、暗号化処理装置100を構成する各部の動作を示すフローチャートを記した図3を用いて説明する。
なお、図2において「ブロックx-y」は、ジョブxのy番目のブロック処理を行なっている状態、「停止」は、被処理データ(ブロック)や暗号処理パラメータだけでなく、クロック信号の供給も停止している状態を示す。「ダミー」は、ジョブとして要求のない暗号処理を行なっている状態を示す。
先ず、プロセッサ101が、外部の装置から若しくは暗号化処理装置100内のメモリからジョブ1を取得したとする(301)。ここで、このジョブ1は、CBCモードの暗号化モードで暗号化を行う対象のデータであるとする。プロセッサ101はこのようなジョブ1を取得すると、このジョブ1を主記憶装置102に格納する(301)。
次にプロセッサ101は、データ保持部110に対して、ジョブ1を暗号化するために必要な暗号処理パラメータを設定する(302)。より詳しくは、ジョブ1に対して暗号化処理を行うのか復号化処理を行うのか(ここでは暗号化処理)を示すデータ、及び暗号化モード(ここではCBCモード)を示すデータをレジスタ117内に格納する。また、プロセッサ101は、イニシャル・ベクタのデータを、中間値保持部114に設定する。また、鍵データ(暗号鍵)を鍵データレジスタ116に格納するのであるが、プロセッサ101がシステムバス103を介して鍵データレジスタ116に格納するのではなく、鍵生成部や鍵メモリ(共に不図示)から鍵データレジスタ116に直接転送される。
更にプロセッサ101は、被処理データを配置した主記憶装置102中のアドレス、転送長、処理結果を格納するアドレス等、主記憶装置102中の被処理データをデータパス制御部104に転送する為に必要な情報をDMAC111に設定する(302)。そしてその後、プロセッサ101は、DMAC111を起動する(302)ので、DMAC111は、被処理データを配置したアドレスから該被処理データを読み出し、暗号処理パラメータと共に、データパス制御部104に転送する(303)。
データパス制御部104は、DMAC111によって転送されたジョブ1の被処理データ及び暗号処理パラメータを、リソース選択部106が選択した暗号処理部141に転送する。更にリソース制御部108は、暗号処理部141を駆動するためのスタート信号及びクロック信号を暗号処理部141に供給する。
このとき、暗号処理部141〜144のうち、暗号処理部141のみが稼動しているので、ジョブ1の暗号処理について電力観測しやすい状態となっている。このことは、鍵管理を厳重に行なっていてもサイドチャネル攻撃により鍵探索を行なわれるという脆弱性につながる危険性があることを意味する。このため、リソース制御部108は、ジョブ1の最初のブロック処理の間のみ、暗号処理部142にもスタート信号、クロック信号およびダミーの被処理データ、暗号処理パラメータを供給する。なお、暗号処理部142に加えて他の暗号処理部にもスタート信号、クロック信号およびダミーの被処理データ、暗号処理パラメータを供給するようにしても良い。
次に、プロセッサ101が、外部の装置から若しくは暗号化処理装置100内のメモリからジョブ2を取得したとする(304)。ここで、このジョブ2は、CTRモードの暗号化モードで暗号化を行う対象のデータであるとする。プロセッサ101はこのようなジョブ2を取得すると、このジョブ2を主記憶装置102に格納する(304)。
次にプロセッサ101は、データ保持部110に対して、ジョブ2を暗号化するために必要な暗号処理パラメータを設定する(305)。より詳しくは、ジョブ2に対して暗号化処理を行うのか復号化処理を行うのか(ここでは暗号化処理)を示すデータ、及び暗号化モード(ここではCTRモード)を示すデータをレジスタ117内に格納する。また、プロセッサ101は、カウンタ115を初期化することで、カウンタ115によるカウンタ値を0にリセットする。また、鍵データ(暗号鍵)を鍵データレジスタ116に格納するのであるが、この格納の工程は、ジョブ1の時と同様である。
更にプロセッサ101は、被処理データを配置した主記憶装置102中のアドレス、転送長、処理結果を格納するアドレス等、主記憶装置102中の被処理データをデータパス制御部104に転送する為に必要な情報をDMAC111に設定する(305)。そしてその後、プロセッサ101は、DMAC111を起動する(305)ので、DMAC111は、被処理データを配置したアドレスから該被処理データを読み出し、暗号処理パラメータと共に、データパス制御部104に転送する(306)。
データパス制御部104は、DMAC111によって転送されたジョブ2の被処理データ及び暗号処理パラメータをブロック単位で、暗号処理部141〜144のそれぞれに対して順次転送する。この転送先をブロック単位で切り替える切り替え動作は、リソース選択部106が行う。更にリソース制御部108は、暗号処理部141〜144を駆動するためのスタート信号及びクロック信号を暗号処理部141〜144に供給する。
次に、プロセッサ101が、ジョブ2の処理中に、外部の装置から若しくは暗号化処理装置100内のメモリからジョブ3を取得したとする(307)。ここで、このジョブ3は、CBCモードの暗号化モードで暗号化を行う対象のデータであるとする。プロセッサ101はこのようなジョブ3を取得すると、このジョブ3を主記憶装置102に格納する(307)。
次にプロセッサ101は、データ保持部120に対して、ジョブ3を暗号化するために必要な暗号処理パラメータを設定する(308)。より詳しくは、ジョブ3に対して暗号化処理を行うのか復号化処理を行うのか(ここでは暗号化処理)を示すデータ、及び暗号化モード(ここではCBCモード)を示すデータをレジスタ127内に格納する。また、プロセッサ101は、イニシャル・ベクタのデータを、中間値保持部124に設定する。また、鍵データ(暗号鍵)を鍵データレジスタ126に格納するのであるが、この格納の工程は、ジョブ1の時と同様である。
更にプロセッサ101は、被処理データを配置した主記憶装置102中のアドレス、転送長、処理結果を格納するアドレス等、主記憶装置102中の被処理データをデータパス制御部104に転送する為に必要な情報をDMAC121に設定する(308)。そしてその後、プロセッサ101は、DMAC121を起動する(308)ので、DMAC121は、被処理データを配置したアドレスから該被処理データを読み出し、暗号処理パラメータと共に、データパス制御部104に転送する(309)。
ここまでデータパス制御部104は、ジョブ2に対する暗号化処理が並列処理可能なCTRモードの暗号処理であったため、ブロック単位で暗号処理部141〜144に被処理データおよび暗号処理パラメータを順次転送し、並列処理をさせていた。ジョブ2の処理中にジョブ3の暗号処理要求がきたため、データパス制御部104は、DMAC121によって転送されたジョブ3の被処理データおよび暗号処理パラメータを、リソース選択部106が選択した暗号処理部141に転送する。そしてジョブ2の処理は、ブロック単位で暗号処理部142〜144に被処理データおよび暗号パラメータを順次転送するように制御を変える。そして、ジョブ2の暗号化処理が完了すると、リソース制御部108は、被処理データおよび暗号処理パラメータを転送していた暗号処理部142〜144へのスタート信号及びクロック信号の供給を停止する。次に、ジョブ3の暗号化処理が完了すると、リソース制御部108は、被処理データおよび暗号処理パラメータを転送していた暗号処理部141へのスタート信号及びクロック信号の供給を停止する。
次に、プロセッサ101が、外部の装置から若しくは暗号化処理装置100内のメモリからジョブ4を取得したとする(310)。ここで、このジョブ4は、CBCモードの暗号化モードで暗号化を行う対象のデータであるとする。プロセッサ101はこのようなジョブ4を取得すると、このジョブ4を主記憶装置102に格納する(310)。
次にプロセッサ101は、データ保持部110に対して、ジョブ4を暗号化するために必要な暗号処理パラメータを設定する(311)。より詳しくは、ジョブ4に対して暗号化処理を行うのか復号化処理を行うのか(ここでは暗号化処理)を示すデータ、及び暗号化モード(ここではCBCモード)を示すデータをレジスタ117内に格納する。また、プロセッサ101は、イニシャル・ベクタのデータを、中間値保持部114に設定する。また、鍵データ(暗号鍵)を鍵データレジスタ116に格納するのであるが、この格納の工程は、ジョブ1の時と同様である。
更にプロセッサ101は、被処理データを配置した主記憶装置102中のアドレス、転送長、処理結果を格納するアドレス等、主記憶装置102中の被処理データをデータパス制御部104に転送する為に必要な情報をDMAC111に設定する(311)。そしてその後、プロセッサ101は、DMAC111を起動する(311)ので、DMAC111は、被処理データを配置したアドレスから該被処理データを読み出し、暗号処理パラメータと共に、データパス制御部104に転送する(312)。
データパス制御部104は、DMAC111によって転送されたジョブ4の被処理データ及び暗号処理パラメータを、リソース選択部106が選択した暗号処理部141に転送する。更にリソース制御部108は、暗号処理部141を駆動するためのスタート信号及びクロック信号を暗号処理部141に供給する。
このとき、暗号処理部141〜144のうち、暗号処理部141のみが稼動しているので、ジョブ4の暗号処理について電力観測しやすい状態となっている。このことは、鍵管理を厳重に行なっていてもサイドチャネル攻撃により鍵探索を行なわれるという脆弱性につながる危険性があることを意味する。このため、リソース制御部108は、ジョブ4の最初のブロック処理の間のみ、暗号処理部142にもスタート信号、クロック信号およびダミーの被処理データ、暗号処理パラメータを供給する。なお、暗号処理部142に加えて他の暗号処理部にもスタート信号、クロック信号およびダミーの被処理データ、暗号処理パラメータを供給するようにしても良い。
このように、入力されたデータに対して暗号化処理を行う複数の暗号化処理部の動作制御を行う情報処理装置としてのプロセッサ101は、暗号化処理装置100を次のように動作させる。先ず、設定された暗号化モードに応じて複数の暗号化処理部のそれぞれ若しくは1つを転送先とする。そして、該転送先へのクロック信号の供給を行うと共に、入力されたデータをブロック単位に該転送先に転送し、暗号化処理が完了した暗号化処理部に対するクロック信号の供給を停止させる。この転送において、1つを転送先とした場合、更に、複数の暗号化処理部のうちこの1つ以外の1以上の暗号化処理部に対してダミーのブロックデータを転送する。
このように、ジョブの処理開始時に複数の暗号処理部が稼動しないときに、1ブロック分の暗号処理を擬似的に非稼動の暗号処理部で行なうことにより、ジョブの処理開始時の1ブロック目では2つの暗号処理部が動作することになる。このため、電力観測により鍵探索を行なおうとしても2つの暗号処理が混在して観測されることになり、分離は困難である。2ブロック目以降は稼動している暗号処理部は1つだけなので消費電力も1つの暗号処理部を1ブロック分動作させただけしか増加せず、消費電力低減効果はダミー動作を入れない場合とそれほど変わらない。従ってサイドチャネル攻撃に対する高い耐タンパー性を維持しながら消費電力低減がはかれる。
[第2の実施形態]
暗号化処理装置100の別の動作の一例について、暗号処理部141〜144に対するブロックの割り当てを示す図4、暗号化処理装置100を構成する各部の動作を示すフローチャートを記した図5を用いて説明する。
なお、図4において「ブロックx-y」は、ジョブxのy番目のブロック処理を行なっている状態、「停止」は、被処理データ(ブロック)や暗号処理パラメータだけでなく、クロック信号の供給も停止している状態を示す。「ダミー」は、ジョブとして要求のない暗号処理を行なっている状態を示す。
先ず、プロセッサ101が、外部の装置から若しくは暗号化処理装置100内のメモリからジョブ1を取得したとする(501)。ここで、このジョブ1は、CBCモードの暗号化モードで暗号化を行う対象のデータであるとする。プロセッサ101はこのようなジョブ1を取得すると、このジョブ1を主記憶装置102に格納する(501)。
次にプロセッサ101は、データ保持部110に対して、ジョブ1を暗号化するために必要な暗号処理パラメータを設定する(502)。より詳しくは、ジョブ1に対して暗号化処理を行うのか復号化処理を行うのか(ここでは暗号化処理)を示すデータ、及び暗号化モード(ここではCBCモード)を示すデータをレジスタ117内に格納する。また、プロセッサ101は、イニシャル・ベクタのデータを、中間値保持部114に設定する。また、鍵データ(暗号鍵)を鍵データレジスタ116に格納するのであるが、プロセッサ101がシステムバス103を介して鍵データレジスタ116に格納するのではなく、鍵生成部や鍵メモリ(共に不図示)から鍵データレジスタ116に直接転送される。
更にプロセッサ101は、被処理データを配置した主記憶装置102中のアドレス、転送長、処理結果を格納するアドレス等、主記憶装置102中の被処理データをデータパス制御部104に転送する為に必要な情報をDMAC111に設定する(502)。そしてその後、プロセッサ101は、DMAC111を起動する(502)ので、DMAC111は、被処理データを配置したアドレスから該被処理データを読み出し、暗号処理パラメータと共に、データパス制御部104に転送する(503)。
データパス制御部104は、DMAC111によって転送されたジョブ1の被処理データ及び暗号処理パラメータを、リソース選択部106が選択した暗号処理部141に転送する。更にリソース制御部108は、暗号処理部141を駆動するためのスタート信号及びクロック信号を暗号処理部141に供給する。
このとき、暗号処理部141〜144のうち、暗号処理部141のみが稼動しているので、ジョブ1の暗号処理について電力観測しやすい状態となっている。このことは、鍵管理を厳重に行なっていてもサイドチャネル攻撃により鍵探索を行なわれるという脆弱性につながる危険性があることを意味する。このため、リソース制御部108は、ジョブ1の最初のブロック処理の間のみ、暗号処理部144にもスタート信号、クロック信号およびダミーの被処理データ、暗号処理パラメータを供給する。なお、暗号処理部144に加えて他の暗号処理部にもスタート信号、クロック信号およびダミーの被処理データ、暗号処理パラメータを供給するようにしても良い。
次に、プロセッサ101が、外部の装置から若しくは暗号化処理装置100内のメモリからジョブ2を取得したとする(504)。ここで、このジョブ2は、CTRモードの暗号化モードで暗号化を行う対象のデータであるとする。プロセッサ101はこのようなジョブ2を取得すると、このジョブ2を主記憶装置102に格納する(504)。
次にプロセッサ101は、データ保持部110に対して、ジョブ2を暗号化するために必要な暗号処理パラメータを設定する(505)。より詳しくは、ジョブ2に対して暗号化処理を行うのか復号化処理を行うのか(ここでは暗号化処理)を示すデータ、及び暗号化モード(ここではCTRモード)を示すデータをレジスタ117内に格納する。また、プロセッサ101は、カウンタ115を初期化することで、カウンタ115によるカウンタ値を0にリセットする。また、鍵データ(暗号鍵)を鍵データレジスタ116に格納するのであるが、この格納の工程は、ジョブ1の時と同様である。
更にプロセッサ101は、被処理データを配置した主記憶装置102中のアドレス、転送長、処理結果を格納するアドレス等、主記憶装置102中の被処理データをデータパス制御部104に転送する為に必要な情報をDMAC111に設定する(505)。そしてその後、プロセッサ101は、DMAC111を起動する(505)ので、DMAC111は、被処理データを配置したアドレスから該被処理データを読み出し、暗号処理パラメータと共に、データパス制御部104に転送する(506)。
データパス制御部104は、DMAC111によって転送されたジョブ2の被処理データ及び暗号処理パラメータをブロック単位で、暗号処理部141〜144のそれぞれに対して順次転送する。この転送先をブロック単位で切り替える切り替え動作は、リソース選択部106が行う。更にリソース制御部108は、暗号処理部141〜144を駆動するためのスタート信号及びクロック信号を暗号処理部141〜144に供給する。
次に、プロセッサ101が、ジョブ2の処理中に、外部の装置から若しくは暗号化処理装置100内のメモリからジョブ3を取得したとする(507)。ここで、このジョブ3は、CBCモードの暗号化モードで暗号化を行う対象のデータであるとする。プロセッサ101はこのようなジョブ3を取得すると、このジョブ3を主記憶装置102に格納する(507)。
次にプロセッサ101は、データ保持部120に対して、ジョブ3を暗号化するために必要な暗号処理パラメータを設定する(508)。より詳しくは、ジョブ3に対して暗号化処理を行うのか復号化処理を行うのか(ここでは暗号化処理)を示すデータ、及び暗号化モード(ここではCBCモード)を示すデータをレジスタ127内に格納する。また、プロセッサ101は、イニシャル・ベクタのデータを、中間値保持部124に設定する。また、鍵データ(暗号鍵)を鍵データレジスタ126に格納するのであるが、この格納の工程は、ジョブ1の時と同様である。
更にプロセッサ101は、被処理データを配置した主記憶装置102中のアドレス、転送長、処理結果を格納するアドレス等、主記憶装置102中の被処理データをデータパス制御部104に転送する為に必要な情報をDMAC121に設定する(508)。そしてその後、プロセッサ101は、DMAC121を起動する(508)ので、DMAC121は、被処理データを配置したアドレスから該被処理データを読み出し、暗号処理パラメータと共に、データパス制御部104に転送する(509)。
ここまでデータパス制御部104は、ジョブ2に対する暗号化処理が並列処理可能なCTRモードの暗号処理であったため、ブロック単位で暗号処理部141〜144に被処理データおよび暗号処理パラメータを順次転送し、並列処理をさせていた。ジョブ2の処理中にジョブ3の暗号処理要求がきたため、データパス制御部104は、DMAC121によって転送されたジョブ3の被処理データおよび暗号処理パラメータを、リソース選択部106が選択した暗号処理部141に転送する。そしてジョブ2の処理は、ブロック単位で暗号処理部142〜144に被処理データおよび暗号パラメータを順次転送するように制御を変える。そして、ジョブ2の暗号化処理が完了すると、リソース制御部108は、被処理データおよび暗号処理パラメータを転送していた暗号処理部142〜143へのスタート信号及びクロック信号の供給を停止する。
ここで、ジョブ3の最終ブロックの処理時に動作しているの暗号処理部が暗号処理部141のみになるのを防ぐ必要がある。このため、データパス制御部104は、ジョブ3の最終ブロック処理の間のみ、暗号処理部144にもスタート信号、クロック信号およびダミーの被処理データ、暗号処理パラメータを供給する。次に、ジョブ3の暗号化処理が完了すると、リソース制御部108は、被処理データおよび暗号処理パラメータを転送していた暗号処理部141,144へのスタート信号及びクロック信号の供給を停止する。
次に、プロセッサ101が、外部の装置から若しくは暗号化処理装置100内のメモリからジョブ4を取得したとする(510)。ここで、このジョブ4は、CBCモードの暗号化モードで暗号化を行う対象のデータであるとする。プロセッサ101はこのようなジョブ4を取得すると、このジョブ4を主記憶装置102に格納する(510)。
次にプロセッサ101は、データ保持部110に対して、ジョブ4を暗号化するために必要な暗号処理パラメータを設定する(511)。より詳しくは、ジョブ4に対して暗号化処理を行うのか復号化処理を行うのか(ここでは暗号化処理)を示すデータ、及び暗号化モード(ここではCBCモード)を示すデータをレジスタ117内に格納する。また、プロセッサ101は、イニシャル・ベクタのデータを、中間値保持部114に設定する。また、鍵データ(暗号鍵)を鍵データレジスタ116に格納するのであるが、この格納の工程は、ジョブ1の時と同様である。
更にプロセッサ101は、被処理データを配置した主記憶装置102中のアドレス、転送長、処理結果を格納するアドレス等、主記憶装置102中の被処理データをデータパス制御部104に転送する為に必要な情報をDMAC111に設定する(511)。そしてその後、プロセッサ101は、DMAC111を起動する(511)ので、DMAC111は、被処理データを配置したアドレスから該被処理データを読み出し、暗号処理パラメータと共に、データパス制御部104に転送する(512)。
データパス制御部104は、DMAC111によって転送されたジョブ4の被処理データ及び暗号処理パラメータを、リソース選択部106が選択した暗号処理部141に転送する。更にリソース制御部108は、暗号処理部141を駆動するためのスタート信号及びクロック信号を暗号処理部141に供給する。
このとき、暗号処理部141〜144のうち、暗号処理部141のみが稼動しているので、ジョブ4の暗号処理について電力観測しやすい状態となっている。このことは、鍵管理を厳重に行なっていてもサイドチャネル攻撃により鍵探索を行なわれるという脆弱性につながる危険性があることを意味する。このため、リソース制御部108は、ジョブ4の最初のブロック処理の間のみ、暗号処理部144にもスタート信号、クロック信号およびダミーの被処理データ、暗号処理パラメータを供給する。なお、暗号処理部144に加えて他の暗号処理部にもスタート信号、クロック信号およびダミーの被処理データ、暗号処理パラメータを供給するようにしても良い。
図4の場合においては、暗号処理部が1つでも動作中のときはジョブ開始時の1ブロック分だけでなく、常に複数の暗号処理部が見かけ上動作しており、実施例1の場合と比べてより電力解析がしづらくなっている。
[第3の実施形態]
暗号化処理装置100の別の動作の一例について、暗号処理部141〜144に対するブロックの割り当てを示す図6、暗号化処理装置100を構成する各部の動作を示すフローチャートを記した図7を用いて説明する。
なお、図6において「ブロックx-y」は、ジョブxのy番目のブロック処理を行なっている状態、「停止」は、被処理データ(ブロック)や暗号処理パラメータだけでなく、クロック信号の供給も停止している状態を示す。「ダミー」は、ジョブとして要求のない暗号処理を行なっている状態を示す。
先ず、プロセッサ101が、外部の装置から若しくは暗号化処理装置100内のメモリからジョブ1を取得したとする(701)。ここで、このジョブ1は、CBCモードの暗号化モードで暗号化を行う対象のデータであるとする。プロセッサ101はこのようなジョブ1を取得すると、このジョブ1を主記憶装置102に格納する(701)。
次にプロセッサ101は、データ保持部110に対して、ジョブ1を暗号化するために必要な暗号処理パラメータを設定する(702)。より詳しくは、ジョブ1に対して暗号化処理を行うのか復号化処理を行うのか(ここでは暗号化処理)を示すデータ、及び暗号化モード(ここではCBCモード)を示すデータをレジスタ117内に格納する。また、プロセッサ101は、イニシャル・ベクタのデータを、中間値保持部114に設定する。また、鍵データ(暗号鍵)を鍵データレジスタ116に格納するのであるが、プロセッサ101がシステムバス103を介して鍵データレジスタ116に格納するのではなく、鍵生成部や鍵メモリ(共に不図示)から鍵データレジスタ116に直接転送される。
更にプロセッサ101は、被処理データを配置した主記憶装置102中のアドレス、転送長、処理結果を格納するアドレス等、主記憶装置102中の被処理データをデータパス制御部104に転送する為に必要な情報をDMAC111に設定する(702)。そしてその後、プロセッサ101は、DMAC111を起動する(702)ので、DMAC111は、被処理データを配置したアドレスから該被処理データを読み出し、暗号処理パラメータと共に、データパス制御部104に転送する(703)。
データパス制御部104は、DMAC111によって転送されたジョブ1の被処理データ及び暗号処理パラメータを、リソース選択部106が選択した暗号処理部141に転送する。更にリソース制御部108は、暗号処理部141を駆動するためのスタート信号及びクロック信号を暗号処理部141に供給する。
またリソース制御部108はジョブ1の処理期間中は常に少なくとも暗号処理部142〜144の何れかが動作しているようにすべく、暗号処理部142〜144に選択的にスタート信号、クロック信号、ダミーの被処理データ、暗号処理パラメータを供給する。図7の場合は、ジョブ1の最初のブロック処理期間中には暗号処理部142に対してこの供給を行い、次のブロック処理期間中には暗号処理部143に対してこの供給を行い、次のブロック処理期間中には暗号処理部144に対してこの供給を行っている。そして、最後のブロック処理期間中には暗号処理部142に対してこの供給を行っている。もちろん、どのブロック処理期間中にどの暗号処理部をどうさせるのかについては特定の順序に限るものではなく、ジョブ1の処理期間中に少なくとも暗号処理部142〜144の何れかが動作していればよい。
次に、プロセッサ101が、外部の装置から若しくは暗号化処理装置100内のメモリからジョブ2を取得したとする(704)。ここで、このジョブ2は、CTRモードの暗号化モードで暗号化を行う対象のデータであるとする。プロセッサ101はこのようなジョブ2を取得すると、このジョブ2を主記憶装置102に格納する(704)。
次にプロセッサ101は、データ保持部110に対して、ジョブ2を暗号化するために必要な暗号処理パラメータを設定する(705)。より詳しくは、ジョブ2に対して暗号化処理を行うのか復号化処理を行うのか(ここでは暗号化処理)を示すデータ、及び暗号化モード(ここではCTRモード)を示すデータをレジスタ117内に格納する。また、プロセッサ101は、カウンタ115を初期化することで、カウンタ115によるカウンタ値を0にリセットする。また、鍵データ(暗号鍵)を鍵データレジスタ116に格納するのであるが、この格納の工程は、ジョブ1の時と同様である。
更にプロセッサ101は、被処理データを配置した主記憶装置102中のアドレス、転送長、処理結果を格納するアドレス等、主記憶装置102中の被処理データをデータパス制御部104に転送する為に必要な情報をDMAC111に設定する(705)。そしてその後、プロセッサ101は、DMAC111を起動する(705)ので、DMAC111は、被処理データを配置したアドレスから該被処理データを読み出し、暗号処理パラメータと共に、データパス制御部104に転送する(706)。
データパス制御部104は、DMAC111によって転送されたジョブ2の被処理データ及び暗号処理パラメータをブロック単位で、暗号処理部141〜144のそれぞれに対して順次転送する。この転送先をブロック単位で切り替える切り替え動作は、リソース選択部106が行う。更にリソース制御部108は、暗号処理部141〜144を駆動するためのスタート信号及びクロック信号を暗号処理部141〜144に供給する。
次に、プロセッサ101が、ジョブ2の処理中に、外部の装置から若しくは暗号化処理装置100内のメモリからジョブ3を取得したとする(707)。ここで、このジョブ3は、CBCモードの暗号化モードで暗号化を行う対象のデータであるとする。プロセッサ101はこのようなジョブ3を取得すると、このジョブ3を主記憶装置102に格納する(707)。
次にプロセッサ101は、データ保持部120に対して、ジョブ3を暗号化するために必要な暗号処理パラメータを設定する(708)。より詳しくは、ジョブ3に対して暗号化処理を行うのか復号化処理を行うのか(ここでは暗号化処理)を示すデータ、及び暗号化モード(ここではCBCモード)を示すデータをレジスタ127内に格納する。また、プロセッサ101は、イニシャル・ベクタのデータを、中間値保持部124に設定する。また、鍵データ(暗号鍵)を鍵データレジスタ126に格納するのであるが、この格納の工程は、ジョブ1の時と同様である。
更にプロセッサ101は、被処理データを配置した主記憶装置102中のアドレス、転送長、処理結果を格納するアドレス等、主記憶装置102中の被処理データをデータパス制御部104に転送する為に必要な情報をDMAC121に設定する(708)。そしてその後、プロセッサ101は、DMAC121を起動する(708)ので、DMAC121は、被処理データを配置したアドレスから該被処理データを読み出し、暗号処理パラメータと共に、データパス制御部104に転送する(709)。
ここまでデータパス制御部104は、ジョブ2に対する暗号化処理が並列処理可能なCTRモードの暗号処理であったため、ブロック単位で暗号処理部141〜144に被処理データおよび暗号処理パラメータを順次転送し、並列処理をさせていた。ジョブ2の処理中にジョブ3の暗号処理要求がきたため、データパス制御部104は、DMAC121によって転送されたジョブ3の被処理データおよび暗号処理パラメータを、リソース選択部106が選択した暗号処理部141に転送する。そしてジョブ2の処理は、ブロック単位で暗号処理部142〜144に被処理データおよび暗号パラメータを順次転送するように制御を変える。そして、ジョブ2の暗号化処理が完了すると、リソース制御部108は、被処理データおよび暗号処理パラメータを転送していた暗号処理部142〜143へのスタート信号及びクロック信号の供給を停止する。
ここで、ジョブ3の最終ブロックの処理時に動作しているの暗号処理部が暗号処理部141のみになるのを防ぐ必要がある。このため、データパス制御部104は、ジョブ3の最終ブロック処理の間のみ、暗号処理部144にもスタート信号、クロック信号およびダミーの被処理データ、暗号処理パラメータを供給する。次に、ジョブ3の暗号化処理が完了すると、リソース制御部108は、被処理データおよび暗号処理パラメータを転送していた暗号処理部141,144へのスタート信号及びクロック信号の供給を停止する。
次に、プロセッサ101が、外部の装置から若しくは暗号化処理装置100内のメモリからジョブ4を取得したとする(710)。ここで、このジョブ4は、CBCモードの暗号化モードで暗号化を行う対象のデータであるとする。プロセッサ101はこのようなジョブ4を取得すると、このジョブ4を主記憶装置102に格納する(710)。
次にプロセッサ101は、データ保持部110に対して、ジョブ4を暗号化するために必要な暗号処理パラメータを設定する(711)。より詳しくは、ジョブ4に対して暗号化処理を行うのか復号化処理を行うのか(ここでは暗号化処理)を示すデータ、及び暗号化モード(ここではCBCモード)を示すデータをレジスタ117内に格納する。また、プロセッサ101は、イニシャル・ベクタのデータを、中間値保持部114に設定する。また、鍵データ(暗号鍵)を鍵データレジスタ116に格納するのであるが、この格納の工程は、ジョブ1の時と同様である。
更にプロセッサ101は、被処理データを配置した主記憶装置102中のアドレス、転送長、処理結果を格納するアドレス等、主記憶装置102中の被処理データをデータパス制御部104に転送する為に必要な情報をDMAC111に設定する(711)。そしてその後、プロセッサ101は、DMAC111を起動する(711)ので、DMAC111は、被処理データを配置したアドレスから該被処理データを読み出し、暗号処理パラメータと共に、データパス制御部104に転送する(712)。
データパス制御部104は、DMAC111によって転送されたジョブ4の被処理データ及び暗号処理パラメータを、リソース選択部106が選択した暗号処理部141に転送する。更にリソース制御部108は、暗号処理部141を駆動するためのスタート信号及びクロック信号を暗号処理部141に供給する。
またリソース制御部108はジョブ4の処理期間中は常に少なくとも暗号処理部142〜144の何れかが動作しているようにすべく、暗号処理部142〜144に選択的にスタート信号、クロック信号、ダミーの被処理データ、暗号処理パラメータを供給する。もちろん、どのブロック処理期間中にどの暗号処理部をどうさせるのかについては特定の順序に限るものではなく、ジョブ1の処理期間中に少なくとも暗号処理部142〜144の何れかが動作していればよい。
本実施形態においては、暗号処理部が1つでも動作中のときはジョブ開始時の1ブロック分だけでなく、常に複数の暗号処理部が見かけ上動作しており、第1の実施形態の場合と比べてより電力解析がしづらくなっている。
本実施形態においては、暗号処理部が動作するときには常に複数の暗号処理部が動作するようにしているが、ダミー動作の長さと消費電力低減はトレードオフの関係にある。消費電力の要求仕様を満たす範囲でリソース制御部108がダミー動作の長さを調節すれば極端に耐タンパー性を低下させることはない。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。