(57)【要約】【課題】攻撃者による秘密鍵の推定を困難にする。【解決手段】半導体装置（１０）は、乱数生成部（２７）と、正規鍵と、上記正規鍵の論理が反転されたダミー鍵とを格納可能な鍵格納エリア（１７）と、上記正規鍵を用いた演算処理と、上記ダミー鍵を用いた演算処理とを、上記乱数生成部で生成された乱数の論理値に応じた順番で実行可能な演算処理部（１１）とを含む。さらに上記半導体装置は、上記正規鍵を用いた演算処理の結果と、上記ダミー鍵を用いた演算処理の結果とを格納可能な演算結果格納エリア（１７）を含む。上記演算処理部は、上記正規鍵を用いた演算処理の結果を上記演算結果格納エリアから取得する。正規鍵を用いた演算処理と、ダミー鍵を用いた演算処理との順番が乱数の論理値に応じて異なるため、攻撃者が故障アタックにより鍵の書き換えを行ったとしても、書き換えられた鍵が正規鍵なのか、ダミー鍵なのかを判別することができなくなる。【選択図】図１
2013157761.tif 000002
【特許請求の範囲】
【請求項１】
乱数を生成可能な乱数生成部と、
正規鍵と、上記正規鍵の論理が反転されたダミー鍵とを格納可能な鍵格納エリアと、
上記正規鍵を用いた演算処理と、上記ダミー鍵を用いた演算処理とを、上記乱数生成部で生成された乱数の論理値に応じた順番で実行可能な演算処理部と、
上記正規鍵を用いた演算処理の結果と、上記ダミー鍵を用いた演算処理の結果とを格納可能な演算結果格納エリアと、を含み、
上記演算処理部は、上記正規鍵を用いた演算処理の結果を、上記演算結果格納エリアから取得する半導体装置。
【請求項２】
上記演算処理は、暗号化又は復号化処理と、上記暗号化又は復号化処理の結果を検証する検証処理と、を含み、
上記演算処理部は、上記検証処理の結果に応じてリセットされる請求項１記載の半導体装置。
【請求項３】
上記鍵格納エリアには、上記演算処理部によってアクセス可能な鍵テーブルが形成され、
上記乱数の論理値に応じて、上記鍵テーブルにおける上記正規鍵の格納箇所と上記ダミー鍵の格納箇所とが入れ替えられる請求項２記載の半導体装置。
【請求項４】
上記演算処理部は、上記鍵テーブルを作成するための鍵テーブル作成処理を実行し、
上記鍵テーブル作成処理は、上記乱数の論理値にかかわらず、一定の処理サイクルで実行される請求項３記載の半導体装置。
【請求項５】
上記メモリは、上記ダミー鍵を用いた演算処理を上記演算処理部で実行するか否かを指定するためのフラグを設定可能なフラグ設定エリアを含む請求項４記載の半導体装置。
【請求項６】
上記乱数は、複数ビット構成とされる請求項５記載の半導体装置。
【請求項７】
ＩＣカード用マイクロコンピュータとされる請求項６記載の半導体装置。
【請求項８】
乱数生成部で乱数を生成し、
正規鍵と、上記正規鍵の論理が反転されたダミー鍵とを鍵格納エリアに格納し、
上記正規鍵を用いた演算処理と、上記ダミー鍵を用いた演算処理とを、上記乱数生成部で生成された乱数の論理値に応じた順番で演算処理部により実行し、
上記正規鍵を用いた演算処理の結果と、上記ダミー鍵を用いた演算処理の結果とを演算結果格納エリアに格納し、
上記正規鍵を用いた演算処理の結果を、上記演算処理部によって、上記演算結果格納エリアから取得させる演算処理方法。
【請求項９】
上記演算処理は、暗号化又は復号化処理と、上記暗号化又は復号化処理の結果を検証する検証処理と、を含み、
上記検証処理の結果に応じて上記演算処理部をリセットさせる請求項８記載の演算処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理技術、さらには半導体装置における秘密鍵（単に「鍵」ともいう）の不正解読を阻止するための技術に関する。
【背景技術】
【０００２】
マイクロコンピュータを搭載したＩＣカードが知られている。ＩＣカードの不正使用を防止するため、ＩＣカード使用時には、ＩＣカードとリーダライタとの間で認証処理が必要となる。このような２つの装置間の認証方法については、特許文献１（段落０００２〜０００９）に記載されている。
【０００３】
特許文献２には、データを暗号化／復号するタイミングを毎回変更し、ＩＣチップの消費電流とＩＣカードに記憶された暗号鍵と相関を無くすことで、ＤＰＡ（Differential Power Analysis）に対して耐タンパー性をもたせるための技術が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−０１０３４５号公報
【特許文献２】特開２００７−０６７９４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
データを秘匿に記憶できるＩＣカードは、ユーザ認証の用途やデータ通信の機密性を保持するために、秘密鍵を使用した暗号演算機能を備えている。秘密鍵を使用し、暗号演算を実行する際、攻撃者の何らかの故障アタック（例えばレーザアタック）によって鍵が書き換えられた場合、誤った結果を出力するか、もしくは書き換えられたことを検知してチップをリセットすることが考えられる。しかし、鍵が書き換えられた場合に誤った結果を出力するか、もしくは書き換えられたことを検知してチップをリセットすると、鍵を書き換えられたことが判明するため、攻撃者によって鍵を推定されるおそれがある。攻撃者による鍵の推定を防ぐことは、ＩＣカードの機密性を保持するため重要となる。例えば電子商取引などのサービスを実現するシステムは、暗号技術などのセキュリティ技術を基盤として構築されており、そのようなシステムにおいては、鍵などの秘密情報を厳重に管理することが重要であるため、攻撃者による秘密鍵の推定が困難とされるＩＣカード用マイクロコンピュータの重要性が日増しに高まっている。
【０００６】
本発明の目的は、攻撃者による秘密鍵の推定を困難にすることにある。
【０００７】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００９】
すなわち、乱数を生成可能な乱数生成部と、正規鍵及び上記正規鍵の論理が反転されたダミー鍵を格納可能な鍵格納エリアと、上記正規鍵を用いた演算処理及び上記ダミー鍵を用いた演算処理を上記乱数生成部で生成された乱数の論理値に応じた順番で実行可能な演算処理部とを含んで半導体装置を構成する。さらに上記半導体装置には、上記正規鍵を用いた演算処理の結果と、上記ダミー鍵を用いた演算処理の結果とを格納可能な演算結果格納エリアを設ける。
【発明の効果】
【００１０】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１１】
すなわち、攻撃者による秘密鍵の推定を困難にすることができる。
【図面の簡単な説明】
【００１２】
【図１】半導体装置の一例とされるＩＣカード用マイクロコンピュータの構成例ブロック図である。
【図２】図１に示されるＩＣカード用マイクロコンピュータで実行される演算処理のフローチャートである。
【図３】図２に示される演算処理における主要処理の詳細なフローチャートである。
【図４】鍵テーブルの説明図である。
【図５】演算結果テーブルの説明図である。
【図６】図１に示されるＩＣカード用マイクロコンピュータで実行される演算処理のフローチャートである。
【図７】図２に示される演算処理の比較対象とされる処理のフローチャートである。
【図８】鍵テーブルの説明図である。
【図９】演算結果テーブルの説明図である。
【発明を実施するための形態】
【００１３】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１４】
〔１〕本発明の代表的な実施の形態に係る半導体装置（１０）は、乱数を生成可能な乱数生成部（２７）と、正規鍵及び上記正規鍵の論理が反転されたダミー鍵を格納可能な鍵格納エリア（１７）と、上記正規鍵を用いた演算処理及び上記ダミー鍵を用いた演算処理を上記乱数生成部で生成された乱数の論理値に応じた順番で実行可能な演算処理部（１１）とを含む。さらに上記半導体装置は、上記正規鍵を用いた演算処理の結果と、上記ダミー鍵を用いた演算処理の結果とを格納可能な演算結果格納エリア（１７）を含む。上記演算処理部は、上記正規鍵を用いた演算処理の結果を、上記演算結果格納エリアから取得する。
【００１５】
上記の構成において、正規鍵を用いた演算処理と、ダミー鍵を用いた演算処理との順番が、乱数の論理値に応じて異なるため、攻撃者が故障アタックにより鍵の書き換えを行ったとしても、書き換えられた鍵が正規鍵なのか、ダミー鍵なのかを判別することができなくなる。鍵の推定は、攻撃者の故障アタックによって正規鍵が書き換えられた場合のチップの状態に基づいて行われるため、書き換えられた鍵が正規鍵なのか、ダミー鍵なのかを判別することができない状態では、攻撃者による鍵の推定は困難となる。
【００１６】
〔２〕上記〔１〕において、上記演算処理には、暗号化又は復号化処理と、上記暗号化又は復号化処理の結果を検証する検証処理とを含めることができる。上記演算処理部は、上記検証処理の結果に応じてリセットされるように構成することができる。
【００１７】
〔３〕上記〔２〕において、上記鍵格納エリアには、上記演算処理部によってアクセス可能なメモリに形成された鍵テーブルが形成され、上記乱数の論理値に応じて、上記鍵テーブルにおける上記正規鍵の格納箇所と上記ダミー鍵の格納箇所とが入れ替えられるように構成することができる。このように構成することにより、正規鍵の格納箇所の特定を困難にすることができる。
【００１８】
〔４〕上記〔３〕において、上記演算処理部は、上記鍵テーブルを作成するための鍵テーブル作成処理を実行し、上記鍵テーブル作成処理は、上記乱数の論理値にかかわらず、一定の処理サイクルで実行されるように構成することができる。これにより、乱数が論理値「０」のケースにおいても、乱数が論理値「１」のケースにおいても、同一の処理サイクル（ステップ３０１〜３０５のステップ）を経て鍵テーブルが作成されるため、乱数が論理値「０」のケースにおいても、乱数が論理値「１」のケースにおいても、鍵テーブルの作成開始から作成終了までに要する時間は、互いに等しくなる。このことは、乱数の論理値の推定を困難にする上で有効とされる。
【００１９】
〔５〕上記メモリには、上記ダミー鍵を用いた演算処理を上記演算処理部で実行するか否かを指定するためのフラグを設定可能なフラグ設定エリアを設けることができる。このフラグ設定エリアに設定されたフラグに応じて、上記ダミー鍵を用いた演算処理を実行するか否かを決定するようにすれば、必要に応じて上記ダミー鍵を用いた演算処理を実行することができるので、無意味な演算処理を行わずに済む。
【００２０】
〔６〕上記〔５〕において、上記乱数は、複数ビット構成とされる。このように、乱数を複数ビット構成とした場合、この複数ビット構成の乱数を外部からの故障アタックによって同時に論理固定することは困難であるため、セキュリティの強化を図ることができる。
【００２１】
〔７〕上記〔６〕において、上記半導体装置をＩＣカード用マイクロコンピュータとすることができる。
【００２２】
〔８〕本発明の代表的な実施の形態に係る演算処理方法は、乱数生成部で乱数を生成し（２０１）、正規鍵と、上記正規鍵の論理が反転されたダミー鍵とを鍵格納エリアに格納し（２０２）、上記正規鍵を用いた演算処理と、上記ダミー鍵を用いた演算処理とを、上記乱数生成部で生成された乱数の論理値に応じた順番で演算処理部により実行する（２０５）。そして、上記正規鍵を用いた演算処理の結果と、上記ダミー鍵を用いた演算処理の結果とを演算結果格納エリア（２０６）に格納する。このとき、上記正規鍵を用いた演算処理の結果を、上記演算処理部によって、上記演算結果格納エリアから取得する。
【００２３】
上記の構成において、正規鍵を用いた演算処理と、ダミー鍵を用いた演算処理との順番が、乱数の論理値に応じて異なるため、攻撃者が故障アタックにより鍵の書き換えを行ったとしても、書き換えられた鍵が正規鍵なのか、ダミー鍵なのかを判別することができなくなる。従って、上記〔１〕の場合と同様に、攻撃者による鍵の推定は困難となる。
【００２４】
〔９〕上記演算処理には、暗号化又は復号化処理と、上記暗号化又は復号化処理の結果を検証する検証処理とを含めることができる。上記演算処理部は、上記検証処理の結果に応じてリセットされる。
【００２５】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００２６】
《実施の形態１》
図１には、半導体装置の一例とされるＩＣカード用マイクロコンピュータの構成例が示される。
【００２７】
図１に示されるＩＣカード用マイクロコンピュータ１０は、例えば単結晶シリコンのような１個の半導体基板に相補型ＭＯＳ集積回路製造技術によって形成される。
【００２８】
ＩＣカード用マイクロコンピュータ１０は、データ入出力端子ＩＯ１，ＩＯ２、リセット端子ＲＥＳ＊（＊はローアクティブを意味する）、クロック端子ＣＬＫ、電源端子ＶＣＣ、グランド端子ＶＳＳ、アンテナコイル接続端子ＬＡ，ＬＢを有する。またＩＣカード用マイクロコンピュータ１は、ＣＰＵ（中央処理装置）１１、システムコントローラ（ＳＣＬ）１２、セキュリティロジック（ＳＬ）１３、入出力回路（ＩＯＰ）１４、ウォッチドッグタイマ（ＷＤＴ）１５、ＲＯＭ１６、ＲＡＭ１７、不揮発性メモリ（ＥＥＰＲＯＭ）１９、タイマ（ＴＭＲ）２０、公開鍵暗号化コプロセッサ（ＰＫＣＰ）２２、ＣＲＣコプロセッサ（ＣＲＣＰ）２３を有する。さらにＩＣカード用マイクロコンピュータ１は、ＤＥＳコプロセッサ（ＤＥＳＰ）２４、ＡＥＳコプロセッサ（ＡＥＳＰ）２５、送受信回路（ＵＡＲＴ）２６、ランダムナンバジェネレータ（ＲＮＧ）２７、デジタルナンバジェネレータ（ＤＮＧ）２８、非接触インタフェース（ＩＮＴＦ）２９、アナログコントローラ（ＡＣＮＴ）３１を有する。入出力回路１４、ウォッチドッグタイマ１５、ＲＯＭ１６、ＲＡＭ１７、不揮発性メモリ１９、タイマ２０、公開鍵暗号化コプロセッサ２２、ＣＲＣコプロセッサ２３、ＤＥＳコプロセッサ２４、ＡＥＳコプロセッサ２５、送受信回路２６、ランダムナンバジェネレータ２７、デジタルナンバジェネレータ２８、非接触インタフェース２９は、内部データバス１８を介して互いにデータのやり取りが可能にされる。セキュリティロジック１３、ＲＯＭ１６、ＲＡＭ１７、不揮発性メモリ１９、タイマ２０、公開鍵暗号化コプロセッサ２２、ＣＲＣコプロセッサ２３、ＤＥＳコプロセッサ２４、ＡＥＳコプロセッサ２５、送受信回路２６、ランダムナンバジェネレータ２７、デジタルナンバジェネレータ２８、及び非接触インタフェース２９には、ＣＰＵ１１から内部アドレスバス３２を介してアドレス信号が供給されるようになっている。
【００２９】
ＣＰＵ１１は、プログラム実行による演算処理機能を有する。このＣＰＵ１１は、内部データバス１８に対してパラレルデータを入出力し、内部アドレスバス３２にアドレス信号を出力する。システムコントローラ１２は、リセット等の内部動作モードを制御する。セキュリティロジック１３は、機密保護のための論理演算を行うための論理回路である。入出力回路（接触通信入出力回路）１４は、データ入出力端子ＩＯ１，ＩＯ２を用いてビットシリアルに外部インタフェースされる。ウォッチドッグタイマ１５は、ＩＣカード用マイクロコンピュータ１０が正常かどうかを監視するためのタイマである。ＲＯＭ１６は、ＣＰＵ１１で実行されるプログラム（暗号化プログラム、復号プログラム、インタフェース制御プログラム等）やデータを格納するのに利用される。ＲＡＭ１７は、ＣＰＵ１１の作業領域又はデータの一時記憶領域とされる。不揮発性メモリ１９は、セキュリティデータ等の格納に利用される。タイマ２０は、時間計測に用いられる。公開鍵暗号化コプロセッサ２１は、専用のＲＡＭ２２を含み、公開鍵暗号化処理を行う。ＣＲＣコプロセッサ２３は、ＣＲＣ（Cyclic Redundancy Code）コードの生成とチェックを行う。ＤＥＳコプロセッサ２４は、ＤＥＳ（Data Encryption Standard）方式による演算処理を行う。ＡＥＳコプロセッサ２５は、ＡＥＳ方式（Advanced Encryption Standard）方式による演算処理を行う。ＤＥＳコプロセッサ２４及びＡＥＳコプロセッサ２５では、ブロック暗号化が行われる。送受信回路２６は、反二重方式のシリアル送受信処理を行う。ランダムナンバジェネレータ２７は、ＡＩＳ３１準拠真性乱数を生成する。デジタルナンバジェネレータ２８は、論理的に乱数を高速生成する。非接触インタフェース２９は、専用の通信バッファ３０を含み、アナログコントローラ３１によって制御される非接触通信における情報のやり取りを仲介する。アナログコントローラ３１は、アンテナコイル接続端子ＬＡ，ＬＢに結合されたアンテナコイル３３を介して行われる非接触通信を制御する。
【００３０】
入出力回路１４に所定のＩＣカードコマンドが供給されると、当該コマンドの実行に必要な処理プログラムがＣＰＵ１１によって実行される。ＩＣカード用マイクロコンピュータ１０は、リセット信号ＲＥＳ＊によってリセット動作が指示されると、内部が初期化され、ＣＰＵ１１はＲＯＭ１６内の所定プログラムの先頭番地から命令実行を開始する。ＩＣカード用マイクロコンピュータ１０は、クロック信号ＣＬＫに同期動作される。ＩＣカード用マイクロコンピュータ１０は、電子決済サービスなどに利用可能なＩＳＯ／ＩＥＣ１５４０８の評価・認証機関による認証済みであっても、なくてもよい。
【００３１】
ＩＣカード用マイクロコンピュータ１０においては、暗号演算処理を行う際に、攻撃者による鍵の推定を困難にするため、正規の秘密鍵（「正規鍵」という）を用いた演算の他に、ダミー鍵を用いた演算を行うことによって、攻撃者のアタックによる鍵の書き換えが、正規鍵に対して行われたか、ダミー鍵に対して行われたかを分からなくすることで、攻撃者による鍵の推定を困難にしている。以下、それについて詳述する。
【００３２】
図２には、上記構成のＩＣカード用マイクロコンピュータ１０で実行される演算処理の流れが示される。
【００３３】
図２に示される演算処理は、基本的には、ＲＯＭ１６又は不揮発性メモリ１９内のプログラムに従ってＣＰＵ１１によって制御される。
【００３４】
先ず、乱数の生成が行われる（２０１）。乱数としては、ＣＰＵ１１の制御下で、ランダムナンバジェネレータ２７によって生成されたものを採用することができる（２０２）。生成された乱数は、特に制限されないが、１ビット構成とされ、ＣＰＵ１１の制御により、適宜の記憶媒体、例えばＲＡＭ１７に保持される。
【００３５】
次に、正規鍵に基づいてダミー鍵が計算され、鍵テーブルが作成される。正規鍵が不揮発性メモリ１９に保存されている場合、ＣＰＵ１１は、不揮発性メモリ１９内の正規鍵を読み出し、その論理を反転することでダミー鍵を作成する。例えば正規鍵が８ビット構成で「１０１０１０１０」の場合、ダミー鍵は「０１０１０１０１」とされる。作成されたダミー鍵は、適宜の記憶媒体、例えばＲＡＭ１７に保存される。鍵テーブルは、図４に示されるように、Ｔａｂｌｅ〔０〕，Ｔａｂｌｅ〔１〕の２種類作成される。作成された鍵テーブルＴａｂｌｅ〔０〕，Ｔａｂｌｅ〔１〕は、適宜の記憶媒体、例えばＲＡＭ１７に保持される。鍵テーブルＴａｂｌｅ〔０〕，Ｔａｂｌｅ〔１〕の内容は、上記ステップ２０１で生成された乱数１ビットの論理値によって異なる。乱数が論理値「０」のケースでは、鍵テーブルＴａｂｌｅ〔０〕に正規鍵が格納され、鍵テーブルＴａｂｌｅ〔１〕にダミー鍵が格納される。乱数が論理値「１」のケースでは、鍵テーブルＴａｂｌｅ〔０〕にダミー鍵が格納され、鍵テーブルＴａｂｌｅ〔１〕に正規鍵が格納される。
【００３６】
このような鍵テーブルは、図３に示されるように作成することができる。すなわち、上記ステップ２０１で生成された乱数１ビット（論理値「０」又は「１」）が「ｒ」に代入される（３０１）。例えば乱数１ビットが論理値「０」の場合、鍵テーブルＴａｂｌｅ〔０〕に正規鍵が格納され（３０２）、正規鍵の論理を反転したものが作業領域に作成される（３０３）。作業領域はＲＡＭ１７に形成することができる。次に、「ｒ」の反転値によって、「ｒ」が更新される（３０４）。換言すれば、「ｒ」と論理値「１」との排他的論理和によって「ｒ」が更新される。上記ステップ３０１で、「ｒ」に論理値「０」が代入された場合、上記ステップ３０４では、「ｒ」が論理値「１」に更新される。そして、上記ステップ３０３でＲＡＭ１７内に形成されたダミー鍵が鍵テーブルＴａｂｌｅ〔１〕に格納される（３０５）。
【００３７】
また、ステップ３０１において、乱数１ビットが論理値「１」の場合には、上記ステップ３０２において、鍵テーブルＴａｂｌｅ〔１〕に正規鍵が格納され、上記ステップ３０５において、鍵テーブルＴａｂｌｅ〔０〕にダミー鍵が格納される。
【００３８】
ここで、乱数が論理値「０」のケースと、乱数が論理値「１」のケースとで、鍵テーブルの作成開始から作成終了までに要する時間が異なると、そのような時間差に基づいて、攻撃者によって乱数の論理値を推定されるおそれがある。しかし、図３に示される鍵テーブル作成処理では、乱数が論理値「０」のケースにおいても、乱数が論理値「１」のケースにおいても、同一の処理サイクル、すなわち、ステップ３０１〜３０５のステップを経て鍵テーブルが作成されるため、乱数が論理値「０」のケースにおいても、乱数が論理値「１」のケースにおいても、鍵テーブルの作成開始から作成終了までに要する時間は、互いに等しくなる。これにより、乱数の論理値の推定を困難にしている。
【００３９】
次に、鍵の設定が行われる（２０３）。ここで、「鍵の設定」とは、鍵テーブルを参照して正規鍵又はダミー鍵を適宜の記憶媒体に書き込むことを意味する。正規鍵やダミー鍵の保存先（記憶媒体）は、ＲＡＭ１７でも良いし、ＤＥＳコプロセッサ２４やＡＥＳコプロセッサ２５などに内蔵されているレジスタでも良い。本例では、ステップ２０３〜２１１までの処理が２回繰り返され、第１回目の処理では、ステップ２０３において、鍵テーブルＴａｂｌｅ〔０〕が参照されて鍵の設定が行われ、第２回目の処理では、ステップ２０３において、鍵テーブルＴａｂｌｅ〔１〕が参照されて鍵の設定が行われるものとする。例えばＲＡＭ１７に保持されている乱数（上記ステップ２０１で生成されたもの）が論理値「０」の場合、第１回目の処理では、鍵テーブルＴａｂｌｅ〔０〕に格納されている正規鍵が用いられ、第２回目の処理では、鍵テーブルＴａｂｌｅ〔１〕に格納されているダミー鍵が用いられる。また、ＲＡＭ１７に保持されている乱数が論理値「１」の場合、第１回目の処理では、鍵テーブルＴａｂｌｅ〔０〕に格納されているダミー鍵が用いられ、第２回目の処理では、鍵テーブルＴａｂｌｅ〔１〕に格納されている正規鍵が用いられる。
【００４０】
次に、平文がＲＡＭ１７などに設定される（２０４）。この平文は、例えばこのＩＣカード用マイクロコンピュータ１０が搭載されたＩＣカードの認証のために、アンテナコイル３３を介してホストシステムから受信されたもの、又は不揮発性メモリ１９内に予め格納されているものとされる。
【００４１】
平文が設定されると、この平文の暗号化処理が実行される（２０５）。平文の暗号化処理は、ＣＰＵ１１の制御下で、ＤＥＳコプロセッサ２４又はＡＥＳコプロセッサ２５によって行うことができる。例えば上記ステップ２０１で生成された乱数が論理値「１」の場合、上記ステップ２０３において正規鍵の設定が行われているため、ここでは平文が正規鍵を用いて暗号化される（２０５）。暗号化処理の結果は、ＣＰＵ１１の制御下で、演算結果テーブルに格納される。演算結果テーブルは、適宜の記憶媒体、例えばＲＡＭ１７に形成することができる。演算結果テーブルは、例えば図５に示されるように、Ｔａｂｌｅ〔０〕，Ｔａｂｌｅ〔１〕の２種類作成される。演算結果テーブルＴａｂｌｅ〔０〕，Ｔａｂｌｅ〔１〕の内容は、上記ステップ２０１で生成された乱数１ビットの論理値によって異なる。乱数が論理値「０」のケースでは、演算結果テーブルＴａｂｌｅ〔０〕に正規鍵による暗号化処理の結果（「正規結果」という）が格納され、演算結果テーブルＴａｂｌｅ〔１〕にダミー鍵による暗号化処理の結果（「ダミー結果」という）が格納される。乱数が論理値「１」のケースでは、演算結果テーブルＴａｂｌｅ〔０〕にダミー結果が格納され、演算結果テーブルＴａｂｌｅ〔１〕に正規結果が格納される。
【００４２】
次に、上記ステップ２０６でＲＡＭ１７に格納された暗号化処理結果の復号化処理が行われる（２０７）。この復号化処理は、ＣＰＵ１１の制御下で、ＤＥＳコプロセッサ２４又はＡＥＳコプロセッサ２５によって行うことができる。例えば上記ステップ２０１で生成された乱数が論理値「１」の場合、上記ステップ２０３において正規鍵の設定が行われているため、ここでは正規鍵を用いた復号化処理が行われる。
【００４３】
次に、上記ステップ２０７での復号化処理の結果についての検証が行われる（２０８）。つまり、上記ステップ２０７での復号化処理の結果と、上記ステップ２０５で暗号化される前の平文とが比較される。この比較結果に基づいて、上記ステップ２０８の検証の結果が適切であるか否かの判別が行われる（２０９）。上記ステップ２０７での復号化処理の結果と、上記ステップ２０５で暗号化される前の平文とが異なれば、上記ステップ２０９での検証の結果は不適切である（Ｎｏ）と判断され、ＩＣカード用マイクロコンピュータ１０がリセットされる（２１４）。このリセットは、例えばＣＰＵ１１に内蔵されるプログラムカウンタをＲＯＭ１６の先頭番地に設定することでプログラムを最初から実行させる、いわゆるソフトウェアリセットとされる。また、上記ステップ２０７での復号化処理の結果と、上記ステップ２０５で暗号化される前の平文とが等しければ、上記ステップ２０９での検証の結果は適切である（Ｙｅｓ）と判断され、鍵の検証が行われる（２１０）。上記ステップ２０１で生成された乱数が論理値「０」の場合には、鍵テーブルＴａｂｌｅ〔０〕の正規鍵を用いた演算が先行されるため、ここでは正規鍵の検証が行われる。この検証によって、暗号化処理に用いられた正規鍵が適切であるか否かの判別が行われる（２１１）。正規鍵が不適切である（Ｎｏ）と判断された場合には、ＩＣカード用マイクロコンピュータ１０がリセットされる（２１４）。これに対して、正規鍵が適切である（Ｙｅｓ）と判断された場合には、上記ステップ２０３〜２１１までの処理が第１回目の処理であるか否かの判別が行われる（２１２）。この判別において、上記ステップ２０３〜２１１までの処理が第１回目の処理である（Ｙｅｓ）と判断された場合には、上記ステップＳ２０３の処理に戻り、上記ステップ２０３〜２１１までの第２回目の処理が行われる。この第２回目の処理における上記ステップ２０３での鍵の設定では、鍵テーブルＴａｂｌｅ〔１〕のダミー鍵の設定が行われる。この結果、上記ステップ２０５の暗号化処理では、平文がダミー鍵を用いて暗号化され、上記ステップ２０７の復号化処理では、ダミー鍵を用いて復号化される。そして、この復号化結果の検証や、ダミー鍵の検証が行われた後に、再び上記ステップ２１２の判別が行われる。この判別において、上記ステップ２０３〜２１１までの処理が第１回目の処理ではない（Ｎｏ）と判断された場合、それは既に第２回目の処理を完了したことを意味するから、正規結果の取得が行われる（２１３）。この正規結果の取得は、演算結果テーブルを参照して行われる。すなわち、乱数０のケースでは、演算結果テーブルＴａｂｌｅ〔０〕に格納されている正規結果が取得され、乱数１のケースでは、演算結果テーブルＴａｂｌｅ〔１〕に格納されている正規結果が取得される。取得された正規結果は、このＩＣカード用マイクロコンピュータ１０において引き続き実行される別の処理で参照可能とされる。
【００４４】
図７には、図２に示される演算処理の比較対象とされる処理の流れが示される。
【００４５】
図７に示される処理では、鍵の設定（７０１）、平文の設定（７０２）、暗号化の実行（７０３）、暗号化結果の格納（７０４）、復号化実行（７０５）、復号化処理についての検証（７０６）、復号化処理の検証結果の良否判定（７０７）、鍵の検証（７０８）、鍵の検証結果の良否判定（７０９）が行われるが、この一連の処理は、本例における正規鍵を用いた場合の処理に相当し、ダミー鍵を用いた場合の処理は行われない。このような処理の実行中に、攻撃者の何らかの故障アタック（例えばレーザアタック）によって鍵が書き換えられた場合、そのことを検知してチップがリセットされる（７１０）。このリセットにより、上記故障アタックに起因にして鍵が書き換えられたことが攻撃者に知られてしまうので、攻撃者によって鍵を推定されるおそれがある。
【００４６】
これに対して、本例においては、図２に示されるように、正規鍵を用いた演算処理と、ダミー鍵を用いた演算とが連続して行われ、しかもその演算の順番が、生成された乱数の論理値に応じて異なるため、攻撃者が故障アタックにより鍵の書き換えを行ったとしても、書き換えられた鍵が正規鍵なのか、ダミー鍵なのかを判別することができなくなる。鍵の推定は、正規鍵を書き換えた場合のチップの状態に基づいて行われるため、書き換えられた鍵が正規鍵なのか、ダミー鍵なのかを判別することができない状態では、攻撃者による鍵の推定は不可能となる。
【００４７】
実施の形態１によれば、以下の作用効果を得ることができる。
【００４８】
上記のように正規鍵を用いた演算処理と、ダミー鍵を用いた演算処理とが連続して行われ、しかもその演算の順番が、乱数の論理値に応じて異なるため、攻撃者が故障アタックにより鍵の書き換えを行ったとしても、書き換えられた鍵が正規鍵なのか、ダミー鍵なのかを判別することができなくなる。これにより、攻撃者による鍵の推定は不可能となる。
【００４９】
ここで、本例ではダミー鍵として、正規鍵の論理を反転したものを用いているが、乱数を用いてダミー鍵を形成することが考えられる。乱数を用いたダミー鍵の場合、認証処理等を何度も実行することによってエラーの偏りから正規鍵の推定が可能となる。例えば、認証処理等を１００回実行した場合、１／２が正解鍵、１／２がダミー鍵となり、ダミー鍵の論理値「０」「１」の出現率は、５０：５０、正解鍵の論理値「０」「１」の出現率は、０：１００、若しくは１００：０となる。このことから、乱数を用いた場合は、平均した論理値「０」「１」の出現率は、２５：７５、若しくは７５：２５となり、７５回発生したほうが正規鍵であると推定されてしまう。
【００５０】
これに対して、ダミー鍵として、正規鍵の論理を反転したものを用いた場合には、ダミー鍵の論理値「０」「１」の出現率が０：１００、若しくは１００：０となり、正規鍵の論理値「０」「１」の出現率がその逆となるから、平均した論理値「０」「１」の出現率は、５０：５０となる。これにより攻撃者は、論理値「０」と「１」のどちらが正規鍵であるかの判別ができなくなる。従って、ダミー鍵としては、乱数を用いて形成するよりも、正規鍵の論理を反転したものを用いるのが良い。
【００５１】
《実施の形態２》
ＩＣカード用マイクロコンピュータ１０の仕様によっては、上記ダミー鍵を用いた演算処理を上記演算処理部で実行するか否かをフラグによって指定したほうが良い場合がある。
【００５２】
ＩＣカード用マイクロコンピュータ１０において、例えば図６に示されるように認証処理（６０１）が終了した後にセッション鍵の生成が行われ（６０２）、その後、上記セッション鍵を使った暗号化処理又は復号化処理（６０３）が行われる場合を考える。上記セッション鍵を使った暗号化処理又は復号化処理（６０３）においてエラーが発生し、チップがリセットされた場合には、ステップ６０２で再びセッション鍵の生成が行われるため、ステップ６０３の処理において、攻撃者の故障アタックを考慮する必要がない。これに対して、ステップ６０１の認証処理においては、リセットされた場合でも、同じ鍵が使用されるため、攻撃者の故障アタックを考慮する必要がある。そこで、上記ダミー鍵を用いた演算処理（図２のステップ２０５〜２１１の処理）を上記ＣＰＵ１１で実行するか否かを指定するためのフラグを設定可能なフラグ設定エリアを設け、このフラグ設定エリアに設定されたフラグに応じて、上記ダミー鍵を用いた演算処理を実行するか否かを決定するようにする。上記フラグ設定エリアは、適宜の記憶媒体、例えばＲＡＭ１７に形成することができる。また、上記フラグの設定は、ＣＰＵ１１によって行うことができる。
【００５３】
ここで、フラグ設定エリアに設定されたフラグが論理値「１」の場合、上記ダミー鍵を用いた演算処理が行われ、フラグ設定エリアに設定されたフラグが論理値「０」の場合、上記ダミー鍵を用いた演算処理が行われないものとする。この場合、図６におけるステップ６０１の認証処理が開始される前に、フラグ設定エリアに設定されたフラグが論理値「１」に設定され、ステップ６０１の認証処理が終了した時点で、フラグ設定エリアに設定されたフラグが論理値「０」に変更される。これにより、上記ステップ６０１による認証処理においては、上記ダミー鍵を用いた演算処理が実行されるが、上記ステップ６０３のセッション鍵を使った暗号化処理又は復号化処理においては、上記ダミー鍵を用いた演算処理は実行されない。
【００５４】
このように、上記ダミー鍵を用いた演算処理を上記ＣＰＵ１１で実行するか否かを指定するためのフラグを設定可能なフラグ設定エリアを設け、このフラグ設定エリアに設定されたフラグに応じて、上記ダミー鍵を用いた演算処理を実行するか否かを決定するようにすれば、ＩＣカード用マイクロコンピュータ１０において、必要に応じて上記ダミー鍵を用いた演算処理を実行することができるので、無意味な演算処理を行わずに済む。
【００５５】
《実施の形態３》
実施の形態１では、ＣＰＵ１１の制御下で、ランダムナンバジェネレータ２７によって生成された乱数を１ビット構成としたが、攻撃者の故障アタックが１ビット単位で行われることを考えると、乱数を１ビット構成とするよりも、複数ビット構成としたほうが良い。また、このとき、乱数の各ビットを互いに異なる記録媒体、若しくは記憶エリアに格納するのが望ましい。例えば上記乱数を２ビット構成とした場合には、２ビット構成の乱数の論理値が「１０」は、実施の形態１における乱数の論理値「０」に対応し、２ビット構成の乱数の論理値「０１」は、実施の形態１における乱数の論理値「１」に対応する。つまり、図８に示されるように、乱数が論理値「１０」のケースでは、鍵テーブルＴａｂｌｅ〔０〕に正規鍵が格納され、鍵テーブルＴａｂｌｅ〔１〕にダミー鍵が格納される。乱数が論理値「０１」のケースでは、鍵テーブルＴａｂｌｅ〔０〕にダミー鍵が格納され、鍵テーブルＴａｂｌｅ〔１〕に正規鍵が格納される。また、図９に示されるように、乱数が論理値「１０」のケースでは、演算結果テーブルＴａｂｌｅ〔０〕に正規結果が格納され、演算結果テーブルＴａｂｌｅ〔１〕にダミー結果が格納される。乱数が論理値「０１」のケースでは、演算結果テーブルＴａｂｌｅ〔０〕にダミー結果が格納され、演算結果テーブルＴａｂｌｅ〔１〕に正規結果が格納される。
【００５６】
このように、ランダムナンバジェネレータ２７によって生成された乱数を複数ビット構成とした場合、この複数ビット構成の乱数を外部からの故障アタックによって同時に論理固定することは困難であるため、セキュリティの強化を図ることができる。
【００５７】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００５８】
例えば、図２のステップ２０４において、平文に代えて暗号文を設定することができる。その場合には、図２のステップ２０５では、上記暗号文の復号化処理が実行され、図２のステップ２０７では、暗号化処理が実行される。
【００５９】
図１に示されるＩＣカード用マイクロコンピュータ１０に、接触通信における情報のやり取りを仲介するための接触インタフェースを搭載することができる。
【符号の説明】
【００６０】
１０  ＩＣカード用マイクロコンピュータ
１１  ＣＰＵ
１２  システムコントローラ
１３  セキュリティロジック
１４  入出力回路
１５  ウォッチドッグタイマ
１６  ＲＯＭ
１７  ＲＡＭ
１８  内部データバス
１９  不揮発性メモリ
２０  タイマ
２１  公開鍵暗号化コプロセッサ
２２  ＲＡＭ
２３  ＣＲＣコプロセッサ
２４  ＤＥＳコプロセッサ
２５  ＡＥＳコプロセッサ
２６  送受信回路
２７  ランダムナンバジェネレータ
２８  デジタルナンバジェネレータ
２９  非接触インタフェース
３０  通信バッファ
３１  アナログコントローラ
３２  内部アドレスバス
３３  アンテナコイル
【図１】
2013157761.tif 000003
【図２】
2013157761.tif 000004
【図３】
2013157761.tif 000005
【図４】
2013157761.tif 000006
【図５】
2013157761.tif 000007
【図６】
2013157761.tif 000008
【図７】
2013157761.tif 000009
【図８】
2013157761.tif 000010
【図９】
2013157761.tif 000011