図面 (/)

技術 演算装置、演算方法、及び演算処理プログラム

出願人 大日本印刷株式会社
発明者 山田真生
出願日 2015年5月28日 (5年7ヶ月経過) 出願番号 2015-108857
公開日 2016年12月28日 (4年0ヶ月経過) 公開番号 2016-224617
状態 特許登録済
技術分野 デジタルマーク記録担体 暗号化・復号化装置及び秘密通信
主要キーワード 検算処理 割込み指令 割込み可能 ロックステップ ロールバック方式 暗号コプロセッサ 演算処理プログラム ロールフォワード
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2016年12月28日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (5)

課題

暗号化処理等のセキュリティ処理による演算結果を検算する場合であっても、処理の高速化を実現することが可能な演算装置演算方法、及び演算処理プログラムを提供する。

解決手段

ICチップCは、外部から受信されたコマンドに応じて、データに対するセキュリティ処理を実行し当該セキュリティ処理による演算結果を用いてコマンドに応じたコマンド処理を実行するコア1と、セキュリティ処理による演算結果を検算する検算処理を実行するコア2とを備える。そして、コア2は、コア1によるコマンド処理と並行して検算処理を実行し、当該検算処理の結果が良好でない場合に、コア1によるコマンド処理を停止させる。

概要

背景

セキュリティ性が要求されるICカードでは、外部からの攻撃などによる不正動作に対する対策が採られている必要がある。外部からの攻撃とは、ICカードに搭載されたICチップ誤動作を起こさせるための方法であり、代表的な攻撃方法としてDFA(Differential Fault Analysis)が知られている。この攻撃方法では、例えば、ICチップに対してレーザ照射を行って出力された誤演算結果を、正しい演算結果と比較して解析することにより、攻撃者ICチップ内部の情報を得ることが可能である。特許文献1には、ICカード用マイコンなどに搭載している暗号コプロセッサにおいて、誤動作により暗号演算結果期待値と異なる値をチップ外部に出力することを回避する方法として、逆算を行う検算方法が開示されている。

概要

暗号化処理等のセキュリティ処理による演算結果を検算する場合であっても、処理の高速化を実現することが可能な演算装置演算方法、及び演算処理プログラムを提供する。ICチップCは、外部から受信されたコマンドに応じて、データに対するセキュリティ処理を実行し当該セキュリティ処理による演算結果を用いてコマンドに応じたコマンド処理を実行するコア1と、セキュリティ処理による演算結果を検算する検算処理を実行するコア2とを備える。そして、コア2は、コア1によるコマンド処理と並行して検算処理を実行し、当該検算処理の結果が良好でない場合に、コア1によるコマンド処理を停止させる。

目的

本発明は、上記問題等に鑑みてなされたものであり、暗号化処理等のセキュリティ処理による演算結果を検算する場合であっても、処理の高速化を実現することが可能な演算装置、演算方法、及び演算処理プログラムを提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

外部から受信されたコマンドに応じて、データに対するセキュリティ処理を実行し当該セキュリティ処理による演算結果を用いて前記コマンドに応じたコマンド処理を実行する第1の演算ユニットと、前記セキュリティ処理による演算結果を検算する検算処理を実行する第2の演算ユニットとを備える演算装置であって、前記第2の演算ユニットは、前記第1の演算ユニットによる前記コマンド処理と並行して前記検算処理を実行し、当該検算処理の結果が良好でない場合に、前記第1の演算ユニットによる前記コマンド処理を停止させることを特徴とする演算装置。

請求項2

前記コマンド処理は、前記演算結果を含む応答データを生成し当該生成した応答データを外部へ出力する処理、または前記演算結果を前記演算装置が備える不揮発性メモリへ書き込む処理であることを特徴とする請求項1に記載の演算装置。

請求項3

前記第2の演算ユニットは、前記検算処理の実行前に、前記第1の演算ユニットによる前記セキュリティ処理と並行して前記セキュリティ処理を実行することを特徴とする請求項1または2に記載の演算装置。

請求項4

前記第2の演算ユニットは、前記第1の演算ユニットによる前記コマンド処理と並行して前記検算処理を実行し、当該検算処理の結果が良好でない場合に、前記第1の演算ユニットに停止指令を出力し、前記第1の演算ユニットは、前記第2の演算ユニットから所定時間内に停止指令がない場合、前記コマンド処理を完了することを特徴とする請求項1乃至3の何れか一項に記載の演算装置。

請求項5

第1の演算ユニットと、第2の演算ユニットとを備える演算装置における演算方法であって、前記第1の演算ユニットが、外部から受信されたコマンドに応じて、データに対するセキュリティ処理を実行し当該セキュリティ処理による演算結果を用いて前記コマンドに応じたコマンド処理を実行するステップと、前記第2の演算ユニットが、前記セキュリティ処理による演算結果を検算する検算処理を、前記第1の演算ユニットによる前記コマンド処理と並行して実行し、当該検算処理の結果が良好でない場合に、前記第1の演算ユニットによる前記コマンド処理を停止させるステップと、を含むことを特徴とする演算方法。

請求項6

第1の演算ユニットと、第2の演算ユニットとを備えるコンピュータに、前記第1の演算ユニットが、外部から受信されたコマンドに応じて、データに対するセキュリティ処理を実行し当該セキュリティ処理による演算結果を用いて前記コマンドに応じたコマンド処理を実行するステップと、前記第2の演算ユニットが、前記セキュリティ処理による演算結果を検算する検算処理を、前記第1の演算ユニットによる前記コマンド処理と並行して実行し、当該検算処理の結果が良好でない場合に、前記第1の演算ユニットによる前記コマンド処理を停止させるステップと、を実行させることを特徴とする演算処理プログラム

技術分野

0001

本発明は、複数のコアを備え、並列処理を行うことが可能な演算装置の技術分野に関する。

背景技術

0002

セキュリティ性が要求されるICカードでは、外部からの攻撃などによる不正動作に対する対策が採られている必要がある。外部からの攻撃とは、ICカードに搭載されたICチップ誤動作を起こさせるための方法であり、代表的な攻撃方法としてDFA(Differential Fault Analysis)が知られている。この攻撃方法では、例えば、ICチップに対してレーザ照射を行って出力された誤演算結果を、正しい演算結果と比較して解析することにより、攻撃者ICチップ内部の情報を得ることが可能である。特許文献1には、ICカード用マイコンなどに搭載している暗号コプロセッサにおいて、誤動作により暗号演算結果期待値と異なる値をチップ外部に出力することを回避する方法として、逆算を行う検算方法が開示されている。

先行技術

0003

特開2010−21637号公報

発明が解決しようとする課題

0004

ところで、上記検算は、初めの演算結果が得られた後に行われるものであるため、その分時間がかかってしまう。そのため、例えば、ICチップが、外部からのコマンドに応じて、上記演算結果を含むレスポンスを外部に出力する場合、応答が遅くなってしまう。

0005

そこで、本発明は、上記問題等に鑑みてなされたものであり、暗号化処理等のセキュリティ処理による演算結果を検算する場合であっても、処理の高速化を実現することが可能な演算装置、演算方法、及び演算処理プログラムを提供することを目的とする。

課題を解決するための手段

0006

上記課題を解決するために、請求項1に記載の発明は、外部から受信されたコマンドに応じて、データに対するセキュリティ処理を実行し当該セキュリティ処理による演算結果を用いて前記コマンドに応じたコマンド処理を実行する第1の演算ユニットと、前記セキュリティ処理による演算結果を検算する検算処理を実行する第2の演算ユニットとを備える演算装置であって、前記第2の演算ユニットは、前記第1の演算ユニットによる前記コマンド処理と並行して前記検算処理を実行し、当該検算処理の結果が良好でない場合に、前記第1の演算ユニットによる前記コマンド処理を停止させることを特徴とする。

0007

請求項2に記載の発明は、請求項1に記載の演算装置において、前記コマンド処理は、前記演算結果を含む応答データを生成し当該生成した応答データを外部へ出力する処理、または前記演算結果を前記演算装置が備える不揮発性メモリへ書き込む処理であることを特徴とする。

0008

請求項3に記載の発明は、請求項1または2に記載の演算装置において、前記第2の演算ユニットは、前記検算処理の実行前に、前記第1の演算ユニットによる前記セキュリティ処理と並行して前記セキュリティ処理を実行することを特徴とする。

0009

請求項4に記載の発明は、請求項1乃至3の何れか一項に記載の演算装置において、前記第2の演算ユニットは、前記第1の演算ユニットによる前記コマンド処理と並行して前記検算処理を実行し、当該検算処理の結果が良好でない場合に、前記第1の演算ユニットに停止指令を出力し、前記第1の演算ユニットは、前記第2の演算ユニットから所定時間内に停止指令がない場合、前記コマンド処理を完了することを特徴とする。

0010

請求項5に記載の発明は、第1の演算ユニットと、第2の演算ユニットとを備える演算装置における演算方法であって、前記第1の演算ユニットが、外部から受信されたコマンドに応じて、データに対するセキュリティ処理を実行し当該セキュリティ処理による演算結果を用いて前記コマンドに応じたコマンド処理を実行するステップと、前記第2の演算ユニットが、前記セキュリティ処理による演算結果を検算する検算処理を、前記第1の演算ユニットによる前記コマンド処理と並行して実行し、当該検算処理の結果が良好でない場合に、前記第1の演算ユニットによる前記コマンド処理を停止させるステップと、を含むことを特徴とする。

0011

請求項6に記載の発明は、第1の演算ユニットと、第2の演算ユニットとを備えるコンピュータに、前記第1の演算ユニットが、外部から受信されたコマンドに応じて、データに対するセキュリティ処理を実行し当該セキュリティ処理による演算結果を用いて前記コマンドに応じたコマンド処理を実行するステップと、前記第2の演算ユニットが、前記セキュリティ処理による演算結果を検算する検算処理を、前記第1の演算ユニットによる前記コマンド処理と並行して実行し、当該検算処理の結果が良好でない場合に、前記第1の演算ユニットによる前記コマンド処理を停止させるステップと、を実行させることを特徴とする。

発明の効果

0012

本発明によれば、暗号化処理等のセキュリティ処理による演算結果を検算する場合であっても、処理の高速化を実現することができる。

図面の簡単な説明

0013

ICチップCの概要構成例を示す図である。
実施例1におけるコア1とコア2の処理を示すフローチャートである。
実施例2におけるコア1とコア2の処理を示すフローチャートである。
実施例3におけるコア1とコア2の処理を示すフローチャートである。

実施例

0014

以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、マイクロプロセッサであるコアを複数備えるICチップに対して本発明を適用した場合の実施の形態である。

0015

先ず、図1を参照して、本実施形態に係るICチップの概要構成について説明する。図1は、ICチップCの概要構成例を示す図である。ICチップCは、本発明の演算装置及びコンピュータの一例である。なお、ICチップCは、キャッシュカード電子マネーカードクレジットカード社員カード等に搭載されて使用される。或いは、ICチップCは、スマートフォン携帯電話機等の通信機器に組み込まれる。ICチップCは、通信機器の回路基板上に直接組み込んで構成するようにしてもよい。

0016

ICチップCは、図1に示すように、コア1、コア2、コプロセッサ3、RAM(Random Access Memory)4、フラッシュメモリ5、ROM(Read Only Memory)6、及びI/O回路7を備えて構成される。コア1は、第1の演算ユニットの一例である。コア2は、第2の演算ユニットの一例である。コア1とコア2とは並列処理が可能に構成されており、コア1とコア2とは、バス8を介さずに互いに割込み可能に構成されている。コプロセッサ3は、コア1またはコア2からの指令に従って、暗号鍵復号鍵)を用いて暗号化演算及び復号演算を行う。なお、コプロセッサ3の機能は、コア1とコア2のそれぞれに組み込まれるように構成してもよく、この場合、コア1とコア2がそれぞれ暗号化演算及び復号演算を行うことになる。コア1、コア2、コプロセッサ3、RAM4、フラッシュメモリ5、ROM6、及びI/O回路7は、バス8に接続されている。

0017

フラッシュメモリ5は、不揮発性メモリであり、コア1及びコア2に実行させるOS及びアプリケーション等のプログラムを記憶する。また、フラッシュメモリ5には、セキュアな記憶領域が設けられており、この記憶領域には、暗号鍵(秘密鍵公開鍵の組であってもよい)が記憶されている。また、フラッシュメモリ5のセキュアな記憶領域には、例えば電子マネー電子バリュー)の残高を示す残高データが記憶される場合もある。なお、フラッシュメモリ5の代わりに、「Electrically Erasable Programmable Read-Only Memory」を適用しても構わない。I/O回路7は、外部端末とのインターフェイスを担う。接触式のICチップCの場合、I/O回路7には、例えば、C1〜C8の8個の端子が備えられている。例えば、C1端子は電源端子、C2端子はリセット端子、C3端子はクロック端子、C5端子はグランド端子、C7端子は外部端末との間で通信を行うための端子である。一方、非接触式のICチップCの場合、I/O回路7には、例えば、アンテナ、及び変復調回路が備えられている。なお、外部端末の例としては、ICカード発行機ATM改札機認証用ゲート等が挙げられる。或いは、ICカード1が通信機器に組み込まれる場合、外部端末には通信機器の機能を担う制御部が該当する。

0018

コア1は、外部端末から受信されたコマンドに応じて、例えばコマンドと共に受信されたデータに対するセキュリティ処理を実行し当該セキュリティ処理による演算結果を用いてコマンドに応じたコマンド処理を実行する。ここで、セキュリティ処理の例として、データの暗号化(暗号鍵を用いて暗号化)演算をコプロセッサ3に行わせる処理(以下、「暗号化処理」という)、暗号データ復号(暗号鍵(復号鍵)を用いて復号)演算をコプロセッサ3に行わせる処理(以下、「復号処理」という)、データのハッシュ化演算(所定のハッシュ関数を用いて、あるデータから固定長ビット列であるハッシュ値不可逆な値)を算出する演算)等を行う処理(以下、「ハッシュ化処理」という)などがある。また、複数のデータが用いられる場合、ハッシュ化演算の代わりにXOR演算が行われるように構成してもよい。暗号化処理による演算結果として、暗号化されたデータ(暗号データ)が得られる。また、復号処理による演算結果として、復号されたデータ(復号データ)が得られる。また、ハッシュ化処理による演算結果として、例えば認証コードに用いられるダイジェストが得られる。なお、演算結果は、一時的にRAM4に記憶される。また、コマンド処理の例として、暗号化処理またはハッシュ化処理による演算結果を含む応答データを生成し当該生成した応答データを外部端末へ出力(応答)する処理、復号処理による演算結果をフラッシュメモリ5へ書き込む処理、フラッシュメモリ5に記憶されているレコード検索する処理などがある。

0019

コア2は、コア1のセキュリティ処理による演算結果を例えばRAM4から取得し、当該演算結果を検算する検算処理を実行する。例えば、コア1の暗号化処理による演算結果を検算する検算処理では、コア2は、当該演算結果である暗号データの復号演算をコプロセッサ3に行わせることで得た復号データと、コア1の暗号化処理前のデータとが一致するかを確認し、一致する場合、当該検算処理の結果が良好であると判定する。また、コア1の復号処理による演算結果を検算する検算処理では、コア2は、当該演算結果である復号データの暗号化演算をコプロセッサ3に行わせることで得た暗号データと、コア1の復号処理前の暗号データとが一致するかを確認し、一致する場合、当該検算処理の結果が良好であると判定する。また、コア1のハッシュ化処理による演算結果を検算する検算処理では、コア2は、コア1と同一のデータで同一のハッシュ化演算を行うことで得たダイジェストと、コア1のハッシュ化処理による演算結果であるダイジェストとが一致するかを確認し、一致する場合、当該検算処理の結果が良好であると判定する。本実施形態では、コア2は、コア1によるコマンド処理と並行して上記検算処理を実行し、当該検算処理の結果が良好でない場合に、コア1によるコマンド処理を停止させる。

0020

次に、本実施形態に係るICチップCの動作について、実施例1〜実施例3に分けて説明する。

0021

(実施例1)
実施例1は、コア1がセキュリティ処理として暗号化処理を実行する場合の例である。図2(A),(B)は、実施例1におけるコア1とコア2の処理を示すフローチャートである。図2(A)に示す処理は、例えばコア1が接触または非接触で外部端末と接続すると、コア1は例えば認証要求を外部端末へ送信する。外部端末は、コア1からの認証要求に応じて、乱数を生成し、当該乱数が付加された情報要求コマンドをコア1へ送信し、さらに、外部端末が記憶している暗号鍵(ICチップCが記憶する暗号鍵と同一)を用いて当該乱数の暗号化演算を行うことで暗号データを算出する。一方、コア1は、情報要求コマンドを受信すると、図2(A)に示す処理を開始する。図2(A)に示す処理が開始されると、コア1は、情報要求コマンドと共に受信された乱数を受信データとしてRAM4の所定の記憶領域に記憶する(ステップS1)。

0022

次いで、コア1は、上述した暗号化処理を実行する(ステップS2)。この暗号化処理では、コア1は、上記受信データをコプロセッサ3へ出力して当該受信データの暗号化演算をコプロセッサ3に行わせる。これにより、コプロセッサ3は、セキュアな記憶領域に記憶されている暗号鍵を用いて受信データの暗号化演算を行うことで算出した暗号データをコア1へ出力する。次いで、コア1は、コプロセッサ3から演算結果として暗号データを取得すると、当該暗号データをRAM4の所定の記憶領域に記憶し(ステップS3)、検算指令をコア2へ出力し(ステップS4)、ステップS5以降のコマンド処理を実行する。一方、コア2は、コア1からの検算指令を受信すると、図2(B)に示す検査処理を開始する。つまり、コア1のコマンド処理とコア2の検算処理とは、以下に説明するように並行して実行されることになる。

0023

コア1は、コプロセッサ3から取得した暗号データを含む応答データを生成する(ステップS5)。次いで、コア1は、例えば情報要求コマンドの受信時刻及び処理内容を含むログデータを生成する(ステップS6)。次いで、コア1は、ステップS6で生成したログデータをフラッシュメモリ5に書き込む(ステップS7)。次いで、コア1は、所定時間内にコア2から停止指令(例えば、割込み指令)を受信したか否かを判定する(ステップS8)。ここで、所定時間は、例えば情報要求コマンドを受信してから応答するまでの時間として予め定められた応答時間より短く、且つ、コア2による検査処理に要する時間(推定時間)より長く設定される。コア1は、所定時間内にコア2から停止指令を受信しない場合(ステップS8:NO)、ステップS5で生成した応答データを外部端末へ送信する(ステップS9)ことでコマンド処理を完了し、図2(A)に示す処理を終了する。外部端末は、ICチップCから応答データを受信すると、上述したように算出した暗号データと、応答データに含まれる暗号データとを比較して、一致する場合にICチップCの認証OKの判定をし、以降の処理を進める。一方、コア1は、所定時間内にコア2から停止指令を受信した場合(ステップS8:YES)、コマンド処理を停止し、ICチップCの動作を停止する。

0024

一方、コア2は、RAM4の所定の記憶領域から上記受信データ及び暗号データを取得する(ステップS11)。次いで、コア2は、復号処理を実行する(ステップS12)。この復号処理では、コア2は、ステップS11で取得した暗号データをコプロセッサ3へ出力して当該暗号データの復号演算をコプロセッサ3に行わせる。これにより、コプロセッサ3は、セキュアな記憶領域に記憶されている暗号鍵を用いて暗号データの復号演算を行うことで算出した復号データをコア2へ出力する。次いで、コア2は、コプロセッサ3から演算結果として復号データを取得すると、当該復号データと、ステップS11で取得した受信データとを比較して一致するかを確認する(ステップS13)。コア2は、復号データと受信データとが一致しない場合(ステップS13:NO)、コア1へ停止指令(例えば、割込み指令)を出力する(ステップS14)。一方、コア2は、復号データと受信データとが一致する場合(ステップS13:YES)、図2(B)に示す処理を終了する。なお、ステップS13において、コア2は、復号データと受信データとが一致しない場合、コア1へ停止指令(例えば、割込み指令)を出力することに代えて、当該検算処理の結果をRAM4やレジスターに記録(当該検算処理が良好でない場合、停止指令に相当する情報が記録されることになる)してもよい(実施例2及び実施例3でも同様)。この場合、上記ステップS8において、コア1は、所定時間内にコア2から停止指令を受信したか否かを判定することに代えて、所定時間内にRAM4やレジスターに記録された「検算処理の結果」を確認し(つまり、コア1が検算処理の結果を所定時間に渡って監視する(例えば、フラグをポーリングする)、当該検算処理の結果が良好であるか否かを判定してもよい。そして、コア1は、当該検算処理の結果が良好である場合、ステップS5で生成した応答データを外部端末へ送信する(ステップS9)ことでコマンド処理を完了し、図2(A)に示す処理を終了する。一方、コア1は、当該検算処理の結果が良好でない場合(つまり、この場合、コア1は、当該検算処理の結果が良好でないことを、コア2からの停止指令として認識)、コマンド処理を停止し、ICチップCの動作を停止する。

0025

なお、図2(A),(B)に示す処理は、コア1がセキュリティ処理としてハッシュ化処理を実行する場合にも適用可能である。この場合、コア1は、上記ステップS2において、ハッシュ化処理を実行して上述したようにダイジェストを生成し、上記ステップS3において、生成したダイジェストをRAM4の所定の記憶領域に記憶し、上記ステップS5において、ダイジェストを含む応答データを生成する。一方、コア2は、上記ステップS11において、受信データ及びダイジェストを取得し、上記ステップS12において、ハッシュ化処理を実行してダイジェストを取得し、上記ステップS13において、受信したダイジェストと、生成したダイジェストとが一致するか否かを確認し、一致しない場合、停止指令をコア1へ出力する。

0026

(実施例2)
実施例2は、コア1がセキュリティ処理として復号処理を実行する場合の例である。図3(A),(B)は、実施例2におけるコア1とコア2の処理を示すフローチャートである。図3(A)に示す処理は、例えばコア1が接触または非接触で外部端末と接続すると、コア1は例えば決済要求を外部端末へ送信する。外部端末は、コア1からの決済要求に応じて、例えば商品支払い金額についての決済処理を実行し、外部端末が記憶している暗号鍵を用いて、支払い金額に対応する電子バリューの暗号化演算を行うことで暗号データを算出する。そして、外部端末は、算出した暗号データが付加された残高減算コマンドをコア1へ送信する。一方、コア1は、残高減算コマンドを受信すると、図3(A)に示す処理を開始する。図3(A)に示す処理が開始されると、コア1は、残高減算コマンドと共に受信された暗号データを受信データとしてRAM4の所定の記憶領域に記憶する(ステップS21)。

0027

次いで、コア1は、上述した復号処理を実行する(ステップS22)。この復号処理では、コア1は、上記受信データをコプロセッサ3へ出力して当該受信データの復号演算をコプロセッサ3に行わせる。これにより、コプロセッサ3は、セキュアな記憶領域に記憶されている暗号鍵を用いて受信データの復号演算を行うことで算出した復号データ(つまり、電子バリュー)をコア1へ出力する。次いで、コア1は、コプロセッサ3から演算結果として復号データを取得すると、当該復号データをRAM4の所定の記憶領域に記憶し(ステップS23)、検算指令をコア2へ出力し(ステップS24)、ステップS25以降のコマンド処理を実行する。一方、コア2は、コア1からの検算指令を受信すると、図3(B)に示す検査処理を開始する。つまり、コア1のコマンド処理とコア2の検算処理とは、以下に説明するように並行して実行されることになる。

0028

コア1は、フラッシュメモリ5における書き換え対象領域(セキュアな記憶領域)に記憶されている残高データをRAM4のワーク領域に取得し、当該残高データをフラッシュメモリ2の退避領域(書き換え対象領域とは異なる領域)に書き込んだ後(トランザクション)、上記ワーク領域に記憶された残高データが示す残高から、ステップS22で復号された復号データが示す電子バリューを減算することで残高データを更新する(ステップS25)。次いで、コア1は、例えば残高減算コマンドの受信時刻及び処理内容を含むログデータを生成する(ステップS26)。次いで、コア1は、ステップS26で生成したログデータをフラッシュメモリ5に書き込む(ステップS27)。次いで、コア1は、所定時間内にコア2から停止指令を受信したか否かを判定する(ステップS28)。ここで、所定時間は、例えばコア2による検査処理に要する時間(推定時間)より長く設定される。コア1は、所定時間内にコア2から停止指令を受信しない場合(ステップS28:NO)、フラッシュメモリ5における書き換え対象領域に記憶されている残高データを、ステップS25で更新された残高データで書き換える(ステップS29)。次いで、コア1は、残高更新完了メッセージを外部端末へ送信する(ステップS30)ことでコマンド処理を完了し、図3(A)に示す処理を終了する。一方、コア1は、所定時間内にコア2から停止指令を受信した場合(ステップS28:YES)、コマンド処理を停止し、ICチップCの動作を停止する。

0029

一方、コア2は、RAM4の所定の記憶領域から上記受信データ(暗号データ)及び復号データを取得する(ステップS31)。次いで、コア2は、暗号化処理を実行する(ステップS32)。この暗号化処理では、コア2は、ステップS31で取得した復号データをコプロセッサ3へ出力して当該復号データの暗号化演算をコプロセッサ3に行わせる。これにより、コプロセッサ3は、セキュアな記憶領域に記憶されている暗号鍵を用いて復号データの暗号化演算を行うことで算出した暗号データをコア2へ出力する。次いで、コア2は、コプロセッサ3から演算結果として暗号データを取得すると、当該暗号データと、ステップS31で取得した受信データとを比較して一致するかを確認する(ステップS33)。コア2は、暗号データと受信データとが一致しない場合(ステップS33:NO)、コア1へ停止指令を出力する(ステップS34)。一方、コア2は、暗号データと受信データとが一致する場合(ステップS33:YES)、図3(B)に示す処理を終了する。

0030

なお、上記の例では、書き換え対象領域のデータ(つまり、既に書き込まれているデータ)を、フラッシュメモリ5の退避領域に退避させた後に当該データを書き換える書き換え処理(いわゆるロールバック方式)の例を示したが、ロールフォワード方式が適用される場合もある。この場合、コア1は、上記ステップS25において、書き換え対象領域に記憶されている残高データをRAM4のワーク領域に取得し、当該残高データが示す残高から、ステップS22で復号された復号データが示す電子バリューを減算することで残高データを更新し、更新された残高データを書き換え対象領域とは異なる領域(一時的な領域)に書き込む。そして、コア1は、上記ステップS29において、フラッシュメモリ5における書き換え対象領域に記憶されている残高データを、上記一時的な領域に記憶されている残高データ(更新された残高データ)で書き換える。或いは、コア1は、上記ステップS29において、残高データ(更新された残高データ)が記憶されている上記一時的な領域を書き換え対象領域(本領域)とするようにアドレスを変更する。

0031

以上説明したように、上記実施例1または実施例2によれば、コア2は、コア1によるコマンド処理と並行して検算処理を実行し、当該検算処理の結果が良好でない場合に、コア1によるコマンド処理を停止させるように構成したので、セキュリティ処理による演算結果を検算する場合であっても、処理の高速化を実現することができる。

0032

(実施例3)
実施例3は、実施例1の変形例であり、コア2が、検算処理の実行前に、コア1によるセキュリティ処理と並行してセキュリティ処理を実行する(いわゆるロックステップ)する場合の例である。図4(A),(B)は、実施例3におけるコア1とコア2の処理を示すフローチャートである。なお、図4(A)に示すステップS41〜S48の処理は、図2(A)に示すステップS1〜S3、及びS5〜S9の処理と同様である。一方、コア2は、情報要求コマンドを受信すると、図4(A)に示す処理を開始する。図4(A)に示す処理が開始されると、コア2は、コア1によりRAM4の所定の記憶領域に記憶された受信データを取得する(ステップS51)。次いで、コア2は、コア1と同様の暗号化処理を実行する(ステップS52)。次いで、コア2は、コプロセッサ3から演算結果として暗号データを取得すると、コア1によりRAM4の所定の記憶領域に記憶された暗号データを取得する(ステップS53)。次いで、コア2は、取得した互いの暗号データが一致するか否かを判定する(ステップS54)。コア2は、取得した互いの暗号データが一致すると判定した場合(ステップS54:YES)、ステップS55へ進み、実施例1と同様、復号処理を実行し、復号された復号データと、ステップS51で取得した受信データとを比較して一致するかを確認する(ステップS56)。コア2は、復号データと受信データとが一致しない場合(ステップS56:NO)、コア1へ停止指令を出力する(ステップS57)。一方、コア2は、復号データと受信データとが一致する場合(ステップS56:YES)、図4(B)に示す処理を終了する。一方、取得した互いの暗号データが一致しないと判定した場合(ステップS54:NO)、ステップS57へ進み、コア1へ停止指令を出力する。

0033

なお、実施例2の場合においても、コア2が、検算処理の実行前に、コア1によるセキュリティ処理と並行してセキュリティ処理を実行する(いわゆるロックステップ)するように構成してもよい。

0034

以上説明したように、上記実施例3によれば、コア2が、検算処理の実行前に、コア1によるセキュリティ処理と並行してセキュリティ処理を実行するように構成したので、処理の高速化を実現すると共に、攻撃者によりICチップCに対して巧妙な攻撃にも対処できるので、セキュリティを、より一層、向上することができる。

0035

なお、上記実施形態では、2つのコアを備えるICチップを例にとって説明したが、3つ以上のコアを備えるICチップに対しても本発明は適用できる。

0036

1,2コア
3コプロセッサ
4 RAM
5フラッシュメモリ
6 ROM
7 I/O回路
8バス
C ICチップ

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ