(57)【要約】【課題】  ＩＣカード２内の認証データが解読されることを困難することができ、セキュリティ性、耐タンパー性が高いＩＣカード２を実現することが可能となる。【解決手段】  ＩＣカード２内に保持している認証データと外部から与えられる認証データに対する照合用のデータとの照合処理において、認証データを構成する各バイトのデータと照合用のデータにおける対応するバイトのデータとの照合を各バイトごとに任意の順序で行なう。【選択図】      図２
2007072794.tif 000002
【特許請求の範囲】
【請求項１】
認証データを記憶する記憶手段と、
この記憶手段に記憶されている前記認証データに対する照合用のデータを受信する受信手段と、
この受信手段により受信した照合用のデータと前記記憶手段に記憶されている前記認証データとの照合手順として任意の照合手順を設定する設定手段と、および、
この設定手段により設定された照合手順に従って前記受信手段により受信した照合用のデータと前記記憶手段に記憶されている前記認証データとを照合する照合手段と、を有するモージュールと、
前記モジュールが埋設された筐体と、
を有することを特徴とする携帯可能電子装置。
【請求項２】
前記モジュールは、さらに、乱数を生成する乱数生成手段を有し、
前記設定手段は、前記受信手段により受信した照合用のデータと前記記憶手段に記憶されている前記認証データとの照合手順として前記乱数生成手段により生成した乱数に応じた照合手順を設定する、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項３】
所定のデータ単位の複数のデータから構成される認証データを記憶する記憶手段と、
この記憶手段に記憶されている前記認証データに対する照合用のデータを受信する受信手段と、
この受信手段により受信した照合用のデータを構成する所定のデータ単位の各データと前記記憶手段に記憶されている前記認証データを構成する所定のデータ単位の各データとの照合順序として任意の照合順序を設定する設定手段と、
この設定手段により設定された照合順序に従って前記受信手段により受信した照合用のデータの各データ単位のデータと前記記憶手段に記憶されている前記認証データの各データ単位のデータとを照合する照合手段と、を有するモジュールと、
前記モジュールが埋設された筐体と、
を有することを特徴とする携帯可能電子装置。
【請求項４】
前記モジュールは、さらに、乱数を生成する乱数生成手段を有し、
前記設定手段は、前記受信手段により受信した照合用のデータを構成する所定のデータ単位の各データと前記記憶手段に記憶されている前記認証データを構成する所定のデータ単位の各データとの照合順序として前記乱数生成手段により生成した乱数に応じた照合順序を設定する、
ことを特徴とする前記請求項３に記載の携帯可能電子装置。
【請求項５】
前記モジュールは、さらに、前記乱数生成手段により生成した乱数を記憶しておく第２の記憶手段と、
前記受信手段により前記認証データに対する照合用のデータを受信した場合に前記乱数生成手段により生成した乱数が前記第２の記憶手段に記憶している乱数と同じ値であれば、再度、前記乱数生成手段により乱数を生成する処理手段と、を有する、
ことを特徴とする前記請求項４に記載の携帯可能電子装置。
【請求項６】
前記設定手段は、前記認証データを構成する所定のデータ単位の各データのうち１つのデータ単位に対する照合順序を設定するごとに、前記乱数生成手段により乱数を生成させ、所定のデータ単位の各データごとに前記乱数生成手段により生成した乱数に応じた照合順序を設定する、
ことを特徴とする前記請求項４に記載の携帯可能電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば、外部装置との通信手段と認証データを記憶している記憶手段を有し、外部装置からの照合コマンドに応じて前記認証データの照合処理を行うＩＣカードなどの携帯可能電子装置に関する。
【背景技術】
【０００２】
従来、ＩＣカードなどの携帯可能電子装置では、不揮発性メモリに認証情報を記憶しておき、その認証情報を用いて利用者の認証などを行っている。すなわち、従来のＩＣカードでは、利用者本人が入力した情報と不揮発性メモリに記憶している認証情報とを照合することにより利用者を認証し、ＩＣカードの不正使用を防止している。通常の運用形態では、ＩＣカード処理装置からＩＣカードに照合コマンドを送信し、ＩＣカード処理装置に入力される利用者本人が記憶している認証情報としての照合用のデータ（被照合用データ）と、予めＩＣカードに記憶されている認証情報としての認証データとをＩＣカードが照合することにより利用者の認証を行うようになっている。
【０００３】
このような認証データと照合用のデータとの照合処理は、従来のＩＣカードでは、認証データを構成する各バイトのデータと照合用のデータを構成する各バイトのデータと照合を先頭から順に１バイトごとに照合を行っている。しかしながら、上記のように先頭から順に１バイトごとにデータの照合を行うと、第３者が、照合が不一致となった部分を予測できてしまう可能性がある。たとえば、悪意のある第３者が照合処理中のＩＣカードの電源電流波形を観測すると、照合結果が不一致となった部分が予測されてしまう可能性がある。すなわち、上記のような手法によって、従来のＩＣカードでは、悪意ある第３者が不正に入手したＩＣカード内の認証情報を特定して、当該ＩＣカードが不正使用される可能性があるという問題がある。
【非特許文献１】ＩＳＯ−７８１６
【発明の開示】
【発明が解決しようとする課題】
【０００４】
この発明は、認証情報の照合処理による認証のセキュリティ性を向上させることができ、信頼性及び安全性の高い携帯可能電子装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
この発明の一形態としての携帯可能電子装置は、認証データを記憶する記憶手段と、この記憶手段に記憶されている前記認証データに対する照合用のデータを受信する受信手段と、この受信手段により受信した照合用のデータと前記記憶手段に記憶されている前記認証データとの照合手順として任意の照合手順を設定する設定手段と、この設定手段により設定された照合手順に従って前記受信手段により受信した照合用のデータと前記記憶手段に記憶されている前記認証データとを照合する照合手段とを有するモジュールと、前記モジュールが埋設された筐体とを有する。
【０００６】
この発明の一形態としての携帯可能電子装置は、所定のデータ単位の複数のデータにより構成される認証データを記憶する記憶手段と、この記憶手段に記憶されている前記認証データに対する照合用のデータを受信する受信手段と、この受信手段により受信した照合用のデータを構成する所定のデータ単位の各データと前記記憶手段に記憶されている前記認証データを構成する所定のデータ単位の各データとの照合順序として任意の照合順序を設定する設定手段と、この設定手段により設定された照合順序に従って前記受信手段により受信した照合用のデータの各データ単位のデータと前記記憶手段に記憶されている前記認証データの各データ単位のデータとを照合する照合手段とを有するモジュールと、前記モジュールが埋設された筐体とを有する。
【発明の効果】
【０００７】
この発明によれば、認証情報の照合処理による認証のセキュリティ性を向上させることができ、信頼性及び安全性の高い携帯可能電子装置を提供できる。
【発明を実施するための最良の形態】
【０００８】
以下、この発明を実施するための最良の形態について図面を参照して詳細に説明する。  
図１は、この発明の実施の形態に係る携帯可能電子装置としてのＩＣカード２との通信機能を有する外部装置としてのＩＣカード処理装置１の構成例を概略的に示すブロック図である。  
図１に示すように、上記ＩＣカード処理装置１は、端末装置１１、表示装置１２、キーボード１３、および、カードリーダライタ１４などを有している。
【０００９】
上記端末装置１１は、ＣＰＵ、種々のメモリおよび各種インターフェースなどを有する装置により構成され、上記ＩＣカード処理装置１全体の動作を制御するものである。上記端末装置１１は、上記カードリーダライタ１４により上記ＩＣカード２へ送信するコマンドを制御する機能、ＩＣカード２から受信したデータを基に種々の処理を行う機能などを有している。
【００１０】
たとえば、上記端末装置１１は、上記カードリーダライタ１４を介して上記ＩＣカード２にデータの書き込みコマンドを送信することによりＩＣカード２内のメモリにデータを書き込んだり、上記ＩＣカード２に読取コマンドを送信することにより上記ＩＣカード２からデータを読み出したりする。
【００１１】
上記表示装置１２は、上記端末装置１１の制御により種々の情報を表示するディスプレイ装置である。上記キーボード１３は、当該ＩＣカード処理装置１の操作員が操作する操作部として機能し、操作員により種々の操作指示やデータなどが入力される。上記カードリーダライタ１４は、上記ＩＣカード２との通信を行うためのインターフェース装置である。上記カードリーダライタ１４では、上記ＩＣカード２に対する電源供給、クロック供給、リセット制御、データの送受信を行うようになっている。このような機能にってカードリーダライタ１４は、上記端末装置１１による制御に基づいて上記ＩＣカード２を活性化（起動）させ、活性化させたＩＣカード２へ種々のコマンドを送信したり、送信したコマンドに対する応答を受信したりするようになっている。
【００１２】
上記ＩＣカード２は、上記ＩＣカード処理装置１などの上位機器から電力などの供給を受けた際、活性化される（動作可能な状態になる）ようになっている。例えば、上記ＩＣカード２が接触式通信により上記ＩＣカード処理装置１と接続される場合、つまり、上記ＩＣカード２が接触式のＩＣカードで構成される場合、上記ＩＣカード２は、通信インターフェースとしてのコンタクト部２１を介してＩＣカード処理装置１からの動作電源および動作クロックの供給を受けて活性化される。
【００１３】
また、ＩＣカード２が非接触式の通信方式により上記ＩＣカード処理装置１と接続される場合、つまり、上記ＩＣカード２が非接触式のＩＣカードで構成される場合、上記ＩＣカード２の上記コンタクト部２１は、通信インターフェースとしてのアンテナおよび通信制御部等により構成される。この場合、上記ＩＣカード２は、通信インターフェースとしてのコンタクト部２１のアンテナおよび通信制御部等を介してＩＣカード処理装置１からの電波を受信し、その電波から図示しない電源部により動作電源および動作クロックを生成して活性化するようになっている。
【００１４】
次に、上記ＩＣカード２の構成例について説明する。  
図２は、上記ＩＣカード２の内部構成例を概略的に示すブロック図である。図２に示すように、上記ＩＣカード２は、コンタクト部２１、制御部２２、ＲＡＭ２３、ＲＯＭ２４、不揮発性メモリ２５および乱数生成部２６などを有してしている。上記制御部２２、ＲＡＭ２３、ＲＯＭ２４、不揮発性メモリ２５および乱数生成部２６は、例えば、ＩＣチップ２ａにより構成される。さらに、上記ＩＣチップ２ａとコンタクト部２１とは、一体的に形成されたモジュール２ｂにより構成される。このモジュール２ｂは、ＩＣカード２の筐体２ｃ内に埋設されている。すなわち、上記ＩＣカード２は、ＩＣチップ２ａを有するモジュール２ｂが埋設された筐体２ｃにより構成される。
【００１５】
上記コンタクト部２１は、上記ＩＣカード処理装置１のカードリーダライタ１４との通信用のインターフェースとして機能する。当該ＩＣカード２が接触式のＩＣカードとして実現される場合、上記コンタクト部２１は、上記ＩＣカード処理装置１のカードリーダライタ１４と接触して信号の送受信を行うインターフェースとして構成される。また、当該ＩＣカード２が非接触式のＩＣカードとして実現される場合、上記コンタクト部２１は、上記ＩＣカード処理装置１のカードリーダライタ１４との電波の送受信を行うインターフェースとして構成される。
【００１６】
上記制御部２２は、当該ＩＣカード２全体の制御を司るものである。上記制御部２２は、上記ＲＯＭ２４あるいは不揮発性メモリ２５に記憶された制御プログラムに基づいて動作することにより判断手段や種々の処理手段として機能する。  
上記ＲＡＭ２３は、ワーキングメモリとして機能する揮発性のメモリである。上記ＲＡＭ２３は、上記制御部２２が処理中のデータなどを一時保管するバッファとして機能し、例えば、上記コンタクト部２１を介して上記ＩＣカード処理装置１から受信したデータを一時保管するようになっている。
【００１７】
上記ＲＯＭ２４は、予め制御用のプログラムや制御データなどが記憶されている不揮発性のメモリである。上記ＲＯＭ２４は、製造段階でＩＣカード２内に組み込まれるものであり、上記ＲＯＭ２４に記憶されている制御プログラムは、予め当該ＩＣカード２の仕様に応じて組み込まれるものである。  
上記不揮発性メモリ２５は、例えば、ＥＥＰＲＯＭあるいはフラッシュＲＯＭなどのデータの書込み及び書き換えが可能な不揮発性のメモリにより構成される。上記不揮発性メモリ２５には、当該ＩＣカード２の運用用途に応じてプログラムファイルやデータファイルなどが定義され、それらのファイルにデータが書き込まれる。
【００１８】
また、上記不揮発性メモリ２５内には、認証情報やその認証情報に対する照合処理に関する情報などを記憶する認証データテーブル２５ａが設けられている。なお、複数の認証情報を設定する場合、上記不揮発性メモリ２５には、各認証情報ごとに認証データテーブル２５ａが設けられ、各認証情報及び各認証情報による照合処理に関する情報が記憶される。  
上記乱数生成部２６は、乱数を生成するものである。上記乱数生成部２６では、上記制御部２２からの要求に応じて乱数を生成し、生成した乱数を制御部２２へ返すようになっている。
【００１９】
次に、上記不揮発性メモリ２５内に設けられる上記認証データテーブル２５ａについて説明する。  
図３は、上記認証データテーブル２５ａの構成例を示す図である。  
図３に示す構成例では、上記認証データテーブル２５ａは、認証情報としての認証データ（ＰＩＮデータ）の記憶領域２５１、照合回数の記憶領域（照合試行カウンタ）２５２、許容照合回数の記憶領域２５３、照合パターンバイトの記憶領域２５４などを有している。
【００２０】
上記記憶領域２５１は、記憶手段として機能する。上記記憶領域２５１には、認証情報としての認証データ（ＰＩＮデータ）が記憶される。上記記憶領域２５１に記憶される認証データは、正当な利用者のみが知りうる情報であり、予め記憶される情報である。たとえば、当該ＩＣカードを利用する際、上記記憶領域２５１に記憶されている認証データと利用者が指定する情報とを照合することにより当該利用者が当該ＩＣカードの正当な利用者であるか否かが認証される。また、図３に示す例では、上記記憶領域２５１には、認証データ全体の長さと、各バイトごとの認証データ（１〜ｎバイト目の認証データ）とがそれぞれの記憶領域に記憶されるようになっている。
【００２１】
上記照合回数の記憶領域２５２は、照合処理を行った積算回数が記憶されるカウンタ（照合試行カウンタ）として機能する。以下、上記記憶領域２５２を照合試行カウンタと称するものとする。上記照合試行カウンタ２５２は、初期状態（リセットされた状態）において上記記憶領域２５３に記憶されている許容照合回数（この値を初期値とする）が格納されており、照合処理を実行する直前、あるいは、照合処理による照合が失敗した際、照合処理を試行した積算回数を示す値としてのカウンタ値がカウントダウンされる。また、上記照合試行カウンタ２５２は、照合処理が成功した際に初期値（許容照合回数）に書き換えられる（リセットされる）。
【００２２】
上記許容照合回数の記憶領域２５３は、連続して実行される照合処理の回数に対する許容回数を示す値が記憶される。上記記憶領域２５３に記憶される値は、照合の失敗に伴って再試行される回数として連続的に実行される照合処理の回数の許容値（以下、許容照合回数と称する）を示すものであり、上記照合試行カウンタ２５２によりカウントされる値に対する許容値を示す。また、上記記憶領域２５３に記憶される許容照合回数は、予め設定される情報である。
【００２３】
上記照合パターンバイトの記憶領域２５４は、第２の記憶手段として機能し、照合処理に用いられる照合パターンバイトが記憶される。上記照合パターンバイトは、後述するように、照合処理ごとに、上記乱数生成部２６により生成される乱数が用いられる。従って、上記照合パターンバイトの記憶領域２５４には、照合処理を行うごとに、上記乱数生成部２６により生成された乱数が記憶される。
【００２４】
次に、上記のように構成されるＩＣカード２における照合処理について説明する。  
図４は、上記ＩＣカード処理装置１からの照合コマンドに対する上記ＩＣカード２における照合処理の流れを概略的に説明するためのフローチャートである。  
まず、ＩＣカード処理装置１からの電源供給、動作クロック信号およびリセット信号等を受けてＩＣカード２が活性化された状態であるものとする。この状態において、上記ＩＣカード処理装置１から照合コマンドが上記ＩＣカード２へ送信されたものとする。なお、上記照合コマンドでは、上記記憶領域２５１に記憶されている認証データとの照合要求とともに、上記認証データに対する照合用のデータとしての被照合データ（たとえば、上記ＩＣカード処理装置のキーボードにて利用者が認証情報として入力した情報）が送信される。
【００２５】
上記ＩＣカード２では、上記コンタクト部２１により上記ＩＣカード処理装置１からの照合コマンドを受信する。上記のような照合コマンドを受信すると、上記ＩＣカード２の制御部２２は、当該照合コマンドに対する照合前処理として、受信した照合コマンドのパラメータチェックや対象となる認証データの状態のチェックなどの処理を行う（ステップＳ１１）。この照合前処理において受信した照合コマンドが無効なものであると判断した場合には、上記制御部２２は、当該照合コマンドが無効であることを示すステータスワードを上記ＩＣカード処理装置１へ送信し、処理を終了する。
【００２６】
上記のような照合前処理により当該照合コマンドが有効なものであると判断した場合、上記制御部２２は、当該照合コマンドによる照合の対象となる認証データに対応する認証データテーブル２５ａの照合試行カウンタ２５２のカウンタ値が照合処理の実行が可能な値であるか否かを判断する（ステップＳ１２）。
【００２７】
なお、上記照合試行カウンタ２５２には、初期値として許容照合回数がセットされ、照合処理の前にカウントダウンされたカウント値が照合失敗すると保持されるようになっている。従って、上記ステップＳ１２では、上記照合試行カウンタ２５２のカウント値が「０」でないか否かにより照合の対象とする認証データに対する照合処理が実行可能か否かを判断する。
【００２８】
上記ような判断により照合処理が実行不可であると判断した場合、つまり、上記照合試行カウンタ２５２のカウント値が「０」であると判断した場合（ステップＳ１２、ＮＯ）、上記制御部２２は、当該照合コマンドに応じた認証情報の照合処理を行わずに、対象となる認証データがロックされている状態（当該認証データが使用不可）である旨を示す情報（ステータスワード）を上記ＩＣカード処理装置１へ送信し（ステップＳ１３）、当該照合コマンドに対する処理を終了する。
【００２９】
また、上記ような判断により照合処理が実行可能であると判断した場合、つまり、上記照合試行カウンタ２５２のカウント値が「０」でないと判断した場合（ステップＳ１２、ＹＥＳ）、上記制御部２２は、照合の対象となる認証データテーブル２５ａの上記記憶領域２５１に記憶されている認証データと、受信した照合コマンドにより与えられた被照合データとの照合処理を行う（ステップＳ１４）。この照合処理については、後で詳細に説明する。
【００３０】
この照合処理により上記記憶領域２５１に記憶されている認証データと照合コマンドにより与えられた被照合データとが一致した場合（ステップＳ１５、一致）、上記制御部２２は、上記照合試行カウンタ２５２のカウント値を上記記憶領域２５３に記憶されている許容照合回数の値に書き換えることにより、上記照合試行カウンタ２５２をリセットする（ステップＳ１７）。さらに、上記制御部２２は、当該照合コマンドに対する照合が成功したことを示す情報（ステータスワード）を上記ＩＣカード処理装置１へ出力し（ステップＳ１７）、当該照合コマンドに対する照合処理を終了する。
【００３１】
したがって、ＩＣカード処理装置から受信した照合コマンドに対する認証データの照合が成功した場合、上記照合試行カウンタ２５２がリセットされることにより、上記照合試行カウンタ２５２のカウント値は、初期値（この実施の形態では、許容照合回数の値）で保持される。
【００３２】
また、上記照合処理により上記記憶領域２５１に記憶されている認証データと照合コマンドにより与えられた被照合データとが不一致となった場合（ステップＳ１５、不一致）、上記制御部２２は、上記照合試行カウンタ２５２のカウント値を１つ減算してカウントダウンする（ステップＳ１８）。従って、上記ステップＳ１４において上記照合試行カウンタ２５２のカウント値は、「カウント値−１」に書き換えられる。
【００３３】
上記照合試行カウンタ２５２のカウント値をカウントダウンすると、上記制御部２２は、上記ステップＳ１８で書き換えた上記照合試行カウンタ２５２のカウント値を保持したまま、受信した照合コマンドに対する照合が失敗したことを示す情報（ステータスワード）を当該照合コマンドの送信元であるＩＣカード処理装置１へ出力し（ステップＳ１９）、当該照合コマンドに対する処理を終了する。
【００３４】
したがって、上記ＩＣカード処理装置から受信した照合コマンドに対する認証データの照合が失敗した場合、上記照合試行カウンタ２５２のカウント値は照合処理の前に書き換えられた値（照合処理の失敗をカウントした値）で保持される。
【００３５】
次に、上記ステップＳ１４の照合処理について詳細に説明する。
【００３６】
図５は、照合処理の処理手順の例を説明するためのフローチャートである。
【００３７】
まず、上記照合パターンバイトの記憶領域２５４には、前回の照合処理で用いられた照合パターンバイトの値（前回の照合パターンバイトの値）が記憶されている。この状態において、上記ＩＣカード２が、上記記憶領域２５１に記憶されている認証データ（ＰＩＮデータ）との照合を要求する照合コマンドを上記ＩＣカード処理装置１から受信したものとする。すると、上記制御部２２は、上記記憶領域２５４に記憶されている前回の照合パターンバイトの値を制御部２２の内部メモリあるいはＲＡＭ２３などのレジスタに保存する（ステップＳ２１）。なお、上記照合コマンドとともに与えられる被照合データは、たとえば、ＲＡＭ２３などに設けられる受信バッファに保存される。
【００３８】
前回の照合パターンバイトの値をレジスタに保存すると、上記制御部２２は、今回の照合処理に用いる照合パターンバイトの値（今回の照合パターンバイトの値）としての乱数を上記乱数生成部２６に生成させる（ステップＳ２２）。上記乱数生成部２６では、上記制御部２２からの要求に応じて乱数を生成し、その生成した乱数を制御部２２へ返す。これにより、上記制御部２２は、今回の照合処理に用いる照合パターンバイトの値としての乱数を取得する。上記乱数生成部２６により生成した乱数を取得すると、上記制御部２２は、上記乱数生成部２６により生成した乱数を今回の照合パターンバイトの値として上記記憶領域２５４に記憶する（ステップＳ２３）。
【００３９】
上記乱数生成部２６により生成した乱数を今回の照合パターンバイトの値として上記記憶領域２５４に保存すると、上記制御部２２は、上記レジスタに保存している前回の照合処理に用いた前回の照合パターンバイトの値と上記乱数生成部２６により生成した今回の照合処理に用いる今回の照合パターンバイトの値とを比較する（ステップＳ２４）。
【００４０】
この比較により前回の照合パターンバイトの値と今回の照合パターンバイトの値とが一致すると判断した場合（ステップＳ２５、一致）、上記制御部２２は、上記ステップＳ２２へ戻り、再度、今回の照合処理に用いる照合パターンバイトの値としての乱数を生成する処理を行う。これにより、前回の照合パターンバイトと今回の照合パターンバイトとが同じ値となることがないようにできる。
【００４１】
また、上記比較により前回の照合パターンバイトの値と今回の照合パターンバイトの値とが一致しないと判断した場合（ステップＳ２５、不一致）、上記制御部２２は、上記記憶領域２５４に記憶した今回の照合パターンバイトの値に応じた照合方法を設定する処理を行う（ステップＳ２６）。上記ステップＳ２６では、第３者が認証データを予測することが困難となるように、照合方法として照合パターンバイトの値に基づく任意の照合処理の手順（照合パターン）が設定される。
【００４２】
この実施の形態では、たとえば、上記ステップＳ２６において、乱数としての照合パターンバイトの値に応じた照合順序（つまり、任意の照合順序）で、認証データを構成する各バイトのデータを照合する照合方法を設定するものとする。このような照合方法によれば、認証データを構成する各バイトのデータに対する照合順序が予測困難となるため、照合が失敗したバイトあるいは照合が成功したバイトなどが予測困難となる。この結果として、第３者がＩＣカード２内の認証データを予測することを困難とすることができる。なお、照合方法の一例としての認証データを構成する各バイトのデータに対する照合順序の設定については、後で詳細に説明する。
【００４３】
上記ステップＳ２６で任意の照合方法を設定すると、上記制御部２２は、設定した照合方法に基づいて記憶領域２５１内の認証データと照合コマンドとともに与えられた被照合データとの照合処理を行なう（ステップＳ２７）。  
本実施の形態では、たとえば、乱数としての照合パターンバイトの値に応じた照合順序（つまり、任意の照合順序）で、認証データを構成する各バイトのデータを照合することが設定される。この場合、制御部２２は、設定された順序で、各バイトのデータを照合する。全てのバイトのデータの照合が成功すると、上記制御部２２は、認証データ全体に対する照合が成功（認証データと被照合データとが一致）したものと判断する。また、何れかのバイトのデータの照合が失敗すると、上記制御部２２は、認証データ全体に対する照合が失敗（認証データと被照合データとが不一致）したものと判断する。
【００４４】
次に、上記ステップＳ２６における照合方法の設定例について説明する。  
上述したように、本実施の形態では、ＩＣカード内の不揮発性メモリ２５の記憶領域２５１に記憶されている認証データ（ＰＩＮデータ）を予測困難とするために、記憶領域２５１に記憶されている認証データと外部装置としてのＩＣカード処理装置１から照合コマンドとともに与えられる照合用のデータ（被照合データ）との照合方法を設定する。また、照合方法としては、たとえば、照合処理ごとに生成する乱数としての照合パターンバイトの値に応じた照合順序で、認証データにおける各バイトと被照合データにおける各バイトとを照合する処理の設定を行う。この場合、照合方法の設定としては、認証データにおける各バイトの照合順序を設定する処理を行う。
【００４５】
以下、認証データにおける各バイトに対する照合順序の設定例について説明する。  
すなわち、上記記憶領域２５４に今回の照合パターンバイトの値を記憶すると、上記制御部２２は、今回の照合パターンバイトの値に応じた各バイトの照合順序を設定する処理を行う。ここで、認証データがｎバイトで構成されるデータであるものとして説明する。また、照合パターンバイトの値としては、少なくともｎ以上の値であることを想定する。本実施の形態では、上記制御部２２は、認証データを構成する各バイトのデータをそれぞれ何番目に照合するか（あるいは、１〜ｎ番目に照合するデータは、それぞれ何バイト目のデータか）を設定する。たとえば、上記制御部２２は、１番目に照合するデータからｎ番目に照合するデータまでを順次決定していくものとする。
【００４６】
この場合、照合順序を設定する処理において、上記制御部２２は、まず、１番目に照合するデータを設定する。  
１番目に照合するデータは、照合パターンバイトの値に応じて決定される。すなわち、１番目に照合するデータを決定する場合、上記制御部２２は、（照合パターンバイトの値）／ｎの商（整数）と余り（整数）とを算出する（なお、余りだけを算出するようにしても良い）。照合パターンバイトの値／ｎの余りの値を算出すると、上記制御部２２は、「照合パターンバイトの値／ｎの余りの値＋１」を照合順序としてを設定する。この照合順序（照合パターンバイトの値／ｎの余りの値＋１）は、認証データにおける各バイトに対する通し番号に対応する。
【００４７】
なお、ここで、通し番号とは、認証データにおいて、先頭のバイトから順に各バイトに付与した番号である。つまり、１番目に照合するデータを決定する段階では、認証データにおける各バイトに対して通し番号が付与されているものとする。
【００４８】
１番目に照合するデータを設定すると、制御部２２は、２番目に照合するデータを設定する。  
２番目に照合するデータは、照合パターンバイトの値に基づいて１番目に照合するバイトを除く何れかのバイトから決定される。すなわち、２番目に照合するデータを決定する場合、上記制御部２２は、照合パターンバイトの値（照合パターンバイトの値）／（ｎ−１）の商（整数）と余り（整数）とを算出する。照合パターンバイトの値（照合パターンバイトの値）／（ｎ−１）の余りの値（整数）を算出すると、上記制御部２２は、照合パターンバイトの値／（ｎ−１）の余りの値＋１を照合順序として設定する。この照合順序（照合パターンバイトの値／（ｎ−１）の余りの値＋１）は、残りの各バイト（１番目に照合するバイトを除く残りのバイト）に対する通し番号に対応する。
【００４９】
なお、ここで、通し番号とは、認証データにおいて、１番目に照合するバイトを除き、先頭のバイトから順に各バイトに付与した番号である。つまり、２番目に照合するデータを決定する段階では、認証データにおいて、１番目に照合するバイトを除く、ｎ−１個の各バイトに対して通し番号が付与されているものとする。
【００５０】
２番目に照合するデータを設定すると、制御部２２は、３番目に照合するデータを設定する。  
３番目に照合するデータは、照合パターンバイトの値に基づいて１番目および２番目に照合するバイトを除く何れかのバイトから決定される。すなわち、３番目に照合するデータを決定する場合、上記制御部２２は、照合パターンバイトの値／（ｎ−２）の商（整数）と余り（整数）とを算出する。照合パターンバイトの値／（ｎ−２）の余りの値（整数）を算出すると、上記制御部２２は、照合パターンバイトの値／（ｎ−２）の余りの値＋１を照合順序として設定する。この照合順序（照合パターンバイトの値／（ｎ−２）の余りの値＋１）は、残りの各バイト（１番目および２番目に照合するバイトを除く残りのバイト）に対する通し番号に対応する。
【００５１】
なお、ここで、通し番号とは、認証データにおいて、１番目及び２番目に照合する各バイトを除き、先頭のバイトから順に各バイトに付与した番号である。つまり、３番目に照合するデータを決定する段階では、認証データにおいて、１番目及び２番目に照合するバイトを除く、ｎ−２個の各バイトに対して通し番号が付与されているものとする。
【００５２】
４番目以降に照合するデータについても、上記同様に、照合パターンバイトの値に基づいて直前までに照合すると設定された各バイトを除く何れかのバイトからそれぞれ決定される。すなわち、ｎ´を３＜ｎ´＜ｎとすると、ｎ´番目に照合するデータを決定する場合、上記制御部２２は、照合パターンバイトの値／（ｎ−（ｎ´−１））の商（整数）と余り（整数）とを算出する。照合パターンバイトの値／（ｎ−（ｎ´−１））の余りの値（整数）を算出すると、上記制御部２２は、照合パターンバイトの値／（ｎ−（ｎ´−１））の余りの値＋１を照合順序として設定する。この照合順序（照合パターンバイトの値／（ｎ−（ｎ´−１））の余りの値＋１）は、残りの各バイト（ｎ´番目までに照合する各バイトを除く残りのバイト）に対する通し番号に対応する。
【００５３】
なお、ここで、通し番号とは、認証データにおいて、１〜（ｎ´−１）番目に照合する各バイトを除き、先頭のバイトから順に各バイトに付与した番号である。つまり、ｎ´番目に照合するデータを決定する段階では、認証データにおいて、１〜（ｎ´−１）番目に照合するバイトを除く、ｎ−（ｎ´−１）個の各バイトに対して通し番号が付与されているものとする。
【００５４】
上記のような処理によってｎ−１番目に照合するデータを設定すると、認証データにおいて照合順序が設定されていないデータは、１つのバイトだけである。したがって、ｎ−１番目に照合するデータを設定すると、上記制御部２２は、最後に残ったバイトのデータをｎ番目（最後）に照合するデータとして設定する。
【００５５】
次に、上記のような照合順序の設定処理の具体例について説明する。  
図６は、上記のような照合順序の設定としての具体例の１つを示す図である。図７は、図６に示す設定処理の結果としての照合順序の設定例に示す図である。なお、図６では、認証データが８バイトであり、照合パターンバイトの値が１６進数で「Ｃ３」（１０進数では「１９５」）である場合の照合順序の設定例を示している。
【００５６】
図６に示すように、認証データが８バイトで照合パターンバイトの値が１６進数で「Ｃ３」（１０進数では「１９５」）である場合、まず、１９５／８は、商が「２４」、余りが「３」である。従って、「３＋１＝４」バイト目のデータが１番目に照合するデータとして設定される。この結果、図７に示すように、照合順序の１番目には、認証データにおける４バイト目のデータが設定される。
【００５７】
次に、１番目に照合するバイトのデータを除いた認証データの各バイトに通し番号を付与する。これにより、図６に示すように、照合順序が「２」の欄には、４バイト目のデータを除いた認証データの各バイトに対する１〜７までの通し番号が付与される。つまり、図６では、５バイト目移行の各バイトのデータが１つ分左にシフトされて新たな通し番号が付与される。  
また、１９５／（８−１）は、商が「２７」、余りが「６」である。従って、通し番号が「６＋１」のデータが２番目に照合するデータとして設定される。図６に示す例では、照合順序が「２」の欄において、通し番号が「７」のデータは、認証データにおける８バイト目のデータである。この結果、図７に示すように、照合順序の２番目には、認証データにおける８バイト目のデータが設定される。
【００５８】
次に、１、２番目に照合するバイトのデータを除いた認証データの各バイトに通し番号を付与する。これにより、図６に示すように、照合順序が「３」の欄には、４バイト目のデータおよび８バイト目のデータを除いた各バイトに対する１〜６までの通し番号が付与される。  
また、１９５／（８−２）は、商が「３２」、余りが「３」である。従って、通し番号が「３＋１」のデータが３番目に照合するデータとして設定される。図６に示す例では、照合順序が「３」の欄において、通し番号が「４」のデータは、認証データにおける５バイト目のデータである。この結果、図７に示すように、照合順序の３番目には、認証データにおける５バイト目のデータが設定される。
【００５９】
次に、１、２及び３番目に照合するバイトのデータを除いた認証データの各バイトに通し番号を付与する。これにより、図６に示すように、照合順序が「４」の欄には、４、８及び５バイト目のデータを除いた各バイトに対する１〜５までの通し番号が付与される。  
また、１９５／（８−３）は、商が「３９」、余りが「０」である。従って、通し番号が「０＋１」のデータが４番目に照合するデータとして設定される。図６に示す例では、照合順序が「４」の欄において、通し番号が「１」のデータは、認証データにおける１バイト目のデータである。この結果、図７に示すように、照合順序の４番目には、認証データにおける１バイト目のデータが設定される。
【００６０】
次に、１、２、３及び４番目に照合するバイトのデータを除いた認証データの各バイトに通し番号を付与する。これにより、図６に示すように、照合順序が「５」の欄には、４、８、５及び１バイト目のデータを除いた各バイトに対する１〜４までの通し番号が付与される。  
また、１９５／（８−４）は、商が「４８」、余りが「３」である。従って、通し番号が「３＋１」のデータが５番目に照合するデータとして設定される。図６に示す例では、照合順序が「５」の欄において、通し番号が「４」のデータは、認証データにおける７バイト目のデータである。この結果、図７に示すように、照合順序の５番目には、認証データにおける７バイト目のデータが設定される。
【００６１】
次に、１、２、３、４及び５番目に照合するバイトのデータを除いた認証データの各バイトに通し番号を付与する。これにより、図６に示すように、照合順序が「６」の欄には、４、８、５、１及び７バイト目のデータを除いた各バイトに対する１〜３までの通し番号が付与される。  
また、１９５／（８−５）は、商が「６５」、余りが「０」である。従って、通し番号が「０＋１」のデータが６番目に照合するデータとして設定される。図６に示す例では、照合順序が「６」の欄において、通し番号が「１」のデータは、認証データにおける２バイト目のデータである。この結果、図７に示すように、照合順序の６番目には、認証データにおける２バイト目のデータが設定される。
【００６２】
次に、１、２、３、４、５及び６番目に照合するバイトのデータを除いた認証データの各バイトに通し番号を付与する。これにより、図６に示すように、照合順序が「７」の欄には、４、８、５、１、７及び２バイト目のデータを除いた各バイトに対する１〜２の通し番号が付与される。  
また、１９５／（８−６）は、商が「９７」、余りが「１」である。従って、通し番号が「１＋１」のデータが７番目に照合するデータとして設定される。図６に示す例では、照合順序が「７」の欄において、通し番号が「２」のデータは、認証データにおける６バイト目のデータである。この結果、図７に示すように、照合順序の７番目には、認証データにおける６バイト目のデータが設定される。
【００６３】
最後に、残りのバイトが１つとなると、最後に照合するデータとしては、残りのバイトのデータが設定される。つまり、認証データが８バイトの場合は８番目に照合するバイトは、残りのバイトのデータが設定される。図６に示す例では、照合順序が「８」の欄において、残りのデータ（通し番号が「１」のデータ）は、認証データにおける３バイト目のデータである。この結果、図７に示すように、照合順序の８番目には、認証データにおける３バイト目のデータが設定される。
【００６４】
上記のように、本実施の形態では、ＩＣカード内に保持している認証データと外部から与えられる認証データに対する照合用のデータとの照合処理において、認証データを構成する各バイトのデータと照合用のデータにおける対応するバイトのデータとの照合を各バイトごとに任意の照合手順で行なうようになっている。これにより、ＩＣカード内の認証情報（照合データ）が解読されることを困難することができ、セキュリティ性、耐タンパー性が高いＩＣカードを実現することが可能となる。
【００６５】
また、上述した照合処理の例では、照合コマンドを受信した場合に乱数生成部により乱数を生成し、生成した乱数としての照合パターンバイトに基づいて認証データを構成する各バイトに対する照合順序を任意の照合手順として設定するようになっている。これにより、認証データに対して照合結果が不一致となった部分などを第３者が予測することを困難にすることができ、セキュリティ性、耐タンパー性が高いＩＣカードを実現することが可能となる。
【００６６】
次に、上記ステップＳ１４の照合処理の変形例について説明する。  
上述した照合処理（例えば、図５に示す照合処理）では、認証データに対する１回の照合処理において１つの乱数（照合パターンバイトの値）に基づいて照合方法としての各バイトに対する照合順序を設定している。この変形例では、１つのバイトに対する照合順序を決定するごとに乱数を生成し、その生成した乱数に基づいて次の照合順序となるバイトを設定するようにしたものである。
【００６７】
図８は、上記ステップＳ１４の照合処理の変形例としての処理手順を説明するためのフローチャートである。  
まず、上記ＩＣカード２が上記記憶領域２５１に記憶されている認証データ（ＰＩＮデータ）との照合を要求する照合コマンドを上記ＩＣカード処理装置１から受信すると、上記制御部２２は、変数ａを初期値としてのａ＝１とし（ステップＳ３１）、上記乱数生成部２６により乱数を生成する（ステップＳ３２）。上記乱数生成部２６により乱数が生成されると、上記制御部２２は、上記乱数生成部２６により生成した乱数に応じてａ番目に照合するバイトを設定する（ステップＳ３３）。なお、上記乱数生成部２６により生成した乱数に応じたａ番目に照合するバイトの設定は、たとえば、図６及び図７を参照して説明した上述の方法が適用できる。
【００６８】
ａ番目に照合するバイトを設定すると、上記制御部２２は、変数ａの値をａ＝ａ＋１とし（ステップＳ３４）、ａが認証データを構成するバイトの数を超えたか否かを判断する（ステップＳ３５）。この判断は、認証データを構成する全てのバイトに対する照合順序が設定されたか否かを判断するものであり、たとえば、認証データがｎバイトである場合、上記制御部２２は、ａ＞ｎであるか否かを判断するものである。  
この判断により変数ａが認証データを構成するバイトの数を超えていない場合、つまり、照合順序が設定されていない認証データのバイトがある場合（ステップＳ３５、ＮＯ）、上記制御部２２は、上記ステップＳ３２へ戻り、上記乱数生成部２６による乱数の生成、および、生成した乱数に基づくａ番目に照合するバイトの設定などを行う。
【００６９】
また、上記判断により変数ａが認証データを構成するバイトの数を超えた場合、つまり、認証データを構成する全てのバイトに対する照合順序が設定された場合（ステップＳ３５、ＹＥＳ）、上記制御部２２は、記憶領域２５１内の認証データと照合コマンドとともに与えられた被照合データとの照合処理として、認証データを構成する各バイトのデータと照合コマンドとともに与えられた被照合データを構成する各バイトのデータとの照合を設定された照合順序に従って順次実行する（ステップＳ２７）。
【００７０】
上記した照合処理の変形例では、１つのバイトに対する照合順序を設定するごとに、乱数を生成させ、生成した乱数に基づいて次の照合順序となるバイトを設定するようにしたものである。これにより、各バイトの照合順序を設定するための乱数を特定したり、乱数に基づく照合順序を設定方法を特定したりすることも困難となり、セキュリティ性、耐タンパー性が高いＩＣカードを実現することが可能となる。
【図面の簡単な説明】
【００７１】
【図１】この発明の実施の形態に係る携帯可能電子装置としてのＩＣカードとＩＣカードとの通信を行う外部装置としてのＩＣカード処理装置の構成例を概略的に示すブロック図。
【図２】ＩＣカードの構成例を示すブロック図。
【図３】ＩＣカードの不揮発性メモリ内に設けられる認証データテーブルの構成例を示す図。
【図４】ＩＣカードにおける照合コマンドに対する照合処理を説明するためのフローチャート。
【図５】照合処理の処理手順の例を説明するためのフローチャート。
【図６】各バイトごとの照合順序の設定処理の具体例を説明するための図。
【図７】図６に示す照合順序の設定処理により設定される照合順序の設定例を示す図。
【図８】照合処理の変形例を説明するためのフローチャート。
【符号の説明】
【００７２】
１…ＩＣカード処理装置（外部装置）、２…ＩＣカード（携帯可能電子装置）、１１…端末装置、１２…表示装置、１３…キーボード、１４…カードリーダライタ、２１…コンタクト部、２２…制御部、２３…ＲＡＭ、２４…ＲＯＭ、２５…不揮発性メモリ、２５ａ…認証データテーブル、２５１…記憶領域（認証データの記憶領域）、２５２…記憶領域（照合試行カウンタ）、２５３…記憶領域（許容照合回数の記憶領域）、２５４…記憶領域（照合パターンバイトの記憶領域）
【図１】
2007072794.tif 000003
【図２】
2007072794.tif 000004
【図３】
2007072794.tif 000005
【図４】
2007072794.tif 000006
【図５】
2007072794.tif 000007
【図６】
2007072794.tif 000008
【図７】
2007072794.tif 000009
【図８】
2007072794.tif 000010