(57)【要約】【課題】物理的な解析による悪意の利用を抑止しつつ、認証の試行回数の上限の増加に伴う安全性の低下を回避する認証装置を提供する。【解決手段】認証情報を入力する入力部１０１と、認証の失敗回数を特定する状態情報を第１関数に入力して算出した算出値と所定の比較値とが一致し、かつ、失敗回数が所定の閾値より小さいか否かを判定する判定部１０２と、算出値が比較値と一致し、かつ、失敗回数が閾値より小さい場合に認証情報による認証を行う認証部１０４と、認証が失敗した場合に、パラメータ記憶部１３０に記憶された更新情報を用いて、状態記憶部１２０の状態情報を、１を加算した失敗回数を特定する状態情報に更新し、認証が成功した場合に、状態記憶部１２０の状態情報を、０を表す失敗回数を特定する状態情報に更新する更新部１０５と、を備えた。【選択図】        図１
2009187516.tif 000002
【特許請求の範囲】
【請求項１】
外部からアクセス不能な記憶部であって、認証の失敗回数を特定可能な状態情報を記憶する状態記憶部と、
前記状態情報の更新に用いる更新情報を記憶する更新情報記憶部と、
認証に用いる認証情報を入力する入力部と、
前記状態情報を予め定められた第１関数に入力した結果として出力される算出値を算出し、前記算出値と予め定められた比較値とが一致し、かつ、前記状態情報によって特定される前記失敗回数が予め定められた閾値より小さいか否かを判定する判定部と、
前記算出値が前記比較値と一致し、かつ、前記状態情報によって特定される前記失敗回数が前記閾値より小さい場合に、前記認証情報による認証を行う認証部と、
前記認証部による認証が失敗した場合に、前記更新情報を用いて、前記状態記憶部の前記状態情報を、１を加算した前記失敗回数を特定する前記状態情報に更新し、前記認証部による認証が成功した場合に、前記状態記憶部の前記状態情報を、０を表す前記失敗回数を特定する前記状態情報に更新する更新部と、
を備えたことを特徴とする認証装置。
【請求項２】
前記状態記憶部は、前記失敗回数と、前記失敗回数に応じて異なる値が算出される変動情報とを含む前記状態情報を記憶し、
前記判定部は、一方向性関数である前記第１関数に前記失敗回数と前記変動情報とを入力して前記算出値を算出し、前記算出値と前記比較値とが一致し、かつ、前記状態情報によって特定される前記失敗回数が前記閾値より小さいか否かを判定し、
前記更新部は、前記認証部による認証が失敗した場合に、１を加算した前記失敗回数と前記変動情報と前記更新情報とを前記第２関数に入力した結果として出力される更新変動情報を算出し、１を加算した前記失敗回数と、前記更新変動情報とを含む前記状態情報で前記状態記憶部の前記状態情報を更新すること、
を特徴とする請求項１に記載の認証装置。
【請求項３】
前記更新部は、前記認証部による認証が失敗した場合に、１を加算した前記失敗回数とともに前記第１関数に入力したときに算出される前記算出値が前記比較値と一致する前記更新変動情報を算出する前記第２関数によって前記更新変動情報を算出し、１を加算した前記失敗回数と、算出した前記更新変動情報とを含む前記状態情報で前記状態記憶部の前記状態情報を更新すること、
を特徴とする請求項２に記載の認証装置。
【請求項４】
前記状態記憶部は、認証が失敗するごとに遷移する認証の状態を特定可能な第１特定情報と、最後に認証に成功したときの前記状態を特定可能な第２特定情報とを含む前記状態情報を記憶し、
前記判定部は、前記第１特定情報を前記第１関数に入力して第１算出値を算出し、前記第２特定情報を前記第１関数に入力して第２算出値を算出し、前記第２特定情報によって特定される前記状態から前記第１特定情報によって特定される前記状態までの遷移数によって前記失敗回数を特定し、前記第１算出値および前記第２算出値のそれぞれが前記比較値と一致し、かつ、特定した前記失敗回数が前記閾値より小さいか否かを判定し、
前記認証部は、前記第１算出値および前記第２算出値のそれぞれが前記比較値と一致し、かつ、特定した前記失敗回数が前記閾値より小さい場合に、前記認証情報による認証を行い、
前記更新部は、前記認証部による認証が失敗した場合に、前記更新情報を用いて、前記第１特定情報を、１つ遷移した前記状態を特定する前記第１特定情報に更新し、更新した前記第１特定情報と前記第２特定情報とを含む前記状態情報で前記状態記憶部の前記状態情報を更新すること、
を特徴とする請求項１に記載の認証装置。
【請求項５】
前記状態記憶部は、認証の通算失敗回数と前記通算失敗回数に応じて異なる値が算出される第１変動情報とを含む前記第１特定情報と、最後に認証に成功したときの前記通算失敗回数を表す基準回数と前記基準回数に応じて異なる値が算出される第２変動情報とを含む前記第２特定情報と、を含む前記状態情報を記憶し、
前記判定部は、一方向性関数である前記第１関数に前記通算失敗回数と前記第１変動情報とを入力して前記第１算出値を算出し、前記一方向性関数に前記基準回数と前記第２変動情報とを入力して前記第２算出値を算出し、前記第１特定情報によって特定される前記通算失敗回数と、前記第２特定情報によって特定される前記基準回数との差分を前記遷移数として前記失敗回数を特定し、前記第１算出値および前記第２算出値のそれぞれが前記比較値一致し、かつ、特定した前記失敗回数が前記閾値より小さいか否かを判定し、
前記更新部は、前記認証部による認証が失敗した場合に、１を加算した前記通算失敗回数と前記第１変動情報と前記更新情報とを予め定められた第３関数に入力した結果として出力される更新変動情報を算出し、１を加算した前記通算失敗回数と前記更新変動情報とを含む前記第１特定情報と、前記第２特定情報とを含む前記状態情報で前記状態記憶部の前記状態情報を更新すること、
を特徴とする請求項４に記載の認証装置。
【請求項６】
前記更新部は、前記認証部による認証が失敗した場合に、１を加算した前記通算失敗回数とともに前記第１関数に入力したときに算出される前記算出値が前記比較値と一致する前記更新変動情報を算出する前記第３関数によって前記更新変動情報を算出し、１を加算した前記通算失敗回数と、算出した前記更新変動情報とを含む前記第１特定情報と、前記第２特定情報とを含む前記状態情報で前記状態記憶部の前記状態情報を更新すること、
を特徴とする請求項５に記載の認証装置。
【請求項７】
前記状態記憶部は、認証が失敗するごとに異なる値が算出される第１変動情報と前記第１変動情報に応じて異なる値が算出される第２変動情報とを含む前記第１特定情報と、最後に認証に成功したときの前記第１変動情報を特定可能な第３変動情報と前記第３変動情報に応じて異なる値が算出される第４変動情報とを含む前記第２特定情報と、を含む前記状態情報を記憶し、
前記判定部は、前記第１関数に前記第１変動情報と前記第２変動情報とを入力して前記第１算出値を算出し、前記第１関数に前記第３変動情報と前記第４変動情報とを入力して前記第２算出値を算出し、さらに、予め定められた一方向性関数に前記第１変動情報と前記更新情報とを入力した結果として出力される出力値を算出し、前記出力値を、前記出力値と前記第３変動情報とが一致するまで、前記一方向性関数に再帰的に繰り返し入力して前記出力値を算出し、前記出力値と前記第３変動情報とが一致するまでの前記一方向性関数の演算回数を前記遷移数として前記失敗回数を特定し、特定した前記失敗回数が前記閾値より小さいか否かを判定し、
前記更新部は、前記認証部による認証が失敗した場合に、前記一方向性関数に前記第１変動情報と前記更新情報とを入力して前記出力値を算出し、前記出力値を予め定められた第４関数に入力した結果として出力される更新変動情報を算出し、前記出力値を新たな前記第１変動情報として含み、前記更新変動情報を新たな前記第２変動情報として含む前記第１特定情報と、前記第２特定情報とを含む前記状態情報で前記状態記憶部の前記状態情報を更新すること、
を特徴とする請求項４に記載の認証装置。
【請求項８】
前記更新部は、前記認証部による認証が失敗した場合に、前記一方向性関数に入力したときに算出される前記出力値が前記第３変動情報と一致する前記更新変動情報を算出する前記第４関数によって前記更新変動情報を算出し、前記出力値を新たな前記第１変動情報として含み、前記更新変動情報を新たな前記第２変動情報として含む前記第１特定情報と、前記第２特定情報とを含む前記状態情報で前記状態記憶部の前記状態情報を更新すること、
を特徴とする請求項７に記載の認証装置。
【請求項９】
前記更新部は、前記認証部による認証が成功した場合に、前記第２特定情報を、前記第１特定情報によって特定される前記状態より予め定められた個数だけ遷移を戻した前記状態を特定する前記第２特定情報に更新し、前記第１特定情報と、更新した前記第２特定情報とを、含む前記状態情報で前記状態記憶部の前記状態情報を更新し、
前記判定部は、前記第１特定情報を前記第１関数に入力して前記第１算出値を算出し、前記第２特定情報を前記第１関数に入力して前記第２算出値を算出し、前記遷移数と前記個数との差分によって前記失敗回数を特定し、前記第１算出値および前記第２算出値のそれぞれが前記比較値と一致し、かつ、特定した前記失敗回数が前記閾値より小さいか否かを判定すること、
を特徴とする請求項４に記載の認証装置。
【請求項１０】
前記更新情報記憶部は、前記状態情報の初期値である前記更新情報を記憶し、
前記判定部は、一方向性関数である前記第１関数に前記状態情報を入力して算出した前記算出値を、前記算出値と前記比較値とが一致するまで、前記一方向性関数に再帰的に繰り返し入力して前記算出値を算出し、前記算出値と前記比較値とが一致するまでの前記一方向性関数の演算回数によって前記失敗回数を特定し、特定した前記失敗回数が前記閾値より小さいか否かを判定し、
前記更新部は、前記認証部による認証が失敗した場合に、前記状態情報を前記一方向性関数に入力して前記算出値を算出し、算出した前記算出値を新たな状態情報として、前記状態記憶部を更新し、前記認証部による認証が成功した場合に、前記状態記憶部の前記状態情報を前記更新情報記憶部に記憶された前記更新情報である前記初期値に更新すること、
を特徴とする請求項１に記載の認証装置。
【請求項１１】
前記比較値と、前記比較値の署名情報を記憶する署名情報記憶部をさらに備え、
前記判定部は、前記状態情報を前記第１関数に入力して前記算出値を算出し、前記算出値と前記比較値とが一致し、かつ、前記状態情報によって特定される前記失敗回数が前記閾値より小さく、かつ、前記署名情報記憶部に記憶されている前記署名情報が正当であるか否かを判定し、
前記認証部は、前記算出値が前記比較値と一致し、かつ、前記状態情報によって特定される前記失敗回数が前記閾値より小さく、かつ、前記署名情報記憶部に記憶されている前記署名情報が正当である場合に、前記認証情報による認証を行うこと、
を特徴とする請求項１に記載の認証装置。
【請求項１２】
入力部が、認証に用いる認証情報を入力する入力ステップと、
判定部が、外部からアクセス不能な状態記憶部に記憶される情報であって、認証の失敗回数を特定可能な状態情報を予め定められた第１関数に入力した結果として出力される算出値を算出し、前記算出値と予め定められた比較値とが一致し、かつ、前記状態情報によって特定される前記失敗回数が予め定められた閾値より小さいか否かを判定する判定ステップと、
認証部が、前記算出値が前記比較値と一致し、かつ、前記状態情報によって特定される前記失敗回数が前記閾値より小さい場合に、前記認証情報による認証を行う認証ステップと、
更新部が、前記認証ステップによる認証が失敗した場合に、前記状態情報の更新に用いる更新情報を記憶する更新情報記憶部に記憶された前記更新情報を用いて、前記状態記憶部の前記状態情報を、１を加算した前記失敗回数を特定する前記状態情報に更新し、前記認証ステップによる認証が成功した場合に、前記状態記憶部の前記状態情報を、０を表す前記失敗回数を特定する前記状態情報に更新する更新ステップと、
を備えたことを特徴とする認証方法。
【請求項１３】
コンピュータを、
認証に用いる認証情報を入力する入力部と、
外部からアクセス不能な状態記憶部に記憶される情報であって、認証の失敗回数を特定可能な状態情報を予め定められた第１関数に入力した結果として出力される算出値を算出し、前記算出値と予め定められた比較値とが一致し、かつ、前記状態情報によって特定される前記失敗回数が予め定められた閾値より小さいか否かを判定する判定部と、
前記算出値が前記比較値と一致し、かつ、前記状態情報によって特定される前記失敗回数が前記閾値より小さい場合に、前記認証情報による認証を行う認証部と、
前記認証部による認証が失敗した場合に、前記状態情報の更新に用いる更新情報を記憶する更新情報記憶部に記憶された前記更新情報を用いて、前記状態記憶部の前記状態情報を、１を加算した前記失敗回数を特定する前記状態情報に更新し、前記認証部による認証が成功した場合に、前記状態記憶部の前記状態情報を、０を表す前記失敗回数を特定する前記状態情報に更新する更新部と、
として機能させる認証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、認証装置の利用者が所定の回数以上連続して認証に失敗する場合には以後の認証処理を受け付けないことにより、認証装置の不正利用を防止する装置、方法およびプログラムに関する。
【背景技術】
【０００２】
近年、ＩＣカードやモバイル端末などの持ち運び可能なデバイスが広く使用されている。これらのデバイスは、遺失や盗難などにより悪意のある不特定多数に利用される恐れがある。このため、デバイスの利用者が正規利用者であるか否かを判定した後にデバイスの利用を許可することの重要性は大きい。
【０００３】
デバイスの利用者が正規利用者であるか否かを判定する手法として、パスワードや生体情報などの認証情報を用いて利用者を認証する手法が用いられる。しかし、認証情報は有限であるため、総当り的に認証を試行することにより正しい認証情報が知られる恐れがある。したがって、この手法のみでは悪意ある利用を十分に防ぐことはできない。
【０００４】
そこで、認証の試行回数に上限を設け、この上限を超えて認証に失敗した場合には以後の認証を受け付けないように認証装置（デバイス）の使用をロックする手法が知られている。この手法では、認証の試行回数または失敗回数を記憶するカウンタを認証装置内に実装する必要がある。
【０００５】
一方、認証装置に対する物理的な解析によって不正に装置内の情報にアクセスするサイドチャネル攻撃と呼ばれる攻撃方法が多数報告されるようになっている。例えば、認証装置の動作時の消費電力や漏洩電磁波を観測することで認証装置内部の状態を推測する解析手法、認証装置への供給電源を故意に変化させたり認証装置に高エネルギーの光を照射したりすることで誤動作を誘発してデータを書き換えて内部の秘密データを推測する解析手法などが知られている。
【０００６】
物理的な解析によりカウンタ値が初期化された場合、試行回数の制限が無意味となるため、上述のように認証の失敗回数を記憶するカウンタを実装する方法でも悪意ある利用を十分に防ぐことはできない。
【０００７】
非特許文献１では、物理的な解析によりデータを読取れないがデータを変化させることができるメモリ領域（書込みのみ可能なメモリ領域（Write Only Memory））を利用し、上述のような総当り的な試行を防ぐことができるカウンタを、書込みのみ可能なメモリ領域に実装する技術が提案されている。
【０００８】
物理的な解析ではデータを意図した値に変化させることは一般には困難であるが、非特許文献１の方法によれば、仮にデータを意図した値に書き換えることができたとしても、悪意ある利用から認証装置を保護することが可能となる。
【０００９】
【非特許文献１】R. Gennaro、 et al.、 “Algorithmic Tamper-Proof Security: Theoretical Foundations for Security against Hardware Tampering”、 Theory of Cryptography Conference 2004、 Lecture Notes in Computer Science 2951、 pp. 258-277、 Springer-Verlag
【発明の開示】
【発明が解決しようとする課題】
【００１０】
非特許文献１の方法では、認証装置の開始時から通算した失敗回数（通算失敗回数）が所定の上限を超えた場合に認証装置がロックされる。認証の通算失敗回数に基づいて認証装置をロックする方法の場合、認証の連続失敗回数に基づいてロック方法と比較して、正規の利用者の誤入力に配慮して上限を高めに設定することが一般的である。しかしながら、このように上限を高めに設定すると認証の試行回数が増えるため、安全性が低下するという問題があった。
【００１１】
本発明は、上記に鑑みてなされたものであって、物理的な解析による悪意の利用を抑止しつつ、認証の試行回数の上限の増加に伴う安全性の低下を回避できる装置、方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するために、本発明は、外部からアクセス不能な記憶部であって、認証の失敗回数を特定可能な状態情報を記憶する状態記憶部と、前記状態情報の更新に用いる更新情報を記憶する更新情報記憶部と、認証に用いる認証情報を入力する入力部と、前記状態情報を予め定められた第１関数に入力した結果として出力される算出値を算出し、前記算出値と予め定められた比較値とが一致し、かつ、前記状態情報によって特定される前記失敗回数が予め定められた閾値より小さいか否かを判定する判定部と、前記算出値が前記比較値と一致し、かつ、前記状態情報によって特定される前記失敗回数が前記閾値より小さい場合に、前記認証情報による認証を行う認証部と、前記認証部による認証が失敗した場合に、前記更新情報を用いて、前記状態記憶部の前記状態情報を、１を加算した前記失敗回数を特定する前記状態情報に更新し、前記認証部による認証が成功した場合に、前記状態記憶部の前記状態情報を、０を表す前記失敗回数を特定する前記状態情報に更新する更新部と、を備えたことを特徴とする。
【００１３】
また、本発明は、上記装置を実行することができる方法およびプログラムである。
【発明の効果】
【００１４】
本発明によれば、物理的な解析による悪意の利用を抑止しつつ、認証の試行回数の上限の増加に伴う安全性の低下を回避できるという効果を奏する。
【発明を実施するための最良の形態】
【００１５】
以下に添付図面を参照して、この発明にかかる装置、方法およびプログラムの最良な実施の形態を詳細に説明する。
【００１６】
（第１の実施の形態）
第１の実施の形態にかかる認証装置は、認証の連続失敗回数を含む認証の状態情報を記憶し、所定の一方向性関数を用いて状態情報が正しいことを検査し、検査に合格した場合にのみ認証情報による認証を行う。なお、状態情報および状態情報の更新に利用する更新情報を、物理的な解析により外部からアクセスすることが困難な記憶部に記憶するため、悪意の利用者が、検索に合格できるように、状態情報を不正に書き換えることは困難となる。
【００１７】
以下では、ＩＣカードとして認証装置を実現した例について説明する。例えば、利用者は、ＩＣカードをキャッシュディスペンサーに挿入し、キャッシュディスペンサーを介して入力した認証情報等によって正規な利用者であることの認証を受け、認証された場合にキャッシュディスペンサーのサービスを受けることができる。なお、適用可能な装置はＩＣカードに限られず、事前に記憶された情報と入力された認証情報とによって認証を行う装置であればあらゆる装置に適用できる。
【００１８】
また、認証情報とは、認証に用いる利用者の識別情報である。識別情報は、例えば、ＰＩＮ（Personal Identification Number）などのパスワード情報、生体情報、および、対話の情報を用いて認証する場合は対話の情報などを含む。また、以下では、利用者とは主にＩＣカード１００の利用者を意味するが、ＩＣカード１００を介してサービスなどを受ける利用者という意味を含めてもよい。
【００１９】
図１は、第１の実施の形態にかかる認証装置としてのＩＣカード１００の構成を示すブロック図である。図１に示すように、ＩＣカード１００は、状態記憶部１２０と、パラメータ記憶部１３０と、入出力部１０１と、判定部１０２と、制御部１０３と、認証部１０４と、更新部１０５とを備えている。
【００２０】
なお、以下では、データを記憶する各記憶部（状態記憶部１２０、パラメータ記憶部１３０）は、以下の４つの種類いずれかに分類できる領域を備えるものとする。
（１）領域Ｉ：外部から読み出しも書き込みも可能な領域（Random Access Memory（ＲＡＭ））
（２）領域ＩＩ：外部から読み出しは可能だが書き込みは不可能な領域（Read Only Memory（ＲＯＭ））
（３）領域ＩＩＩ：外部から書き込みは可能だが読み出しは不可能な領域（物理的な解析によりデータの書込みのみ可能なメモリ領域（Write Only Memory））
（４）領域ＩＶ：外部からの書き込みも読み出しも不可能な領域（最も安全な耐タンパ実装が施された領域）
【００２１】
図１に示すように、第１の実施の形態では、状態記憶部１２０は、領域ＩＩＩを備えている。また、パラメータ記憶部１３０は、領域ＩＩと、領域ＩＶとを備えている。
【００２２】
状態記憶部１２０は、認証の失敗回数に依存する情報であって失敗回数を特定可能な状態情報を記憶する。具体的には、状態情報は認証の失敗回数ＣとデータＲとを含む。Ｃは、予め定められたビット長（ｋ０ビットとする）で表現される整数値であり、初期値を整数値Ｃ０とする。Ｃ０はランダムな値または意図して選択された値など、任意の値を設定する。以下では、Ｃ０＝０であるものとして説明する。
【００２３】
データＲは後述する一方向性関数ＣＨの入力の第２成分となる予め定められたビット長（ｋ１ビットとする）のビット列である。データＲは、値が変動する変動情報である。すなわち、データＲは、失敗回数の更新に応じて後述する逆関数ＣＨＩによって異なる値が算出される。データＲの初期値は、ｋ１ビットのＲ０とする。Ｒ０は、ランダムな値または意図して選択された値など、任意の値を設定する。
【００２４】
なお、以下では、状態情報を、状態情報（Ｃ、Ｒ）と表す場合がある。また、状態情報は、状態記憶部１２０の領域ＩＩＩに記憶される。
【００２５】
パラメータ記憶部１３０は、認証処理に用いる各種情報（パラメータ）を記憶する。具体的には、パラメータ記憶部１３０は、デバイス製造者または利用者が事前に設定した認証情報、予め定められたビット長ｋ０、ｋ１、ｋ２、一方向性関数ＣＨの構成、公開鍵ＣＰＫ、ｋ２ビットのビット列である関数値Ｖ、逆関数ＣＨＩの構成、秘密鍵ＣＳＫ、および認証の連続失敗回数の上限Ｎを記憶する。
【００２６】
ここで、一方向性関数ＣＨ、および逆関数ＣＨＩの性質について説明する。一方向性関数ＣＨは、公開鍵ＣＰＫと、ｋ０ビットのビット列である失敗回数Ｃと、ｋ１ビットのビット列であるデータＲとを入力として、ｋ２ビットのビット列である関数値Ｖを出力する一方向性関数である。すなわち、一方向性関数ＣＨは、ＣＨ（ＣＰＫ、Ｃ、Ｒ）＝Ｖのように表される。
【００２７】
公開鍵ＣＰＫは、デバイス製造時に予め設定された値である。秘密鍵ＣＳＫは、公開鍵ＣＰＫに対応する値としてデバイス製造時に予め設定された値である。関数値Ｖの初期値Ｖ０は、状態記憶部１２０に記憶された状態情報の初期値Ｃ０、Ｒ０を用いて、Ｖ０＝ＣＨ（ＣＰＫ、Ｃ０、Ｒ０）で算出される。なお、後述するように、関数値Ｖが一定となるように状態情報（Ｃ、Ｒ）が更新されるため、関数値Ｖは初期値Ｖ０から不変となる。
【００２８】
一方、ＣＨＩは、公開鍵ＣＰＫに対応する秘密鍵ＣＳＫと、２つのｋ０ビットのビット列ＣおよびＣ’と、ｋ１ビットのビット列であるデータＲとを入力として、ＣＨ（ＣＰＫ、Ｃ、Ｒ）＝ＣＨ（ＣＰＫ、Ｃ’、Ｒ’）を満たす、ｋ１ビットのビット列であるデータＲ’を算出する関数である。すなわち、逆関数ＣＨＩは、ＣＨＩ（ＣＳＫ、Ｃ、Ｃ’、Ｒ）＝Ｒ’のように表される。
【００２９】
このように、秘密鍵ＣＳＫが与えられた場合に、ＣＨの出力結果が関数値Ｖとなるような入力値であるデータＲ’を算出できるため、ＣＨＩをＣＨの逆関数と呼ぶ。
【００３０】
このような一方向性関数ＣＨおよび逆関数ＣＨＩの組としては、例えば、Giuseppe Ateniese、 Breno de Medeiros、 “On the Key Exposure Problem in Chameleon Hashes”、 Security in Communication Networks 2004、 Lecture Notes in Computer Science 3352、 pp. 165-179、 Springer-Verlagに記載されたハッシュ関数などを適用できる。
【００３１】
なお、関数の構成（一方向性関数ＣＨの構成、逆関数ＣＨＩの構成）とは、各関数の機能を実現するために必要な情報を表し、判定部１０２が各関数を実行するときにパラメータ記憶部１３０から読み出す。判定部１０２内に各関数の機能を備える場合は、パラメータ記憶部１３０に各関数の構成を記憶しなくてもよい。
【００３２】
認証の連続失敗回数の上限Ｎは、許容する認証の連続失敗回数の上限を表す情報である。上限Ｎは、システム設計時に予め設定された整数値としてパラメータ記憶部１３０に記憶される。例えば、３回連続して認証に失敗した場合にデバイスをロックする場合にはＮ＝３を設定する。
【００３３】
なお、逆関数ＣＨＩの構成と秘密鍵ＣＳＫとは、更新部１０５が状態情報を更新するときに用いる情報である。以下では、これらを更新情報という。また、ビット長ｋ０、ｋ１、ｋ２、一方向性関数ＣＨの構成、公開鍵ＣＰＫ、関数値Ｖ、逆関数ＣＨＩの構成、認証の連続失敗回数の上限Ｎは、パラメータ記憶部１３０の領域ＩＩに記憶される。また、秘密鍵ＣＳＫは、パラメータ記憶部１３０の領域ＩＶに記憶される。
【００３４】
入出力部１０１は、ＩＣカード１００に接続された外部装置（図示せず）との間でデータを入出力する。ここで、外部装置とは、少なくとも認証要求と認証情報を入出力部１０１に出力する装置であり、例えば、キャッシュディスペンサーなどのＩＣカード１００の読取装置が該当する。入出力部１０１は、このような外部装置を介して、認証を要求する情報である認証要求、および認証の要求者が入力した認証用の認証情報を受付ける。
【００３５】
認証要求は、ＩＣカード１００に対する外部装置の所定の動作をトリガーとして生成される。なお、その動作自体を認証要求とするように構成してもよい。例えば、外部装置がＩＣカード１００に対して電力を供給した場合に認証処理を実行する場合が該当する。
【００３６】
認証要求および認証情報を受付けた場合、入出力部１０１は判定部１０２に対して状態情報の判定を要求する。なお、認証情報は、認証要求と同時に取得する必要はない。例えば、認証部１０４から認証情報の取得要求を受けたときに、入出力部１０１が、外部装置に対して認証情報の取得を要求し、要求に応じて外部装置から入力された認証情報を、要求元である認証部１０４に出力するように構成してもよい。
【００３７】
さらに、入出力部１０１は、認証情報によって認証された結果（認証結果）を外部装置に出力する。認証結果とは、認証に合格したという情報、または、認証が不合格であったという情報である。
【００３８】
判定部１０２は、入出力部１０１からの要求を受け、パラメータ記憶部１３０に記憶されたパラメータを用いて、状態記憶部１２０に記憶されている状態情報が健全であること、および状態情報から算出した連続失敗回数が上限Ｎより小さいことを判定する。ここで、状態情報が健全であるとは、状態情報について不正な書き換えが行われていないことを意味する。
【００３９】
具体的には、判定部１０２は、状態記憶部１２０から状態情報（Ｃ、Ｒ）を読み出し、パラメータ記憶部１３０から上限Ｎ、一方向性関数ＣＨの構成、公開鍵ＣＰＫ、関数値Ｖを読み出す。そして、判定部１０２は、読み出したＣが０以上Ｎ未満の整数値であること、およびＣＨ（ＣＰＫ、Ｃ、Ｒ）＝Ｖが成立することを検査する。また、判定部１０２は、検査結果（合格または不合格）を制御部１０３に通知する。
【００４０】
なお、物理的な解析によりデータが書き換えられることなく、正しく認証処理が行われている場合に、利用者の認証がＬ回連続（Ｌ＝０、１、．．．、Ｎ−１）して失敗すると、状態情報に含まれるＣと上限Ｎとの間には、Ｃ＜Ｎの関係が成り立つ。
【００４１】
一方、正しく認証処理が行われている場合に、利用者の認証がＬ＝Ｎ回連続して失敗すると、Ｃ＝Ｎの関係が成立する。すなわち、正しく認証処理が行われている場合は、認証の連続失敗回数がＮ回未満となるのは、Ｃが０以上Ｎ未満の整数値であるときに限られる。
【００４２】
制御部１０３は、判定部１０２の判定結果に基づいてＩＣカード１００の利用可否または認証処理の実行可否を制御する。具体的には、制御部１０３は、判定部１０２から合格を通知された場合に、認証部１０４に認証処理の実行を指示する。一方、制御部１０３は、判定部１０２から不合格を通知された場合に、認証部１０４に認証処理の停止を指示してＩＣカード１００の利用要求を拒絶する（認証処理の終了）。
【００４３】
認証部１０４は、制御部１０３から認証処理の実行の指示を受けると、認証情報を用いて認証の要求者が正規の利用者であるか否かを判定する。例えば、認証部１０４は、入出力部１０１から受け取った認証情報であるＰＩＮと、パラメータ記憶部１３０の領域ＩＶに記憶されているＰＩＮとが一致するか否かによって利用者を認証する。なお、認証部１０４による認証方法はこれに限られず、認証情報を用いて利用者を認証できるものであれば、従来から用いられているあらゆる方法を適用できる。
【００４４】
また、認証部１０４は、認証処理の判定結果に応じて更新部１０５に状態情報の更新を指示するとともに、判定結果を入出力部１０１に出力する。具体的には、認証部１０４は、不合格と判定した場合には、更新部１０５に状態情報の更新を指示して、さらに入出力部１０１に認証不合格の情報を出力する。また、認証部１０４は、合格と判定した場合には、更新部１０５に状態情報の更新（初期化）を指示して、さらに入出力部１０１に認証合格の情報を出力する。また、認証部１０４は、制御部１０３から認証処理の停止の指示を受け付けた場合は、認証処理を停止し、認証処理を停止した旨を入出力部１０１に出力する。
【００４５】
更新部１０５は、認証部１０４による判定結果に応じて、パラメータ記憶部１３０に記憶されている更新情報と、状態記憶部１２０に記憶されている更新前の状態情報とから、更新後の状態情報を生成し、状態記憶部１２０に記憶される状態情報を更新する。
【００４６】
具体的には、認証に合格した場合は、更新部１０５は、Ｒ’＝ＣＨＩ（ＣＳＫ，Ｃ，０，Ｒ）によって、更新後のデータＲ’を算出する。これは、０回を表す失敗回数Ｃとともに入力したときの一方向性関数ＣＨの算出値が、一定の関数値ＶとなるようなデータＲ’を求めることを意味する。そして、更新部１０５は、状態情報（０、Ｒ’）で状態記憶部１２０の状態情報を更新する。
【００４７】
また、認証が不合格であった場合は、更新部１０５は、Ｒ’＝ＣＨＩ（ＣＳＫ，Ｃ，Ｃ＋１，Ｒ）によって、更新後のデータＲ’を算出する。これは、失敗回数に１加算し（Ｃ＝Ｃ＋１）、１を加算した失敗回数Ｃとともに入力したときの一方向性関数ＣＨの算出値が、一定の関数値ＶとなるようなデータＲ’を求めることを意味する。そして、更新部１０５は、状態情報（Ｃ＋１、Ｒ’）で状態記憶部１２０の状態情報を更新する。
【００４８】
次に、このように構成された第１の実施の形態にかかるＩＣカード１００による認証制御処理について図２を用いて説明する。図２は、第１の実施の形態における認証制御処理の全体の流れを示すフローチャートである。
【００４９】
まず、入出力部１０１は、外部装置から認証要求および認証情報としてＰＩＮを受け付ける（ステップＳ２０１）。そして、入出力部１０１は、判定部１０２に状態情報の判定を要求する。
【００５０】
判定の要求を受け、判定部１０２は、状態記憶部１２０から状態情報（Ｃ、Ｒ）を読み出す（ステップＳ２０２）。また、判定部１０２は、パラメータ記憶部１３０から一方向性関数ＣＨの構成、公開鍵ＣＰＫ、関数値Ｖ、認証の連続失敗回数の上限Ｎを読み出す（ステップＳ２０３）。そして、判定部１０２は、Ｃが０以上Ｎ未満の整数値であり、かつ、ＣＨ（ＣＰＫ、Ｃ、Ｒ）＝Ｖが成り立つか否かを検査する（ステップＳ２０４）。
【００５１】
検査に不合格の場合は（ステップＳ２０４：ＮＯ）、判定部１０２は、制御部１０３に不合格を通知する。制御部１０３は、不合格の通知を受けて認証部１０４に認証処理の停止を指示する（ステップＳ２０５）。また、制御部１０３は、ＩＣカード１００の利用要求を拒絶する。
【００５２】
検索に合格した場合は（ステップＳ２０４：ＹＥＳ）、判定部１０２は、制御部１０３に合格を通知する。制御部１０３は、合格の通知を受けて認証部１０４に認証処理の実行を指示する（ステップＳ２０６）。
【００５３】
認証部１０４は、認証処理の実行が指示されると、入力されたＰＩＮを用いて認証処理を実行する（ステップＳ２０７）。そして、認証部１０４は、ＰＩＮにより利用者が認証されたか否かを判定する（ステップＳ２０８）。
【００５４】
認証された場合は（ステップＳ２０８：ＹＥＳ）、認証部１０４は、更新部１０５に認証合格に基づく状態情報の更新（初期化）を指示する。更新部１０５は、更新の指示を受けて状態記憶部１２０から状態情報（Ｃ、Ｒ）を取得する（ステップＳ２０９）。また、更新部１０５は、パラメータ記憶部１３０から、更新情報（逆関数ＣＨＩの構成、秘密鍵ＣＳＫ）を取得する（ステップＳ２１０）。そして、更新部１０５は、取得した更新情報を用いて、更新後のデータＲ’を、Ｒ’＝ＣＨＩ（ＣＳＫ、Ｃ、０、Ｒ）によって計算する（ステップＳ２１１）。さらに、更新部１０５は、状態記憶部１２０に記憶される状態情報を（０、Ｒ’）に更新する（ステップＳ２１２）。
【００５５】
次に、認証部１０４は、認証に合格したことを、入出力部１０１を介して外部装置に出力するとともに（ステップＳ２１３）、制御部１０３に認証合格を通知する。なお、制御部１０３は、認証合格を受け付けた場合にはＩＣカード１００の利用要求を許可し、認証制御処理を終了する。
【００５６】
ステップＳ２０８で、利用者が認証されなかった場合は（ステップＳ２０８：ＮＯ）、認証部１０４は、更新部１０５に認証不合格に基づく状態情報の更新を指示する。更新部１０５は、更新の指示を受けて状態記憶部１２０から状態情報（Ｃ、Ｒ）を取得する（ステップＳ２１４）。また、更新部１０５は、パラメータ記憶部１３０から、更新情報（逆関数ＣＨＩの構成、秘密鍵ＣＳＫ）を取得する（ステップＳ２１５）。そして、更新部１０５は、取得した更新情報を用いて、更新後のデータＲ’を、Ｒ’＝ＣＨＩ（ＣＳＫ、Ｃ、Ｃ＋１、Ｒ）によって計算する（ステップＳ２１６）。さらに、更新部１０５は、状態記憶部１２０に記憶される状態情報を（Ｃ＋１、Ｒ’）に更新する（ステップＳ２１７）。
【００５７】
次に、認証部１０４は、認証不合格を、入出力部１０１を介して外部装置に出力するとともに（ステップＳ２１８）、制御部１０３に認証不合格を通知する。なお、制御部１０３は、認証不合格を受け付けた場合にはＩＣカード１００の利用要求を拒絶し、認証制御処理を終了する。
【００５８】
認証結果を受けた外部装置は、認証結果に応じて所定の処理を実行する。外部装置は、例えば認証結果を表示デバイスなどに表示する処理を実行する。また、例えば、認証結果を受けたキャッシュディスペンサーなどの外部装置は、自装置によるサービスを許可または拒絶する制御を行う。
【００５９】
次に、状態情報の遷移について図３を用いて説明する。図３は、第１の実施の形態における状態情報の遷移例を示す模式図である。
【００６０】
同図の実線は、状態情報を一方向性関数ＣＨに入力して得られる算出値が、事前に求められた固定値である関数値Ｖと一致するか否かを検証することを示している。また、同図の点線は、認証結果に応じて、逆関数ＣＨＩによって状態情報を更新または初期化し、状態を遷移することを示している。
【００６１】
例えば、状態情報が（０、Ｒ０）の場合に認証に失敗したとすると、次の状態である状態情報（１、Ｒ１）に遷移する。この状態で認証に成功したとすると、状態情報の初期化により最初の状態である状態情報（０、Ｒ０）の状態に戻る。
【００６２】
上述のように、状態情報（Ｃ、Ｒ）は領域ＩＩＩに記憶されているため、攻撃者はＲを読み出すことはできない。一方、逆関数ＣＨＩの計算で用いる秘密鍵ＣＳＫは領域ＩＶに記憶されているため、攻撃者は秘密鍵ＣＳＫを読み出すことも書き換えることもできない。
【００６３】
攻撃者は、秘密鍵ＣＳＫを読み出すことができないため、状態情報（Ｃ、Ｒ）を、Ｃ’が０以上Ｎ未満かつＣＨ（ＣＰＫ、Ｃ’、Ｒ’）＝Ｖとなるような状態情報（Ｃ’、Ｒ’）に書き換えることは困難である。
【００６４】
また、状態情報の検証時に比較の対象となる比較値である関数値Ｖは、上述のように、状態情報の初期値（Ｃ０、Ｒ０）について一意に定まる。すなわち、認証の失敗回数に依存する状態情報に関して不変である。このため、状態ごとにハッシュ関数で算出した認証子を記憶し、記憶した認証子と比較することにより状態の正当性を検証する方法などと比べて、記憶領域を削減することが可能となる。
【００６５】
また、通算失敗回数を検出する非特許文献１の認証装置は、関数値Ｖとの比較を行うために一方向性関数を複数回施す必要があった。一方、第１の実施の形態の認証装置では、認証の連続失敗回数によらず、常に状態情報（Ｃ、Ｒ）に一方向性関数ＣＨを一度だけ施せば関数値Ｖと比較することができる。これにより、認証の状態を検証するための処理負荷を軽減することができる。
【００６６】
このように、第１の実施の形態にかかる認証装置では、連続失敗回数を含む認証の状態情報を記憶し、状態情報が正しいことおよび連続失敗回数が上限を超えていないことを検査し、検査に合格した場合にのみ認証情報による認証を行うとともに、物理的な解析が困難な記憶部に記憶された更新情報で状態情報を更新することができる。これにより、物理的な解析に対しても悪意ある利用から保護可能であり、かつ、認証の連続失敗回数が上限を超えた場合に使用を拒絶できる認証装置を提供することが可能となる。すなわち、物理的な解析による悪意の利用を抑止しつつ、認証の試行回数の上限の増加に伴う安全性の低下を回避可能となる。
【００６７】
（変形例１）
変形例１では、関数値Ｖにデバイス製造者のデジタル署名Ｓ（以下、単に署名Ｓという。）を添付することによりセキュリティを強化する方法について説明する。
【００６８】
図４は、変形例１にかかるＩＣカード４００の構成を示すブロック図である。図４に示すように、ＩＣカード４００は、状態記憶部１２０と、パラメータ記憶部４３０と、入出力部１０１と、判定部４０２と、制御部１０３と、認証部１０４と、更新部１０５とを備えている。
【００６９】
変形例１では、パラメータ記憶部４３０に記憶されたパラメータの内容、および判定部４０２の機能が第１の実施の形態と異なっている。その他の構成および機能は、第１の実施の形態にかかるＩＣカード１００の構成を表すブロック図である図１と同様であるので、同一符号を付し、ここでの説明は省略する。
【００７０】
パラメータ記憶部４３０は、さらに領域Ｉを備え、関数値Ｖおよび関数値Ｖの署名Ｓを領域Ｉに記憶する点が、第１の実施の形態と異なっている。なお、署名Ｓは、デバイス製造者が、一方向性関数ＣＨの構成、公開鍵ＣＰＫ、および状態情報の初期値（Ｃ０、Ｒ０）を設定し、関数値Ｖ０＝ＣＨ（ＣＰＫ、Ｃ０、Ｓ０）を計算した後、Ｓ＝Ｓｉｇｎ（ＳＫ、Ｖ０）により予め計算し、デバイス製造時にパラメータ記憶部４３０の領域Ｉに記憶する。
【００７１】
ここで、Ｓｉｇｎは署名生成関数を表し、ＳＫはデバイス製造者の署名鍵を表す。また、以下では、Ｖｅｒ（ＰＫ、Ｖ、Ｓ）によって署名検証関数を表す。ＰＫは、デバイス製造者の検証鍵を表す。署名ＳがＰＫを用いたＶの署名として正しいことが検証された場合、Ｖｅｒ（ＰＫ、Ｖ、Ｓ）は「ａｃｃｅｐｔ」を出力する。一方、署名が正しくない場合、Ｖｅｒ（ＰＫ、Ｖ、Ｓ）は「ｒｅｊｅｃｔ」を出力する。
【００７２】
デバイス製造者の検証鍵ＰＫは、パラメータ記憶部４３０に記憶されていてもよいし、認証要求時に入出力部１０１から受け付けてもよい。パラメータ記憶部４３０に記憶する場合には、領域ＩＩに記憶する。以下では、認証要求時に入出力部１０１から受け付ける場合について説明する。また、署名検証関数Ｖｅｒの構成はパラメータ記憶部４３０の領域ＩＩに記憶する。
【００７３】
判定部４０２は、さらに、署名Ｓを用いて関数値Ｖが正当であることを判定する点が、第１の実施の形態の判定部１０２と異なっている。
【００７４】
具体的には、判定部４０２は、状態記憶部１２０から状態情報（Ｃ、Ｒ）を読み出し、パラメータ記憶部４３０から上限Ｎ、一方向性関数ＣＨの構成、公開鍵ＣＰＫ、関数値Ｖ、署名Ｓ、署名検証関数Ｖｅｒの構成を読み出す。さらに、入出力部１０１を通じてデバイス製造者の検証鍵ＰＫを取得する。そして、判定部４０２は、読み出したＣが０以上Ｎ未満の整数値であること、ＣＨ（ＣＰＫ、Ｃ、Ｒ）＝Ｖが成立すること、およびＶｅｒ（ＰＫ、Ｖ、Ｓ）＝ａｃｃｅｐｔが成り立つことを検査する。また、判定部４０２は、検査結果（合格または不合格）を制御部１０３に通知する。
【００７５】
次に、このように構成された変形例１にかかるＩＣカード４００による認証制御処理について図５を用いて説明する。図５は、変形例１における認証制御処理の全体の流れを示すフローチャートである。
【００７６】
ステップＳ５０１からステップＳ５０２までの、認証要求受付処理および状態情報取得処理は、第１の実施の形態にかかるＩＣカード１００におけるステップＳ２０１からステップＳ２０２までと同様の処理なので、その説明を省略する。
【００７７】
状態情報を取得後、判定部４０２は、パラメータ記憶部４３０から一方向性関数ＣＨの構成、公開鍵ＣＰＫ、関数値Ｖ、認証の連続失敗回数の上限Ｎに加え、署名Ｓおよび署名検証関数Ｖｅｒの構成を読み出す（ステップＳ５０３）。次に、判定部４０２は、入出力部１０１を介して検証鍵ＰＫを取得する（ステップＳ５０４）。
【００７８】
次に、判定部４０２は、Ｃが０以上Ｎ未満の整数値であり、かつ、ＣＨ（ＣＰＫ、Ｃ、Ｒ）＝Ｖが成り立ち、かつ、Ｖｅｒ（ＰＫ、Ｖ、Ｓ）＝ａｃｃｅｐｔが成り立つか否かを検査する（ステップＳ５０５）。
【００７９】
ステップＳ５０６からステップＳ５１９までは、第１の実施の形態にかかるＩＣカード１００におけるステップＳ２０５からステップＳ２１８までと同様の処理なので、その説明を省略する。
【００８０】
次に、状態情報の遷移について図６を用いて説明する。図６は、変形例１における状態情報の遷移例を示す模式図である。
【００８１】
同図に示すように、変形例１での状態情報の遷移は図３に示す第１の実施の形態と同様であるが、状態情報の検証に用いる関数値Ｖの署名Ｓ（＝Ｓｉｇｎ（ＳＫ、Ｖ））をさらに検証することができる。このため、よりセキュリティを高めることができる。
【００８２】
また、状態情報（Ｃ、Ｒ）は領域ＩＩＩに記憶されているため、攻撃者はＲを読み出すことはできない。一方、デバイス製造者の署名鍵ＳＫはデバイス内部には記憶されておらず、デバイス製造者が適切に管理しているため、攻撃者はＳＫを取得することはできない。すなわち、攻撃者は、署名Ｓを偽造することも困難である。このため、攻撃者は、状態情報（Ｃ、Ｒ）および署名Ｓを、Ｃ’が０以上Ｎ未満、かつ、Ｖ’＝ＣＨ（ＣＰＫ、Ｃ’、Ｒ’）、かつ、Ｖｅｒ（ＰＫ、Ｖ’、Ｓ’）＝ａｃｃｅｐｔとなるような状態情報（Ｃ’、Ｒ’）およびＳ’に書き換えることは困難である。
【００８３】
さらに、デバイス製造者の検証鍵ＰＫを外部から受け付けるように構成すれば、例えば署名と検証鍵とを合わせて書き換えることにより、署名の検証処理を不正に回避することを防止できる。言い換えると、デバイス製造者の検証鍵ＰＫを外部から受け付けることにより、状態情報がデバイス製造者の意図どおりに遷移していることが確認できる。また、変形例１では、署名Ｓの記憶領域が必要となるとともに、デジタル署名の検証処理による処理量が増加するものの、関数値Ｖを領域Ｉに記憶することが可能となる。
【００８４】
（変形例２）
変形例２では、第１の実施の形態にかかる認証装置において、利用者が認証に用いる情報についてのデジタル署名Ｔ（以下、単に署名Ｔという。）を、一方向性関数ＣＨと逆関数ＣＨＩの入力として追加する。以下では、ＰＩＮを認証に用いるものとする。また、Ｓｉｇｎを署名生成関数とし、Ｖｅｒを署名検証関数とする。また、ＳＫおよびＰＫは、それぞれ署名鍵および検証鍵を表す。すなわち、署名Ｔ＝Ｓｉｇｎ（ＳＫ、ＰＩＮ）であるものとする。
【００８５】
変形例２では、偽造困難であるデジタル署名を利用してＳＫ、ＣＳＫ、およびＰＩＮの正当性を保証することにより、領域ＩＶを使用せずとも安全な認証装置を構成することが可能となる。
【００８６】
ここで、変形例２の一方向性関数ＣＨは、公開鍵ＣＰＫのほかに、署名Ｔ、失敗回数Ｃ、データＲを入力として、関数値Ｖを出力する関数である。一方、逆関数ＣＨＩは、秘密鍵ＣＳＫのほかに、署名Ｔ、失敗回数Ｃ、データＲ、失敗回数Ｃ’（Ｃ’はＣ＋１またはＣ０）を入力として、ＣＨ（ＣＰＫ、Ｔ、Ｃ、Ｒ）＝ＣＨ（ＣＰＫ、Ｔ、Ｃ’、Ｒ’）＝ＶとなるデータＲ’を出力する関数である。
【００８７】
図７は、変形例２にかかる認証装置としてのＩＣカード５００の構成を示すブロック図である。図７に示すように、ＩＣカード５００は、状態記憶部１２０と、パラメータ記憶部５３０と、入出力部１０１と、判定部５０２と、制御部１０３と、認証部５０４と、更新部５０５とを備えている。
【００８８】
変形例２では、判定部５０２の機能、認証部５０４、更新部５０５の機能、およびパラメータ記憶部５３０の構成が、変形例１と異なっている。その他の構成および機能は、変形例１にかかるＩＣカード４００の構成を表すブロック図である図４と同様であるので、同一符号を付し、ここでの説明は省略する。
【００８９】
図５に示すように、変形例２では、状態記憶部１２０は、領域ＩＩＩを備えている。また、パラメータ記憶部５３０は、領域ＩＩと、領域ＩＩＩとを備えている。
【００９０】
状態記憶部１２０の領域ＩＩＩには、第１の実施の形態における変形例１と同様に、認証の失敗回数ＣとデータＲからなる状態情報を記憶する。さらに、変形例２では、第１の実施の形態における変形例１と同様に、上述のように設定された（Ｃ０、Ｒ０）に対して、署名Ｓ＝Ｓｉｇｎ（ＳＫ，ＣＨ（ＣＰＫ、Ｔ、Ｃ０、Ｒ０））を利用する。
【００９１】
パラメータ記憶部５３０は、認証処理に用いる各種情報（パラメータ）を記憶する。具体的には、パラメータ記憶部５３０は、領域ＩＩに、認証の連続失敗回数の上限Ｎ、予め定められたビット長ｋ０、ｋ１、ｋ２、一方向性関数ＣＨの構成、逆関数ＣＨＩの構成、関数値Ｖ、公開鍵ＣＰＫ、署名生成関数の構成Ｓｉｇｎ、署名検証関数の構成Ｖｅｒ、検証鍵ＰＫを記憶する。また、パラメータ記憶部５３０は、領域ＩＩＩに、秘密鍵ＣＳＫ、署名鍵ＳＫ、署名Ｔ、Ｓを記憶する。
【００９２】
このように、本変形例２のパラメータ記憶部５３０は、秘密鍵ＣＳＫとＰＩＮとを記憶するための領域ＩＶを備えず、代わりに、秘密鍵ＣＳＫとＰＩＮの署名Ｔとを記憶する領域ＩＩＩを備えている。
【００９３】
なお、関数の構成（一方向性関数ＣＨの構成、逆関数ＣＨＩの構成、署名生成関数Ｓｉｇｎの構成、署名検証関数Ｖｅｒの構成）とは、各関数の機能を実現するために必要な情報を表し、判定部５０２や更新部５０５が各関数を実行するときにパラメータ記憶部５３０から読み出す。判定部５０２や更新部５０５が内部に各関数の機能を備える場合は、パラメータ記憶部５３０に各関数の構成を記憶しなくてもよい。
【００９４】
判定部５０２は、入出力部１０１からの要求を受け、パラメータ記憶部５３０に記憶されたパラメータを用いて、状態記憶部１２０に記憶されている状態情報が健全であること、および状態情報から算出した連続失敗回数が上限Ｎより小さいことを判定する。ここで、状態情報が健全であるとは、状態情報について不正な書き換えが行われていないことを意味する。
【００９５】
認証部５０４は、入出力部１０１からＰＩＮを受け付け、パラメータ記憶部から検証鍵ＰＫと署名Ｔを入手して、Ｖｅｒ（ＰＫ、ＰＩＮ、Ｔ）が受理されることを確認することにより、利用者の認証を行う。
【００９６】
更新部５０５は、認証部５０４による判定結果に応じて、パラメータ記憶部５３０に記憶されている更新情報と、状態記憶部１２０に記憶されている更新前の状態情報とから、更新後の状態情報を生成し、状態記憶部１２０に記憶される状態情報を更新する。
【００９７】
次に、このように構成された変形例２にかかるＩＣカード５００による認証制御処理について図８を用いて説明する。図８は、変形例２における認証制御処理の全体の流れを示すフローチャートである。
【００９８】
ステップＳ６０１からステップＳ６０２までの、認証要求受付処理および状態情報取得処理は、第１の実施の形態の変形例１にかかるＩＣカード４００におけるステップＳ５０１からステップＳ５０２までと同様の処理なので、その説明を省略する。
【００９９】
状態情報を取得後、判定部５０２は、パラメータ記憶部５３０から一方向性関数ＣＨの構成、公開鍵ＣＰＫ、署名生成関数Ｓｉｇｎの構成、署名検証関数Ｖｅｒの構成、検証鍵ＰＫ、署名鍵ＳＫ、署名Ｔ、署名Ｓ、関数値Ｖ、および認証の連続失敗回数の上限Ｎを読み出す（ステップＳ６０３）。
【０１００】
そして、判定部５０２は、Ｃが０以上Ｎ未満の整数値であり、かつ、ＣＨ（ＣＰＫ、Ｔ、Ｃ、Ｒ）＝Ｖが成り立ち、かつ、Ｖｅｒ（ＰＫ、Ｖ、Ｓ）が受理され、かつ、判定部５０２の内部で選択した乱数Ｕに対してＶｅｒ（ＰＫ、Ｕ、Ｓｉｇｎ（ＳＫ、Ｕ））が受理されることを検査する（ステップＳ６０４）。
【０１０１】
Ｖｅｒ（ＰＫ、Ｕ、Ｓｉｇｎ（ＳＫ、Ｕ））＝ａｃｃｅｐｔは、乱数Ｕを用いたチャレンジ−レスポンス方式によりＳＫが改ざんされていないことを検証する処理である。後述するように、本実施の形態では、認証ごとに署名Ｔを算出して署名Ｔの改ざんを検知するため、署名Ｔの算出に用いる署名鍵ＳＫの改ざんを本ステップで検証している。なお、署名Ｔを算出して改ざんを検知しない場合は、乱数ＵによるＳＫの改ざんチェックを実行しないように構成してもよい。
【０１０２】
なお、処理を簡素化するため、ＣＨ（ＣＰＫ、Ｔ、Ｃ、Ｒ）＝Ｖ、かつ、Ｖｅｒ（ＰＫ、Ｖ、Ｓ）＝ａｃｃｅｐｔを検査する代わりに、Ｖｅｒ（ＰＫ、ＣＨ（ＣＰＫ、Ｔ、Ｃ、Ｒ）、Ｓ）を検査するように構成してもよい。
【０１０３】
いずれかの検査に不合格の場合は（ステップＳ６０４：ＮＯ）、判定部５０２は、制御部１０３に不合格を通知する。制御部１０３は、不合格の通知を受けて認証部５０４に認証処理の停止を指示する（ステップＳ６０５）。また、制御部１０３は、ＩＣカード５００の利用要求を拒絶する。
【０１０４】
検査に合格した場合は（ステップＳ６０４：ＹＥＳ）、判定部５０２は、制御部１０３に合格を通知する。制御部１０３は、合格の通知を受けて認証部５０４に認証処理の実行を指示する（ステップＳ６０６）。
【０１０５】
認証部５０４は、認証処理の実行が指示されると、入出力部１０１からＰＩＮを受け付け、パラメータ記憶部５３０から署名検証関数Ｖｅｒの構成、検証鍵ＰＫ、署名Ｔを読み込む（ステップＳ６０７）。そして、認証部５０４は、署名Ｔ＝Ｓｉｇｎ（ＳＫ、ＰＩＮ）、かつ、Ｖｅｒ（ＰＫ、ＰＩＮ、Ｔ）が受理されるか否かを確認することにより、利用者が認証されたか否かを判定する（ステップＳ６０８）。なお、署名Ｔ＝Ｓｉｇｎ（ＳＫ、ＰＩＮ）を確認するのは、署名Ｔの改ざん等を検知可能として、より安全性を高めるためである。
【０１０６】
認証された場合は（ステップＳ６０８：ＹＥＳ）、認証部５０４は、更新部５０５にＰＩＮを伝え、認証合格に基づく状態情報の更新（初期化）を指示する。更新部５０５は、更新の指示を受けて、認証部５０４からＰＩＮを取得するとともに、状態記憶部１２０から状態情報（Ｃ、Ｒ）を取得する（ステップＳ６０９）。また、更新部５０５は、パラメータ記憶部５３０から、更新情報（逆関数ＣＨＩの構成、秘密鍵ＣＳＫ）、署名検証関数Ｖｅｒの構成、検証鍵ＰＫ、署名Ｔを取得する（ステップＳ６１０）。
【０１０７】
そして、更新部５０５は、署名Ｔ＝Ｓｉｇｎ（ＳＫ、ＰＩＮ）、かつ、Ｖｅｒ（ＰＫ、Ｕ、Ｓｉｇｎ（ＳＫ、Ｕ））が受理され、かつ、Ｖｅｒ（ＰＫ、ＰＩＮ、Ｔ）が受理されることを検査する（ステップＳ６１１）。なお、本ステップは、例えば状態情報の更新処理（ステップＳ６１２〜ステップＳ６１３）が独立したモジュールで構成されており、攻撃者がこのモジュールを直接実行するような攻撃を実行した場合であっても不正に状態情報が更新されないようにするための検査処理である。
【０１０８】
検査に不合格となる場合は（ステップＳ６１１：ＮＯ）、更新部５０５は、制御部１０３に認証処理の停止を指示する。制御部１０３は、指示を受けて認証部５０４に認証処理の停止を指示する（ステップＳ６０５）。
【０１０９】
検査に合格となる場合は（ステップＳ６１１：ＹＥＳ）、更新部５０５は、ステップＳ６１０で取得した情報を用いて、更新後のデータＲ’を、Ｒ’＝ＣＨＩ（ＣＳＫ、Ｔ、Ｃ、０、Ｒ）によって計算する（ステップＳ６１２）。
【０１１０】
ステップＳ６１３からステップＳ６１４までの、状態情報保存処理および合格出力処理は、第１の実施の形態の変形例１にかかるＩＣカード４００におけるステップＳ５１３からステップＳ５１４までと同様の処理なので、その説明を省略する。
【０１１１】
ステップＳ６０８で、利用者が認証されなかった場合は（ステップＳ６０８：ＮＯ）、認証部５０４は、更新部５０５に認証不合格に基づく状態情報の更新を指示する。更新部５０５は、更新の指示を受けて状態記憶部１２０から状態情報（Ｃ、Ｒ）を取得する（ステップＳ６１５）。また、更新部５０５は、パラメータ記憶部５３０から、更新情報（逆関数ＣＨＩの構成、秘密鍵ＣＳＫ）、一方向性関数ＣＨの構成、公開鍵ＣＰＫ、署名検証関数Ｖｅｒの構成、検証鍵ＰＫ、署名Ｓ、署名Ｔを取得する（ステップＳ６１６）。
【０１１２】
そして、更新部５０５は、Ｖｅｒ（ＰＫ、ＣＨ（ＣＰＫ、Ｔ、Ｃ、Ｒ）、Ｓ）が受理されるか検査する（ステップＳ６１７）。なお、本ステップは、攻撃者によりステップＳ６１８〜ステップＳ６１９の状態情報更新処理が不正に実行されないようにするための検査処理である。
【０１１３】
検査に不合格となる場合は（ステップＳ６１７：ＮＯ）、更新部５０５は、制御部１０３に認証処理の停止を指示する。制御部１０３は、指示を受けて認証部５０４に認証処理の停止を指示する（ステップＳ６０５）。
【０１１４】
検査に合格となる場合は（ステップＳ６１７：ＹＥＳ）、更新部５０５は、ステップＳ６１６で取得した情報を用いて、更新後のデータＲ’を、Ｒ’＝ＣＨＩ（ＣＳＫ、Ｔ、Ｃ、Ｃ＋１、Ｒ）によって計算する（ステップＳ６１８）。
【０１１５】
ステップＳ６１９からステップＳ６２０までの、状態情報保存処理および不合格出力処理は、第１の実施の形態の変形例１にかかるＩＣカード４００におけるステップＳ５１８からステップＳ５１９までと同様の処理なので、その説明を省略する。
【０１１６】
上述のように、状態情報（Ｃ、Ｒ）は領域ＩＩＩに記憶されているため、攻撃者はＲを読み出すことはできない。また、逆関数ＣＨＩの計算で用いる秘密鍵ＣＳＫは領域ＩＩＩに記憶されているため、攻撃者は秘密鍵ＣＳＫを読み出すことはできないが書き換えることはできる。しかし、ＣＳＫに対応する公開鍵ＣＰＫは書き換えることができない領域ＩＩに記憶されており、署名生成関数Ｓｉｇｎは偽造困難であるため、ＣＳＫを書き換えたのちに状態情報を更新したとしても、次回の認証で署名Ｓとの間で、Ｖ＝ＣＨ（ＣＰＫ、Ｔ、Ｃ、Ｒ）かつＶｅｒ（ＰＫ、Ｖ、Ｓ）が受理されることは起こりえない。
【０１１７】
また、状態情報の検証時に比較の対象となる比較値である関数値Ｖ＝ＣＨ（ＣＰＫ、Ｔ、Ｃ、Ｒ）は、上述のように、状態情報の初期値（Ｃ０、Ｒ０）について一意に定まる。すなわち、認証の失敗回数に依存する状態情報に関して不変である。このため、状態ごとにハッシュ関数で算出した認証子を記憶し、記憶した認証子と比較することにより状態の正当性を検証する方法などと比べて、記憶領域を削減することが可能となる。
【０１１８】
このように、変形例２にかかる認証装置では、連続失敗回数を含む認証の状態情報を記憶し、状態情報が正しいことおよび連続失敗回数が上限を超えていないことを検査し、検査に合格した場合にのみ認証情報による認証を行うとともに、物理的な解析が困難な記憶部に記憶された更新情報で状態情報を更新することができる。これにより、物理的な解析に対しても悪意ある利用から保護可能であり、かつ、認証の連続失敗回数が上限を超えた場合に使用を拒絶できる認証装置を提供することが可能となる。すなわち、物理的な解析による悪意の利用を抑止しつつ、認証の試行回数の上限の増加に伴う安全性の低下を回避可能となる。
【０１１９】
なお、判定部５０２で、乱数Ｕを用いたチャレンジ−レスポンス方式によりＳＫが改ざんされていないことを検証する処理は、Ｕ＝Ｓｉｇｎ（ＳＫ、ＳＫ）を予め計算してパラメータ記憶部５３０の領域ＩＩＩに記憶しておき、Ｖｅｒ（ＰＫ、ＳＫ、Ｕ）が受理されることを検証するように構成してもよい。
【０１２０】
（第２の実施の形態）
第１の実施の形態では、認証に成功した場合、状態情報が、失敗回数Ｃを初期値Ｃ０＝０、データＲを失敗回数Ｃ０に対応するＲ０に戻した状態情報に初期化される。このように失敗回数を初期化する方法では、失敗回数Ｃの初期値である０が容易に推定されるという問題が生じうる。
【０１２１】
そこで、第２の実施の形態にかかる認証装置は、状態情報を、認証が失敗するごとに遷移する認証の状態（失敗回数）を特定可能な第１状態情報と、直近（最新）の認証成功時の状態を特定可能な第２状態情報とに分けることにより、状態情報の初期化を行わずに失敗回数を判定可能とする。
【０１２２】
図９は、第２の実施の形態にかかるＩＣカード７００の構成を示すブロック図である。図９に示すように、ＩＣカード７００は、第１状態記憶部７４０と、第２状態記憶部７５０と、パラメータ記憶部１３０と、入出力部１０１と、判定部７０２と、制御部１０３と、認証部７０４と、第１更新部７０６と、第２更新部７０７とを備えている。
【０１２３】
第２の実施の形態では、状態記憶部１２０の代わりに第１状態記憶部７４０と第２状態記憶部７５０とを備えたこと、更新部１０５の代わりに第１更新部７０６と第２更新部７０７とを備えたこと、および判定部７０２の機能と認証部７０４の機能とが、第１の実施の形態と異なっている。その他の構成および機能は、第１の実施の形態にかかるＩＣカード１００の構成を表すブロック図である図１と同様であるので、同一符号を付し、ここでの説明は省略する。
【０１２４】
第１状態記憶部７４０は、第１の実施の形態の状態記憶部１２０が記憶する状態情報（Ｃ、Ｒ）と同様の情報である、第１状態情報（Ｃ、Ｒ）を記憶する。第１状態情報（Ｃ、Ｒ）は、認証成功時に初期化されない点が異なるのみで、データ構造は第１の実施の形態の状態情報（Ｃ、Ｒ）と同じである。なお、失敗回数Ｃの初期値Ｃ０は任意の値でよいが、以下では、Ｃ０＝１であるものとして説明する。
【０１２５】
第２状態記憶部７５０は、認証に最後に成功したときの認証失敗回数に依存する情報である第２状態情報（Ｃ’、Ｒ’）を記憶する。
【０１２６】
Ｃ’はｋ０ビットで表現される整数値であり、初期値は第１状態情報（Ｃ、Ｒ）の初期値Ｃ０と関連する値としてＣ’０＝Ｃ０＋Ｊ（Ｊは予め設定された整数値）として設定される。以下では、Ｊ＝１、すなわち、Ｃ’０＝１−１＝０であるとして説明する。なお、Ｊは１に限られず、固定値であればどのような整数値であってもよい。
【０１２７】
データＲ’は一方向性関数ＣＨの入力の第２成分となるｋ１ビットのビット列である。データＲ’の初期値は、ｋ１ビットのＲ’０とする。Ｒ’０はランダムな値または意図して選択された値など、任意の値を設定する。
【０１２８】
なお、第１状態情報は第１状態記憶部７４０の領域ＩＩＩに記憶され、第２状態情報は第２状態記憶部７５０の領域ＩＩＩに記憶される。また、第１状態記憶部７４０と第２状態記憶部７５０とは物理的に区別する必要はなく、同一の記憶媒体上に実現するように構成してもよい。
【０１２９】
第１更新部７０６は、第１の実施の形態の更新部１０５と同様の方法により、逆関数ＣＨＩを用いて第１状態情報を更新し、更新した第１状態情報を第１状態記憶部７４０に保存する。
【０１３０】
第２更新部７０７は、認証に合格した場合に認証部７０４からの指示を受け、認証に合格した場合の失敗回数からＪ（＝１）を減算した値を新たな失敗回数とし、新たな失敗回数に対応するデータＲ”を逆関数ＣＨＩによって算出する。具体的には、認証に合格した場合は、第２更新部７０７は、Ｒ”＝ＣＨＩ（ＣＳＫ，Ｃ−１，０，Ｒ’）によって、更新後のデータＲ”を算出する。そして、第２更新部７０７は、新たな失敗回数と算出したデータＲ”とを含む第２状態情報で、第２状態記憶部７５０の第２状態情報を更新する。
【０１３１】
判定部７０２は、入出力部１０１からの要求を受け、パラメータ記憶部１３０に記憶されたパラメータを用いて、第１状態記憶部７４０に記憶されている第１状態情報および第２状態記憶部７５０に記憶されている第２状態情報が健全であること、および第１状態情報と第２状態情報とから算出した連続失敗回数が上限Ｎより小さいことを判定する。
【０１３２】
具体的には、判定部７０２は、第１状態記憶部７４０から第１状態情報（Ｃ、Ｒ）を読み出し、第２状態記憶部７５０から第２状態情報（Ｃ’、Ｒ’）を読み出し、パラメータ記憶部１３０から上限Ｎ、一方向性関数ＣＨの構成、公開鍵ＣＰＫ、関数値Ｖを読み出す。そして、判定部７０２は、Ｃ−Ｃ’が１以上Ｎ未満の整数値であること、ＣＨ（ＣＰＫ、Ｃ、Ｒ）＝Ｖが成立すること、およびＣＨ（ＣＰＫ、Ｃ’、Ｒ’）＝Ｖが成立することを検査する。また、判定部７０２は、検査結果（合格または不合格）を制御部１０３に通知する。
【０１３３】
なお、物理的な解析によりデータが書き換えられることなく、正しく認証処理が行われている場合に、利用者の認証がＬ回連続（Ｌ＝０、１、．．．、Ｎ−１）して失敗すると、第１状態情報に含まれるＣと第２状態情報に含まれるＣ’と上限Ｎの間にはＣ−Ｃ’≦Ｎの関係が成り立つ。一方、正しく認証処理が行われている場合に、Ｌ＝Ｎ回連続して失敗すると、Ｃ−Ｃ’＝Ｎ＋１の関係が成立する。すなわち、正しく認証処理が行われている場合は、認証の連続失敗回数がＮ回未満であることはＣ−Ｃ’が１以上Ｎ以下の整数値であるときに限られる。
【０１３４】
認証部７０４は、認証合格の場合に第１更新部７０６に第１状態情報の更新を指示し、認証不合格の場合に第２更新部７０７に第２状態情報の更新を指示する。
【０１３５】
具体的には、認証部７０４は、不合格と判定した場合には、第１更新部７０６に第１状態情報の更新を指示して、さらに入出力部１０１に認証不合格の情報を出力する。また、認証部７０４は、合格と判定した場合には、第２更新部７０７に状態情報の更新を指示して、さらに入出力部１０１に認証合格の情報を出力する。また、認証部７０４は、制御部１０３から認証処理の停止の指示を受け付けた場合は、認証処理を停止し、認証処理を停止した旨を入出力部１０１に出力する。
【０１３６】
次に、このように構成された第２の実施の形態にかかるＩＣカード７００による認証制御処理について図１０を用いて説明する。図１０は、第２の実施の形態における認証制御処理の全体の流れを示すフローチャートである。
【０１３７】
まず、入出力部１０１は、外部装置から認証要求および認証情報としてＰＩＮを受け付ける（ステップＳ８０１）。そして、入出力部１０１は、判定部７０２に状態情報の判定を要求する。
【０１３８】
判定の要求を受け、判定部７０２は、第１状態記憶部７４０から第１状態情報（Ｃ、Ｒ）を読み出し、第２状態記憶部７５０から第２状態情報（Ｃ’、Ｒ’）を読み出す（ステップＳ８０２）。また、判定部７０２は、パラメータ記憶部１３０から一方向性関数ＣＨの構成、公開鍵ＣＰＫ、関数値Ｖ、認証の連続失敗回数の上限Ｎを読み出す（ステップＳ８０３）。そして、判定部７０２は、Ｃ−Ｃ’が１以上Ｎ以下の整数値であり、かつ、ＣＨ（ＣＰＫ、Ｃ、Ｒ）＝Ｖ、かつ、ＣＨ（ＣＰＫ、Ｃ’、Ｒ’）＝Ｖが成り立つか否かを検査する（ステップＳ８０４）。
【０１３９】
ステップＳ８０５からステップＳ８０８までの、認証停止処理、認証指示処理、および認証処理は、第１の実施の形態にかかるＩＣカード１００におけるステップＳ２０５からステップＳ２０８までと同様の処理なので、その説明を省略する。
【０１４０】
認証された場合は（ステップＳ８０８：ＹＥＳ）、認証部７０４は、第２更新部７０７に認証合格に基づく状態情報の更新を指示する。第２更新部７０７は、更新の指示を受けて、第１状態記憶部７４０から第１状態情報（Ｃ、Ｒ）を取得し、第２状態記憶部７５０から第２状態情報（Ｃ’、Ｒ’）を取得する（ステップＳ８０９）。
【０１４１】
次に、第２更新部７０７は、取得した第１状態情報に含まれるＣと取得した第２状態情報に含まれるＣ’との差分Ｃ−Ｃ’を算出し、算出したＣ−Ｃ’が１と等しいか否かを判断する（ステップＳ８１０）。
【０１４２】
Ｃ−Ｃ’が１と等しい場合は（ステップＳ８１０：ＹＥＳ）、認証部７０４は、認証に合格したことを、入出力部１０１を介して外部装置に出力するとともに（ステップＳ８１４）、制御部１０３に認証合格を通知する。なお、制御部１０３は、認証合格を受け付けた場合にはＩＣカード７００の利用要求を許可し、認証制御処理を終了する。
【０１４３】
Ｃ−Ｃ’が１と等しくない場合は（ステップＳ８１０：ＮＯ）、第２更新部７０７は、パラメータ記憶部１３０から、更新情報（逆関数ＣＨＩの構成、秘密鍵ＣＳＫ）を取得する（ステップＳ８１１）。そして、第２更新部７０７は、取得した更新情報を用いて、更新後のデータＲ”を、Ｒ”＝ＣＨＩ（ＣＳＫ、Ｃ’、Ｃ−１、Ｒ’）によって計算する（ステップＳ８１２）。さらに、第２更新部７０７は、第２状態記憶部７５０に記憶される第２状態情報を（Ｃ−１、Ｒ”）に更新する（ステップＳ８１３）。
【０１４４】
ステップＳ８０８で、利用者が認証されなかった場合は（ステップＳ８０８：ＮＯ）、認証部７０４は、第１更新部７０６に認証不合格に基づく状態情報の更新を指示する。第１更新部７０６は、更新の指示を受けて第１状態記憶部７４０から第１状態情報（Ｃ、Ｒ）を取得する（ステップＳ８１５）。また、第１更新部７０６は、パラメータ記憶部１３０から、更新情報（逆関数ＣＨＩの構成、秘密鍵ＣＳＫ）を取得する（ステップＳ８１６）。そして、第１更新部７０６は、取得した更新情報を用いて、更新後のデータＲ’を、Ｒ’＝ＣＨＩ（ＣＳＫ、Ｃ、Ｃ＋１、Ｒ）によって計算する（ステップＳ８１７）。さらに、第１更新部７０６は、第１状態記憶部７４０に記憶される第１状態情報を（Ｃ＋１、Ｒ’）に更新する（ステップＳ８１８）。
【０１４５】
ステップＳ８１９は、第１の実施の形態にかかるＩＣカード１００におけるステップＳ２１８と同様の処理なので、その説明を省略する。
【０１４６】
次に、状態情報の遷移について図１１を用いて説明する。図１１は、第２の実施の形態における状態情報の遷移例を示す模式図である。なお、同図は、認証に２回続けて失敗したのちに、認証に合格した場合の状態の遷移を表す図である。
【０１４７】
第１の実施の形態の状態情報の遷移を表す図３では、認証に合格した場合に最も左の状態情報（０、Ｒ０）に戻るのに対し、第２の実施の形態の状態情報の遷移を表す図１１では、認証成功時の第１状態情報（３、Ｒ２））に対応する第２状態情報（２、Ｒ’２）が保存される点が異なる。
【０１４８】
以上のように、第２の実施の形態では、第１状態情報に含まれる失敗回数Ｃおよび第２状態情報に含まれる失敗回数Ｃ’を初期化することなく用いるため、第１の実施の形態に比べて初期化による攻撃に耐性をもたせることが可能となる。
【０１４９】
また、第１状態情報（Ｃ，Ｒ）と第２状態情報（Ｃ’，Ｒ’）は領域ＩＩＩに記憶されているため、攻撃者はＲまたはＲ’を読み出すことはできない。一方、秘密鍵ＣＳＫは領域ＩＶに記憶されているため、攻撃者はＣＳＫを読み出すことも書き換えることもできない。
【０１５０】
攻撃者はＣＳＫを読み出すことができないため、第１状態情報（Ｃ，Ｒ）および第２状態情報（Ｃ’，Ｒ’）を、Ｃ”−Ｃ'''が１以上Ｎ以下かつＣＨ（ＣＰＫ，Ｃ”，Ｒ”）＝ＶかつＣＨ（ＣＰＫ，Ｃ'''，Ｒ'''）＝Ｖとなるような第１状態情報（Ｃ”，Ｒ”）または第２状態情報（Ｃ'''，Ｒ'''）に書き換えることは困難である。
【０１５１】
また、関数値Ｖは第１状態情報の初期値（Ｃ０，Ｒ０）について一意に定まり、認証の失敗回数に依存した状態情報に関して不変であるため、記憶領域を削減することが可能となる。さらに、第２の実施の形態の認証装置では、認証の連続失敗回数によらず、常に第１状態情報（Ｃ、Ｒ）および第２状態情報（Ｃ’、Ｒ’）に一方向性関数ＣＨを一度だけ施せば関数値Ｖと比較することができる。これにより、認証の状態を検証するための処理負荷を軽減することができる。
【０１５２】
（変形例３）
変形例３では、第１の実施の形態の変形例１と同様に、関数値Ｖにデバイス製造者の署名Ｓを添付する方法を説明する。
【０１５３】
図１２は、変形例３にかかるＩＣカード１０００の構成を示すブロック図である。図１２に示すように、ＩＣカード１０００は、第１状態記憶部７４０と、第２状態記憶部７５０と、パラメータ記憶部１０３０と、入出力部１０１と、判定部１００２と、制御部１０３と、認証部７０４と、第１更新部７０６と、第２更新部７０７とを備えている。
【０１５４】
変形例３では、パラメータ記憶部１０３０に記憶されたパラメータの内容、および判定部１００２の機能が第２の実施の形態と異なっている。その他の構成および機能は、第２の実施の形態にかかるＩＣカード７００の構成を表すブロック図である図９と同様であるので、同一符号を付し、ここでの説明は省略する。
【０１５５】
パラメータ記憶部１０３０は、さらに領域Ｉを備え、関数値Ｖおよび関数値Ｖの署名Ｓを領域Ｉに記憶する点が、第２の実施の形態と異なっている。
【０１５６】
なお、署名Ｓは、デバイス製造者が、一方向性関数ＣＨの構成、公開鍵ＣＰＫ、および状態情報の初期値（Ｃ０、Ｒ０）を設定し、関数値Ｖ０＝ＣＨ（ＣＰＫ、Ｃ０、Ｓ０）を計算した後、Ｓ＝Ｓｉｇｎ（ＳＫ、Ｖ０）により予め計算し、デバイス製造時にパラメータ記憶部１０３０の領域Ｉに記憶する。また、Ｓｉｇｎ、ＳＫ、Ｖｅｒ、およびＰＫは、変形例１と同様の関数または情報を表す。
【０１５７】
デバイス製造者の検証鍵ＰＫは、パラメータ記憶部１０３０に記憶されていてもよいし、認証要求時に入出力部１０１から受け付けてもよい。パラメータ記憶部１０３０に記憶する場合には、領域ＩＩに記憶する。以下では、認証要求時に入出力部１０１から受け付ける場合について説明する。また、署名検証関数Ｖｅｒの構成はパラメータ記憶部１０３０の領域ＩＩに記憶する。
【０１５８】
判定部１００２は、さらに、署名Ｓを用いて関数値Ｖが正当であることを判定する点が、第２の実施の形態の判定部７０２と異なっている。
【０１５９】
次に、このように構成された変形例３にかかるＩＣカード１０００による認証制御処理について図１３を用いて説明する。図１３は、変形例３における認証制御処理の全体の流れを示すフローチャートである。
【０１６０】
ステップＳ１１０１からステップＳ１１０２までの、認証要求受付処理および状態情報取得処理は、第２の実施の形態にかかるＩＣカード７００におけるステップＳ８０１からステップＳ８０２までと同様の処理なので、その説明を省略する。
【０１６１】
状態情報を取得後、判定部１００２は、パラメータ記憶部１０３０から一方向性関数ＣＨの構成、公開鍵ＣＰＫ、関数値Ｖ、認証の連続失敗回数の上限Ｎに加え、署名Ｓおよび署名検証関数Ｖｅｒの構成を読み出す（ステップＳ１１０３）。次に、判定部１００２は、入出力部１０１を介して検証鍵ＰＫを取得する（ステップＳ１１０４）。
【０１６２】
次に、判定部１００２は、Ｃ−Ｃ’が１以上Ｎ以下の整数値であり、かつ、ＣＨ（ＣＰＫ、Ｃ、Ｒ）＝Ｖ、かつ、ＣＨ（ＣＰＫ、Ｃ’、Ｒ’）＝Ｖ、かつ、Ｖｅｒ（ＰＫ、Ｖ、Ｓ）＝ａｃｃｅｐｔが成り立つか否かを検査する（ステップＳ１１０５）。
【０１６３】
ステップＳ１１０６からステップＳ１１２０までは、第２の実施の形態にかかるＩＣカード７００におけるステップＳ８０５からステップＳ８１９までと同様の処理なので、その説明を省略する。
【０１６４】
次に、状態情報の遷移について図１４を用いて説明する。図１４は、変形例３における状態情報の遷移例を示す模式図である。
【０１６５】
同図に示すように、変形例３での状態情報の遷移は図１１に示す第２の実施の形態と同様であるが、状態情報の検証に用いる関数値Ｖの署名Ｓ（＝Ｓｉｇｎ（ＳＫ、Ｖ））をさらに検証することができる。このため、よりセキュリティを高めることができる。
【０１６６】
（変形例４）
変形例４では、第１の実施の形態における変形例２と同様に、デジタル署名を用いてＣＳＫおよびＰＩＮの正当性を保証することにより、第２の実施の形態の変形例３に相当する認証装置を、領域ＩＶを使用せずに構成する。Ｓｉｇｎ、Ｖｅｒ、ＳＫ、ＰＫは変形例２と同じ意味で用いる。
【０１６７】
図１５は、変形例４にかかるＩＣカード１５００の構成を示すブロック図である。図１５に示すように、ＩＣカード１５００は、第１状態記憶部７４０と、第２状態記憶部７５０と、パラメータ記憶部１５３０と、入出力部１０１と、判定部１５０２と、制御部１０３と、認証部１５０４と、第１更新部１５０６と、第２更新部１５０７とを備えている。
【０１６８】
変形例４では、判定部１５０２、認証部１５０４、第１更新部１５０６、および第２更新部１５０７の機能と、パラメータ記憶部１５３０の構成とが、第２の実施の形態と異なっている。その他の構成および機能は、第２の実施の形態の変形例２にかかるＩＣカード１０００の構成を表すブロック図である図１２と同様であるので、同一符号を付し、ここでの説明は省略する。
【０１６９】
第１更新部１５０６は、第１の実施の形態の変形例２の更新部５０５と同様の方法により、逆関数ＣＨＩを用いて第１状態情報を更新し、更新した第１状態情報を第１状態記憶部７４０に保存する。
【０１７０】
第２更新部１５０７は、第２の実施の形態の変形例３の第２更新部７０７と同様の方法により第２状態記憶部７５０の第２状態情報を更新する。ただし、変形例２と同様に、ＣＨＩの入力には署名Ｔ＝Ｓｉｇｎ（ＳＫ、ＰＩＮ）を含む。
【０１７１】
判定部１５０２は、入出力部１０１からの要求を受け、パラメータ記憶部１５３０に記憶されたパラメータを用いて、第１状態記憶部７４０に記憶されている第１状態情報および第２状態記憶部７５０に記憶されている第２状態情報が健全であること、および第１状態情報と第２状態情報とから算出した連続失敗回数が上限Ｎより小さいことを判定する。
【０１７２】
認証部１５０４は、入出力部１０１からＰＩＮを受け付け、パラメータ記憶部１５３０から検証鍵ＰＫと署名Ｔを入手して、Ｖｅｒ（ＰＫ、ＰＩＮ、Ｔ）が受理されることを確認することにより、利用者の認証を行う。
【０１７３】
パラメータ記憶部１５３０は、認証処理に用いる各種情報（パラメータ）を記憶する。具体的には、パラメータ記憶部１５３０は、領域ＩＩに、認証の連続失敗回数の上限Ｎ、一方向性関数ＣＨの構成、逆関数ＣＨＩの構成、関数値Ｖ、公開鍵ＣＰＫ、署名生成関数の構成Ｓｉｇｎ、署名検証関数の構成Ｖｅｒ、検証鍵ＰＫを記憶する。また、パラメータ記憶部１５３０は、領域ＩＩＩに、秘密鍵ＣＳＫ、署名鍵ＳＫ、署名Ｔ＝Ｓｉｇｎ（ＳＫ、ＰＩＮ）、および署名Ｓ＝Ｓｉｇｎ（ＳＫ、ＣＨ（ＣＰＫ、Ｔ、Ｃ０、Ｒ０））を記憶する。
【０１７４】
次に、このように構成された変形例４にかかるＩＣカード１５００による認証制御処理について図１６を用いて説明する。図１６は、変形例４における認証制御処理の全体の流れを示すフローチャートである。
【０１７５】
ステップＳ１６０１からステップＳ１６０２までの、認証要求受付処理および状態情報取得処理は、第２の実施の形態の変形例３にかかるＩＣカード１０００におけるステップＳ１１０１からステップＳ１１０２までと同様の処理なので、その説明を省略する。
【０１７６】
状態情報を取得後、判定部１５０２は、パラメータ記憶部１５３０から一方向性関数ＣＨの構成、公開鍵ＣＰＫ、署名生成関数Ｓｉｇｎの構成、署名検証関数Ｖｅｒの構成、検証鍵ＰＫ、署名鍵ＳＫ、署名Ｔ、署名Ｓ、関数値Ｖ、および認証の連続失敗回数の上限Ｎを読み出す（ステップＳ１６０３）。
【０１７７】
そして、判定部１５０２は、Ｃ−Ｃ’が１以上Ｎ以下の整数値であり、かつ、ＣＨ（ＣＰＫ、Ｔ、Ｃ、Ｒ）＝Ｖ、かつ、ＣＨ（ＣＰＫ、Ｔ、Ｃ’、Ｒ’）＝Ｖ、かつ、Ｖｅｒ（ＰＫ、Ｖ、Ｓ）＝ａｃｃｅｐｔ、かつ、判定部１５０２内部で生成した乱数Ｕに対してＶｅｒ（ＰＫ、Ｕ、Ｓｉｇｎ（ＳＫ，Ｕ））が受理されることを検査する（ステップＳ１６０４）。
【０１７８】
なお、処理を簡素化するため、ＣＨ（ＣＰＫ、Ｔ、Ｃ、Ｒ）＝Ｖ、かつ、ＣＨ（ＣＰＫ、Ｔ、Ｃ’、Ｒ’）＝Ｖ、かつ、Ｖｅｒ（ＰＫ、Ｖ、Ｓ）＝ａｃｃｅｐｔを検査する代わりに、ＣＨ（ＣＰＫ、Ｔ、Ｃ、Ｒ）＝ＣＨ（ＣＰＫ、Ｔ、Ｃ’、Ｒ’）、かつ、Ｖｅｒ（ＰＫ、ＣＨ（ＣＰＫ、Ｔ、Ｃ、Ｒ）、Ｓ）＝ａｃｃｅｐｔを検査するように構成してもよい。
【０１７９】
ステップＳ１６０５からステップＳ１６０８までの、認証停止処理、認証指示処理、および認証処理は、変形例２にかかるＩＣカード５００におけるステップＳ６０５からステップＳ６０８までと同様の処理なので、その説明を省略する。
【０１８０】
認証された場合は（ステップＳ１６０８：ＹＥＳ）、認証部１５０４は、第２更新部１５０７に認証合格に基づく状態情報の更新を指示する。第２更新部１５０７は、更新の指示を受けて、第１状態記憶部７４０から第１状態情報（Ｃ、Ｒ）を取得し、第２状態記憶部７５０から第２状態情報（Ｃ’、Ｒ’）を取得する（ステップＳ１６０９）。
【０１８１】
次に、第２更新部１５０７は、取得した第１状態情報に含まれるＣと取得した第２状態情報に含まれるＣ’との差分Ｃ−Ｃ’を算出し、算出したＣ−Ｃ’が１と等しいか否かを判断する（ステップＳ１６１０）。
【０１８２】
Ｃ−Ｃ’が１と等しい場合は（ステップＳ１６１０：ＹＥＳ）、認証部１５０４は、認証に合格したことを、入出力部１０１を介して外部装置に出力するとともに（ステップＳ１６１５）、制御部１０３に認証合格を通知する。なお、制御部１０３は、認証合格を受け付けた場合にはＩＣカード１５００の利用要求を許可し、認証制御処理を終了する。
【０１８３】
Ｃ−Ｃ’が１と等しくない場合は（ステップＳ１６１０：ＮＯ）、第２更新部１５０７は、認証部１５０４からＰＩＮを取得し、パラメータ記憶部１５３０から更新情報（ＣＨＩ、ＣＳＫ）、Ｓｉｇｎ、Ｖｅｒ、ＳＫ、ＰＫ、署名Ｓ、および署名Ｔを取得する（ステップＳ１６１１）。
【０１８４】
そして、第２更新部１５０７は、第２更新部１５０７で生成した乱数ＵについてＶｅｒ（ＰＫ、Ｕ、Ｓｉｇｎ（ＳＫ、Ｕ））が受理され、かつ、Ｖｅｒ（ＰＫ、ＰＩＮ、Ｔ）が受理されることを検査する（ステップＳ１６１２）。
【０１８５】
検査に不合格となる場合は（ステップＳ１６１２：ＮＯ）、第２更新部１５０７は、制御部１０３に不合格を伝え、認証処理の停止を指示する。制御部１０３は、指示を受けて認証部５０４に認証処理の停止を指示する（ステップＳ１６０５）。
【０１８６】
検査に合格となる場合は（ステップＳ１６１２：ＹＥＳ）、第２更新部１５０７は、更新後のデータＲ”を、Ｒ”＝ＣＨＩ（ＣＳＫ、Ｔ、Ｃ’、Ｃ−１、Ｒ’）によって計算する（ステップＳ１６１３）。さらに、第２更新部１５０７は、第２状態記憶部７５０に記憶される第２状態情報を（Ｃ−１、Ｒ”）に更新する（ステップＳ１６１４）。
【０１８７】
次に、認証部１５０４は、認証に合格したことを、入出力部１０１を介して外部装置に出力するとともに（ステップＳ１６１５）、制御部１０３に認証合格を通知する。なお、制御部１０３は、認証合格を受け付けた場合にはＩＣカード１５００の利用要求を許可し、認証制御処理を終了する。
【０１８８】
ステップＳ１６０８で、利用者が認証されなかった場合は（ステップＳ１６０８：ＮＯ）、認証部１５０４は、第１更新部１５０６に認証不合格に基づく状態情報の更新を指示する。第１更新部１５０６は、更新の指示を受けて第１状態記憶部７４０から第１状態情報（Ｃ、Ｒ）を取得する（ステップＳ１６１６）。また、第１更新部１５０６は、パラメータ記憶部１５３０から、更新情報（ＣＨＩ、ＣＳＫ）、Ｖｅｒ、ＰＫ、署名Ｓ、および署名Ｔを取得する（ステップＳ１６１７）。
【０１８９】
そして、第１更新部１５０６は、Ｖｅｒ（ＰＫ、ＣＨ（ＣＰＫ、Ｔ、Ｃ、Ｒ）、Ｓ）が受理されるか検査する（ステップＳ１６１８）。検査に不合格となる場合は（ステップＳ６１８：ＮＯ）、第１更新部１５０６は、制御部１０３に不合格を伝え、認証処理の停止を指示する。制御部１０３は、指示を受けて認証部５０４に認証処理の停止を指示する（ステップＳ１６０５）。
【０１９０】
検査に合格となる場合は（ステップＳ１６１８：ＹＥＳ）、第１更新部１５０６は、取得した情報を用いて、更新後のデータＲ’を、Ｒ’＝ＣＨＩ（ＣＳＫ、Ｔ、Ｃ、Ｃ＋１、Ｒ）によって計算する（ステップＳ１６１９）。
【０１９１】
ステップＳ１６２０からステップＳ１６２１までの、状態情報保存処理および不合格出力処理は、変形例３にかかるＩＣカード１０００におけるステップＳ１１１９からステップＳ１１２０までと同様の処理なので、その説明を省略する。
【０１９２】
以上のように、変形例４では、第１状態情報に含まれる失敗回数Ｃおよび第２状態情報に含まれる失敗回数Ｃ’を初期化することなく用いるため、第１の実施の形態に比べて初期化による攻撃に耐性をもたせることが可能となる。
【０１９３】
また、第１状態情報（Ｃ，Ｒ）と第２状態情報（Ｃ’，Ｒ’）は領域ＩＩＩに記憶されているため、攻撃者はＲまたはＲ’を読み出すことはできない。一方、秘密鍵ＣＳＫや署名鍵ＳＫは領域ＩＩＩに記憶されているため、攻撃者が書き換え可能であるが、デジタル署名の検証により書き換えは検知される。
【０１９４】
攻撃者はＣＳＫとＴを読み出すことができないため、第１状態情報（Ｃ，Ｒ）および第２状態情報（Ｃ’，Ｒ’）を、Ｃ”−Ｃ'''が１以上Ｎ以下かつＣＨ（ＣＰＫ，Ｔ、Ｃ”，Ｒ”）＝ＣＨ（ＣＰＫ，Ｔ、Ｃ'''，Ｒ'''）＝ＶかつＶｅｒ（ＰＫ、ＰＩＮ、Ｔ）となるような第１状態情報（Ｃ”，Ｒ”）または第２状態情報（Ｃ'''，Ｒ'''）に書き換えることは困難である。
【０１９５】
なお、判定部１５０２で、乱数Ｕを用いたチャレンジ−レスポンス方式によりＳＫが改ざんされていないことを検証する処理は、Ｕ＝Ｓｉｇｎ（ＳＫ、ＳＫ）を予め計算してパラメータ記憶部１５３０の領域ＩＩＩに記憶しておき、Ｖｅｒ（ＰＫ、ＳＫ、Ｕ）が受理されることを検証するように構成してもよい。
【０１９６】
（第３の実施の形態）
第３の実施の形態にかかる認証装置は、第２の実施の形態と同様に、第１状態情報と第２状態情報を用いることにより状態情報の初期化を行わずに失敗回数を判定する。なお、第３の実施の形態では、失敗回数の代わりに所定のビット数のデータＤを含む状態情報（第１状態情報、第２状態情報）を用いる。
【０１９７】
図１７は、第３の実施の形態にかかるＩＣカード１３００の構成を示すブロック図である。図１７に示すように、ＩＣカード１３００は、第１状態記憶部１３４０と、第２状態記憶部１３５０と、パラメータ記憶部１３３０と、入出力部１０１と、判定部１３０２と、制御部１０３と、認証部７０４と、第１更新部１３０６と、第２更新部１３０７とを備えている。
【０１９８】
第３の実施の形態では、第１状態記憶部１３４０および第２状態記憶部１３５０に記憶する各状態情報（第１状態情報、第２状態情報）のデータ構造と、パラメータ記憶部１３３０に記憶するパラメータの内容と、判定部１３０２、第１更新部１３０６、および第２更新部１３０７の機能とが、第２の実施の形態と異なっている。その他の構成および機能は、第２の実施の形態にかかるＩＣカード７００の構成を表すブロック図である図９と同様であるので、同一符号を付し、ここでの説明は省略する。
【０１９９】
第１状態記憶部１３４０は、認証の失敗回数に依存する情報である第１状態情報を記憶する。具体的には、第１状態情報はデータＤとデータＲとを含む。データＤは、ｋ０ビットとｋ１ビットのビット列をｋ１ビットのビット列に変換する一方向性関数Ｈの入力の第２成分となるｋ１ビットで表現される整数値である。なお、以下では、一方向性関数Ｈの入力の第１成分は、ＰＩＮであるものとする。一方向性関数Ｈは、ＰＩＮなどのように領域ＩＶに記憶された情報と第１状態情報に含まれるデータとを入力値として算出した値を出力するものであれば、あらゆる一方向性関数を適用できる。
【０２００】
なお、データＤの初期値は整数値Ｄ０とする。Ｄ０はランダムな値または意図して選択された値など、任意の値を設定する。以下では、後述する第２状態情報（Ｄ’、Ｒ’）の初期値を（Ｄ’０、Ｒ’０）としたときに、Ｈ（ＰＩＮ、Ｄ’０）として算出される値を初期値Ｄ０として定める。
【０２０１】
データＲは、データＤとともに認証に用いられるビット列であり、初期値をＲ０とする。Ｒ０はランダムな値または意図して選択された値など、任意の値を設定する。
【０２０２】
第２状態記憶部１３５０は、認証に最後に成功したときの認証失敗回数に依存する情報である第２状態情報（Ｄ’、Ｒ’）を記憶する。
【０２０３】
データＤ’はｋ１ビットで表現されるビット列であり、初期値Ｄ’０はランダムな値または意図して選択された値など、任意の値を設定する。データＲ’はデータＤ’とともに認証に用いられるビット列である。データＲ’の初期値Ｒ’０はランダムな値または意図して選択された値など、任意の値を設定する。
【０２０４】
なお、後述するパラメータ記憶部１３３０に記憶される値Ｖの初期値Ｖ０は、Ｖ０＝Ｄ’０＋Ｒ’０となるように設定される。また、後述するように、値Ｖが一定となるように状態情報（Ｄ’、Ｒ’）が更新されるため、値Ｖは初期値Ｖ０から不変となる。また、第１状態情報のデータＤとデータＲ、および第２状態情報のデータＤ’とデータＲ’は、値が変動する変動情報である。すなわち、これらの各データは、失敗回数の更新に応じて一方向性関数Ｈおよび値Ｖを用いてそれぞれ異なる値が算出される。
【０２０５】
パラメータ記憶部１３３０は、認証情報であるＰＩＮ、ビット長ｋ０、ｋ１、一方向性関数Ｈの構成、値Ｖ、および認証の連続失敗回数の上限Ｎを記憶する。
【０２０６】
なお、値ＶおよびＰＩＮは、第１更新部１３０６および第２更新部１３０７が状態情報を更新するときに用いる更新情報である。また、ビット長ｋ０、ｋ１、一方向性関数Ｈの構成、値Ｖ、認証の連続失敗回数の上限Ｎは、パラメータ記憶部１３３０の領域ＩＩに記憶される。また、ＰＩＮは、パラメータ記憶部１３３０の領域ＩＶに記憶される。
【０２０７】
判定部１３０２は、入出力部１０１からの要求を受け、パラメータ記憶部１３３０に記憶されたパラメータを用いて、第１状態記憶部７４０に記憶されている第１状態情報および第２状態記憶部７５０に記憶されている第２状態情報が健全であること、および第１状態情報と第２状態情報とから算出した連続失敗回数が上限Ｎより小さいことを判定する。
【０２０８】
具体的には、判定部１３０２は、第１状態記憶部１３４０から第１状態情報（Ｄ、Ｒ）を読み出し、第２状態記憶部１３５０から第２状態情報（Ｄ’、Ｒ’）を読み出し、パラメータ記憶部１３３０から上限Ｎ、一方向性関数Ｈの構成、値Ｖを読み出す。そして、判定部１３０２は、読み出したＤとＤ’について、Ｄ’＝Ｈｉ（ＰＩＮ、Ｄ）となる１以上Ｎ以下の整数値ｉが存在すること、Ｄ＋Ｒ＝Ｖが成立すること、およびＤ’＋Ｒ’＝Ｖが成立すること、を検査する。また、判定部１３０２は、検査結果（合格または不合格）を制御部１０３に通知する。
【０２０９】
なお、正しく認証処理が行われている場合に、利用者が認証の要求にＬ回連続（Ｌ＝０、１、．．．、Ｎ−１）して失敗すると、第１状態情報に含まれるＤと第２状態情報に含まれるＤ’と上限Ｎの間には、１以上Ｎ以下の整数値ｉが存在してＤ’＝Ｈｉ（ＰＩＮ、Ｄ）の関係が成り立つ。一方、正しく認証処理が行われている場合に、Ｌ＝Ｎ回連続して失敗すると、Ｄ’＝ＨＮ＋１（ＰＩＮ、Ｄ）となる。すなわち、正しく認証処理が行われている場合は、認証の連続失敗回数がＮ回未満であることは１以上Ｎ以下の整数値ｉが存在してＤ’＝Ｈｉ（ＰＩＮ、Ｄ）の関係が成り立つときに限られる。
【０２１０】
第１更新部１３０６は、認証部７０４による認証結果に応じて、パラメータ記憶部１３３０が記憶する情報と、第１状態記憶部１３４０に記憶されている更新前の状態情報とから、更新後の状態情報を生成し、第１状態記憶部１３４０に記憶される第１状態情報を更新する。
【０２１１】
第１更新部１３０６は、第１状態情報の判定および更新に可逆な演算を用いる。可逆な演算としては、例えば加算（＋）と減算（−）や、乗算（＊）と除算（／）などを適用できる。以下では、第１更新部１３０６は、加算（＋）と減算（−）を可逆な演算として用いるものとして説明する。すなわち、第１更新部１３０６は、パラメータ記憶部１３３０に記憶される値Ｖの値を更新情報として、Ｄ＋Ｒ＝Ｖとなるように第１状態情報（Ｄ、Ｒ）を更新する。
【０２１２】
具体的には、認証に不合格であった場合に認証部７０４からの指示を受け、更新部１３０６は、Ｄ’＝Ｈ（ＰＩＮ，Ｄ）によって、更新後のデータＤ’を算出する。さらに、更新部１３０６は、Ｒ’＝Ｖ−Ｄ’によって、Ｄ’＋Ｒ’＝Ｖを満たすＲ’を算出する。そして、更新後の第１状態情報（Ｄ’、Ｒ’）で第１状態記憶部１３４０の第１状態情報を更新する。
【０２１３】
なお、第１状態情報（Ｄ、Ｒ）のＤ成分は記憶せずに、状態判定を行う際に第２状態情報（Ｄ’、Ｒ’）から、Ｈｉ（ＰＩＮ、Ｄ’）＋Ｒ＝ＶとなるＨｉ（ＰＩＮ、Ｄ’）としてＤを復元して利用することも可能である。ここで、Ｈｉ（Ａ、Ｂ）は、関数Ｈを入力Ａ、Ｂについて再帰的にＨ（Ａ、Ｈｉ−１（Ａ、Ｂ））として計算することを表す。
【０２１４】
なお、第１状態情報は第１状態記憶部１３４０の領域ＩＩＩに記憶され、第２状態情報は第２状態記憶部１３５０の領域ＩＩＩに記憶される。また、第１状態記憶部１３４０と第２状態記憶部１３５０とは物理的に区別する必要はなく、同一の記憶媒体上に実現するように構成してもよい。
【０２１５】
第２更新部１３０７は、認証に合格した場合に認証部７０４からの指示を受け、パラメータ記憶部１３３０が記憶するパラメータと更新前の第２状態情報とから、更新後の第２状態情報を生成し、第２状態記憶部１３５０に記憶される第２状態情報を更新する。
【０２１６】
具体的には、第２更新部１３０７は、まずＤ’＝Ｈｉ（ＰＩＮ，Ｄ）を満たす２以上Ｎ以下の整数値ｉを算出する。そして、第２更新部１３０７は、Ｄ”＝Ｈｉ−１（ＰＩＮ，Ｄ）とＲ”＝Ｖ−Ｄ”とを算出し、算出したデータＤ”とデータＲ”とを含む更新後の第２状態情報（Ｄ”、Ｒ”）で、第２状態記憶部１３５０の第２状態情報を更新する。
【０２１７】
次に、このように構成された第３の実施の形態にかかるＩＣカード１３００による認証制御処理について図１８を用いて説明する。図１８は、第３の実施の形態における認証制御処理の全体の流れを示すフローチャートである。
【０２１８】
まず、入出力部１０１は、外部装置から認証要求および認証情報としてＰＩＮを受け付ける（ステップＳ１４０１）。そして、入出力部１０１は、判定部１３０２に状態情報の判定を要求する。
【０２１９】
判定の要求を受け、判定部１３０２は、第１状態記憶部１３４０から第１状態情報（Ｄ、Ｒ）を読み出し、第２状態記憶部１３５０から第２状態情報（Ｄ’、Ｒ’）を読み出す（ステップＳ１４０２）。また、判定部１３０２は、パラメータ記憶部１３３０から一方向性関数Ｈの構成、値Ｖ、認証の連続失敗回数の上限Ｎを読み出す（ステップＳ１４０３）。また、判定部１３０２は、入出力部１０１を介して利用者が入力する識別情報ＰＩＮを取得する（ステップＳ１４０４）。そして、判定部１３０２は、Ｄ’＝Ｈｉ（ＰＩＮ，Ｄ）を満たす１以上Ｎ以下の整数値ｉが存在し、かつ、Ｄ＋Ｒ＝Ｖが成立し、かつ、Ｄ’＋Ｒ’＝Ｖが成立するか否かを検査する（ステップＳ１４０５）。
【０２２０】
ステップＳ１４０６からステップＳ１４０９までの、認証停止処理、認証指示処理、および認証処理は、第２の実施の形態にかかるＩＣカード７００におけるステップＳ８０５からステップＳ８０８までと同様の処理なので、その説明を省略する。
【０２２１】
認証された場合は（ステップＳ１４０９：ＹＥＳ）、認証部７０４は、第２更新部１３０７に認証合格に基づく状態情報の更新を指示する。第２更新部１３０７は、更新の指示を受けて、第１状態記憶部１３４０から第１状態情報（Ｄ、Ｒ）を取得し、第２状態記憶部１３５０から第２状態情報（Ｄ’、Ｒ’）を取得する（ステップＳ１４１０）。
【０２２２】
次に、第２更新部１３０７は、取得した第１状態情報に含まれるＤと取得した第２状態情報に含まれるＤ’との間で、Ｄ’＝Ｈ（ＰＩＮ、Ｄ）の関係が成り立つか否かを判断する（ステップＳ１４１１）。
【０２２３】
Ｄ’＝Ｈ（ＰＩＮ、Ｄ）の関係が成り立つ場合は（ステップＳ１４１１：ＹＥＳ）、認証部７０４は、認証に合格したことを、入出力部１０１を介して外部装置に出力するとともに（ステップＳ１４１６）、制御部１０３に認証合格を通知する。なお、制御部１０３は、認証合格を受け付けた場合にはＩＣカード１３００の利用要求を許可し、認証制御処理を終了する。
【０２２４】
Ｄ’＝Ｈ（ＰＩＮ、Ｄ）の関係が成り立たない場合は（ステップＳ１４１１：ＮＯ）、第２更新部１３０７は、パラメータ記憶部１３３０から、更新情報（値Ｖ、ＰＩＮ）を取得する（ステップＳ１４１２）。そして、第２更新部１３０７は、取得した更新情報を用いて、Ｄ’＝Ｈｉ（ＰＩＮ，Ｄ）を満たす２以上Ｎ以下の整数値ｉを算出する（ステップＳ１４１３）。また、第２更新部１３０７は、更新後のデータＤ”を、Ｄ”＝Ｈｉ−１（ＰＩＮ，Ｄ）によって算出し、さらに、更新後のデータＲ”を、Ｒ”＝Ｖ−Ｄ”によって算出する（ステップＳ１４１４）。次に、第２更新部１３０７は、第２状態記憶部１３５０に記憶される第２状態情報を（Ｄ”、Ｒ”）に更新する（ステップＳ１４１５）。
【０２２５】
ステップＳ１４０９で、利用者が認証されなかった場合は（ステップＳ１４０９：ＮＯ）、認証部７０４は、第１更新部１３０６に認証不合格に基づく状態情報の更新を指示する。第１更新部１３０６は、更新の指示を受けて第１状態記憶部１３４０から第１状態情報（Ｄ、Ｒ）を取得する（ステップＳ１４１７）。また、第１更新部１３０６は、パラメータ記憶部１３３０から、更新情報（値Ｖ、ＰＩＮ）を取得する（ステップＳ１４１８）。そして、第１更新部１３０６は、取得した更新情報を用いて、更新後のデータＤ’を、Ｄ’＝Ｈ（ＰＩＮ，Ｄ）で算出し、更新後のデータＲ’をＲ’＝Ｖ−Ｄ’で算出する（ステップＳ１４１９）。さらに、第１更新部１３０６は、第１状態記憶部１３４０に記憶される第１状態情報を（Ｄ’、Ｒ’）に更新する（ステップＳ１４２０）。
【０２２６】
ステップＳ１４２１は、第２の実施の形態にかかるＩＣカード７００におけるステップＳ８１９と同様の処理なので、その説明を省略する。
【０２２７】
次に、状態情報の遷移について図１９を用いて説明する。図１９は、第３の実施の形態における状態情報の遷移例を示す模式図である。なお、同図は、認証に２回続けて失敗したのちに、認証に合格した場合の状態の遷移を表す図である。
【０２２８】
第２の実施の形態と同様に、第３の実施の形態の状態情報の遷移を表す図１９では、認証成功時の第１状態情報（Ｄ２、Ｒ２））に対応する第２状態情報（Ｄ’２、Ｒ’２）が保存される。すなわち、第１の実施の形態のように、認証成功時に状態が初期化されることはない。
【０２２９】
以上のように、第３の実施の形態では、第１状態情報に含まれるデータＤおよび第２状態情報に含まれるデータＤ’を初期化することなく用いるため、第１の実施の形態に比べて初期化による攻撃に耐性をもたせることが可能となる。
【０２３０】
また、第１状態情報（Ｄ、Ｒ）と第２状態情報（Ｄ’、Ｒ’）は領域ＩＩＩに記憶されているため、攻撃者はＲまたはＲ’を読み出すことはできない。一方、識別情報ＰＩＮは領域ＩＶに記憶されているため、攻撃者はＰＩＮを読み出すことも書き換えることもできない。
【０２３１】
攻撃者はＰＩＮを読み出すことができないため、第１状態情報（Ｄ、Ｒ）および第２状態情報（Ｄ’、Ｒ’）を、１以上Ｎ以下の整数値ｉが存在し、かつ、Ｄ'''＝Ｈｉ（ＰＩＮ、Ｄ”）の関係が成り立ち、Ｄ”＋Ｒ”＝ＶかつＤ'''＋Ｒ'''＝Ｖとなるような第１状態情報（Ｄ”、Ｒ”）または第２状態情報（Ｄ'''、Ｒ'''）に書き換えることは困難である。
【０２３２】
また、状態情報の検証時に比較の対象となる比較値である値Ｖは、第２状態情報の初期値（Ｄ’０、Ｒ’０）について一意に定まり、認証の失敗回数に依存した状態情報に関して不変であるため、記憶領域を削減することが可能となる。
【０２３３】
（変形例５）
変形例５では、上述の変形例１および変形例３と同様に、関数値Ｖにデバイス製造者の署名Ｓを添付する方法を説明する。
【０２３４】
図２０は、変形例５にかかるＩＣカード１６００の構成を示すブロック図である。図２０に示すように、ＩＣカード１６００は、第１状態記憶部１３４０と、第２状態記憶部１３５０と、パラメータ記憶部１６３０と、入出力部１０１と、判定部１６０２と、制御部１０３と、認証部７０４と、第１更新部１３０６と、第２更新部１３０７とを備えている。
【０２３５】
変形例５では、パラメータ記憶部１６３０に記憶されたパラメータの内容、および判定部１６０２の機能が第３の実施の形態と異なっている。その他の構成および機能は、第３の実施の形態にかかるＩＣカード１３００の構成を表すブロック図である図１７と同様であるので、同一符号を付し、ここでの説明は省略する。
【０２３６】
パラメータ記憶部１６３０は、さらに領域Ｉを備え、値Ｖおよび値Ｖの署名Ｓを領域Ｉに記憶する点が、第３の実施の形態と異なっている。
【０２３７】
なお、署名Ｓは、デバイス製造者が、一方向性関数Ｈの構成、および第２状態情報の初期値（Ｄ’０、Ｒ’０）を設定し、値Ｖ０＝Ｄ’０＋Ｒ’０を計算した後、Ｓ＝Ｓｉｇｎ（ＳＫ、Ｖ０）により予め計算し、デバイス製造時にパラメータ記憶部１６３０の領域Ｉに記憶する。また、Ｓｉｇｎ、ＳＫ、Ｖｅｒ、およびＰＫは、変形例１と同様の関数または情報を表す。
【０２３８】
デバイス製造者の検証鍵ＰＫは、パラメータ記憶部１６３０に記憶されていてもよいし、認証要求時に入出力部１０１から受け付けてもよい。パラメータ記憶部１６３０に記憶する場合には、領域ＩＩに記憶する。以下では、認証要求時に入出力部１０１から受け付ける場合について説明する。また、署名検証関数Ｖｅｒの構成はパラメータ記憶部１６３０の領域ＩＩに記憶する。
【０２３９】
判定部１６０２は、さらに、署名Ｓを用いて値Ｖが正当であることを判定する点が、第３の実施の形態の判定部１００２と異なっている。
【０２４０】
次に、このように構成された変形例５にかかるＩＣカード１６００による認証制御処理について図２１を用いて説明する。図２１は、変形例５における認証制御処理の全体の流れを示すフローチャートである。
【０２４１】
ステップＳ１７０１からステップＳ１７０２までの、認証要求受付処理および状態情報取得処理は、第３の実施の形態にかかるＩＣカード１３００におけるステップＳ１４０１からステップＳ１４０２までと同様の処理なので、その説明を省略する。
【０２４２】
状態情報を取得後、判定部１６０２は、パラメータ記憶部１６３０から一方向性関数Ｈの構成、値Ｖ、認証の連続失敗回数の上限Ｎに加え、署名Ｓおよび署名検証関数Ｖｅｒの構成を読み出す（ステップＳ１７０３）。次に、判定部１６０２は、入出力部１０１を介してＰＩＮおよび検証鍵ＰＫを取得する（ステップＳ１７０４）。
【０２４３】
次に、判定部１６０２は、Ｄ’＝Ｈｉ（ＰＩＮ，Ｄ）を満たす１以上Ｎ以下の整数値ｉが存在し、かつ、Ｄ＋Ｒ＝Ｖが成立し、かつ、Ｄ’＋Ｒ’＝Ｖが成立し、かつ、Ｖｅｒ（ＰＫ、Ｖ、Ｓ）＝ａｃｃｅｐｔが成り立つか否かを検査する（ステップＳ１７０５）。
【０２４４】
ステップＳ１７０６からステップＳ１７２１までは、第３の実施の形態にかかるＩＣカード１３００におけるステップＳ１４０６からステップＳ１４２１までと同様の処理なので、その説明を省略する。
【０２４５】
次に、状態情報の遷移について図２２を用いて説明する。図２２は、変形例５における状態情報の遷移例を示す模式図である。
【０２４６】
同図に示すように、変形例５での状態情報の遷移は図１９に示す第３の実施の形態と同様であるが、状態情報の検証に用いる関数値Ｖの署名Ｓ（＝Ｓｉｇｎ（ＳＫ、Ｖ））をさらに検証することができる。このため、よりセキュリティを高めることができる。
【０２４７】
（変形例６）
変形例５では、一方向性関数Ｈの入力としてＰＩＮを利用していた。そのため、ＰＩＮを安全に記憶するために領域ＩＶを必要としていた。変形例６では、変形例２および変形例４と同様に、ＰＩＮの署名Ｔ＝Ｓｉｇｎ（ＳＫ，ＰＩＮ）を利用し、秘密鍵ＳＫ、署名Ｔをパラメータ記憶部の領域ＩＩＩに記憶する。デバイス起動時に、変形例２および変形例４と同様にして、乱数Ｕを用いたＶｅｒ（ＰＫ、Ｕ、Ｓｉｇｎ（ＳＫ、Ｕ））の検証と、入力されたＰＩＮに対するＶｅｒ（ＰＫ、ＰＩＮ、Ｔ）の検証により、ＳＫとＴの不正な書き換えを検出することで、領域ＩＶを使用せずとも安全な認証装置を構成することが可能となる。
【０２４８】
なお、変形例２と変形例４と同様に、乱数Ｕを用いたチャレンジ−レスポンス方式によりＳＫが改ざんされていないことを検証する箇所は、Ｕ＝Ｓｉｇｎ（ＳＫ、ＳＫ）を予め計算してパラメータ記憶部の領域ＩＩＩに記憶しておき、Ｖｅｒ（ＰＫ、ＳＫ、Ｕ）が受理されることを検証するように構成してもよい。
【０２４９】
（第４の実施の形態）
第４の実施の形態にかかる認証装置は、認証の連続失敗回数に対応するデータを含む認証の状態情報を記憶し、所定の一方向性関数を用いて状態情報が正しいことを検査し、検査に合格した場合にのみ認証情報による認証を行う。なお、状態情報および状態情報の更新に利用する更新情報を、物理的な解析により外部からアクセスすることが困難な記憶部に記憶するため、悪意の利用者が、検索に合格できるように、状態情報を不正に書き換えることは困難となる。
【０２５０】
図２３は、第４の実施の形態にかかるＩＣカード１９００の構成を示すブロック図である。図２３に示すように、ＩＣカード１９００は、状態記憶部１９２０と、パラメータ記憶部１９３０と、入出力部１０１と、判定部１９０２と、制御部１０３と、認証部１０４と、更新部１９０５とを備えている。
【０２５１】
第４の実施の形態では、状態記憶部１９２０およびパラメータ記憶部１９３０に記憶されるデータの内容と、判定部１９０２および更新部１９０５の機能とが、第１の実施の形態と異なっている。その他の構成および機能は、第１の実施の形態にかかるＩＣカード１００の構成を表すブロック図である図１と同様であるので、同一符号を付し、ここでの説明は省略する。
【０２５２】
状態記憶部１９２０は、認証の失敗回数に依存する情報であって失敗回数を特定可能な状態情報を記憶する。具体的には、状態情報は、認証の失敗回数に応じて変化するデータＣを含む。データＣは、ｋ０ビットのビット列を入力としてｋ０ビットのビット列を出力する一方向性関数Ｈの入力成分となるｋ０ビットで表現されるビット列である。データＣの初期値はＣ０とする。Ｃ０はランダムな値または意図して選択された値など、任意の値を設定する。
【０２５３】
なお、以下では、状態情報を、状態情報Ｃと表す場合がある。また、状態情報は、状態記憶部１９２０の領域ＩＩＩに記憶される。
【０２５４】
パラメータ記憶部１９３０は、ビット長ｋ０、一方向性関数Ｈの構成、状態情報Ｃの初期値Ｃ０、値Ｖ、および認証の連続失敗回数の上限Ｎを記憶する。値Ｖは、状態情報の初期値Ｃ０から、Ｖ＝ＨＮ（Ｃ０）によって算出される。
【０２５５】
なお、一方向性関数Ｈの構成および初期値Ｃ０は、更新部１９０５が状態情報を更新するときに用いる更新情報である。また、ビット長ｋ０、一方向性関数Ｈの構成、値Ｖ、認証の連続失敗回数の上限Ｎは、パラメータ記憶部１９３０の領域ＩＩに記憶される。また、状態情報の初期値Ｃ０は、パラメータ記憶部１９３０の領域ＩＶに記憶される。
【０２５６】
判定部１９０２は、入出力部１０１からの要求を受け、パラメータ記憶部１９３０に記憶されたパラメータを用いて、状態記憶部１９２０に記憶されている状態情報が健全であること、および状態情報から算出した連続失敗回数が上限Ｎより小さいことを判定する。
【０２５７】
具体的には、判定部１９０２は、状態記憶部１９２０から状態情報Ｃを読み出し、パラメータ記憶部１９３０から上限Ｎ、一方向性関数Ｈの構成、値Ｖを読み出す。そして、判定部１９０２は、１以上Ｎ未満の整数値ｉが存在し、Ｈｉ（Ｃ）＝Ｖが成り立つか否かを検査する。ここで、Ｈｉ（Ａ）は、関数Ｈを入力Ａについて再帰的にＨ（Ｈｉ−１（Ａ））として計算することを表す。また、判定部１９０２は、検査結果（合格または不合格）を制御部１０３に通知する。
【０２５８】
なお、物理的な解析によりデータが書き換えられることなく、正しく認証処理が行われている場合に、利用者の認証がＬ回連続（Ｌ＝０、１、．．．、Ｎ−１）して失敗すると、状態情報に含まれるＣと上限Ｎとの間には、１以上Ｎ未満のｉが存在してＨｉ（Ｃ）＝Ｖの関係が成り立つ。
【０２５９】
一方、正しく認証処理が行われている場合に、利用者の認証がＬ＝Ｎ回連続して失敗すると、Ｈｉ＋１（Ｃ）＝Ｖの関係が成立する。すなわち、正しく認証処理が行われている場合は、認証の連続失敗回数がＮ回未満となるのは、１以上Ｎ未満の整数値ｉが存在してＨｉ（Ｃ）＝Ｖが成り立つときに限られる。
【０２６０】
更新部１９０５は、認証部１０４による判定結果に応じて、パラメータ記憶部１９３０に記憶されている更新情報と、状態記憶部１９２０に記憶されている更新前の状態情報とから、更新後の状態情報を生成し、状態記憶部１９２０に記憶される状態情報を更新する。
【０２６１】
具体的には、認証に合格した場合は、更新部１９０５は、状態情報に含まれるデータＣの初期値Ｃ０で状態情報Ｃを初期化する。そして、更新部１９０５は、初期化した状態情報Ｃ＝Ｃ０で状態記憶部１９２０の状態情報を更新する。
【０２６２】
また、認証が不合格であった場合は、更新部１９０５は、Ｃ’＝Ｈ（Ｃ）によって、更新後の状態情報Ｃ’を算出する。そして、更新部１９０５は、状態情報Ｃ’で状態記憶部１９２０の状態情報を更新する。
【０２６３】
次に、このように構成された第４の実施の形態にかかるＩＣカード１９００による認証制御処理について図２４を用いて説明する。図２４は、第４の実施の形態における認証制御処理の全体の流れを示すフローチャートである。
【０２６４】
まず、入出力部１０１は、外部装置から認証要求および認証情報としてＰＩＮを受け付ける（ステップＳ２００１）。そして、入出力部１０１は、判定部１９０２に状態情報の判定を要求する。
【０２６５】
判定の要求を受け、判定部１９０２は、状態記憶部１９２０から状態情報Ｃを読み出す（ステップＳ２００２）。また、判定部１９０２は、パラメータ記憶部１９３０から一方向性関数Ｈの構成、値Ｖ、認証の連続失敗回数の上限Ｎを読み出す（ステップＳ２００３）。そして、判定部１９０２は、Ｈｉ（Ｃ）＝Ｖを満たす１以上Ｎ未満の整数値ｉが存在するか否かを検査する（ステップＳ２００４）。
【０２６６】
ステップＳ２００５からステップＳ２００８までの、認証停止処理、認証指示処理、および認証処理は、第１の実施の形態にかかるＩＣカード１００におけるステップＳ２０５からステップＳ２０８までと同様の処理なので、その説明を省略する。
【０２６７】
認証された場合は（ステップＳ２００８：ＹＥＳ）、認証部１０４は、更新部１９０５に認証合格に基づく状態情報の更新（初期化）を指示する。更新部１９０５は、更新の指示を受けてパラメータ記憶部１９３０から初期値Ｃ０を取得する（ステップＳ２００９）。そして、更新部１９０５は、取得した初期値Ｃ０で状態情報Ｃを初期化して状態記憶部１９２０に保存する（ステップＳ２０１０）。
【０２６８】
ステップＳ２０１１は、第１の実施の形態にかかるＩＣカード１００におけるステップＳ２１３と同様の処理なので、その説明を省略する。
【０２６９】
ステップＳ２００８で、利用者が認証されなかった場合は（ステップＳ２００８：ＮＯ）、認証部１０４は、更新部１９０５に認証不合格に基づく状態情報の更新を指示する。更新部１９０５は、更新の指示を受けて状態記憶部１９２０から状態情報Ｃを取得する（ステップＳ２０１２）。また、更新部１９０５は、パラメータ記憶部１９３０から、更新情報（一方向性関数Ｈの構成）を取得する（ステップＳ２０１３）。そして、更新部１９０５は、取得した更新情報を用いて、更新後のデータＣ’を、Ｃ’＝Ｈ（Ｃ）によって計算する（ステップＳ２０１４）。さらに、更新部１９０５は、状態記憶部１９２０に記憶される状態情報をＣ’に更新する（ステップＳ２０１５）。
【０２７０】
ステップＳ２０１６は、第１の実施の形態にかかるＩＣカード１００におけるステップＳ２１８と同様の処理なので、その説明を省略する。
【０２７１】
次に、状態情報の遷移について図２５を用いて説明する。図２５は、第４の実施の形態における状態情報の遷移例を示す模式図である。なお、図２５は、上限Ｎ＝３としたときの状態情報の遷移を表している。
【０２７２】
同図の実線は、状態情報Ｃを一方向性関数Ｈに入力して得られる算出値を新たな状態情報として更新していくことを表している。なお、状態情報は、一方向性関数Ｈを再帰的に適用し、Ｈｉ（Ｃ）＝Ｃ３（＝Ｖ）を満たす整数値ｉが存在することによって検証する。また、同図の点線は、認証結果に応じて、状態情報を初期値Ｃ０に初期化することを示している。
【０２７３】
例えば、状態情報が初期値Ｃ０の場合に認証に失敗したとすると、次の状態である状態情報Ｃ１に遷移する。この状態で認証に成功したとすると、状態情報の初期化により最初の状態である状態情報Ｃ０の状態に戻る。
【０２７４】
上述のように、状態情報Ｃは領域ＩＩＩに記憶されているため、攻撃者はＣを読み出すことはできない。一方、初期値Ｃ０は領域ＩＶに記憶されているため、攻撃者はＣ０を読み出すことも書き換えることもできない。攻撃者はＣおよびＣ０を読み出すことができないため、状態情報Ｃを１以上Ｎ未満のｉが存在してＨｉ（Ｃ’）＝Ｖが成り立つＣ’に書き換えることは困難である。
【０２７５】
また、状態情報の検証時に比較の対象となる比較値である値Ｖは、状態情報の初期値Ｃ０について一意に定まり、認証の失敗回数に依存した状態情報に関して不変であるため、記憶領域を削減することが可能となる。
【０２７６】
このように、第４の実施の形態にかかる認証装置では、連続失敗回数に対応するデータを含む認証の状態情報を記憶し、状態情報が正しいことおよび連続失敗回数が上限を超えていないことを検査し、検査に合格した場合にのみ認証情報による認証を行う。また、物理的な解析が困難な記憶部に記憶された更新情報で状態情報を更新することができる。これにより、物理的な解析に対しても悪意ある利用から保護可能であり、かつ、認証の連続失敗回数が上限を超えた場合に使用を拒絶できる認証装置を提供することが可能となる。
【０２７７】
（変形例７）
変形例７では、値Ｖにデバイス製造者の署名Ｓを添付することによりセキュリティを強化する方法について説明する。
【０２７８】
図２６は、変形例７にかかるＩＣカード２２００の構成を示すブロック図である。図２６に示すように、ＩＣカード２２００は、状態記憶部１９２０と、パラメータ記憶部２２３０と、入出力部１０１と、判定部２２０２と、制御部１０３と、認証部１０４と、更新部１９０５とを備えている。
【０２７９】
変形例７では、パラメータ記憶部２２３０に記憶されたパラメータの内容、および判定部２２０２の機能が第４の実施の形態と異なっている。その他の構成および機能は、第４の実施の形態にかかるＩＣカード１９００の構成を表すブロック図である図２３と同様であるので、同一符号を付し、ここでの説明は省略する。
【０２８０】
パラメータ記憶部２２３０は、さらに領域Ｉを備え、値Ｖおよび値Ｖの署名Ｓを領域Ｉに記憶する点が、第４の実施の形態と異なっている。
【０２８１】
なお、署名Ｓは、デバイス製造者が、一方向性関数Ｈの構成、状態情報の初期値Ｃ０を設定し、値Ｖ＝ＨＮ（Ｃ０）を計算した後、Ｓ＝Ｓｉｇｎ（ＳＫ、Ｖ）により予め計算し、デバイス製造時にパラメータ記憶部２２３０の領域Ｉに記憶する。
【０２８２】
ここで、署名ＳｉをＶｉ＝Ｈｉ（Ｃ０）となる複数のＶｉに対して計算して、パラメータ記憶部２２３０の領域Ｉに記憶しておき、判定部２２０２が、状態情報Ｃに最も近いＶｉ＝Ｈｉ（Ｃ）について署名Ｓｉを検査するように構成してもよい。以下では値Ｖ＝ＨＮ（Ｃ０）に対して、Ｓ＝Ｓｉｇｎ（ＳＫ、Ｖ）のみを用いる例を説明する。
【０２８３】
デバイス製造者の検証鍵ＰＫは、パラメータ記憶部２２３０に記憶されていてもよいし、認証要求時に入出力部１０１から受け付けてもよい。パラメータ記憶部２２３０に記憶する場合には、領域ＩＩに記憶する。以下では、認証要求時に入出力部１０１から受け付ける場合について説明する。また、署名検証関数Ｖｅｒの構成はパラメータ記憶部２２３０の領域ＩＩに記憶する。
【０２８４】
判定部２２０２は、さらに、署名Ｓを用いて値Ｖが正当であることを判定する点が、第４の実施の形態の判定部１９０２と異なっている。
【０２８５】
次に、このように構成された変形例７にかかるＩＣカード２２００による認証制御処理について図２７を用いて説明する。図２７は、変形例７における認証制御処理の全体の流れを示すフローチャートである。
【０２８６】
ステップＳ２３０１からステップＳ２３０２までの、認証要求受付処理および状態情報取得処理は、第４の実施の形態にかかるＩＣカード１９００におけるステップＳ２００１からステップＳ２００２までと同様の処理なので、その説明を省略する。
【０２８７】
状態情報を取得後、判定部２２０２は、パラメータ記憶部２２３０から一方向性関数Ｈの構成、値Ｖ、認証の連続失敗回数の上限Ｎに加え、署名Ｓおよび署名検証関数Ｖｅｒの構成を読み出す（ステップＳ２３０３）。次に、判定部２２０２は、入出力部１０１を介して検証鍵ＰＫを取得する（ステップＳ２３０４）。
【０２８８】
次に、判定部２２０２は、Ｈｉ（Ｃ）＝Ｖを満たす１以上Ｎ未満の整数値ｉが存在し、かつ、Ｖｅｒ（ＰＫ，Ｖ，Ｓ）＝ａｃｃｅｐｔが成り立つか否かを検査する（ステップＳ２３０５）。
【０２８９】
ステップＳ２３０６からステップＳ２３１７までは、第４の実施の形態にかかるＩＣカード１９００におけるステップＳ２００５からステップＳ２０１６までと同様の処理なので、その説明を省略する。
【０２９０】
次に、状態情報の遷移について図２８を用いて説明する。図２８は、変形例７における状態情報の遷移例を示す模式図である。
【０２９１】
同図に示すように、変形例７での状態情報の遷移は図２５に示す第４の実施の形態と同様であるが、状態情報の検証に用いる値Ｖ（＝Ｃ３）の署名Ｓ（＝Ｓｉｇｎ（ＳＫ、Ｃ３））をさらに検証することができる。このため、よりセキュリティを高めることができる。
【０２９２】
（変形例８）
変形例８では、変形例２、変形例４、および変形例６と同様に、ＰＩＮの署名Ｔ＝Ｓｉｇｎ（ＳＫ，ＰＩＮ）を利用し、秘密鍵ＳＫ、署名Ｔをパラメータ記憶部の領域ＩＩＩに記憶する。デバイス起動時に、変形例２、変形例４、および変形例６と同様にして、乱数Ｕを用いたＶｅｒ（ＰＫ、Ｕ、Ｓｉｇｎ（ＳＫ、Ｕ））の検証と、入力されたＰＩＮに対するＶｅｒ（ＰＫ、ＰＩＮ、Ｔ）の検証により、ＳＫとＴの不正な書き換えを検出することで、領域ＩＶを使用せずとも安全な認証装置を構成することが可能となる。
【０２９３】
なお、変形例２、変形例４、および変形例６と同様に、乱数Ｕを用いたチャレンジ−レスポンス方式によりＳＫが改ざんされていないことを検証する箇所は、Ｕ＝Ｓｉｇｎ（ＳＫ、ＳＫ）を予め計算してパラメータ記憶部の領域ＩＩＩに記憶しておき、Ｖｅｒ（ＰＫ、ＳＫ、Ｕ）が受理されることを検証するように構成してもよい。
【０２９４】
次に、第１〜第４の実施の形態にかかる認証装置のハードウェア構成について図２９を用いて説明する。図２９は、第１〜第４の実施の形態にかかる認証装置のハードウェア構成を示す説明図である。
【０２９５】
第１〜第４の実施の形態にかかる認証装置は、ＣＰＵ（Central Processing Unit）５１などの制御装置と、ＲＯＭ５２やＲＡＭ５３などの記憶装置と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５４と、各部を接続するバス６１を備えている。
【０２９６】
第１〜第４の実施の形態にかかる認証装置で実行される認証プログラムは、ＲＯＭ５２等に予め組み込まれて提供される。
【０２９７】
第１〜第４の実施の形態にかかる認証装置で実行される認証プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact Disk Read Only Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact Disk Recordable）、ＤＶＤ（Digital Versatile Disk）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【０２９８】
さらに、第１〜第４の実施の形態にかかる認証装置で実行される認証プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第１〜第４の実施の形態にかかる認証装置で実行される認証プログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０２９９】
第１〜第４の実施の形態にかかる認証装置で実行される認証プログラムは、上述した各部（入出力部、判定部、制御部、認証部、更新部）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ５１が上記ＲＯＭ５２から認証プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、各部が主記憶装置上に生成されるようになっている。
【産業上の利用可能性】
【０３００】
以上のように、本発明にかかる装置、方法およびプログラムは、認証装置の利用者が所定の回数以上連続して認証に失敗する場合には以後の認証処理を受け付けないことにより、認証装置の不正利用を防止する装置、方法およびプログラムに適している。
【図面の簡単な説明】
【０３０１】
【図１】第１の実施の形態にかかる認証装置のブロック図である。
【図２】第１の実施の形態における認証制御処理の全体の流れを示すフローチャートである。
【図３】第１の実施の形態における状態情報の遷移例を示す模式図である。
【図４】変形例１にかかる認証装置のブロック図である。
【図５】変形例１における認証制御処理の全体の流れを示すフローチャートである。
【図６】変形例１における状態情報の遷移例を示す模式図である。
【図７】変形例２にかかる認証装置のブロック図である。
【図８】変形例２における認証制御処理の全体の流れを示すフローチャートである。
【図９】第２の実施の形態にかかる認証装置のブロック図である。
【図１０】第２の実施の形態における認証制御処理の全体の流れを示すフローチャートである。
【図１１】第２の実施の形態における状態情報の遷移例を示す模式図である。
【図１２】変形例３にかかる認証装置のブロック図である。
【図１３】変形例３における認証制御処理の全体の流れを示すフローチャートである。
【図１４】変形例３における状態情報の遷移例を示す模式図である。
【図１５】変形例４にかかる認証装置のブロック図である。
【図１６】変形例４における認証制御処理の全体の流れを示すフローチャートである。
【図１７】第３の実施の形態にかかる認証装置のブロック図である。
【図１８】第３の実施の形態における認証制御処理の全体の流れを示すフローチャートである。
【図１９】第３の実施の形態における状態情報の遷移例を示す模式図である。
【図２０】変形例５にかかる認証装置のブロック図である。
【図２１】変形例５における認証制御処理の全体の流れを示すフローチャートである。
【図２２】変形例５における状態情報の遷移例を示す模式図である。
【図２３】第４の実施の形態にかかる認証装置のブロック図である。
【図２４】第４の実施の形態における認証制御処理の全体の流れを示すフローチャートである。
【図２５】第４の実施の形態における状態情報の遷移例を示す模式図である。
【図２６】変形例７にかかる認証装置のブロック図である。
【図２７】変形例７における認証制御処理の全体の流れを示すフローチャートである。
【図２８】変形例７における状態情報の遷移例を示す模式図である。
【図２９】第１〜第４の実施の形態にかかる認証装置のハードウェア構成を示す説明図である。
【符号の説明】
【０３０２】
５１    ＣＰＵ
５２    ＲＯＭ
５３    ＲＡＭ
５４    通信Ｉ／Ｆ
６１    バス
１００  ＩＣカード
１０１  入出力部
１０２  判定部
１０３  制御部
１０４  認証部
１０５  更新部
１２０  状態記憶部
１３０  パラメータ記憶部
４００  ＩＣカード
４０２  判定部
４３０  パラメータ記憶部
７００  ＩＣカード
７０２  判定部
７０４  認証部
７０６  第１更新部
７０７  第２更新部
７４０  第１状態記憶部
７５０  第２状態記憶部
１０００  ＩＣカード
１００２  判定部
１０３０  パラメータ記憶部
１３００  ＩＣカード
１３０２  判定部
１３０６  第１更新部
１３０７  第２更新部
１３３０  パラメータ記憶部
１３４０  第１状態記憶部
１３５０  第２状態記憶部
１６００  ＩＣカード
１６０２  判定部
１６３０  パラメータ記憶部
１９００  ＩＣカード
１９０２  判定部
１９０５  更新部
１９２０  状態記憶部
１９３０  パラメータ記憶部
２２００  ＩＣカード
２２０２  判定部
２２３０  パラメータ記憶部
【図１】
2009187516.tif 000003
【図２】
2009187516.tif 000004
【図３】
2009187516.tif 000005
【図４】
2009187516.tif 000006
【図５】
2009187516.tif 000007
【図６】
2009187516.tif 000008
【図７】
2009187516.tif 000009
【図８】
2009187516.tif 000010
【図９】
2009187516.tif 000011
【図１０】
2009187516.tif 000012
【図１１】
2009187516.tif 000013
【図１２】
2009187516.tif 000014
【図１３】
2009187516.tif 000015
【図１４】
2009187516.tif 000016
【図１５】
2009187516.tif 000017
【図１６】
2009187516.tif 000018
【図１７】
2009187516.tif 000019
【図１８】
2009187516.tif 000020
【図１９】
2009187516.tif 000021
【図２０】
2009187516.tif 000022
【図２１】
2009187516.tif 000023
【図２２】
2009187516.tif 000024
【図２３】
2009187516.tif 000025
【図２４】
2009187516.tif 000026
【図２５】
2009187516.tif 000027
【図２６】
2009187516.tif 000028
【図２７】
2009187516.tif 000029
【図２８】
2009187516.tif 000030
【図２９】
2009187516.tif 000031