(57)【特許請求の範囲】
【請求項１】
外部端末から受信されたコマンドに応じて同一の処理を並列して実行する第１の演算ユニット及び第２の演算ユニットを備える演算装置であって、
クロック信号生成手段により生成されたクロック信号を所定時間遅延させるクロック信号遅延手段を備え、
前記第１の演算ユニットは、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記処理を行い、
前記第２の演算ユニットは、前記コマンドがセキュリティ処理を要求するコマンドである場合、前記クロック信号遅延手段により所定時間遅延したクロック信号を入力し、当該クロック信号に同期して前記セキュリティ処理を行い、前記コマンドがセキュリティ処理を要求するコマンドでない場合、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記セキュリティ処理以外の処理を行うことを特徴とする演算装置。
【請求項２】
前記クロック信号遅延手段は、前記クロック信号を、前記所定時間として半周期遅延させることを特徴とする請求項１に記載の演算装置。
【請求項３】
外部端末から受信されたコマンドに応じて同一の処理を並列して実行する第１の演算ユニット及び第２の演算ユニットを備えるＩＣカードであって、
クロック信号生成手段により生成されたクロック信号を所定時間遅延させるクロック信号遅延手段を備え、
前記第１の演算ユニットは、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記処理を行い、
前記第２の演算ユニットは、前記コマンドがセキュリティ処理を要求するコマンドである場合、前記クロック信号遅延手段により所定時間遅延したクロック信号を入力し、当該クロック信号に同期して前記セキュリティ処理を行い、前記コマンドがセキュリティ処理を要求するコマンドでない場合、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記セキュリティ処理以外の処理を行うことを特徴とするＩＣカード。
【請求項４】
外部端末から受信されたコマンドに応じて同一の処理を並列して実行する第１の演算ユニット及び第２の演算ユニットを備える演算装置における演算方法であって、
クロック信号生成手段により生成されたクロック信号を所定時間遅延させるクロック信号遅延ステップを含み、
前記第１の演算ユニットは、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記処理を行い、
前記第２の演算ユニットは、前記コマンドがセキュリティ処理を要求するコマンドである場合、前記クロック信号遅延ステップにより所定時間遅延したクロック信号を入力し、当該クロック信号に同期して前記セキュリティ処理を行い、前記コマンドがセキュリティ処理を要求するコマンドでない場合、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記セキュリティ処理以外の処理を行うことを特徴とする演算方法。
【請求項５】
外部端末から受信されたコマンドに応じて同一の処理を並列して実行する第１の演算ユニット及び第２の演算ユニットを備えるコンピュータに、
クロック信号生成手段により生成されたクロック信号を所定時間遅延させるクロック信号遅延ステップを実行させ、
前記第１の演算ユニットは、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記処理を行い、
前記第２の演算ユニットは、前記コマンドがセキュリティ処理を要求するコマンドである場合、前記クロック信号遅延ステップにより所定時間遅延したクロック信号を入力し、当該クロック信号に同期して前記セキュリティ処理を行い、前記コマンドがセキュリティ処理を要求するコマンドでない場合、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記セキュリティ処理以外の処理を行うことを特徴とする演算処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコアを備え、並列処理を行うことが可能な演算装置の技術分野に関する。
【背景技術】
【０００２】
故障すると安全性を損なう可能性のある制御装置等では、サブコア等の監視部によってメインコアを監視し、メインコアの異常を検出して制御装置の安全な動作を保証する策が講じられてきた。その一例として、特許文献１に開示されるように、ロックステップと称される技術が普及している。ロックステップとは、複数のコアが同じ処理を並列的に実行し、実行結果を比較して各コアが正常に動作していることを判断する技術である。ロックステップが故障の検出を目的とする一方で、例えば、特許文献２に開示されるように、暗号技術を用いて対向機器を認証することにより、安全な動作を保証する技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１２８６２７号公報
【特許文献２】特開２０１３−１３８３０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、認証用デバイスとして知られているスマートカードやTPM（Trusted Platform Module）等の分野においては、サイドチャネル攻撃が知られている。サイドチャネル攻撃とは、古くから暗号演算用制御装置において存在する脅威であり、演算時に消費される電力や発生する電磁波に代表される副次的な情報（サイドチャネル情報）を利用して演算内容を推定する攻撃手法である。例えば、複数のコアを備え、並列処理を行うことが可能なＩＣカードにおいて、当該複数のコアが同一の処理を同時に実行する場合、消費電力や電磁波が増長されてサイドチャネル攻撃の標的になりやすくなってしまうことが問題となる。
【０００５】
そこで、本発明は、上記問題等に鑑みてなされたものであり、複数のコアが同一の処理を実行してもサイドチャネル情報が増長されず、高い耐タンパ性を実現することが可能な演算装置、ＩＣカード、演算方法、及び演算処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、請求項１に記載の発明は、外部端末から受信されたコマンドに応じて同一の処理を並列して実行する第１の演算ユニット及び第２の演算ユニットを備える演算装置であって、クロック信号生成手段により生成されたクロック信号を所定時間遅延させるクロック信号遅延手段を備え、前記第１の演算ユニットは、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記処理を行い、前記第２の演算ユニットは、前記コマンドがセキュリティ処理を要求するコマンドである場合、前記クロック信号遅延手段により所定時間遅延したクロック信号を入力し、当該クロック信号に同期して前記セキュリティ処理を行い、前記コマンドがセキュリティ処理を要求するコマンドでない場合、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記セキュリティ処理以外の処理を行うことを特徴とする。
【０００７】
請求項２に記載の発明は、請求項１に記載の演算装置において、前記クロック信号遅延手段は、前記クロック信号を、前記所定時間として半周期遅延させることを特徴とする。
【０００９】
請求項３に記載の発明は、外部端末から受信されたコマンドに応じて同一の処理を並列して実行する第１の演算ユニット及び第２の演算ユニットを備えるＩＣカードであって、クロック信号生成手段により生成されたクロック信号を所定時間遅延させるクロック信号遅延手段を備え、前記第１の演算ユニットは、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記処理を行い、前記第２の演算ユニットは、前記コマンドがセキュリティ処理を要求するコマンドである場合、前記クロック信号遅延手段により所定時間遅延したクロック信号を入力し、当該クロック信号に同期して前記セキュリティ処理を行い、前記コマンドがセキュリティ処理を要求するコマンドでない場合、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記セキュリティ処理以外の処理を行うことを特徴とする。
【００１０】
請求項４に記載の発明は、外部端末から受信されたコマンドに応じて同一の処理を並列して実行する第１の演算ユニット及び第２の演算ユニットを備える演算装置における演算方法であって、クロック信号生成手段により生成されたクロック信号を所定時間遅延させるクロック信号遅延ステップを含み、前記第１の演算ユニットは、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記処理を行い、前記第２の演算ユニットは、前記コマンドがセキュリティ処理を要求するコマンドである場合、前記クロック信号遅延ステップにより所定時間遅延したクロック信号を入力し、当該クロック信号に同期して前記セキュリティ処理を行い、前記コマンドがセキュリティ処理を要求するコマンドでない場合、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記セキュリティ処理以外の処理を行うことを特徴とする。
【００１１】
請求項５に記載の発明は、外部端末から受信されたコマンドに応じて同一の処理を並列して実行する第１の演算ユニット及び第２の演算ユニットを備えるコンピュータに、クロック信号生成手段により生成されたクロック信号を所定時間遅延させるクロック信号遅延ステップを実行させ、前記第１の演算ユニットは、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記処理を行い、前記第２の演算ユニットは、前記コマンドがセキュリティ処理を要求するコマンドである場合、前記クロック信号遅延ステップにより所定時間遅延したクロック信号を入力し、当該クロック信号に同期して前記セキュリティ処理を行い、前記コマンドがセキュリティ処理を要求するコマンドでない場合、前記クロック信号生成手段により生成されたクロック信号を入力し、当該クロック信号に同期して前記セキュリティ処理以外の処理を行うことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、複数のコアが同一の処理を実行してもサイドチャネル情報が増長されず、高い耐タンパ性を実現することができる。
【図面の簡単な説明】
【００１３】
【図１】ＩＣチップＣの概要構成例を示す図である。
【図２】コア１及びコア２が同じクロック信号に同期して同一の処理を行ったときの消費電力の一例を示す図である。
【図３】コア１がクロック信号に同期して認証処理を行うと共に、コア２が当該クロック信号から半周期遅延したクロック信号に同期して同一の認証処理を行ったときの消費電力の一例を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、ＩＣチップに対して本発明を適用した場合の実施の形態である。
【００１５】
先ず、図１を参照して、本実施形態に係るＩＣチップの概要構成について説明する。図１は、ＩＣチップＣの概要構成例を示す図である。ＩＣチップＣは、本発明の演算装置の一例である。なお、ＩＣチップＣは、キャッシュカード、クレジットカード、電子マネーカード、社員カード等に搭載されて使用される。或いは、ＩＣチップＣは、スマートフォンや携帯電話機等の通信機器に組み込まれる。ＩＣチップＣは、通信機器の回路基板上に直接組み込んで構成するようにしてもよい。
【００１６】
ＩＣチップＣは、図１に示すように、コア１、コア２、クロック生成回路３、クロック切替回路４、切替制御レジスタ５、ＲＡＭ（Random Access Memory）６、フラッシュメモリ７、ＲＯＭ（Read Only Memory）８、及びＩ／Ｏ回路９を備えて構成される。コア１は、第１の演算ユニットの一例である。コア２は、第２の演算ユニットの一例である。コア１とコア２とは並列処理が可能に構成されている。コア１、コア２、切替制御レジスタ５、ＲＡＭ６、フラッシュメモリ７、ＲＯＭ８、及びＩ／Ｏ回路９は、バス１０に接続されている。バス１０は、アドレスバスとデータバスを備える。なお、クロック生成回路３はＩＣチップＣに備えられなくともよい。この場合、ＩＣチップＣは、外部端末に備えられたクロック生成回路からＩ／Ｏ回路９を介してクロック信号を入力する。
【００１７】
コア１，２は、夫々、演算器、内部メモリ、プログラムカウンタ、及び割込みコントローラ等を備え、同一の処理を並列して実行する。演算器は、それぞれ、命令レジスタ及びデコーダを備える。内部メモリは、それぞれ、データレジスタを備える。プログラムカウンタは、次に実行されるべき命令コードが記憶されているフラッシュメモリ７またはＲＯＭ８上のアドレス（番地）を保持する。割込みコントローラは、コア１とコア２とがバス１０を介さずに互いに割込み指令を与えるためのものである。
【００１８】
クロック生成回路３は、可変周波数発生回路（PLL（Phase Locked Loop)）等を備える。クロック生成回路３は、クロック信号生成手段の一例である。クロック生成回路３は、例えば、外部端末からＩ／Ｏ回路９を介して入力されたクロックＣＬＫ、またはＩＣチップＣが備える内部発振器（図示せず）から入力されたクロックＣＬＫから可変周波数発生回路により、コア１、コア２、切替制御レジスタ５、ＲＡＭ６、フラッシュメモリ７、ＲＯＭ８、及びＩ／Ｏ回路９用のクロック信号を生成する。例えば、クロック生成回路３は、入力されたクロックＣＬＫに基づいて、クロック周波数が６０ＭＨｚのクロック信号（システムクロック）を生成し、生成したクロック信号をコア１及びクロック切替回路４へ出力する。また、クロック生成回路３は、入力されたクロックＣＬＫを、切替制御レジスタ５、ＲＡＭ６、フラッシュメモリ７、ＲＯＭ８、及びＩ／Ｏ回路９へ出力する。
【００１９】
クロック切替回路４は、インバータ（論理反転回路）、及びセレクタ等を備える。インバータは、クロック信号遅延手段の一例である。インバータは、クロック生成回路３から入力されたクロック信号を半周期遅延（例えば、クロック周波数が６０ＭＨｚである場合、１クロック（１周期）に相当する時間（１７ｎｓ）の“1/2”の時間遅延）させる。言い換えれば、インバータは、入力されたクロック信号の論理レベル（ハイレベルとローレベル）を反転させる。セレクタは、切替制御レジスタ５から出力された信号の論理レベルに応じて、クロック生成回路３から入力されたクロック信号と、インバータにより半周期遅延されたクロック信号との何れか一方のクロック信号を選択可能になっている。例えば、ハイレベルの信号が入力された場合、インバータにより半周期遅延されたクロック信号が選択される。これにより選択されたクロック信号がコア２へ出力される。図１の例では、インバータにより半周期遅延されたクロック信号が出力された例を示している。これにより、コア２へ入力されるクロック信号は、コア１へ入力されるクロック信号よりも半周期遅延（言い換えれば、クロック信号の論理レベルが反転）することになる。
【００２０】
切替制御レジスタ５は、例えば８ビットのレジスタであり、特定のビット（例えば最上位ビット）の２値状態（０または１）に応じた論理レベルの信号をクロック切替回路４のセレクタへ出力する。例えば、上記特定ビットは、初期状態では“０”が保持されているが、所定の条件下で、インバータの使用状態を表す「１」へ設定変更される。
【００２１】
ＲＡＭ６は、ワークメモリであり、コア１及びコア２による処理結果が一時的に記憶される。フラッシュメモリ７は、不揮発性メモリであり、コア１及びコア２に実行させるＯＳ及びアプリケーション等のプログラムを記憶する。また、フラッシュメモリ７には、セキュアな記憶領域が設けられており、この記憶領域には、暗号鍵（秘密鍵と公開鍵の組であってもよい）が記憶されている。なお、フラッシュメモリ７の代わりに、「Electrically Erasable Programmable Read-Only Memory」を適用しても構わない。また、ＲＯＭ８には、フラッシュメモリ７に記憶されるプログラムの一部が記憶される。
【００２２】
Ｉ／Ｏ回路９は、外部端末とのインターフェイスを担う。接触式のＩＣチップＣの場合、Ｉ／Ｏ回路９には、例えば、Ｃ１〜Ｃ８の８個の端子が備えられている。例えば、Ｃ１端子は電源端子、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子は外部端末との間で通信を行うための端子である。一方、非接触式のＩＣチップＣの場合、Ｉ／Ｏ回路９には、例えば、アンテナ、及び変復調回路が備えられている。なお、外部端末の例としては、ＩＣカード発行機、ＡＴＭ、改札機、認証用ゲート等が挙げられる。或いは、ＩＣカード１が通信機器に組み込まれる場合、外部端末には通信機器の機能を担う制御部が該当する。
【００２３】
以上の構成において、コア１は、クロック生成回路３により生成されたクロック信号を入力し、当該クロック信号に同期して処理を行う。一方、コア２は、クロック生成回路３により生成されたクロック信号、またはクロック生成回路３により生成され切替制御レジスタ５のインバータにより半周期遅延したクロック信号を入力し、当該クロック信号に同期してコア１と同一の処理を行う。このような処理は、例えば外部端末からのコマンドが受信された場合に、以下の（１）〜（４）の流れで繰り返し行われる。
【００２４】
（１）プログラムカウンタが指し示すアドレスに記憶されている命令コードが、フラッシュメモリ７から命令レジスタにフェッチされる（命令読出）。
【００２５】
（２）フェッチされた命令コードがデコーダによって解釈（デコード）される（命令解釈）。なお、命令コードは、アプリケーションまたはＯＳに記述されている。例えば、複数のアプリケーションから使用される暗号用命令コードなどは、ＯＳに記述されている。
【００２６】
（３）解釈された命令が実行される（命令実行）。なお、命令実行により、例えば、通常の算術演算、論理演算、暗号化演算、復号演算等が行われる。
【００２７】
（４）演算結果がＲＡＭ６に書き込まれる（書き込み）。書き込み後、プログラムカウンタの値が進められ、次の命令コードがフェッチされることになる。
【００２８】
例えば、外部端末から受信されたコマンドが、暗号化演算または復号演算等を伴う認証処理（セキュリティ処理の一例）を要求するコマンド（認証コマンド）でない場合、コア１は、切替制御レジスタ５の特定ビットの設定変更を行うことなく（初期状態を表す“０”）、コア２へ認証処理の要求を行う。この場合、コア１及びコア２へは、クロック生成回路３により生成された同一のクロック信号が入力される。こうして、コア１及びコア２は、クロック生成回路３により生成されたクロック信号を入力し、当該クロック信号に同期して同一の処理を行う。なお、例えば認証処理であることが判定される際に、アプリケーションのレベルで判定される場合もあれば（認証コマンドを受信した場合など）、ＯＳのレベルで判定される場合もある（暗号化演算実行時など）。
【００２９】
一方、外部端末から受信されたコマンドが、暗号化演算または復号演算等を伴う認証処理（セキュリティ処理の一例）を要求するコマンドである場合、コア１は、切替制御レジスタ５の特定ビットを、初期状態を表す“０”から、インバータの使用状態を表す“１”へ設定変更する。これにより、クロック切替回路４のセレクタは、切替制御レジスタ５から出力された信号の論理レベル（例えば、ハイレベル）に応じて、インバータにより半周期遅延されたクロック信号を選択するように切り替える。そして、コア１は、コア２へ認証処理の要求を行う。この場合、コア１へは、クロック生成回路３により生成されたクロック信号が入力される一方、コア２へは、当該クロック信号から半周期遅延されたクロック信号が入力される。
【００３０】
こうして、コア１は、クロック生成回路３により生成されたクロック信号を入力し、当該クロック信号に同期して処理を行う一方、コア２は、クロック生成回路３により生成され切替制御レジスタ５のインバータにより半周期遅延したクロック信号を入力し、当該クロック信号に同期してコア１と同一の処理を行う。
【００３１】
図２は、コア１及びコア２が同じクロック信号に同期して同一の処理を行ったときの消費電力の一例を示す図である。図２の場合、命令実行時に消費電力が最も高くなっており、コア１の命令実行とコア２の命令実行とが同じタイミングであることから、合計消費電力が２倍に増長されている。一方、図３は、コア１がクロック信号に同期して認証処理を行うと共に、コア２が当該クロック信号から半周期遅延したクロック信号に同期して同一の認証処理を行ったときの消費電力の一例を示す図である。図３の場合、コア１の命令実行とコア２の命令実行とが半周期ずれていることから、図２の場合に比べ、合計消費電力が平坦化されている。
【００３２】
以上説明したように、上記実施形態によれば、ＩＣチップＣは、クロック生成回路３により生成されたクロック信号を半周期遅延させるインバータを備え、コア１は、クロック生成回路３により生成されたクロック信号を入力し、当該クロック信号に同期して処理を行い、コア２は、クロック生成回路３により半周期遅延したクロック信号を入力し、当該クロック信号に同期してコア１と同一の処理を行うように構成したので、コア１及びコア２が同一の処理を実行してもサイドチャネル情報が増長されず、高い耐タンパ性を実現することができる。また、コア２は、認証処理等のセキュリティ処理以外の処理を行う場合、コア１と同じクロック信号を入力し、当該クロック信号に同期して当該処理を行うように構成したので、クロック信号の遅延による処理時間の遅延を最低限に抑えることができる。
【００３３】
なお、上記実施形態においては、クロック信号遅延手段としてインバータを適用した場合を説明したが、クロック信号の立ち上がりエッジと立ち下がりエッジとを検出するクロック検知回路を用いてクロック信号を半周期遅延させるように構成してもよい。この場合、ＩＣチップＣには、クロック切替回路４に代えてクロック検知回路が備えられ、当該クロック検知回路は、コア１とコア２のそれぞれに接続される。ここで、コア１とコア２の共通のクロック検知回路が備えられてもよいし、コア１とコア２と別々のクロック検知回路が備えられてもよい。そして、コア１に接続されるクロック検知回路はクロック信号の立ち上がりエッジを検出してクロックの開始位置とし、コア２に接続されるクロック検知回路はクロック信号の立ち下がりエッジを検出してクロックの開始位置とする。これにより、コア２は、コア１に入力されるクロック信号に対して半周期遅延したクロック信号を入力し、当該クロック信号に同期して前記処理を行うことができる。また、上記実施形態においては、クロック信号遅延手段としてインバータを例にとり、入力されたクロック信号を半周期（０．５周期）遅延（所定時間遅延の一例）させるように構成した。この場合、処理速度と、本発明の効果（サイドチャネル情報が増長されない）との兼ね合いから好適であるが、半周期遅延させることに代えて、クロック信号遅延手段は、入力されたクロック信号を１．５周期または２周期（或いは０．５周期、１．５周期、及び２周期以外の時間）遅延させるように構成してもよく、この構成であっても本発明の効果を発揮することができる。また、上記実施形態においては、２つのコアを備えたＩＣチップを例にとって説明したが、３つ以上のコアを備えるマルチコアプロセッサに対しても本発明は適用可能である。
【符号の説明】
【００３４】
１，２  コア
３  クロック生成回路
４  クロック切替回路
５  切替制御レジスタ
６  ＲＡＭ
７  フラッシュメモリ
８  ＲＯＭ
９  Ｉ／Ｏ回路
１０  バス
Ｃ  ＩＣチップ
【図１】
0006516097.tif 000002
【図２】
0006516097.tif 000003
【図３】
0006516097.tif 000004