(57)【要約】【課題】特に暗証番号などの重要データへの電力解析攻撃を困難にすることが可能となり、耐タンパ性能が著しく向上する携帯可能電子装置およびＩＣカードを提供する。【解決手段】不揮発性メモリに固有の認証用情報としての暗証番号が登録されていて、この登録された暗証番号と外部から入力される暗証番号とが一致するか否かの確認を行なうことにより、当該ＩＣカードの所有者は正当な所有者であるか否かを判定するＩＣカードにおいて、外部から入力される暗証番号とあらかじめ登録されている暗証番号とが一致するか否かの確認を行なう、それぞれが確認方法が異なっている複数の検証処理手段を設け、検証処理を実行するたびに、複数の検証処理手段の中の任意の１つをランダムに選択し、この選択した検証処理手段による検証処理を実行させる。【選択図】      図７
2008243045.tif 000002
【特許請求の範囲】
【請求項１】
あらかじめ認証用情報を記憶している認証用情報記憶手段と、
外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との間に所定の関係が成立するか否かの確認を行なう、それぞれが確認方法が異なっている複数の検証処理手段と、
外部から入力される照合命令を受信すると、前記複数の検証処理手段の中の任意の１つをランダムに選択し、この選択した検証処理手段による検証処理を実行させる選択手段と、
前記選択された検証処理手段による検証処理の結果を外部へ出力する出力手段と、
を具備したことを特徴とする携帯可能電子装置。
【請求項２】
あらかじめ認証用情報を記憶している認証用情報記憶手段と、
外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との間に所定の関係が成立するか否かの確認を行なう、それぞれが確認方法が異なっている複数の検証処理手段と、
外部から入力される照合命令を受信すると、前記複数の検証処理手段の中の任意の１つをランダムに選択し、この選択した検証処理手段による検証処理を実行させる選択手段と、
前記選択された検証処理手段による検証処理の結果、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との間に所定の関係が成立した場合で、その検証処理の実行回数があらかじめ定められた所定値以内の場合、前記選択手段からの動作を再度実行するよう制御する制御手段と、
前記選択された検証処理手段による検証処理の結果、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との間に所定の関係が成立しなかった場合、あるいは、前記検証処理の実行回数があらかじめ定められた所定値以上になった場合、最後に実行された検証処理手段の検証処理結果を外部へ出力する出力手段と、
を具備したことを特徴とする携帯可能電子装置。
【請求項３】
前記複数の検証処理手段は、少なくとも、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報とを比較することにより、両認証用情報の間に所定の関係が成立するか否かの確認を行なう検証処理手段、外部から照合命令とともに入力される認証用情報から前記認証用情報記憶手段に記憶されている認証用情報を減算することにより、両認証用情報の間に所定の関係が成立するか否かの確認を行なう検証処理手段、および、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との排他的論理和をとることにより、両認証用情報の間に所定の関係が成立するか否かの確認を行なう検証処理手段を含んでいることを特徴とする請求項１または請求項２記載の携帯可能電子装置。
【請求項４】
あらかじめ認証用情報を記憶している認証用情報記憶手段と、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との間に所定の関係が成立するか否かの確認を行なう、それぞれが確認方法が異なっている複数の検証処理手段と、外部から入力される照合命令を受信すると、前記複数の検証処理手段の中の任意の１つをランダムに選択し、この選択した検証処理手段による検証処理を実行させる選択手段と、前記選択された検証処理手段による検証処理の結果を外部へ出力する出力手段とを有して構成されるＩＣモジュールと、
このＩＣモジュールを収納したＩＣカード本体と、
を具備したことを特徴とするＩＣカード。
【請求項５】
あらかじめ認証用情報を記憶している認証用情報記憶手段と、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との間に所定の関係が成立するか否かの確認を行なう、それぞれが確認方法が異なっている複数の検証処理手段と、外部から入力される照合命令を受信すると、前記複数の検証処理手段の中の任意の１つをランダムに選択し、この選択した検証処理手段による検証処理を実行させる選択手段と、前記選択された検証処理手段による検証処理の結果、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との間に所定の関係が成立した場合で、その検証処理の実行回数があらかじめ定められた所定値以内の場合、前記選択手段からの動作を再度実行するよう制御する制御手段と、前記選択された検証処理手段による検証処理の結果、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との間に所定の関係が成立しなかった場合、あるいは、前記検証処理の実行回数があらかじめ定められた所定値以上になった場合、最後に実行された検証処理手段の検証処理結果を外部へ出力する出力手段とを有して構成されるＩＣモジュールと、
このＩＣモジュールを収納したＩＣカード本体と、
を具備したことを特徴とするＩＣカード。
【請求項６】
前記複数の検証処理手段は、少なくとも、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報とを比較することにより、両認証用情報の間に所定の関係が成立するか否かの確認を行なう検証処理手段、外部から照合命令とともに入力される認証用情報から前記認証用情報記憶手段に記憶されている認証用情報を減算することにより、両認証用情報の間に所定の関係が成立するか否かの確認を行なう検証処理手段、および、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との排他的論理和をとることにより、両認証用情報の間に所定の関係が成立するか否かの確認を行なう検証処理手段を含んでいることを特徴とする請求項４または請求項５記載のＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえば、書込み、書換えが可能な不揮発性メモリおよびＣＰＵ（セントラル・プロセッシング・ユニット）などの制御素子を有し、選択的に外部との間でデータの入出力を行なう手段を備えたＩＣ（集積回路）チップを内蔵した、いわゆるＩＣカードと称される携帯可能電子装置に係り、特に、不揮発性メモリに固有の認証用情報としての暗証番号（ＰＩＮ：Personal Identifier Nunber）が登録（記憶）されていて、この登録された暗証番号と外部から入力される暗証番号とが一致するか否かの確認を行なうことにより、当該携帯可能電子装置の所有者は正当な所有者であるか否かを判定するＩＣカードなどの携帯可能電子装置およびＩＣカードに関する。
【背景技術】
【０００２】
最近、携帯可能電子装置として、書換え可能な不揮発性メモリとしてのＥＥＰＲＯＭ、揮発性メモリとしてのＲＡＭ、これらのメモリに対してアクセス（データの読出しおよびまたは書込み等）を行なう制御素子としてのＣＰＵ、および、ＣＰＵの動作用プログラム等を格納したＲＯＭを有し、カードリーダ・ライタを含む端末装置から供給されるコマンド（命令）に対応した処理を実行して、その処理結果を端末装置へ出力する手段を備えたＩＣチップを内蔵したＩＣカードが産業各方面で利用されている。  
一般に、このようなＩＣカードにあっては、コマンドやレスポンスを用いて、端末装置との間でデータの入出力を行なうようになっている。  
また、この種のＩＣカードは、不揮発性メモリに、あらかじめ固有の認証用情報としての暗証番号が登録（記憶）されていて、この登録された暗証番号と外部から照合コマンドとともに入力される暗証番号とが一致するか否かの確認を行なうことにより、当該ＩＣカードの所有者は正当な所有者であるか否かを判定するものがある。
【０００３】
ところで、ＩＣカードの特徴の１つとして、偽造や改竄が困難であることが挙げられる。しかし、近年では、偽造や改竄を目的とした、様々なタンパ攻撃が公表されており、その中の１つに、ＩＣカードの消費電力を測定して、ＣＰＵの処理内容の相関を見付け出すことにより、不揮発性メモリに記憶された暗証番号などの重要データを盗みとろうとする、電力解析攻撃があり、大きな問題となっている（たとえば、特許文献１参照）。
【特許文献１】特開２００５−２２３４７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記したように、ＩＣカードの消費電力を測定して、ＣＰＵの処理内容の相関を見付け出すことにより、不揮発性メモリに記憶された暗証番号などの重要データを盗みとろうとする、電力解析攻撃があり、それに対する対策が強く要望されている。
【０００５】
そこで、本発明は、特に暗証番号などの重要データへの電力解析攻撃を困難にすることが可能となり、耐タンパ性能が著しく向上する携帯可能電子装置およびＩＣカードを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の携帯可能電子装置は、あらかじめ認証用情報を記憶している認証用情報記憶手段と、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との間に所定の関係が成立するか否かの確認を行なう、それぞれが確認方法が異なっている複数の検証処理手段と、外部から入力される照合命令を受信すると、前記複数の検証処理手段の中の任意の１つをランダムに選択し、この選択した検証処理手段による検証処理を実行させる選択手段と、前記選択された検証処理手段による検証処理の結果を外部へ出力する出力手段とを具備している。
【０００７】
また、本発明の携帯可能電子装置は、あらかじめ認証用情報を記憶している認証用情報記憶手段と、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との間に所定の関係が成立するか否かの確認を行なう、それぞれが確認方法が異なっている複数の検証処理手段と、外部から入力される照合命令を受信すると、前記複数の検証処理手段の中の任意の１つをランダムに選択し、この選択した検証処理手段による検証処理を実行させる選択手段と、前記選択された検証処理手段による検証処理の結果、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との間に所定の関係が成立した場合で、その検証処理の実行回数があらかじめ定められた所定値以内の場合、前記選択手段からの動作を再度実行するよう制御する制御手段と、前記選択された検証処理手段による検証処理の結果、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との間に所定の関係が成立しなかった場合、あるいは、前記検証処理の実行回数があらかじめ定められた所定値以上になった場合、最後に実行された検証処理手段の検証処理結果を外部へ出力する出力手段とを具備している。
【０００８】
また、本発明のＩＣカードは、あらかじめ認証用情報を記憶している認証用情報記憶手段と、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との間に所定の関係が成立するか否かの確認を行なう、それぞれが確認方法が異なっている複数の検証処理手段と、外部から入力される照合命令を受信すると、前記複数の検証処理手段の中の任意の１つをランダムに選択し、この選択した検証処理手段による検証処理を実行させる選択手段と、前記選択された検証処理手段による検証処理の結果を外部へ出力する出力手段とを有して構成されるＩＣモジュールと、このＩＣモジュールを収納したＩＣカード本体とを具備している。
【０００９】
また、本発明のＩＣカードは、あらかじめ認証用情報を記憶している認証用情報記憶手段と、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との間に所定の関係が成立するか否かの確認を行なう、それぞれが確認方法が異なっている複数の検証処理手段と、外部から入力される照合命令を受信すると、前記複数の検証処理手段の中の任意の１つをランダムに選択し、この選択した検証処理手段による検証処理を実行させる選択手段と、前記選択された検証処理手段による検証処理の結果、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との間に所定の関係が成立した場合で、その検証処理の実行回数があらかじめ定められた所定値以内の場合、前記選択手段からの動作を再度実行するよう制御する制御手段と、前記選択された検証処理手段による検証処理の結果、外部から照合命令とともに入力される認証用情報と前記認証用情報記憶手段に記憶されている認証用情報との間に所定の関係が成立しなかった場合、あるいは、前記検証処理の実行回数があらかじめ定められた所定値以上になった場合、最後に実行された検証処理手段の検証処理結果を外部へ出力する出力手段とを有して構成されるＩＣモジュールと、このＩＣモジュールを収納したＩＣカード本体とを具備している。
【発明の効果】
【００１０】
本発明によれば、外部から入力される認証用情報とあらかじめ登録されている認証用情報との間に所定の関係が成立するか否かの確認を行なう、それぞれが確認方法が異なっている複数の検証処理手段を設け、検証処理を実行するたびに、複数の検証処理手段の中の任意の１つをランダムに選択し、この選択した検証処理手段による検証処理を実行させることで、特に暗証番号（認証用情報）などの重要データへの電力解析攻撃を困難にすることが可能となり、耐タンパ性能が著しく向上する携帯可能電子装置およびＩＣカードを提供できる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態について図面を参照して説明する。  
図１は、本発明に係る携帯可能電子装置としてのＩＣカードを取扱うＩＣカードシステムの構成例を示すものである。このＩＣカードシステムは、ＩＣカード１０１を外部装置としてのカードリーダ・ライタ１０２を介して端末装置１０３と接続可能にするとともに、端末装置１０３にキーボード１０４、ＣＲＴ表示部１０５、プリンタ１０６を接続して構成される。
【００１２】
ＩＣカード１０１は、カードリーダ・ライタ１０２からの電源供給により動作可能な状態となり、カードリーダ・ライタ１０２から供給されるコマンドに応じて種々の処理を実行する。カードリーダ・ライタ１０２は、ＩＣカード１０１に対し動作電源を供給するとともに種々の処理を要求するコマンドを供給する。
【００１３】
端末装置１０３は、たとえば、パーソナルコンピュータなどにより構成されていて、図示しないメモリに記憶されている各種制御プログラムを実行することにより、各種の処理を実行するとともに、カードリーダ・ライタ１０２を介してＩＣカード１０１との間でデータの入出力を行なう。
【００１４】
ここに、図１のＩＣカードシステムを例えばクレジットカードなどの決済システムに適用した場合はＰＯＳ端末装置やＡＴＭ（自動取引装置）となり、ＩＣカード使用者（カード所持者）はキーボード１０４を使用して、固有の認証用情報としての暗証番号を入力することとなる。  
なお、キーボード１０４でＩＣカード使用者（カード所持者）により入力される暗証番号を、以降は外部入力暗証番号と記載する。
【００１５】
図２は、ＩＣカード１０１の構成を示すもので、制御素子としてのＣＰＵ２０１、記憶内容が書換え可能な記憶手段（メモリ）としてのデータメモリ２０２、ワーキングメモリ２０３、プログラムメモリ２０４、および、カードリーダ・ライタ１０２との通信を行なうための通信部２０５によって構成されている。そして、これらのうち、破線内の部分（ＣＰＵ２０１、データメモリ２０２、ワーキングメモリ２０３、プログラムメモリ２０４）は１つ（あるいは複数）のＩＣチップ２０６で構成され、さらに、このＩＣチップ２０６と通信部２０５とが一体的にＩＣモジュール化されて、ＩＣカード本体１０１ａ内に埋設されている。
【００１６】
ＣＰＵ２０１は、各種の判定処理や判断処理およびメモリへの書込みや読出しなどの各種のデータ処理を行なう制御部である。
【００１７】
データメモリ２０２は、たとえば、ＥＥＰＲＯＭ（エレクトリカリ・イレーザブル・アンド・プログラマブル・リード・オンリ・メモリ）などの消去（書換え）可能な不揮発性メモリで構成されていて、固有の認証用情報としての暗証番号や各種アプリケーションデータなどの各種データがファイル構造で記憶される。
【００１８】
ワーキングメモリ２０３は、ＣＰＵ２０１が処理を行なう際の処理データを一時的に保持するための作業用のメモリであり、たとえば、ＲＡＭ（ランダム・アクセス・メモリ）などの揮発性メモリで構成されている。
【００１９】
プログラムメモリ２０４は、たとえば、マスクＲＯＭ（リード・オンリ・メモリ）などの書換え不可能な固定メモリで構成されており、ＣＰＵ２０１の制御プログラムなどを記憶している。
【００２０】
通信部２０５は、ＩＣカード１０１が非接触式（無線式）ＩＣカードの場合にはアンテナ部として構成され、カードリーダ・ライタ１０２から送信された変調波を非接触で受信したり外部へ変調波を発信したりするようになっている。また、この通信部２０５で受信した変調波から内部回路に供給するための電源やクロックを生成するようになっている。また、接触式ＩＣカードの場合にはコンタクト部として構成され、カードリーダ・ライタ１０２に設けられたＩＣカード端子部（図示しない）と接触することにより電源やクロックを得るようになっている。
【００２１】
本実施の形態の場合、キーボード１０４でＩＣカード使用者（カード所持者）により入力された暗証番号（外部入力暗証番号）が、端末装置１０３から照合コマンドに付加されてカードリーダ・ライタ１０２を介してＩＣカード１０１に送信される。
【００２２】
ＩＣカード１０１は、端末装置１０３から送信された照合コマンドを通信部２０５により受信し、当該照合コマンドに付加された暗証番号をワーキングメモリ２０２に一時的に保持し、データメモリ２０２に保持されている暗証番号との間に所定の関係が成立するか否かの確認、この例の場合は両暗証番号の一致・不一致の検証処理を行なう。
【００２３】
その後、ＩＣカード１０１は、検証処理結果（一致あるいは不一致）を通信部２０５によりカードリーダ・ライタ１０２を介して端末装置１０３へ送信する。端末装置１０３は、カードリーダ・ライタ１０２を介して受信した検証処理結果をＣＲＴ表示部１０５に表示し、当該表示内容によりＩＣカード使用者（カード所持者）は検証処理結果を確認することとなる。
【００２４】
図３は、本実施の形態における暗証番号３０１および外部入力暗証番号３０２の概念図を示す。暗証番号３０１は、前述したようにデータメモリ２０２に登録（記憶）されており、たとえば、アドレス「００００ｈ〜０００７ｈ」に記憶されているものとする。外部入力暗証番号３０２は、前述したように端末装置１０３から照合コマンドに付加されて入力され、ワーキングメモリ２０３に一時的に保持されており、たとえば、アドレス「１０００ｈ〜１００７ｈ」に記憶されているものとする。この例では、暗証番号３０１および外部入力暗証番号３０２ともに８バイトのデータ長で、同一の値を有するものとする。
【００２５】
図４〜図６は、図３に示した暗証番号の概念図を想定した、本実施の形態における複数の暗証番号検証処理方法（複数の検証処理手段）のアセンブラによるコーディング例を示す。コーディング例はサブルーチンとして記述されており、破線で囲まれている部分（図４はＬ４０７、図５はＬ５０７、図６はＬ６０７）が暗証番号３０１と外部入力暗証番号３０２を直接検証する部分であり、この部分の命令コードを変えることが電力解析攻撃への対抗策となる。
【００２６】
コーディング例は３つであるが、より多くの検証処理方法が適用される方が対抗策として強いものとなる。また、サブルーチンの呼び出し元は、いわゆるＺフラグで検証結果を判断することとなる、コーディング例では、Ｚフラグ＝１の場合が暗証番号３０１と外部入力暗証番号３０２とが一致したことを示し、Ｚフラグ＝０の場合が不一致だったことを示す。
【００２７】
図４は、暗証番号検証処理方法の１つとして、「比較処理での検証処理方法」のアセンブラによるコーディング例を示す。初期設定として、Ｌ４０１でＨＬレジスタに暗証番号３０１の先頭アドレス「００００ｈ」を設定、Ｌ４０２でＤＥレジスタに外部入力暗証番号３０２の先頭アドレス「１０００ｈ」を設定、Ｌ４０３でＢレジスタに暗証番号３０１のデータ長である即値「８」を設定する。ＨＬレジスタは暗証番号３０１のインデックスとして、ＤＥレジスタは外部入力暗証番号３０２のインデックスとして、Ｂレジスタは検証処理のカウンタとして使用される。
【００２８】
次に、Ｌ４０４〜Ｌ４０８で検証処理が実施される。すなわち、Ｌ４０４〜Ｌ４０６でＡレジスタに暗証番号３０１のうちのｎバイト目のデータ（ｎ＝１〜８）が転送され、Ｃレジスタに外部入力暗証番号３０２のうちのｎバイト目のデータ（ｎ＝１〜８）が転送される。次に、Ｌ４０７でＡレジスタの内容とＣレジスタの内容との比較処理を行ない、Ｌ４０８で比較処理の結果を判断する。
【００２９】
比較処理の結果、両内容が一致した場合は後続のＬ４０９以降の処理を実施し、不一致の場合は処理を終了する。すなわち、Ｌ４０９〜Ｌ４１１でインデックス（ＨＬレジスタ、ＤＥレジスタ）およびカウンタ（Ｂレジスタ）の更新を行なう。インデックスはインクリメント処理（たとえば、「００００ｈ」の場合は「１」を加算して「０００１ｈ」に更新）を行ない、カウンタにはデクリメント処理（たとえば、「８」の場合は「１」を減算して「７」に更新）を実施する。
【００３０】
次に、Ｌ４１２で更新されたカウンタが「０」であるかの確認を行なう。「０」でない場合（「１〜７」の場合）はＬ４０４へジャンプし、「０」である場合はＬ４１３で処理を終了する。
【００３１】
図５は、暗証番号検証処理方法の１つとして、「減算処理での検証処理方法」のアセンブラによるコーディング例を示す。初期設定として、Ｌ５０１でＨＬレジスタに暗証番号３０１の最終アドレス「０００７ｈ」を設定、Ｌ５０２でＤＥレジスタに外部入力暗証番号３０２の最終アドレス「１００７ｈ」を設定、Ｌ５０３でＢレジスタに初期値である即値「０」を設定する。ＨＬレジスタは暗証番号３０１のインデックスとして、ＤＥレジスタは外部入力暗証番号３０２のインデックスとして、Ｂレジスタは検証処理のカウンタとして使用される。
【００３２】
次に、Ｌ５０４〜Ｌ５０８で検証処理が実施される。すなわち、Ｌ５０４〜Ｌ５０６でＡレジスタに暗証番号３０１のうちのｎバイト目のデータ（ｎ＝１〜８）が転送され、Ｃレジスタに外部入力暗証番号３０２のうちのｎバイト目のデータ（ｎ＝１〜８）が転送される。次に、Ｌ５０７でＡレジスタの内容からＣレジスタの内容を減算する減算処理を行ない、Ｌ５０８で減算処理の結果を判断する。
【００３３】
減算処理の結果、両内容が一致した場合は後続のＬ５０９以降の処理を実施し、不一致の場合は処理を終了する。すなわち、Ｌ５０９〜Ｌ５１１でインデックス（ＨＬレジスタ、ＤＥレジスタ）およびカウンタ（Ｂレジスタ）の更新を行なう。インデックスはデクリメント処理（たとえば、「０００７ｈ」の場合は「１」を減算して「０００６ｈ」に更新）を行ない、カウンタにはインクリメント処理（たとえば、「０」の場合は「１」を加算して「１」に更新）を実施する。
【００３４】
次に、Ｌ５１２〜Ｌ５１４で更新されたカウンタが「８」であるかの確認を行なう。「８」でない場合（「１〜７」の場合）はＬ５０４へジャンプし、「８」である場合はＬ５１５で処理を終了する。
【００３５】
図６は、暗証番号検証処理方法の１つとして、「排他的論理和での検証処理方法」のアセンブラによるコーディング例を示す。初期設定として、Ｌ６０１でＨＬレジスタに暗証番号３０１の先頭アドレス「００００ｈ」を設定、Ｌ６０２でＤＥレジスタに外部入力暗証番号３０２の先頭アドレス「１０００ｈ」を設定、Ｌ６０３でＢレジスタに暗証番号３０１のデータ長である即値「８」を設定する。ＨＬレジスタは暗証番号３０１のインデックスとして、ＤＥレジスタは外部入力暗証番号３０２のインデックスとして、Ｂレジスタは検証処理のカウンタとして使用される。
【００３６】
次に、Ｌ６０４〜Ｌ６０８で検証処理が実施される。すなわち、Ｌ６０４〜Ｌ６０６でＡレジスタに暗証番号３０１のうちのｎバイト目のデータ（ｎ＝１〜８）が転送され、Ｃレジスタに外部入力暗証番号３０２のうちのｎバイト目のデータ（ｎ＝１〜８）が転送される。次に、Ｌ４０７でＡレジスタの内容とＣレジスタの内容との排他的論理和の演算処理を行ない、Ｌ６０８で演算処理の結果を判断する。
【００３７】
演算処理の結果、両内容が一致した場合は後続のＬ６０９以降の処理を実施し、不一致の場合は処理を終了する。すなわち、Ｌ６０９〜Ｌ６１１でインデックス（ＨＬレジスタ、ＤＥレジスタ）およびカウンタ（Ｂレジスタ）の更新を行なう。インデックスはインクリメント処理（たとえば、「００００ｈ」の場合は「１」を加算して「０００１ｈ」に更新）を行ない、カウンタにはデクリメント処理（たとえば、「８」の場合は「１」を減算して「７」に更新）を実施する。
【００３８】
次に、Ｌ６１２で更新されたカウンタが「０」であるかの確認を行なう。「０」でない場合（「１〜７」の場合）はＬ６０４へジャンプし、「０」である場合はＬ６１３で処理を終了する。
【００３９】
図７は、図４〜図６で例示したコーディング例をサブルーチン（モジュール）として使用した場合の動作例を示しており、以下、それについて説明する。
【００４０】
端末装置１０３からの照合コマンドをカードリーダ・ライタ１０２を介して受信すると（ステップＳ１）、ＣＰＵ２０１は、受信した照合コマンドから、それに付加されている暗証番号を取出し、ワーキングメモリ２０３内の暗証番号格納部に一時的に格納する（ステップＳ２）。なお、以降は、ワーキングメモリ２０３に一時的に格納した暗証番号を外部入力暗証番号３０２と記載する。
【００４１】
次に、ＣＰＵ２０１は、後続処理で暗証番号検証処理方法を選択するための乱数を１バイト生成し、その下位２ビットを確認する（ステップＳ３）。この場合、生成される乱数は、乱数生成回路を使用するなど、高い乱数性があることが望ましい。
【００４２】
次に、ＣＰＵ２０１は、生成した乱数を使用して、図４〜図６のサブルーチンを選択する（ステップＳ４〜Ｓ８）。すなわち、生成した乱数の下位２ビットが「０１」であるか否かを判定し（ステップＳ４）、下位２ビットが「０１」であれば、サブルーチンとして図４の「比較処理での検証処理方法」が選択される（ステップＳ５）。
【００４３】
ステップＳ４における判定の結果、下位２ビットが「０１」でなければ、生成した乱数の下位２ビットが「１０」であるか否かを判定し（ステップＳ６）、下位２ビットが「１０」であれば、サブルーチンとして図５の「減算処理での検証処理方法」が選択され（ステップＳ７）、下位２ビットが「１０」でなければ、サブルーチンとして図６の「排他的論理和での検証処理方法」が選択される（ステップＳ８）。
【００４４】
具体例を用いて説明すると、たとえば、生成した乱数が７１ｈ＝０１１１０００１の場合、ステップＳ４で「ＹＥＳ」と判定されて、ステップＳ５で「比較処理での検証処理方法」が選択される。
【００４５】
また、たとえば、生成した乱数が７２ｈ＝０１１１００１０の場合、ステップＳ４で「ＮＯ」と判定され、ステップＳ６で「ＹＥＳ」と判定されて、ステップＳ７で「減算処理での検証処理方法」が選択される。
【００４６】
さらに、たとえば、生成した乱数が７０ｈ＝０１１１００００の場合、ステップＳ４で「ＮＯ」と判定され、ステップＳ６でも「ＮＯ」と判定されて、ステップＳ８で排他的論理和での検証処理方法」が選択される。
【００４７】
次に、ＣＰＵ２０１は、上記のようにして選択されたサブルーチンを使用して、ワーキングメモリ２０３に格納されている外部入力暗証番号３０２およびデータメモリ２０２に登録されている暗証番号３０１との検証処理、すなわち、ワーキングメモリ２０２に格納されている暗証番号とデータメモリ２０２に登録されている暗証番号３０１との間に所定の関係が成立するか否かの確認、この例の場合は両暗証番号の一致・不一致の検証処理を行なう（ステップＳ９）。
【００４８】
ステップＳ９での検証処理の結果、両暗証番号が一致（Ｚフラグ＝１）した場合（ステップＳ１０）、ＣＰＵ２０１は、ワーキングメモリ２０３内のステータス格納部へ「暗証番号は一致」を意味するステータスを設定（格納）し（ステップＳ１１）、その後、設定されたステータスを通信部２０５を介して外部装置（端末装置１０３）へ送信する（ステップＳ１２）。
【００４９】
また、ステップＳ９での検証処理の結果、両暗証番号が不一致（Ｚフラグ＝０）の場合（ステップＳ１０）、ＣＰＵ２０１は、ワーキングメモリ２０３内のステータス格納部へ「暗証番号は不一致」を意味するステータスを設定（格納）し（ステップＳ１３）、その後、設定されたステータスを通信部２０５を介して外部装置（端末装置１０３）へ送信する（ステップＳ１２）。
【００５０】
図８は、図４〜図６で例示したコーディング例をサブルーチン（モジュール）として使用し、複数回検証処理を行なう場合の動作例を示しており、以下、それについて説明する。なお、以下の動作例では２回検証処理を行なう場合であり、検証処理を複数回行なうのは、相関を低減する目的もあるが、その他のタンパ攻撃（たとえば、故障利用攻撃等）の対抗策としても有効となるためである。
【００５１】
端末装置１０３からの照合コマンドをカードリーダ・ライタ１０２を介して受信すると（ステップＳ２１）、ＣＰＵ２０１は、受信した照合コマンドから、それに付加されている暗証番号を取出し、ワーキングメモリ２０３内の暗証番号格納部に一時的に格納する（ステップＳ２２）。なお、以降は、ワーキングメモリ２０３に一時的に格納した暗証番号を外部入力暗証番号３０２と記載する。
【００５２】
次に、ＣＰＵ２０１は、複数回の検証処理を実行するためのループカウンタ（図示せず）に検証回数を設定する（ステップＳ２３）。この動作例では２回の実行のため、ループカウンタに「２」を設定する。
【００５３】
次に、ＣＰＵ２０１は、後続処理で暗証番号検証処理方法を選択するための乱数を１バイト生成し、その下位２ビットを確認する（ステップＳ２４）。この場合、生成される乱数は、乱数生成回路を使用するなど、高い乱数性があることが望ましい。
【００５４】
次に、ＣＰＵ２０１は、生成した乱数を使用して、図４〜図６のサブルーチンを選択する（ステップＳ２５〜Ｓ２９）。すなわち、生成した乱数の下位２ビットが「０１」であるか否かを判定し（ステップＳ２５）、下位２ビットが「０１」であれば、サブルーチンとして図４の「比較処理での検証処理方法」が選択される（ステップＳ２６）。
【００５５】
ステップＳ２５における判定の結果、下位２ビットが「０１」でなければ、生成した乱数の下位２ビットが「１０」であるか否かを判定し（ステップＳ２７）、下位２ビットが「１０」であれば、サブルーチンとして図５の「減算処理での検証処理方法」が選択され（ステップＳ２８）、下位２ビットが「１０」でなければ、サブルーチンとして図６の「排他的論理和での検証処理方法」が選択される（ステップＳ２９）。
【００５６】
具体例を用いて説明すると、たとえば、生成した乱数が７１ｈ＝０１１１０００１の場合、ステップＳ２５で「ＹＥＳ」と判定されて、ステップＳ２６で「比較処理での検証処理方法」が選択される。
【００５７】
また、たとえば、生成した乱数が７２ｈ＝０１１１００１０の場合、ステップＳ２５で「ＮＯ」と判定され、ステップＳ２７で「ＹＥＳ」と判定されて、ステップＳ２８で「減算処理での検証処理方法」が選択される。
【００５８】
さらに、たとえば、生成した乱数が７０ｈ＝０１１１００００の場合、ステップＳ２５で「ＮＯ」と判定され、ステップＳ２７でも「ＮＯ」と判定されて、ステップＳ２９で排他的論理和での検証処理方法」が選択される。
【００５９】
次に、ＣＰＵ２０１は、上記のようにして選択されたサブルーチンを使用して、ワーキングメモリ２０３に格納されている外部入力暗証番号３０２およびデータメモリ２０２に登録されている暗証番号３０１との検証処理、すなわち、ワーキングメモリ２０２に格納されている暗証番号とデータメモリ２０２に登録されている暗証番号３０１との間に所定の関係が成立するか否かの確認、この例の場合は両暗証番号の一致・不一致の検証処理を行なう（ステップＳ３０）。
【００６０】
ステップＳ３０での検証処理の結果、両暗証番号が不一致（Ｚフラグ＝０）の場合（ステップＳ３１）、ＣＰＵ２０１は、ワーキングメモリ２０３内のステータス格納部へ「暗証番号は不一致」を意味するステータスを設定（格納）し（ステップＳ３２）、その後、設定されたステータスを通信部２０５を介して外部装置（端末装置１０３）へ送信する（ステップＳ３３）。
【００６１】
また、ステップＳ３０での検証処理の結果、両暗証番号が一致（Ｚフラグ＝１）した場合（ステップＳ３１）、ＣＰＵ２０１は、ループカウンタをデクリメント処理（「１」を減算）し（ステップＳ３４）、その後、更新されたループカウンタの値が「０」であるか否かの確認を行なう（ステップＳ３５）。
【００６２】
ステップＳ３５における確認の結果、ループカウンタの値が「０」でない場合（「１」の場合）、ＣＰＵ２０１は、再度、検証処理を行なうためにステップＳ２４に戻り、上記同様な動作を繰り返す。  
ステップＳ３５における確認の結果、ループカウンタの値が「０」である場合、ＣＰＵ２０１は、ワーキングメモリ２０３内のステータス格納部へ「暗証番号は一致」を意味するステータスを設定（格納）し（ステップＳ３６）、その後、設定されたステータスを通信部２０５を介して外部装置（端末装置１０３）へ送信する（ステップＳ３３）。
【００６３】
以上説明したように、上記実施の形態によれば、不揮発性メモリに固有の認証用情報としての暗証番号が登録されていて、この登録された暗証番号と外部から入力される暗証番号とが一致するか否かの確認を行なうことにより、当該ＩＣカードの所有者は正当な所有者であるか否かを判定するＩＣカードにおいて、特に暗証番号などの重要データへの電力解析攻撃の対抗策として、ＣＰＵの処理内容の相関を低減するような、すなわち、異なるプログラム構造の暗証番号の一致・不一致の検証処理手段を複数設け、その検証処理手段をランダムに選択して実行することにより、電力解析を困難にすることを実現できる。したがって、耐タンパ性能が著しく向上する。
【００６４】
なお、前記実施の形態では、携帯可能電子装置としてＩＣカードに適用した場合について説明したが、本発明はこれに限定されるものではなく、たとえば、ＰＤＡと称される携帯端末装置や携帯電話機などであっても適用でき、また、形状もカード型に限らず、冊子型、ブロック形あるいはタグ型などであってもよい。
【図面の簡単な説明】
【００６５】
【図１】本発明の実施の形態に係る携帯可能電子装置としてのＩＣカードを取扱うＩＣカードシステムの構成例を示すブロック図。
【図２】ＩＣカードの構成を概略的に示すブロック図。
【図３】暗証番号および外部入力暗証番号の概念図。
【図４】暗証番号検証処理方法の１つとして「比較処理での検証処理方法」のアセンブラによるコーディング例を示す図。
【図５】暗証番号検証処理方法の１つとして「減算処理での検証処理方法」のアセンブラによるコーディング例を示す図。
【図６】暗証番号検証処理方法の１つとして「排他的論理和での検証処理方法」のアセンブラによるコーディング例を示す図。
【図７】図４〜図６で例示したコーディング例をサブルーチン（モジュール）として使用した場合の動作例を示すフローチャート。
【図８】図４〜図６で例示したコーディング例をサブルーチン（モジュール）として使用し、複数回検証処理を行なう場合の動作例を示すフローチャート。
【符号の説明】
【００６６】
１０１…ＩＣカード（携帯可能電子装置）、１０１ａ…ＩＣカード本体、１０２…カードリーダ・ライタ、１０３…端末装置、１０４…キーボード、１０５…ＣＲＴ表示部、１０６…プリンタ、２０１…ＣＰＵ（制御素子）、２０２…データメモリ（記憶手段）、２０３…ワーキングメモリ、２０４…プログラムメモリ、２０５…通信部、２０６…ＩＣチップ、３０１…暗証番号（登録された認証用情報）、３０２…外部入力暗証番号（外部から入力された認証用情報）。
【図１】
2008243045.tif 000003
【図２】
2008243045.tif 000004
【図３】
2008243045.tif 000005
【図４】
2008243045.tif 000006
【図５】
2008243045.tif 000007
【図６】
2008243045.tif 000008
【図７】
2008243045.tif 000009
【図８】
2008243045.tif 000010