JP2013157761A - 半導体装置及び演算処理方法 - Google Patents

半導体装置及び演算処理方法 Download PDF

Info

Publication number
JP2013157761A
JP2013157761A JP2012016090A JP2012016090A JP2013157761A JP 2013157761 A JP2013157761 A JP 2013157761A JP 2012016090 A JP2012016090 A JP 2012016090A JP 2012016090 A JP2012016090 A JP 2012016090A JP 2013157761 A JP2013157761 A JP 2013157761A
Authority
JP
Japan
Prior art keywords
key
arithmetic processing
random number
result
dummy
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012016090A
Other languages
English (en)
Inventor
Yuji Asano
勇二 浅野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2012016090A priority Critical patent/JP2013157761A/ja
Publication of JP2013157761A publication Critical patent/JP2013157761A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】攻撃者による秘密鍵の推定を困難にする。
【解決手段】半導体装置(10)は、乱数生成部(27)と、正規鍵と、上記正規鍵の論理が反転されたダミー鍵とを格納可能な鍵格納エリア(17)と、上記正規鍵を用いた演算処理と、上記ダミー鍵を用いた演算処理とを、上記乱数生成部で生成された乱数の論理値に応じた順番で実行可能な演算処理部(11)とを含む。さらに上記半導体装置は、上記正規鍵を用いた演算処理の結果と、上記ダミー鍵を用いた演算処理の結果とを格納可能な演算結果格納エリア(17)を含む。上記演算処理部は、上記正規鍵を用いた演算処理の結果を上記演算結果格納エリアから取得する。正規鍵を用いた演算処理と、ダミー鍵を用いた演算処理との順番が乱数の論理値に応じて異なるため、攻撃者が故障アタックにより鍵の書き換えを行ったとしても、書き換えられた鍵が正規鍵なのか、ダミー鍵なのかを判別することができなくなる。
【選択図】図1

Description

本発明は、演算処理技術、さらには半導体装置における秘密鍵(単に「鍵」ともいう)の不正解読を阻止するための技術に関する。
マイクロコンピュータを搭載したICカードが知られている。ICカードの不正使用を防止するため、ICカード使用時には、ICカードとリーダライタとの間で認証処理が必要となる。このような2つの装置間の認証方法については、特許文献1(段落0002〜0009)に記載されている。
特許文献2には、データを暗号化/復号するタイミングを毎回変更し、ICチップの消費電流とICカードに記憶された暗号鍵と相関を無くすことで、DPA(Differential Power Analysis)に対して耐タンパー性をもたせるための技術が記載されている。
特開2011−010345号公報 特開2007−067942号公報
データを秘匿に記憶できるICカードは、ユーザ認証の用途やデータ通信の機密性を保持するために、秘密鍵を使用した暗号演算機能を備えている。秘密鍵を使用し、暗号演算を実行する際、攻撃者の何らかの故障アタック(例えばレーザアタック)によって鍵が書き換えられた場合、誤った結果を出力するか、もしくは書き換えられたことを検知してチップをリセットすることが考えられる。しかし、鍵が書き換えられた場合に誤った結果を出力するか、もしくは書き換えられたことを検知してチップをリセットすると、鍵を書き換えられたことが判明するため、攻撃者によって鍵を推定されるおそれがある。攻撃者による鍵の推定を防ぐことは、ICカードの機密性を保持するため重要となる。例えば電子商取引などのサービスを実現するシステムは、暗号技術などのセキュリティ技術を基盤として構築されており、そのようなシステムにおいては、鍵などの秘密情報を厳重に管理することが重要であるため、攻撃者による秘密鍵の推定が困難とされるICカード用マイクロコンピュータの重要性が日増しに高まっている。
本発明の目的は、攻撃者による秘密鍵の推定を困難にすることにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
すなわち、乱数を生成可能な乱数生成部と、正規鍵及び上記正規鍵の論理が反転されたダミー鍵を格納可能な鍵格納エリアと、上記正規鍵を用いた演算処理及び上記ダミー鍵を用いた演算処理を上記乱数生成部で生成された乱数の論理値に応じた順番で実行可能な演算処理部とを含んで半導体装置を構成する。さらに上記半導体装置には、上記正規鍵を用いた演算処理の結果と、上記ダミー鍵を用いた演算処理の結果とを格納可能な演算結果格納エリアを設ける。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、攻撃者による秘密鍵の推定を困難にすることができる。
半導体装置の一例とされるICカード用マイクロコンピュータの構成例ブロック図である。 図1に示されるICカード用マイクロコンピュータで実行される演算処理のフローチャートである。 図2に示される演算処理における主要処理の詳細なフローチャートである。 鍵テーブルの説明図である。 演算結果テーブルの説明図である。 図1に示されるICカード用マイクロコンピュータで実行される演算処理のフローチャートである。 図2に示される演算処理の比較対象とされる処理のフローチャートである。 鍵テーブルの説明図である。 演算結果テーブルの説明図である。
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕本発明の代表的な実施の形態に係る半導体装置(10)は、乱数を生成可能な乱数生成部(27)と、正規鍵及び上記正規鍵の論理が反転されたダミー鍵を格納可能な鍵格納エリア(17)と、上記正規鍵を用いた演算処理及び上記ダミー鍵を用いた演算処理を上記乱数生成部で生成された乱数の論理値に応じた順番で実行可能な演算処理部(11)とを含む。さらに上記半導体装置は、上記正規鍵を用いた演算処理の結果と、上記ダミー鍵を用いた演算処理の結果とを格納可能な演算結果格納エリア(17)を含む。上記演算処理部は、上記正規鍵を用いた演算処理の結果を、上記演算結果格納エリアから取得する。
上記の構成において、正規鍵を用いた演算処理と、ダミー鍵を用いた演算処理との順番が、乱数の論理値に応じて異なるため、攻撃者が故障アタックにより鍵の書き換えを行ったとしても、書き換えられた鍵が正規鍵なのか、ダミー鍵なのかを判別することができなくなる。鍵の推定は、攻撃者の故障アタックによって正規鍵が書き換えられた場合のチップの状態に基づいて行われるため、書き換えられた鍵が正規鍵なのか、ダミー鍵なのかを判別することができない状態では、攻撃者による鍵の推定は困難となる。
〔2〕上記〔1〕において、上記演算処理には、暗号化又は復号化処理と、上記暗号化又は復号化処理の結果を検証する検証処理とを含めることができる。上記演算処理部は、上記検証処理の結果に応じてリセットされるように構成することができる。
〔3〕上記〔2〕において、上記鍵格納エリアには、上記演算処理部によってアクセス可能なメモリに形成された鍵テーブルが形成され、上記乱数の論理値に応じて、上記鍵テーブルにおける上記正規鍵の格納箇所と上記ダミー鍵の格納箇所とが入れ替えられるように構成することができる。このように構成することにより、正規鍵の格納箇所の特定を困難にすることができる。
〔4〕上記〔3〕において、上記演算処理部は、上記鍵テーブルを作成するための鍵テーブル作成処理を実行し、上記鍵テーブル作成処理は、上記乱数の論理値にかかわらず、一定の処理サイクルで実行されるように構成することができる。これにより、乱数が論理値「0」のケースにおいても、乱数が論理値「1」のケースにおいても、同一の処理サイクル(ステップ301〜305のステップ)を経て鍵テーブルが作成されるため、乱数が論理値「0」のケースにおいても、乱数が論理値「1」のケースにおいても、鍵テーブルの作成開始から作成終了までに要する時間は、互いに等しくなる。このことは、乱数の論理値の推定を困難にする上で有効とされる。
〔5〕上記メモリには、上記ダミー鍵を用いた演算処理を上記演算処理部で実行するか否かを指定するためのフラグを設定可能なフラグ設定エリアを設けることができる。このフラグ設定エリアに設定されたフラグに応じて、上記ダミー鍵を用いた演算処理を実行するか否かを決定するようにすれば、必要に応じて上記ダミー鍵を用いた演算処理を実行することができるので、無意味な演算処理を行わずに済む。
〔6〕上記〔5〕において、上記乱数は、複数ビット構成とされる。このように、乱数を複数ビット構成とした場合、この複数ビット構成の乱数を外部からの故障アタックによって同時に論理固定することは困難であるため、セキュリティの強化を図ることができる。
〔7〕上記〔6〕において、上記半導体装置をICカード用マイクロコンピュータとすることができる。
〔8〕本発明の代表的な実施の形態に係る演算処理方法は、乱数生成部で乱数を生成し(201)、正規鍵と、上記正規鍵の論理が反転されたダミー鍵とを鍵格納エリアに格納し(202)、上記正規鍵を用いた演算処理と、上記ダミー鍵を用いた演算処理とを、上記乱数生成部で生成された乱数の論理値に応じた順番で演算処理部により実行する(205)。そして、上記正規鍵を用いた演算処理の結果と、上記ダミー鍵を用いた演算処理の結果とを演算結果格納エリア(206)に格納する。このとき、上記正規鍵を用いた演算処理の結果を、上記演算処理部によって、上記演算結果格納エリアから取得する。
上記の構成において、正規鍵を用いた演算処理と、ダミー鍵を用いた演算処理との順番が、乱数の論理値に応じて異なるため、攻撃者が故障アタックにより鍵の書き換えを行ったとしても、書き換えられた鍵が正規鍵なのか、ダミー鍵なのかを判別することができなくなる。従って、上記〔1〕の場合と同様に、攻撃者による鍵の推定は困難となる。
〔9〕上記演算処理には、暗号化又は復号化処理と、上記暗号化又は復号化処理の結果を検証する検証処理とを含めることができる。上記演算処理部は、上記検証処理の結果に応じてリセットされる。
2.実施の形態の詳細
実施の形態について更に詳述する。
《実施の形態1》
図1には、半導体装置の一例とされるICカード用マイクロコンピュータの構成例が示される。
図1に示されるICカード用マイクロコンピュータ10は、例えば単結晶シリコンのような1個の半導体基板に相補型MOS集積回路製造技術によって形成される。
ICカード用マイクロコンピュータ10は、データ入出力端子IO1,IO2、リセット端子RES*(*はローアクティブを意味する)、クロック端子CLK、電源端子VCC、グランド端子VSS、アンテナコイル接続端子LA,LBを有する。またICカード用マイクロコンピュータ1は、CPU(中央処理装置)11、システムコントローラ(SCL)12、セキュリティロジック(SL)13、入出力回路(IOP)14、ウォッチドッグタイマ(WDT)15、ROM16、RAM17、不揮発性メモリ(EEPROM)19、タイマ(TMR)20、公開鍵暗号化コプロセッサ(PKCP)22、CRCコプロセッサ(CRCP)23を有する。さらにICカード用マイクロコンピュータ1は、DESコプロセッサ(DESP)24、AESコプロセッサ(AESP)25、送受信回路(UART)26、ランダムナンバジェネレータ(RNG)27、デジタルナンバジェネレータ(DNG)28、非接触インタフェース(INTF)29、アナログコントローラ(ACNT)31を有する。入出力回路14、ウォッチドッグタイマ15、ROM16、RAM17、不揮発性メモリ19、タイマ20、公開鍵暗号化コプロセッサ22、CRCコプロセッサ23、DESコプロセッサ24、AESコプロセッサ25、送受信回路26、ランダムナンバジェネレータ27、デジタルナンバジェネレータ28、非接触インタフェース29は、内部データバス18を介して互いにデータのやり取りが可能にされる。セキュリティロジック13、ROM16、RAM17、不揮発性メモリ19、タイマ20、公開鍵暗号化コプロセッサ22、CRCコプロセッサ23、DESコプロセッサ24、AESコプロセッサ25、送受信回路26、ランダムナンバジェネレータ27、デジタルナンバジェネレータ28、及び非接触インタフェース29には、CPU11から内部アドレスバス32を介してアドレス信号が供給されるようになっている。
CPU11は、プログラム実行による演算処理機能を有する。このCPU11は、内部データバス18に対してパラレルデータを入出力し、内部アドレスバス32にアドレス信号を出力する。システムコントローラ12は、リセット等の内部動作モードを制御する。セキュリティロジック13は、機密保護のための論理演算を行うための論理回路である。入出力回路(接触通信入出力回路)14は、データ入出力端子IO1,IO2を用いてビットシリアルに外部インタフェースされる。ウォッチドッグタイマ15は、ICカード用マイクロコンピュータ10が正常かどうかを監視するためのタイマである。ROM16は、CPU11で実行されるプログラム(暗号化プログラム、復号プログラム、インタフェース制御プログラム等)やデータを格納するのに利用される。RAM17は、CPU11の作業領域又はデータの一時記憶領域とされる。不揮発性メモリ19は、セキュリティデータ等の格納に利用される。タイマ20は、時間計測に用いられる。公開鍵暗号化コプロセッサ21は、専用のRAM22を含み、公開鍵暗号化処理を行う。CRCコプロセッサ23は、CRC(Cyclic Redundancy Code)コードの生成とチェックを行う。DESコプロセッサ24は、DES(Data Encryption Standard)方式による演算処理を行う。AESコプロセッサ25は、AES方式(Advanced Encryption Standard)方式による演算処理を行う。DESコプロセッサ24及びAESコプロセッサ25では、ブロック暗号化が行われる。送受信回路26は、反二重方式のシリアル送受信処理を行う。ランダムナンバジェネレータ27は、AIS31準拠真性乱数を生成する。デジタルナンバジェネレータ28は、論理的に乱数を高速生成する。非接触インタフェース29は、専用の通信バッファ30を含み、アナログコントローラ31によって制御される非接触通信における情報のやり取りを仲介する。アナログコントローラ31は、アンテナコイル接続端子LA,LBに結合されたアンテナコイル33を介して行われる非接触通信を制御する。
入出力回路14に所定のICカードコマンドが供給されると、当該コマンドの実行に必要な処理プログラムがCPU11によって実行される。ICカード用マイクロコンピュータ10は、リセット信号RES*によってリセット動作が指示されると、内部が初期化され、CPU11はROM16内の所定プログラムの先頭番地から命令実行を開始する。ICカード用マイクロコンピュータ10は、クロック信号CLKに同期動作される。ICカード用マイクロコンピュータ10は、電子決済サービスなどに利用可能なISO/IEC15408の評価・認証機関による認証済みであっても、なくてもよい。
ICカード用マイクロコンピュータ10においては、暗号演算処理を行う際に、攻撃者による鍵の推定を困難にするため、正規の秘密鍵(「正規鍵」という)を用いた演算の他に、ダミー鍵を用いた演算を行うことによって、攻撃者のアタックによる鍵の書き換えが、正規鍵に対して行われたか、ダミー鍵に対して行われたかを分からなくすることで、攻撃者による鍵の推定を困難にしている。以下、それについて詳述する。
図2には、上記構成のICカード用マイクロコンピュータ10で実行される演算処理の流れが示される。
図2に示される演算処理は、基本的には、ROM16又は不揮発性メモリ19内のプログラムに従ってCPU11によって制御される。
先ず、乱数の生成が行われる(201)。乱数としては、CPU11の制御下で、ランダムナンバジェネレータ27によって生成されたものを採用することができる(202)。生成された乱数は、特に制限されないが、1ビット構成とされ、CPU11の制御により、適宜の記憶媒体、例えばRAM17に保持される。
次に、正規鍵に基づいてダミー鍵が計算され、鍵テーブルが作成される。正規鍵が不揮発性メモリ19に保存されている場合、CPU11は、不揮発性メモリ19内の正規鍵を読み出し、その論理を反転することでダミー鍵を作成する。例えば正規鍵が8ビット構成で「10101010」の場合、ダミー鍵は「01010101」とされる。作成されたダミー鍵は、適宜の記憶媒体、例えばRAM17に保存される。鍵テーブルは、図4に示されるように、Table〔0〕,Table〔1〕の2種類作成される。作成された鍵テーブルTable〔0〕,Table〔1〕は、適宜の記憶媒体、例えばRAM17に保持される。鍵テーブルTable〔0〕,Table〔1〕の内容は、上記ステップ201で生成された乱数1ビットの論理値によって異なる。乱数が論理値「0」のケースでは、鍵テーブルTable〔0〕に正規鍵が格納され、鍵テーブルTable〔1〕にダミー鍵が格納される。乱数が論理値「1」のケースでは、鍵テーブルTable〔0〕にダミー鍵が格納され、鍵テーブルTable〔1〕に正規鍵が格納される。
このような鍵テーブルは、図3に示されるように作成することができる。すなわち、上記ステップ201で生成された乱数1ビット(論理値「0」又は「1」)が「r」に代入される(301)。例えば乱数1ビットが論理値「0」の場合、鍵テーブルTable〔0〕に正規鍵が格納され(302)、正規鍵の論理を反転したものが作業領域に作成される(303)。作業領域はRAM17に形成することができる。次に、「r」の反転値によって、「r」が更新される(304)。換言すれば、「r」と論理値「1」との排他的論理和によって「r」が更新される。上記ステップ301で、「r」に論理値「0」が代入された場合、上記ステップ304では、「r」が論理値「1」に更新される。そして、上記ステップ303でRAM17内に形成されたダミー鍵が鍵テーブルTable〔1〕に格納される(305)。
また、ステップ301において、乱数1ビットが論理値「1」の場合には、上記ステップ302において、鍵テーブルTable〔1〕に正規鍵が格納され、上記ステップ305において、鍵テーブルTable〔0〕にダミー鍵が格納される。
ここで、乱数が論理値「0」のケースと、乱数が論理値「1」のケースとで、鍵テーブルの作成開始から作成終了までに要する時間が異なると、そのような時間差に基づいて、攻撃者によって乱数の論理値を推定されるおそれがある。しかし、図3に示される鍵テーブル作成処理では、乱数が論理値「0」のケースにおいても、乱数が論理値「1」のケースにおいても、同一の処理サイクル、すなわち、ステップ301〜305のステップを経て鍵テーブルが作成されるため、乱数が論理値「0」のケースにおいても、乱数が論理値「1」のケースにおいても、鍵テーブルの作成開始から作成終了までに要する時間は、互いに等しくなる。これにより、乱数の論理値の推定を困難にしている。
次に、鍵の設定が行われる(203)。ここで、「鍵の設定」とは、鍵テーブルを参照して正規鍵又はダミー鍵を適宜の記憶媒体に書き込むことを意味する。正規鍵やダミー鍵の保存先(記憶媒体)は、RAM17でも良いし、DESコプロセッサ24やAESコプロセッサ25などに内蔵されているレジスタでも良い。本例では、ステップ203〜211までの処理が2回繰り返され、第1回目の処理では、ステップ203において、鍵テーブルTable〔0〕が参照されて鍵の設定が行われ、第2回目の処理では、ステップ203において、鍵テーブルTable〔1〕が参照されて鍵の設定が行われるものとする。例えばRAM17に保持されている乱数(上記ステップ201で生成されたもの)が論理値「0」の場合、第1回目の処理では、鍵テーブルTable〔0〕に格納されている正規鍵が用いられ、第2回目の処理では、鍵テーブルTable〔1〕に格納されているダミー鍵が用いられる。また、RAM17に保持されている乱数が論理値「1」の場合、第1回目の処理では、鍵テーブルTable〔0〕に格納されているダミー鍵が用いられ、第2回目の処理では、鍵テーブルTable〔1〕に格納されている正規鍵が用いられる。
次に、平文がRAM17などに設定される(204)。この平文は、例えばこのICカード用マイクロコンピュータ10が搭載されたICカードの認証のために、アンテナコイル33を介してホストシステムから受信されたもの、又は不揮発性メモリ19内に予め格納されているものとされる。
平文が設定されると、この平文の暗号化処理が実行される(205)。平文の暗号化処理は、CPU11の制御下で、DESコプロセッサ24又はAESコプロセッサ25によって行うことができる。例えば上記ステップ201で生成された乱数が論理値「1」の場合、上記ステップ203において正規鍵の設定が行われているため、ここでは平文が正規鍵を用いて暗号化される(205)。暗号化処理の結果は、CPU11の制御下で、演算結果テーブルに格納される。演算結果テーブルは、適宜の記憶媒体、例えばRAM17に形成することができる。演算結果テーブルは、例えば図5に示されるように、Table〔0〕,Table〔1〕の2種類作成される。演算結果テーブルTable〔0〕,Table〔1〕の内容は、上記ステップ201で生成された乱数1ビットの論理値によって異なる。乱数が論理値「0」のケースでは、演算結果テーブルTable〔0〕に正規鍵による暗号化処理の結果(「正規結果」という)が格納され、演算結果テーブルTable〔1〕にダミー鍵による暗号化処理の結果(「ダミー結果」という)が格納される。乱数が論理値「1」のケースでは、演算結果テーブルTable〔0〕にダミー結果が格納され、演算結果テーブルTable〔1〕に正規結果が格納される。
次に、上記ステップ206でRAM17に格納された暗号化処理結果の復号化処理が行われる(207)。この復号化処理は、CPU11の制御下で、DESコプロセッサ24又はAESコプロセッサ25によって行うことができる。例えば上記ステップ201で生成された乱数が論理値「1」の場合、上記ステップ203において正規鍵の設定が行われているため、ここでは正規鍵を用いた復号化処理が行われる。
次に、上記ステップ207での復号化処理の結果についての検証が行われる(208)。つまり、上記ステップ207での復号化処理の結果と、上記ステップ205で暗号化される前の平文とが比較される。この比較結果に基づいて、上記ステップ208の検証の結果が適切であるか否かの判別が行われる(209)。上記ステップ207での復号化処理の結果と、上記ステップ205で暗号化される前の平文とが異なれば、上記ステップ209での検証の結果は不適切である(No)と判断され、ICカード用マイクロコンピュータ10がリセットされる(214)。このリセットは、例えばCPU11に内蔵されるプログラムカウンタをROM16の先頭番地に設定することでプログラムを最初から実行させる、いわゆるソフトウェアリセットとされる。また、上記ステップ207での復号化処理の結果と、上記ステップ205で暗号化される前の平文とが等しければ、上記ステップ209での検証の結果は適切である(Yes)と判断され、鍵の検証が行われる(210)。上記ステップ201で生成された乱数が論理値「0」の場合には、鍵テーブルTable〔0〕の正規鍵を用いた演算が先行されるため、ここでは正規鍵の検証が行われる。この検証によって、暗号化処理に用いられた正規鍵が適切であるか否かの判別が行われる(211)。正規鍵が不適切である(No)と判断された場合には、ICカード用マイクロコンピュータ10がリセットされる(214)。これに対して、正規鍵が適切である(Yes)と判断された場合には、上記ステップ203〜211までの処理が第1回目の処理であるか否かの判別が行われる(212)。この判別において、上記ステップ203〜211までの処理が第1回目の処理である(Yes)と判断された場合には、上記ステップS203の処理に戻り、上記ステップ203〜211までの第2回目の処理が行われる。この第2回目の処理における上記ステップ203での鍵の設定では、鍵テーブルTable〔1〕のダミー鍵の設定が行われる。この結果、上記ステップ205の暗号化処理では、平文がダミー鍵を用いて暗号化され、上記ステップ207の復号化処理では、ダミー鍵を用いて復号化される。そして、この復号化結果の検証や、ダミー鍵の検証が行われた後に、再び上記ステップ212の判別が行われる。この判別において、上記ステップ203〜211までの処理が第1回目の処理ではない(No)と判断された場合、それは既に第2回目の処理を完了したことを意味するから、正規結果の取得が行われる(213)。この正規結果の取得は、演算結果テーブルを参照して行われる。すなわち、乱数0のケースでは、演算結果テーブルTable〔0〕に格納されている正規結果が取得され、乱数1のケースでは、演算結果テーブルTable〔1〕に格納されている正規結果が取得される。取得された正規結果は、このICカード用マイクロコンピュータ10において引き続き実行される別の処理で参照可能とされる。
図7には、図2に示される演算処理の比較対象とされる処理の流れが示される。
図7に示される処理では、鍵の設定(701)、平文の設定(702)、暗号化の実行(703)、暗号化結果の格納(704)、復号化実行(705)、復号化処理についての検証(706)、復号化処理の検証結果の良否判定(707)、鍵の検証(708)、鍵の検証結果の良否判定(709)が行われるが、この一連の処理は、本例における正規鍵を用いた場合の処理に相当し、ダミー鍵を用いた場合の処理は行われない。このような処理の実行中に、攻撃者の何らかの故障アタック(例えばレーザアタック)によって鍵が書き換えられた場合、そのことを検知してチップがリセットされる(710)。このリセットにより、上記故障アタックに起因にして鍵が書き換えられたことが攻撃者に知られてしまうので、攻撃者によって鍵を推定されるおそれがある。
これに対して、本例においては、図2に示されるように、正規鍵を用いた演算処理と、ダミー鍵を用いた演算とが連続して行われ、しかもその演算の順番が、生成された乱数の論理値に応じて異なるため、攻撃者が故障アタックにより鍵の書き換えを行ったとしても、書き換えられた鍵が正規鍵なのか、ダミー鍵なのかを判別することができなくなる。鍵の推定は、正規鍵を書き換えた場合のチップの状態に基づいて行われるため、書き換えられた鍵が正規鍵なのか、ダミー鍵なのかを判別することができない状態では、攻撃者による鍵の推定は不可能となる。
実施の形態1によれば、以下の作用効果を得ることができる。
上記のように正規鍵を用いた演算処理と、ダミー鍵を用いた演算処理とが連続して行われ、しかもその演算の順番が、乱数の論理値に応じて異なるため、攻撃者が故障アタックにより鍵の書き換えを行ったとしても、書き換えられた鍵が正規鍵なのか、ダミー鍵なのかを判別することができなくなる。これにより、攻撃者による鍵の推定は不可能となる。
ここで、本例ではダミー鍵として、正規鍵の論理を反転したものを用いているが、乱数を用いてダミー鍵を形成することが考えられる。乱数を用いたダミー鍵の場合、認証処理等を何度も実行することによってエラーの偏りから正規鍵の推定が可能となる。例えば、認証処理等を100回実行した場合、1/2が正解鍵、1/2がダミー鍵となり、ダミー鍵の論理値「0」「1」の出現率は、50:50、正解鍵の論理値「0」「1」の出現率は、0:100、若しくは100:0となる。このことから、乱数を用いた場合は、平均した論理値「0」「1」の出現率は、25:75、若しくは75:25となり、75回発生したほうが正規鍵であると推定されてしまう。
これに対して、ダミー鍵として、正規鍵の論理を反転したものを用いた場合には、ダミー鍵の論理値「0」「1」の出現率が0:100、若しくは100:0となり、正規鍵の論理値「0」「1」の出現率がその逆となるから、平均した論理値「0」「1」の出現率は、50:50となる。これにより攻撃者は、論理値「0」と「1」のどちらが正規鍵であるかの判別ができなくなる。従って、ダミー鍵としては、乱数を用いて形成するよりも、正規鍵の論理を反転したものを用いるのが良い。
《実施の形態2》
ICカード用マイクロコンピュータ10の仕様によっては、上記ダミー鍵を用いた演算処理を上記演算処理部で実行するか否かをフラグによって指定したほうが良い場合がある。
ICカード用マイクロコンピュータ10において、例えば図6に示されるように認証処理(601)が終了した後にセッション鍵の生成が行われ(602)、その後、上記セッション鍵を使った暗号化処理又は復号化処理(603)が行われる場合を考える。上記セッション鍵を使った暗号化処理又は復号化処理(603)においてエラーが発生し、チップがリセットされた場合には、ステップ602で再びセッション鍵の生成が行われるため、ステップ603の処理において、攻撃者の故障アタックを考慮する必要がない。これに対して、ステップ601の認証処理においては、リセットされた場合でも、同じ鍵が使用されるため、攻撃者の故障アタックを考慮する必要がある。そこで、上記ダミー鍵を用いた演算処理(図2のステップ205〜211の処理)を上記CPU11で実行するか否かを指定するためのフラグを設定可能なフラグ設定エリアを設け、このフラグ設定エリアに設定されたフラグに応じて、上記ダミー鍵を用いた演算処理を実行するか否かを決定するようにする。上記フラグ設定エリアは、適宜の記憶媒体、例えばRAM17に形成することができる。また、上記フラグの設定は、CPU11によって行うことができる。
ここで、フラグ設定エリアに設定されたフラグが論理値「1」の場合、上記ダミー鍵を用いた演算処理が行われ、フラグ設定エリアに設定されたフラグが論理値「0」の場合、上記ダミー鍵を用いた演算処理が行われないものとする。この場合、図6におけるステップ601の認証処理が開始される前に、フラグ設定エリアに設定されたフラグが論理値「1」に設定され、ステップ601の認証処理が終了した時点で、フラグ設定エリアに設定されたフラグが論理値「0」に変更される。これにより、上記ステップ601による認証処理においては、上記ダミー鍵を用いた演算処理が実行されるが、上記ステップ603のセッション鍵を使った暗号化処理又は復号化処理においては、上記ダミー鍵を用いた演算処理は実行されない。
このように、上記ダミー鍵を用いた演算処理を上記CPU11で実行するか否かを指定するためのフラグを設定可能なフラグ設定エリアを設け、このフラグ設定エリアに設定されたフラグに応じて、上記ダミー鍵を用いた演算処理を実行するか否かを決定するようにすれば、ICカード用マイクロコンピュータ10において、必要に応じて上記ダミー鍵を用いた演算処理を実行することができるので、無意味な演算処理を行わずに済む。
《実施の形態3》
実施の形態1では、CPU11の制御下で、ランダムナンバジェネレータ27によって生成された乱数を1ビット構成としたが、攻撃者の故障アタックが1ビット単位で行われることを考えると、乱数を1ビット構成とするよりも、複数ビット構成としたほうが良い。また、このとき、乱数の各ビットを互いに異なる記録媒体、若しくは記憶エリアに格納するのが望ましい。例えば上記乱数を2ビット構成とした場合には、2ビット構成の乱数の論理値が「10」は、実施の形態1における乱数の論理値「0」に対応し、2ビット構成の乱数の論理値「01」は、実施の形態1における乱数の論理値「1」に対応する。つまり、図8に示されるように、乱数が論理値「10」のケースでは、鍵テーブルTable〔0〕に正規鍵が格納され、鍵テーブルTable〔1〕にダミー鍵が格納される。乱数が論理値「01」のケースでは、鍵テーブルTable〔0〕にダミー鍵が格納され、鍵テーブルTable〔1〕に正規鍵が格納される。また、図9に示されるように、乱数が論理値「10」のケースでは、演算結果テーブルTable〔0〕に正規結果が格納され、演算結果テーブルTable〔1〕にダミー結果が格納される。乱数が論理値「01」のケースでは、演算結果テーブルTable〔0〕にダミー結果が格納され、演算結果テーブルTable〔1〕に正規結果が格納される。
このように、ランダムナンバジェネレータ27によって生成された乱数を複数ビット構成とした場合、この複数ビット構成の乱数を外部からの故障アタックによって同時に論理固定することは困難であるため、セキュリティの強化を図ることができる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、図2のステップ204において、平文に代えて暗号文を設定することができる。その場合には、図2のステップ205では、上記暗号文の復号化処理が実行され、図2のステップ207では、暗号化処理が実行される。
図1に示されるICカード用マイクロコンピュータ10に、接触通信における情報のやり取りを仲介するための接触インタフェースを搭載することができる。
10 ICカード用マイクロコンピュータ
11 CPU
12 システムコントローラ
13 セキュリティロジック
14 入出力回路
15 ウォッチドッグタイマ
16 ROM
17 RAM
18 内部データバス
19 不揮発性メモリ
20 タイマ
21 公開鍵暗号化コプロセッサ
22 RAM
23 CRCコプロセッサ
24 DESコプロセッサ
25 AESコプロセッサ
26 送受信回路
27 ランダムナンバジェネレータ
28 デジタルナンバジェネレータ
29 非接触インタフェース
30 通信バッファ
31 アナログコントローラ
32 内部アドレスバス
33 アンテナコイル

Claims (9)

  1. 乱数を生成可能な乱数生成部と、
    正規鍵と、上記正規鍵の論理が反転されたダミー鍵とを格納可能な鍵格納エリアと、
    上記正規鍵を用いた演算処理と、上記ダミー鍵を用いた演算処理とを、上記乱数生成部で生成された乱数の論理値に応じた順番で実行可能な演算処理部と、
    上記正規鍵を用いた演算処理の結果と、上記ダミー鍵を用いた演算処理の結果とを格納可能な演算結果格納エリアと、を含み、
    上記演算処理部は、上記正規鍵を用いた演算処理の結果を、上記演算結果格納エリアから取得する半導体装置。
  2. 上記演算処理は、暗号化又は復号化処理と、上記暗号化又は復号化処理の結果を検証する検証処理と、を含み、
    上記演算処理部は、上記検証処理の結果に応じてリセットされる請求項1記載の半導体装置。
  3. 上記鍵格納エリアには、上記演算処理部によってアクセス可能な鍵テーブルが形成され、
    上記乱数の論理値に応じて、上記鍵テーブルにおける上記正規鍵の格納箇所と上記ダミー鍵の格納箇所とが入れ替えられる請求項2記載の半導体装置。
  4. 上記演算処理部は、上記鍵テーブルを作成するための鍵テーブル作成処理を実行し、
    上記鍵テーブル作成処理は、上記乱数の論理値にかかわらず、一定の処理サイクルで実行される請求項3記載の半導体装置。
  5. 上記メモリは、上記ダミー鍵を用いた演算処理を上記演算処理部で実行するか否かを指定するためのフラグを設定可能なフラグ設定エリアを含む請求項4記載の半導体装置。
  6. 上記乱数は、複数ビット構成とされる請求項5記載の半導体装置。
  7. ICカード用マイクロコンピュータとされる請求項6記載の半導体装置。
  8. 乱数生成部で乱数を生成し、
    正規鍵と、上記正規鍵の論理が反転されたダミー鍵とを鍵格納エリアに格納し、
    上記正規鍵を用いた演算処理と、上記ダミー鍵を用いた演算処理とを、上記乱数生成部で生成された乱数の論理値に応じた順番で演算処理部により実行し、
    上記正規鍵を用いた演算処理の結果と、上記ダミー鍵を用いた演算処理の結果とを演算結果格納エリアに格納し、
    上記正規鍵を用いた演算処理の結果を、上記演算処理部によって、上記演算結果格納エリアから取得させる演算処理方法。
  9. 上記演算処理は、暗号化又は復号化処理と、上記暗号化又は復号化処理の結果を検証する検証処理と、を含み、
    上記検証処理の結果に応じて上記演算処理部をリセットさせる請求項8記載の演算処理方法。
JP2012016090A 2012-01-30 2012-01-30 半導体装置及び演算処理方法 Pending JP2013157761A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012016090A JP2013157761A (ja) 2012-01-30 2012-01-30 半導体装置及び演算処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012016090A JP2013157761A (ja) 2012-01-30 2012-01-30 半導体装置及び演算処理方法

Publications (1)

Publication Number Publication Date
JP2013157761A true JP2013157761A (ja) 2013-08-15

Family

ID=49052575

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012016090A Pending JP2013157761A (ja) 2012-01-30 2012-01-30 半導体装置及び演算処理方法

Country Status (1)

Country Link
JP (1) JP2013157761A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018157367A (ja) * 2017-03-17 2018-10-04 大日本印刷株式会社 電子情報記憶装置、icカード、演算決定方法、及び演算決定プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018157367A (ja) * 2017-03-17 2018-10-04 大日本印刷株式会社 電子情報記憶装置、icカード、演算決定方法、及び演算決定プログラム

Similar Documents

Publication Publication Date Title
JP5984625B2 (ja) 半導体装置及び暗号鍵書き込み方法
US10216964B2 (en) Semiconductor integrated circuit and system
US8799679B2 (en) Message authentication code pre-computation with applications to secure memory
KR101546204B1 (ko) 호스트 디바이스, 반도체 메모리 디바이스, 및 인증 방법
US7454017B2 (en) Information processing unit
US11232718B2 (en) Methods and devices for protecting data
KR20110051181A (ko) 데이터 보안 시스템, 방법 및 컴퓨터 판독가능 매체
US9961057B2 (en) Securing a cryptographic device against implementation attacks
US8826042B2 (en) Memory controller, memory control apparatus, memory device, memory information protection system, control method for memory control apparatus, and control method for memory device
KR20180048592A (ko) 하드웨어 모듈의 인증 및 ip 라이센싱을 위한 시스템 및 방법
CN108920984B (zh) 一种防克隆篡改安全ssd主控芯片
US20200394337A1 (en) Electronic circuit
EP2701101B1 (en) Information processing devices and information processing methods
US9076002B2 (en) Stored authorization status for cryptographic operations
KR101997005B1 (ko) 전력 분석을 통한 도청에 대항하여 전자 회로를 보호하는 방법 및 이를 이용한 전자 회로
JP6246516B2 (ja) 情報処理システム
US20100287386A1 (en) Secure integrated circuit comprising means for disclosing counterpart mask values
JP2013157761A (ja) 半導体装置及び演算処理方法
JP2005045760A (ja) 暗号処理方法及び装置
JP2007067942A (ja) Icカード、および、icカード用プログラム
JP4435593B2 (ja) 耐タンパー情報処理装置
JP2007193800A (ja) カード認証システムのセキュリティレベルを向上させる装置及び方法
CN113343215A (zh) 嵌入式软件的授权和认证方法及电子设备
JP5483838B2 (ja) データ処理装置
WO2013002239A1 (ja) 機器固有情報生成装置と機器固有情報生成方法、端末機器および認証システム