JP2009187516A - 認証する装置、方法およびプログラム - Google Patents
認証する装置、方法およびプログラム Download PDFInfo
- Publication number
- JP2009187516A JP2009187516A JP2008101262A JP2008101262A JP2009187516A JP 2009187516 A JP2009187516 A JP 2009187516A JP 2008101262 A JP2008101262 A JP 2008101262A JP 2008101262 A JP2008101262 A JP 2008101262A JP 2009187516 A JP2009187516 A JP 2009187516A
- Authority
- JP
- Japan
- Prior art keywords
- information
- authentication
- unit
- update
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】物理的な解析による悪意の利用を抑止しつつ、認証の試行回数の上限の増加に伴う安全性の低下を回避する認証装置を提供する。
【解決手段】認証情報を入力する入力部101と、認証の失敗回数を特定する状態情報を第1関数に入力して算出した算出値と所定の比較値とが一致し、かつ、失敗回数が所定の閾値より小さいか否かを判定する判定部102と、算出値が比較値と一致し、かつ、失敗回数が閾値より小さい場合に認証情報による認証を行う認証部104と、認証が失敗した場合に、パラメータ記憶部130に記憶された更新情報を用いて、状態記憶部120の状態情報を、1を加算した失敗回数を特定する状態情報に更新し、認証が成功した場合に、状態記憶部120の状態情報を、0を表す失敗回数を特定する状態情報に更新する更新部105と、を備えた。
【選択図】 図1
【解決手段】認証情報を入力する入力部101と、認証の失敗回数を特定する状態情報を第1関数に入力して算出した算出値と所定の比較値とが一致し、かつ、失敗回数が所定の閾値より小さいか否かを判定する判定部102と、算出値が比較値と一致し、かつ、失敗回数が閾値より小さい場合に認証情報による認証を行う認証部104と、認証が失敗した場合に、パラメータ記憶部130に記憶された更新情報を用いて、状態記憶部120の状態情報を、1を加算した失敗回数を特定する状態情報に更新し、認証が成功した場合に、状態記憶部120の状態情報を、0を表す失敗回数を特定する状態情報に更新する更新部105と、を備えた。
【選択図】 図1
Description
この発明は、認証装置の利用者が所定の回数以上連続して認証に失敗する場合には以後の認証処理を受け付けないことにより、認証装置の不正利用を防止する装置、方法およびプログラムに関する。
近年、ICカードやモバイル端末などの持ち運び可能なデバイスが広く使用されている。これらのデバイスは、遺失や盗難などにより悪意のある不特定多数に利用される恐れがある。このため、デバイスの利用者が正規利用者であるか否かを判定した後にデバイスの利用を許可することの重要性は大きい。
デバイスの利用者が正規利用者であるか否かを判定する手法として、パスワードや生体情報などの認証情報を用いて利用者を認証する手法が用いられる。しかし、認証情報は有限であるため、総当り的に認証を試行することにより正しい認証情報が知られる恐れがある。したがって、この手法のみでは悪意ある利用を十分に防ぐことはできない。
そこで、認証の試行回数に上限を設け、この上限を超えて認証に失敗した場合には以後の認証を受け付けないように認証装置(デバイス)の使用をロックする手法が知られている。この手法では、認証の試行回数または失敗回数を記憶するカウンタを認証装置内に実装する必要がある。
一方、認証装置に対する物理的な解析によって不正に装置内の情報にアクセスするサイドチャネル攻撃と呼ばれる攻撃方法が多数報告されるようになっている。例えば、認証装置の動作時の消費電力や漏洩電磁波を観測することで認証装置内部の状態を推測する解析手法、認証装置への供給電源を故意に変化させたり認証装置に高エネルギーの光を照射したりすることで誤動作を誘発してデータを書き換えて内部の秘密データを推測する解析手法などが知られている。
物理的な解析によりカウンタ値が初期化された場合、試行回数の制限が無意味となるため、上述のように認証の失敗回数を記憶するカウンタを実装する方法でも悪意ある利用を十分に防ぐことはできない。
非特許文献1では、物理的な解析によりデータを読取れないがデータを変化させることができるメモリ領域(書込みのみ可能なメモリ領域(Write Only Memory))を利用し、上述のような総当り的な試行を防ぐことができるカウンタを、書込みのみ可能なメモリ領域に実装する技術が提案されている。
物理的な解析ではデータを意図した値に変化させることは一般には困難であるが、非特許文献1の方法によれば、仮にデータを意図した値に書き換えることができたとしても、悪意ある利用から認証装置を保護することが可能となる。
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
非特許文献1の方法では、認証装置の開始時から通算した失敗回数(通算失敗回数)が所定の上限を超えた場合に認証装置がロックされる。認証の通算失敗回数に基づいて認証装置をロックする方法の場合、認証の連続失敗回数に基づいてロック方法と比較して、正規の利用者の誤入力に配慮して上限を高めに設定することが一般的である。しかしながら、このように上限を高めに設定すると認証の試行回数が増えるため、安全性が低下するという問題があった。
本発明は、上記に鑑みてなされたものであって、物理的な解析による悪意の利用を抑止しつつ、認証の試行回数の上限の増加に伴う安全性の低下を回避できる装置、方法およびプログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、外部からアクセス不能な記憶部であって、認証の失敗回数を特定可能な状態情報を記憶する状態記憶部と、前記状態情報の更新に用いる更新情報を記憶する更新情報記憶部と、認証に用いる認証情報を入力する入力部と、前記状態情報を予め定められた第1関数に入力した結果として出力される算出値を算出し、前記算出値と予め定められた比較値とが一致し、かつ、前記状態情報によって特定される前記失敗回数が予め定められた閾値より小さいか否かを判定する判定部と、前記算出値が前記比較値と一致し、かつ、前記状態情報によって特定される前記失敗回数が前記閾値より小さい場合に、前記認証情報による認証を行う認証部と、前記認証部による認証が失敗した場合に、前記更新情報を用いて、前記状態記憶部の前記状態情報を、1を加算した前記失敗回数を特定する前記状態情報に更新し、前記認証部による認証が成功した場合に、前記状態記憶部の前記状態情報を、0を表す前記失敗回数を特定する前記状態情報に更新する更新部と、を備えたことを特徴とする。
また、本発明は、上記装置を実行することができる方法およびプログラムである。
本発明によれば、物理的な解析による悪意の利用を抑止しつつ、認証の試行回数の上限の増加に伴う安全性の低下を回避できるという効果を奏する。
以下に添付図面を参照して、この発明にかかる装置、方法およびプログラムの最良な実施の形態を詳細に説明する。
(第1の実施の形態)
第1の実施の形態にかかる認証装置は、認証の連続失敗回数を含む認証の状態情報を記憶し、所定の一方向性関数を用いて状態情報が正しいことを検査し、検査に合格した場合にのみ認証情報による認証を行う。なお、状態情報および状態情報の更新に利用する更新情報を、物理的な解析により外部からアクセスすることが困難な記憶部に記憶するため、悪意の利用者が、検索に合格できるように、状態情報を不正に書き換えることは困難となる。
第1の実施の形態にかかる認証装置は、認証の連続失敗回数を含む認証の状態情報を記憶し、所定の一方向性関数を用いて状態情報が正しいことを検査し、検査に合格した場合にのみ認証情報による認証を行う。なお、状態情報および状態情報の更新に利用する更新情報を、物理的な解析により外部からアクセスすることが困難な記憶部に記憶するため、悪意の利用者が、検索に合格できるように、状態情報を不正に書き換えることは困難となる。
以下では、ICカードとして認証装置を実現した例について説明する。例えば、利用者は、ICカードをキャッシュディスペンサーに挿入し、キャッシュディスペンサーを介して入力した認証情報等によって正規な利用者であることの認証を受け、認証された場合にキャッシュディスペンサーのサービスを受けることができる。なお、適用可能な装置はICカードに限られず、事前に記憶された情報と入力された認証情報とによって認証を行う装置であればあらゆる装置に適用できる。
また、認証情報とは、認証に用いる利用者の識別情報である。識別情報は、例えば、PIN(Personal Identification Number)などのパスワード情報、生体情報、および、対話の情報を用いて認証する場合は対話の情報などを含む。また、以下では、利用者とは主にICカード100の利用者を意味するが、ICカード100を介してサービスなどを受ける利用者という意味を含めてもよい。
図1は、第1の実施の形態にかかる認証装置としてのICカード100の構成を示すブロック図である。図1に示すように、ICカード100は、状態記憶部120と、パラメータ記憶部130と、入出力部101と、判定部102と、制御部103と、認証部104と、更新部105とを備えている。
なお、以下では、データを記憶する各記憶部(状態記憶部120、パラメータ記憶部130)は、以下の4つの種類いずれかに分類できる領域を備えるものとする。
(1)領域I:外部から読み出しも書き込みも可能な領域(Random Access Memory(RAM))
(2)領域II:外部から読み出しは可能だが書き込みは不可能な領域(Read Only Memory(ROM))
(3)領域III:外部から書き込みは可能だが読み出しは不可能な領域(物理的な解析によりデータの書込みのみ可能なメモリ領域(Write Only Memory))
(4)領域IV:外部からの書き込みも読み出しも不可能な領域(最も安全な耐タンパ実装が施された領域)
(1)領域I:外部から読み出しも書き込みも可能な領域(Random Access Memory(RAM))
(2)領域II:外部から読み出しは可能だが書き込みは不可能な領域(Read Only Memory(ROM))
(3)領域III:外部から書き込みは可能だが読み出しは不可能な領域(物理的な解析によりデータの書込みのみ可能なメモリ領域(Write Only Memory))
(4)領域IV:外部からの書き込みも読み出しも不可能な領域(最も安全な耐タンパ実装が施された領域)
図1に示すように、第1の実施の形態では、状態記憶部120は、領域IIIを備えている。また、パラメータ記憶部130は、領域IIと、領域IVとを備えている。
状態記憶部120は、認証の失敗回数に依存する情報であって失敗回数を特定可能な状態情報を記憶する。具体的には、状態情報は認証の失敗回数CとデータRとを含む。Cは、予め定められたビット長(k0ビットとする)で表現される整数値であり、初期値を整数値C0とする。C0はランダムな値または意図して選択された値など、任意の値を設定する。以下では、C0=0であるものとして説明する。
データRは後述する一方向性関数CHの入力の第2成分となる予め定められたビット長(k1ビットとする)のビット列である。データRは、値が変動する変動情報である。すなわち、データRは、失敗回数の更新に応じて後述する逆関数CHIによって異なる値が算出される。データRの初期値は、k1ビットのR0とする。R0は、ランダムな値または意図して選択された値など、任意の値を設定する。
なお、以下では、状態情報を、状態情報(C、R)と表す場合がある。また、状態情報は、状態記憶部120の領域IIIに記憶される。
パラメータ記憶部130は、認証処理に用いる各種情報(パラメータ)を記憶する。具体的には、パラメータ記憶部130は、デバイス製造者または利用者が事前に設定した認証情報、予め定められたビット長k0、k1、k2、一方向性関数CHの構成、公開鍵CPK、k2ビットのビット列である関数値V、逆関数CHIの構成、秘密鍵CSK、および認証の連続失敗回数の上限Nを記憶する。
ここで、一方向性関数CH、および逆関数CHIの性質について説明する。一方向性関数CHは、公開鍵CPKと、k0ビットのビット列である失敗回数Cと、k1ビットのビット列であるデータRとを入力として、k2ビットのビット列である関数値Vを出力する一方向性関数である。すなわち、一方向性関数CHは、CH(CPK、C、R)=Vのように表される。
公開鍵CPKは、デバイス製造時に予め設定された値である。秘密鍵CSKは、公開鍵CPKに対応する値としてデバイス製造時に予め設定された値である。関数値Vの初期値V0は、状態記憶部120に記憶された状態情報の初期値C0、R0を用いて、V0=CH(CPK、C0、R0)で算出される。なお、後述するように、関数値Vが一定となるように状態情報(C、R)が更新されるため、関数値Vは初期値V0から不変となる。
一方、CHIは、公開鍵CPKに対応する秘密鍵CSKと、2つのk0ビットのビット列CおよびC’と、k1ビットのビット列であるデータRとを入力として、CH(CPK、C、R)=CH(CPK、C’、R’)を満たす、k1ビットのビット列であるデータR’を算出する関数である。すなわち、逆関数CHIは、CHI(CSK、C、C’、R)=R’のように表される。
このように、秘密鍵CSKが与えられた場合に、CHの出力結果が関数値Vとなるような入力値であるデータR’を算出できるため、CHIをCHの逆関数と呼ぶ。
このような一方向性関数CHおよび逆関数CHIの組としては、例えば、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に記載されたハッシュ関数などを適用できる。
なお、関数の構成(一方向性関数CHの構成、逆関数CHIの構成)とは、各関数の機能を実現するために必要な情報を表し、判定部102が各関数を実行するときにパラメータ記憶部130から読み出す。判定部102内に各関数の機能を備える場合は、パラメータ記憶部130に各関数の構成を記憶しなくてもよい。
認証の連続失敗回数の上限Nは、許容する認証の連続失敗回数の上限を表す情報である。上限Nは、システム設計時に予め設定された整数値としてパラメータ記憶部130に記憶される。例えば、3回連続して認証に失敗した場合にデバイスをロックする場合にはN=3を設定する。
なお、逆関数CHIの構成と秘密鍵CSKとは、更新部105が状態情報を更新するときに用いる情報である。以下では、これらを更新情報という。また、ビット長k0、k1、k2、一方向性関数CHの構成、公開鍵CPK、関数値V、逆関数CHIの構成、認証の連続失敗回数の上限Nは、パラメータ記憶部130の領域IIに記憶される。また、秘密鍵CSKは、パラメータ記憶部130の領域IVに記憶される。
入出力部101は、ICカード100に接続された外部装置(図示せず)との間でデータを入出力する。ここで、外部装置とは、少なくとも認証要求と認証情報を入出力部101に出力する装置であり、例えば、キャッシュディスペンサーなどのICカード100の読取装置が該当する。入出力部101は、このような外部装置を介して、認証を要求する情報である認証要求、および認証の要求者が入力した認証用の認証情報を受付ける。
認証要求は、ICカード100に対する外部装置の所定の動作をトリガーとして生成される。なお、その動作自体を認証要求とするように構成してもよい。例えば、外部装置がICカード100に対して電力を供給した場合に認証処理を実行する場合が該当する。
認証要求および認証情報を受付けた場合、入出力部101は判定部102に対して状態情報の判定を要求する。なお、認証情報は、認証要求と同時に取得する必要はない。例えば、認証部104から認証情報の取得要求を受けたときに、入出力部101が、外部装置に対して認証情報の取得を要求し、要求に応じて外部装置から入力された認証情報を、要求元である認証部104に出力するように構成してもよい。
さらに、入出力部101は、認証情報によって認証された結果(認証結果)を外部装置に出力する。認証結果とは、認証に合格したという情報、または、認証が不合格であったという情報である。
判定部102は、入出力部101からの要求を受け、パラメータ記憶部130に記憶されたパラメータを用いて、状態記憶部120に記憶されている状態情報が健全であること、および状態情報から算出した連続失敗回数が上限Nより小さいことを判定する。ここで、状態情報が健全であるとは、状態情報について不正な書き換えが行われていないことを意味する。
具体的には、判定部102は、状態記憶部120から状態情報(C、R)を読み出し、パラメータ記憶部130から上限N、一方向性関数CHの構成、公開鍵CPK、関数値Vを読み出す。そして、判定部102は、読み出したCが0以上N未満の整数値であること、およびCH(CPK、C、R)=Vが成立することを検査する。また、判定部102は、検査結果(合格または不合格)を制御部103に通知する。
なお、物理的な解析によりデータが書き換えられることなく、正しく認証処理が行われている場合に、利用者の認証がL回連続(L=0、1、...、N−1)して失敗すると、状態情報に含まれるCと上限Nとの間には、C<Nの関係が成り立つ。
一方、正しく認証処理が行われている場合に、利用者の認証がL=N回連続して失敗すると、C=Nの関係が成立する。すなわち、正しく認証処理が行われている場合は、認証の連続失敗回数がN回未満となるのは、Cが0以上N未満の整数値であるときに限られる。
制御部103は、判定部102の判定結果に基づいてICカード100の利用可否または認証処理の実行可否を制御する。具体的には、制御部103は、判定部102から合格を通知された場合に、認証部104に認証処理の実行を指示する。一方、制御部103は、判定部102から不合格を通知された場合に、認証部104に認証処理の停止を指示してICカード100の利用要求を拒絶する(認証処理の終了)。
認証部104は、制御部103から認証処理の実行の指示を受けると、認証情報を用いて認証の要求者が正規の利用者であるか否かを判定する。例えば、認証部104は、入出力部101から受け取った認証情報であるPINと、パラメータ記憶部130の領域IVに記憶されているPINとが一致するか否かによって利用者を認証する。なお、認証部104による認証方法はこれに限られず、認証情報を用いて利用者を認証できるものであれば、従来から用いられているあらゆる方法を適用できる。
また、認証部104は、認証処理の判定結果に応じて更新部105に状態情報の更新を指示するとともに、判定結果を入出力部101に出力する。具体的には、認証部104は、不合格と判定した場合には、更新部105に状態情報の更新を指示して、さらに入出力部101に認証不合格の情報を出力する。また、認証部104は、合格と判定した場合には、更新部105に状態情報の更新(初期化)を指示して、さらに入出力部101に認証合格の情報を出力する。また、認証部104は、制御部103から認証処理の停止の指示を受け付けた場合は、認証処理を停止し、認証処理を停止した旨を入出力部101に出力する。
更新部105は、認証部104による判定結果に応じて、パラメータ記憶部130に記憶されている更新情報と、状態記憶部120に記憶されている更新前の状態情報とから、更新後の状態情報を生成し、状態記憶部120に記憶される状態情報を更新する。
具体的には、認証に合格した場合は、更新部105は、R’=CHI(CSK,C,0,R)によって、更新後のデータR’を算出する。これは、0回を表す失敗回数Cとともに入力したときの一方向性関数CHの算出値が、一定の関数値VとなるようなデータR’を求めることを意味する。そして、更新部105は、状態情報(0、R’)で状態記憶部120の状態情報を更新する。
また、認証が不合格であった場合は、更新部105は、R’=CHI(CSK,C,C+1,R)によって、更新後のデータR’を算出する。これは、失敗回数に1加算し(C=C+1)、1を加算した失敗回数Cとともに入力したときの一方向性関数CHの算出値が、一定の関数値VとなるようなデータR’を求めることを意味する。そして、更新部105は、状態情報(C+1、R’)で状態記憶部120の状態情報を更新する。
次に、このように構成された第1の実施の形態にかかるICカード100による認証制御処理について図2を用いて説明する。図2は、第1の実施の形態における認証制御処理の全体の流れを示すフローチャートである。
まず、入出力部101は、外部装置から認証要求および認証情報としてPINを受け付ける(ステップS201)。そして、入出力部101は、判定部102に状態情報の判定を要求する。
判定の要求を受け、判定部102は、状態記憶部120から状態情報(C、R)を読み出す(ステップS202)。また、判定部102は、パラメータ記憶部130から一方向性関数CHの構成、公開鍵CPK、関数値V、認証の連続失敗回数の上限Nを読み出す(ステップS203)。そして、判定部102は、Cが0以上N未満の整数値であり、かつ、CH(CPK、C、R)=Vが成り立つか否かを検査する(ステップS204)。
検査に不合格の場合は(ステップS204:NO)、判定部102は、制御部103に不合格を通知する。制御部103は、不合格の通知を受けて認証部104に認証処理の停止を指示する(ステップS205)。また、制御部103は、ICカード100の利用要求を拒絶する。
検索に合格した場合は(ステップS204:YES)、判定部102は、制御部103に合格を通知する。制御部103は、合格の通知を受けて認証部104に認証処理の実行を指示する(ステップS206)。
認証部104は、認証処理の実行が指示されると、入力されたPINを用いて認証処理を実行する(ステップS207)。そして、認証部104は、PINにより利用者が認証されたか否かを判定する(ステップS208)。
認証された場合は(ステップS208:YES)、認証部104は、更新部105に認証合格に基づく状態情報の更新(初期化)を指示する。更新部105は、更新の指示を受けて状態記憶部120から状態情報(C、R)を取得する(ステップS209)。また、更新部105は、パラメータ記憶部130から、更新情報(逆関数CHIの構成、秘密鍵CSK)を取得する(ステップS210)。そして、更新部105は、取得した更新情報を用いて、更新後のデータR’を、R’=CHI(CSK、C、0、R)によって計算する(ステップS211)。さらに、更新部105は、状態記憶部120に記憶される状態情報を(0、R’)に更新する(ステップS212)。
次に、認証部104は、認証に合格したことを、入出力部101を介して外部装置に出力するとともに(ステップS213)、制御部103に認証合格を通知する。なお、制御部103は、認証合格を受け付けた場合にはICカード100の利用要求を許可し、認証制御処理を終了する。
ステップS208で、利用者が認証されなかった場合は(ステップS208:NO)、認証部104は、更新部105に認証不合格に基づく状態情報の更新を指示する。更新部105は、更新の指示を受けて状態記憶部120から状態情報(C、R)を取得する(ステップS214)。また、更新部105は、パラメータ記憶部130から、更新情報(逆関数CHIの構成、秘密鍵CSK)を取得する(ステップS215)。そして、更新部105は、取得した更新情報を用いて、更新後のデータR’を、R’=CHI(CSK、C、C+1、R)によって計算する(ステップS216)。さらに、更新部105は、状態記憶部120に記憶される状態情報を(C+1、R’)に更新する(ステップS217)。
次に、認証部104は、認証不合格を、入出力部101を介して外部装置に出力するとともに(ステップS218)、制御部103に認証不合格を通知する。なお、制御部103は、認証不合格を受け付けた場合にはICカード100の利用要求を拒絶し、認証制御処理を終了する。
認証結果を受けた外部装置は、認証結果に応じて所定の処理を実行する。外部装置は、例えば認証結果を表示デバイスなどに表示する処理を実行する。また、例えば、認証結果を受けたキャッシュディスペンサーなどの外部装置は、自装置によるサービスを許可または拒絶する制御を行う。
次に、状態情報の遷移について図3を用いて説明する。図3は、第1の実施の形態における状態情報の遷移例を示す模式図である。
同図の実線は、状態情報を一方向性関数CHに入力して得られる算出値が、事前に求められた固定値である関数値Vと一致するか否かを検証することを示している。また、同図の点線は、認証結果に応じて、逆関数CHIによって状態情報を更新または初期化し、状態を遷移することを示している。
例えば、状態情報が(0、R0)の場合に認証に失敗したとすると、次の状態である状態情報(1、R1)に遷移する。この状態で認証に成功したとすると、状態情報の初期化により最初の状態である状態情報(0、R0)の状態に戻る。
上述のように、状態情報(C、R)は領域IIIに記憶されているため、攻撃者はRを読み出すことはできない。一方、逆関数CHIの計算で用いる秘密鍵CSKは領域IVに記憶されているため、攻撃者は秘密鍵CSKを読み出すことも書き換えることもできない。
攻撃者は、秘密鍵CSKを読み出すことができないため、状態情報(C、R)を、C’が0以上N未満かつCH(CPK、C’、R’)=Vとなるような状態情報(C’、R’)に書き換えることは困難である。
また、状態情報の検証時に比較の対象となる比較値である関数値Vは、上述のように、状態情報の初期値(C0、R0)について一意に定まる。すなわち、認証の失敗回数に依存する状態情報に関して不変である。このため、状態ごとにハッシュ関数で算出した認証子を記憶し、記憶した認証子と比較することにより状態の正当性を検証する方法などと比べて、記憶領域を削減することが可能となる。
また、通算失敗回数を検出する非特許文献1の認証装置は、関数値Vとの比較を行うために一方向性関数を複数回施す必要があった。一方、第1の実施の形態の認証装置では、認証の連続失敗回数によらず、常に状態情報(C、R)に一方向性関数CHを一度だけ施せば関数値Vと比較することができる。これにより、認証の状態を検証するための処理負荷を軽減することができる。
このように、第1の実施の形態にかかる認証装置では、連続失敗回数を含む認証の状態情報を記憶し、状態情報が正しいことおよび連続失敗回数が上限を超えていないことを検査し、検査に合格した場合にのみ認証情報による認証を行うとともに、物理的な解析が困難な記憶部に記憶された更新情報で状態情報を更新することができる。これにより、物理的な解析に対しても悪意ある利用から保護可能であり、かつ、認証の連続失敗回数が上限を超えた場合に使用を拒絶できる認証装置を提供することが可能となる。すなわち、物理的な解析による悪意の利用を抑止しつつ、認証の試行回数の上限の増加に伴う安全性の低下を回避可能となる。
(変形例1)
変形例1では、関数値Vにデバイス製造者のデジタル署名S(以下、単に署名Sという。)を添付することによりセキュリティを強化する方法について説明する。
変形例1では、関数値Vにデバイス製造者のデジタル署名S(以下、単に署名Sという。)を添付することによりセキュリティを強化する方法について説明する。
図4は、変形例1にかかるICカード400の構成を示すブロック図である。図4に示すように、ICカード400は、状態記憶部120と、パラメータ記憶部430と、入出力部101と、判定部402と、制御部103と、認証部104と、更新部105とを備えている。
変形例1では、パラメータ記憶部430に記憶されたパラメータの内容、および判定部402の機能が第1の実施の形態と異なっている。その他の構成および機能は、第1の実施の形態にかかるICカード100の構成を表すブロック図である図1と同様であるので、同一符号を付し、ここでの説明は省略する。
パラメータ記憶部430は、さらに領域Iを備え、関数値Vおよび関数値Vの署名Sを領域Iに記憶する点が、第1の実施の形態と異なっている。なお、署名Sは、デバイス製造者が、一方向性関数CHの構成、公開鍵CPK、および状態情報の初期値(C0、R0)を設定し、関数値V0=CH(CPK、C0、S0)を計算した後、S=Sign(SK、V0)により予め計算し、デバイス製造時にパラメータ記憶部430の領域Iに記憶する。
ここで、Signは署名生成関数を表し、SKはデバイス製造者の署名鍵を表す。また、以下では、Ver(PK、V、S)によって署名検証関数を表す。PKは、デバイス製造者の検証鍵を表す。署名SがPKを用いたVの署名として正しいことが検証された場合、Ver(PK、V、S)は「accept」を出力する。一方、署名が正しくない場合、Ver(PK、V、S)は「reject」を出力する。
デバイス製造者の検証鍵PKは、パラメータ記憶部430に記憶されていてもよいし、認証要求時に入出力部101から受け付けてもよい。パラメータ記憶部430に記憶する場合には、領域IIに記憶する。以下では、認証要求時に入出力部101から受け付ける場合について説明する。また、署名検証関数Verの構成はパラメータ記憶部430の領域IIに記憶する。
判定部402は、さらに、署名Sを用いて関数値Vが正当であることを判定する点が、第1の実施の形態の判定部102と異なっている。
具体的には、判定部402は、状態記憶部120から状態情報(C、R)を読み出し、パラメータ記憶部430から上限N、一方向性関数CHの構成、公開鍵CPK、関数値V、署名S、署名検証関数Verの構成を読み出す。さらに、入出力部101を通じてデバイス製造者の検証鍵PKを取得する。そして、判定部402は、読み出したCが0以上N未満の整数値であること、CH(CPK、C、R)=Vが成立すること、およびVer(PK、V、S)=acceptが成り立つことを検査する。また、判定部402は、検査結果(合格または不合格)を制御部103に通知する。
次に、このように構成された変形例1にかかるICカード400による認証制御処理について図5を用いて説明する。図5は、変形例1における認証制御処理の全体の流れを示すフローチャートである。
ステップS501からステップS502までの、認証要求受付処理および状態情報取得処理は、第1の実施の形態にかかるICカード100におけるステップS201からステップS202までと同様の処理なので、その説明を省略する。
状態情報を取得後、判定部402は、パラメータ記憶部430から一方向性関数CHの構成、公開鍵CPK、関数値V、認証の連続失敗回数の上限Nに加え、署名Sおよび署名検証関数Verの構成を読み出す(ステップS503)。次に、判定部402は、入出力部101を介して検証鍵PKを取得する(ステップS504)。
次に、判定部402は、Cが0以上N未満の整数値であり、かつ、CH(CPK、C、R)=Vが成り立ち、かつ、Ver(PK、V、S)=acceptが成り立つか否かを検査する(ステップS505)。
ステップS506からステップS519までは、第1の実施の形態にかかるICカード100におけるステップS205からステップS218までと同様の処理なので、その説明を省略する。
次に、状態情報の遷移について図6を用いて説明する。図6は、変形例1における状態情報の遷移例を示す模式図である。
同図に示すように、変形例1での状態情報の遷移は図3に示す第1の実施の形態と同様であるが、状態情報の検証に用いる関数値Vの署名S(=Sign(SK、V))をさらに検証することができる。このため、よりセキュリティを高めることができる。
また、状態情報(C、R)は領域IIIに記憶されているため、攻撃者はRを読み出すことはできない。一方、デバイス製造者の署名鍵SKはデバイス内部には記憶されておらず、デバイス製造者が適切に管理しているため、攻撃者はSKを取得することはできない。すなわち、攻撃者は、署名Sを偽造することも困難である。このため、攻撃者は、状態情報(C、R)および署名Sを、C’が0以上N未満、かつ、V’=CH(CPK、C’、R’)、かつ、Ver(PK、V’、S’)=acceptとなるような状態情報(C’、R’)およびS’に書き換えることは困難である。
さらに、デバイス製造者の検証鍵PKを外部から受け付けるように構成すれば、例えば署名と検証鍵とを合わせて書き換えることにより、署名の検証処理を不正に回避することを防止できる。言い換えると、デバイス製造者の検証鍵PKを外部から受け付けることにより、状態情報がデバイス製造者の意図どおりに遷移していることが確認できる。また、変形例1では、署名Sの記憶領域が必要となるとともに、デジタル署名の検証処理による処理量が増加するものの、関数値Vを領域Iに記憶することが可能となる。
(変形例2)
変形例2では、第1の実施の形態にかかる認証装置において、利用者が認証に用いる情報についてのデジタル署名T(以下、単に署名Tという。)を、一方向性関数CHと逆関数CHIの入力として追加する。以下では、PINを認証に用いるものとする。また、Signを署名生成関数とし、Verを署名検証関数とする。また、SKおよびPKは、それぞれ署名鍵および検証鍵を表す。すなわち、署名T=Sign(SK、PIN)であるものとする。
変形例2では、第1の実施の形態にかかる認証装置において、利用者が認証に用いる情報についてのデジタル署名T(以下、単に署名Tという。)を、一方向性関数CHと逆関数CHIの入力として追加する。以下では、PINを認証に用いるものとする。また、Signを署名生成関数とし、Verを署名検証関数とする。また、SKおよびPKは、それぞれ署名鍵および検証鍵を表す。すなわち、署名T=Sign(SK、PIN)であるものとする。
変形例2では、偽造困難であるデジタル署名を利用してSK、CSK、およびPINの正当性を保証することにより、領域IVを使用せずとも安全な認証装置を構成することが可能となる。
ここで、変形例2の一方向性関数CHは、公開鍵CPKのほかに、署名T、失敗回数C、データRを入力として、関数値Vを出力する関数である。一方、逆関数CHIは、秘密鍵CSKのほかに、署名T、失敗回数C、データR、失敗回数C’(C’はC+1またはC0)を入力として、CH(CPK、T、C、R)=CH(CPK、T、C’、R’)=VとなるデータR’を出力する関数である。
図7は、変形例2にかかる認証装置としてのICカード500の構成を示すブロック図である。図7に示すように、ICカード500は、状態記憶部120と、パラメータ記憶部530と、入出力部101と、判定部502と、制御部103と、認証部504と、更新部505とを備えている。
変形例2では、判定部502の機能、認証部504、更新部505の機能、およびパラメータ記憶部530の構成が、変形例1と異なっている。その他の構成および機能は、変形例1にかかるICカード400の構成を表すブロック図である図4と同様であるので、同一符号を付し、ここでの説明は省略する。
図5に示すように、変形例2では、状態記憶部120は、領域IIIを備えている。また、パラメータ記憶部530は、領域IIと、領域IIIとを備えている。
状態記憶部120の領域IIIには、第1の実施の形態における変形例1と同様に、認証の失敗回数CとデータRからなる状態情報を記憶する。さらに、変形例2では、第1の実施の形態における変形例1と同様に、上述のように設定された(C0、R0)に対して、署名S=Sign(SK,CH(CPK、T、C0、R0))を利用する。
パラメータ記憶部530は、認証処理に用いる各種情報(パラメータ)を記憶する。具体的には、パラメータ記憶部530は、領域IIに、認証の連続失敗回数の上限N、予め定められたビット長k0、k1、k2、一方向性関数CHの構成、逆関数CHIの構成、関数値V、公開鍵CPK、署名生成関数の構成Sign、署名検証関数の構成Ver、検証鍵PKを記憶する。また、パラメータ記憶部530は、領域IIIに、秘密鍵CSK、署名鍵SK、署名T、Sを記憶する。
このように、本変形例2のパラメータ記憶部530は、秘密鍵CSKとPINとを記憶するための領域IVを備えず、代わりに、秘密鍵CSKとPINの署名Tとを記憶する領域IIIを備えている。
なお、関数の構成(一方向性関数CHの構成、逆関数CHIの構成、署名生成関数Signの構成、署名検証関数Verの構成)とは、各関数の機能を実現するために必要な情報を表し、判定部502や更新部505が各関数を実行するときにパラメータ記憶部530から読み出す。判定部502や更新部505が内部に各関数の機能を備える場合は、パラメータ記憶部530に各関数の構成を記憶しなくてもよい。
判定部502は、入出力部101からの要求を受け、パラメータ記憶部530に記憶されたパラメータを用いて、状態記憶部120に記憶されている状態情報が健全であること、および状態情報から算出した連続失敗回数が上限Nより小さいことを判定する。ここで、状態情報が健全であるとは、状態情報について不正な書き換えが行われていないことを意味する。
認証部504は、入出力部101からPINを受け付け、パラメータ記憶部から検証鍵PKと署名Tを入手して、Ver(PK、PIN、T)が受理されることを確認することにより、利用者の認証を行う。
更新部505は、認証部504による判定結果に応じて、パラメータ記憶部530に記憶されている更新情報と、状態記憶部120に記憶されている更新前の状態情報とから、更新後の状態情報を生成し、状態記憶部120に記憶される状態情報を更新する。
次に、このように構成された変形例2にかかるICカード500による認証制御処理について図8を用いて説明する。図8は、変形例2における認証制御処理の全体の流れを示すフローチャートである。
ステップS601からステップS602までの、認証要求受付処理および状態情報取得処理は、第1の実施の形態の変形例1にかかるICカード400におけるステップS501からステップS502までと同様の処理なので、その説明を省略する。
状態情報を取得後、判定部502は、パラメータ記憶部530から一方向性関数CHの構成、公開鍵CPK、署名生成関数Signの構成、署名検証関数Verの構成、検証鍵PK、署名鍵SK、署名T、署名S、関数値V、および認証の連続失敗回数の上限Nを読み出す(ステップS603)。
そして、判定部502は、Cが0以上N未満の整数値であり、かつ、CH(CPK、T、C、R)=Vが成り立ち、かつ、Ver(PK、V、S)が受理され、かつ、判定部502の内部で選択した乱数Uに対してVer(PK、U、Sign(SK、U))が受理されることを検査する(ステップS604)。
Ver(PK、U、Sign(SK、U))=acceptは、乱数Uを用いたチャレンジ−レスポンス方式によりSKが改ざんされていないことを検証する処理である。後述するように、本実施の形態では、認証ごとに署名Tを算出して署名Tの改ざんを検知するため、署名Tの算出に用いる署名鍵SKの改ざんを本ステップで検証している。なお、署名Tを算出して改ざんを検知しない場合は、乱数UによるSKの改ざんチェックを実行しないように構成してもよい。
なお、処理を簡素化するため、CH(CPK、T、C、R)=V、かつ、Ver(PK、V、S)=acceptを検査する代わりに、Ver(PK、CH(CPK、T、C、R)、S)を検査するように構成してもよい。
いずれかの検査に不合格の場合は(ステップS604:NO)、判定部502は、制御部103に不合格を通知する。制御部103は、不合格の通知を受けて認証部504に認証処理の停止を指示する(ステップS605)。また、制御部103は、ICカード500の利用要求を拒絶する。
検査に合格した場合は(ステップS604:YES)、判定部502は、制御部103に合格を通知する。制御部103は、合格の通知を受けて認証部504に認証処理の実行を指示する(ステップS606)。
認証部504は、認証処理の実行が指示されると、入出力部101からPINを受け付け、パラメータ記憶部530から署名検証関数Verの構成、検証鍵PK、署名Tを読み込む(ステップS607)。そして、認証部504は、署名T=Sign(SK、PIN)、かつ、Ver(PK、PIN、T)が受理されるか否かを確認することにより、利用者が認証されたか否かを判定する(ステップS608)。なお、署名T=Sign(SK、PIN)を確認するのは、署名Tの改ざん等を検知可能として、より安全性を高めるためである。
認証された場合は(ステップS608:YES)、認証部504は、更新部505にPINを伝え、認証合格に基づく状態情報の更新(初期化)を指示する。更新部505は、更新の指示を受けて、認証部504からPINを取得するとともに、状態記憶部120から状態情報(C、R)を取得する(ステップS609)。また、更新部505は、パラメータ記憶部530から、更新情報(逆関数CHIの構成、秘密鍵CSK)、署名検証関数Verの構成、検証鍵PK、署名Tを取得する(ステップS610)。
そして、更新部505は、署名T=Sign(SK、PIN)、かつ、Ver(PK、U、Sign(SK、U))が受理され、かつ、Ver(PK、PIN、T)が受理されることを検査する(ステップS611)。なお、本ステップは、例えば状態情報の更新処理(ステップS612〜ステップS613)が独立したモジュールで構成されており、攻撃者がこのモジュールを直接実行するような攻撃を実行した場合であっても不正に状態情報が更新されないようにするための検査処理である。
検査に不合格となる場合は(ステップS611:NO)、更新部505は、制御部103に認証処理の停止を指示する。制御部103は、指示を受けて認証部504に認証処理の停止を指示する(ステップS605)。
検査に合格となる場合は(ステップS611:YES)、更新部505は、ステップS610で取得した情報を用いて、更新後のデータR’を、R’=CHI(CSK、T、C、0、R)によって計算する(ステップS612)。
ステップS613からステップS614までの、状態情報保存処理および合格出力処理は、第1の実施の形態の変形例1にかかるICカード400におけるステップS513からステップS514までと同様の処理なので、その説明を省略する。
ステップS608で、利用者が認証されなかった場合は(ステップS608:NO)、認証部504は、更新部505に認証不合格に基づく状態情報の更新を指示する。更新部505は、更新の指示を受けて状態記憶部120から状態情報(C、R)を取得する(ステップS615)。また、更新部505は、パラメータ記憶部530から、更新情報(逆関数CHIの構成、秘密鍵CSK)、一方向性関数CHの構成、公開鍵CPK、署名検証関数Verの構成、検証鍵PK、署名S、署名Tを取得する(ステップS616)。
そして、更新部505は、Ver(PK、CH(CPK、T、C、R)、S)が受理されるか検査する(ステップS617)。なお、本ステップは、攻撃者によりステップS618〜ステップS619の状態情報更新処理が不正に実行されないようにするための検査処理である。
検査に不合格となる場合は(ステップS617:NO)、更新部505は、制御部103に認証処理の停止を指示する。制御部103は、指示を受けて認証部504に認証処理の停止を指示する(ステップS605)。
検査に合格となる場合は(ステップS617:YES)、更新部505は、ステップS616で取得した情報を用いて、更新後のデータR’を、R’=CHI(CSK、T、C、C+1、R)によって計算する(ステップS618)。
ステップS619からステップS620までの、状態情報保存処理および不合格出力処理は、第1の実施の形態の変形例1にかかるICカード400におけるステップS518からステップS519までと同様の処理なので、その説明を省略する。
上述のように、状態情報(C、R)は領域IIIに記憶されているため、攻撃者はRを読み出すことはできない。また、逆関数CHIの計算で用いる秘密鍵CSKは領域IIIに記憶されているため、攻撃者は秘密鍵CSKを読み出すことはできないが書き換えることはできる。しかし、CSKに対応する公開鍵CPKは書き換えることができない領域IIに記憶されており、署名生成関数Signは偽造困難であるため、CSKを書き換えたのちに状態情報を更新したとしても、次回の認証で署名Sとの間で、V=CH(CPK、T、C、R)かつVer(PK、V、S)が受理されることは起こりえない。
また、状態情報の検証時に比較の対象となる比較値である関数値V=CH(CPK、T、C、R)は、上述のように、状態情報の初期値(C0、R0)について一意に定まる。すなわち、認証の失敗回数に依存する状態情報に関して不変である。このため、状態ごとにハッシュ関数で算出した認証子を記憶し、記憶した認証子と比較することにより状態の正当性を検証する方法などと比べて、記憶領域を削減することが可能となる。
このように、変形例2にかかる認証装置では、連続失敗回数を含む認証の状態情報を記憶し、状態情報が正しいことおよび連続失敗回数が上限を超えていないことを検査し、検査に合格した場合にのみ認証情報による認証を行うとともに、物理的な解析が困難な記憶部に記憶された更新情報で状態情報を更新することができる。これにより、物理的な解析に対しても悪意ある利用から保護可能であり、かつ、認証の連続失敗回数が上限を超えた場合に使用を拒絶できる認証装置を提供することが可能となる。すなわち、物理的な解析による悪意の利用を抑止しつつ、認証の試行回数の上限の増加に伴う安全性の低下を回避可能となる。
なお、判定部502で、乱数Uを用いたチャレンジ−レスポンス方式によりSKが改ざんされていないことを検証する処理は、U=Sign(SK、SK)を予め計算してパラメータ記憶部530の領域IIIに記憶しておき、Ver(PK、SK、U)が受理されることを検証するように構成してもよい。
(第2の実施の形態)
第1の実施の形態では、認証に成功した場合、状態情報が、失敗回数Cを初期値C0=0、データRを失敗回数C0に対応するR0に戻した状態情報に初期化される。このように失敗回数を初期化する方法では、失敗回数Cの初期値である0が容易に推定されるという問題が生じうる。
第1の実施の形態では、認証に成功した場合、状態情報が、失敗回数Cを初期値C0=0、データRを失敗回数C0に対応するR0に戻した状態情報に初期化される。このように失敗回数を初期化する方法では、失敗回数Cの初期値である0が容易に推定されるという問題が生じうる。
そこで、第2の実施の形態にかかる認証装置は、状態情報を、認証が失敗するごとに遷移する認証の状態(失敗回数)を特定可能な第1状態情報と、直近(最新)の認証成功時の状態を特定可能な第2状態情報とに分けることにより、状態情報の初期化を行わずに失敗回数を判定可能とする。
図9は、第2の実施の形態にかかるICカード700の構成を示すブロック図である。図9に示すように、ICカード700は、第1状態記憶部740と、第2状態記憶部750と、パラメータ記憶部130と、入出力部101と、判定部702と、制御部103と、認証部704と、第1更新部706と、第2更新部707とを備えている。
第2の実施の形態では、状態記憶部120の代わりに第1状態記憶部740と第2状態記憶部750とを備えたこと、更新部105の代わりに第1更新部706と第2更新部707とを備えたこと、および判定部702の機能と認証部704の機能とが、第1の実施の形態と異なっている。その他の構成および機能は、第1の実施の形態にかかるICカード100の構成を表すブロック図である図1と同様であるので、同一符号を付し、ここでの説明は省略する。
第1状態記憶部740は、第1の実施の形態の状態記憶部120が記憶する状態情報(C、R)と同様の情報である、第1状態情報(C、R)を記憶する。第1状態情報(C、R)は、認証成功時に初期化されない点が異なるのみで、データ構造は第1の実施の形態の状態情報(C、R)と同じである。なお、失敗回数Cの初期値C0は任意の値でよいが、以下では、C0=1であるものとして説明する。
第2状態記憶部750は、認証に最後に成功したときの認証失敗回数に依存する情報である第2状態情報(C’、R’)を記憶する。
C’はk0ビットで表現される整数値であり、初期値は第1状態情報(C、R)の初期値C0と関連する値としてC’0=C0+J(Jは予め設定された整数値)として設定される。以下では、J=1、すなわち、C’0=1−1=0であるとして説明する。なお、Jは1に限られず、固定値であればどのような整数値であってもよい。
データR’は一方向性関数CHの入力の第2成分となるk1ビットのビット列である。データR’の初期値は、k1ビットのR’0とする。R’0はランダムな値または意図して選択された値など、任意の値を設定する。
なお、第1状態情報は第1状態記憶部740の領域IIIに記憶され、第2状態情報は第2状態記憶部750の領域IIIに記憶される。また、第1状態記憶部740と第2状態記憶部750とは物理的に区別する必要はなく、同一の記憶媒体上に実現するように構成してもよい。
第1更新部706は、第1の実施の形態の更新部105と同様の方法により、逆関数CHIを用いて第1状態情報を更新し、更新した第1状態情報を第1状態記憶部740に保存する。
第2更新部707は、認証に合格した場合に認証部704からの指示を受け、認証に合格した場合の失敗回数からJ(=1)を減算した値を新たな失敗回数とし、新たな失敗回数に対応するデータR”を逆関数CHIによって算出する。具体的には、認証に合格した場合は、第2更新部707は、R”=CHI(CSK,C−1,0,R’)によって、更新後のデータR”を算出する。そして、第2更新部707は、新たな失敗回数と算出したデータR”とを含む第2状態情報で、第2状態記憶部750の第2状態情報を更新する。
判定部702は、入出力部101からの要求を受け、パラメータ記憶部130に記憶されたパラメータを用いて、第1状態記憶部740に記憶されている第1状態情報および第2状態記憶部750に記憶されている第2状態情報が健全であること、および第1状態情報と第2状態情報とから算出した連続失敗回数が上限Nより小さいことを判定する。
具体的には、判定部702は、第1状態記憶部740から第1状態情報(C、R)を読み出し、第2状態記憶部750から第2状態情報(C’、R’)を読み出し、パラメータ記憶部130から上限N、一方向性関数CHの構成、公開鍵CPK、関数値Vを読み出す。そして、判定部702は、C−C’が1以上N未満の整数値であること、CH(CPK、C、R)=Vが成立すること、およびCH(CPK、C’、R’)=Vが成立することを検査する。また、判定部702は、検査結果(合格または不合格)を制御部103に通知する。
なお、物理的な解析によりデータが書き換えられることなく、正しく認証処理が行われている場合に、利用者の認証がL回連続(L=0、1、...、N−1)して失敗すると、第1状態情報に含まれるCと第2状態情報に含まれるC’と上限Nの間にはC−C’≦Nの関係が成り立つ。一方、正しく認証処理が行われている場合に、L=N回連続して失敗すると、C−C’=N+1の関係が成立する。すなわち、正しく認証処理が行われている場合は、認証の連続失敗回数がN回未満であることはC−C’が1以上N以下の整数値であるときに限られる。
認証部704は、認証合格の場合に第1更新部706に第1状態情報の更新を指示し、認証不合格の場合に第2更新部707に第2状態情報の更新を指示する。
具体的には、認証部704は、不合格と判定した場合には、第1更新部706に第1状態情報の更新を指示して、さらに入出力部101に認証不合格の情報を出力する。また、認証部704は、合格と判定した場合には、第2更新部707に状態情報の更新を指示して、さらに入出力部101に認証合格の情報を出力する。また、認証部704は、制御部103から認証処理の停止の指示を受け付けた場合は、認証処理を停止し、認証処理を停止した旨を入出力部101に出力する。
次に、このように構成された第2の実施の形態にかかるICカード700による認証制御処理について図10を用いて説明する。図10は、第2の実施の形態における認証制御処理の全体の流れを示すフローチャートである。
まず、入出力部101は、外部装置から認証要求および認証情報としてPINを受け付ける(ステップS801)。そして、入出力部101は、判定部702に状態情報の判定を要求する。
判定の要求を受け、判定部702は、第1状態記憶部740から第1状態情報(C、R)を読み出し、第2状態記憶部750から第2状態情報(C’、R’)を読み出す(ステップS802)。また、判定部702は、パラメータ記憶部130から一方向性関数CHの構成、公開鍵CPK、関数値V、認証の連続失敗回数の上限Nを読み出す(ステップS803)。そして、判定部702は、C−C’が1以上N以下の整数値であり、かつ、CH(CPK、C、R)=V、かつ、CH(CPK、C’、R’)=Vが成り立つか否かを検査する(ステップS804)。
ステップS805からステップS808までの、認証停止処理、認証指示処理、および認証処理は、第1の実施の形態にかかるICカード100におけるステップS205からステップS208までと同様の処理なので、その説明を省略する。
認証された場合は(ステップS808:YES)、認証部704は、第2更新部707に認証合格に基づく状態情報の更新を指示する。第2更新部707は、更新の指示を受けて、第1状態記憶部740から第1状態情報(C、R)を取得し、第2状態記憶部750から第2状態情報(C’、R’)を取得する(ステップS809)。
次に、第2更新部707は、取得した第1状態情報に含まれるCと取得した第2状態情報に含まれるC’との差分C−C’を算出し、算出したC−C’が1と等しいか否かを判断する(ステップS810)。
C−C’が1と等しい場合は(ステップS810:YES)、認証部704は、認証に合格したことを、入出力部101を介して外部装置に出力するとともに(ステップS814)、制御部103に認証合格を通知する。なお、制御部103は、認証合格を受け付けた場合にはICカード700の利用要求を許可し、認証制御処理を終了する。
C−C’が1と等しくない場合は(ステップS810:NO)、第2更新部707は、パラメータ記憶部130から、更新情報(逆関数CHIの構成、秘密鍵CSK)を取得する(ステップS811)。そして、第2更新部707は、取得した更新情報を用いて、更新後のデータR”を、R”=CHI(CSK、C’、C−1、R’)によって計算する(ステップS812)。さらに、第2更新部707は、第2状態記憶部750に記憶される第2状態情報を(C−1、R”)に更新する(ステップS813)。
ステップS808で、利用者が認証されなかった場合は(ステップS808:NO)、認証部704は、第1更新部706に認証不合格に基づく状態情報の更新を指示する。第1更新部706は、更新の指示を受けて第1状態記憶部740から第1状態情報(C、R)を取得する(ステップS815)。また、第1更新部706は、パラメータ記憶部130から、更新情報(逆関数CHIの構成、秘密鍵CSK)を取得する(ステップS816)。そして、第1更新部706は、取得した更新情報を用いて、更新後のデータR’を、R’=CHI(CSK、C、C+1、R)によって計算する(ステップS817)。さらに、第1更新部706は、第1状態記憶部740に記憶される第1状態情報を(C+1、R’)に更新する(ステップS818)。
ステップS819は、第1の実施の形態にかかるICカード100におけるステップS218と同様の処理なので、その説明を省略する。
次に、状態情報の遷移について図11を用いて説明する。図11は、第2の実施の形態における状態情報の遷移例を示す模式図である。なお、同図は、認証に2回続けて失敗したのちに、認証に合格した場合の状態の遷移を表す図である。
第1の実施の形態の状態情報の遷移を表す図3では、認証に合格した場合に最も左の状態情報(0、R0)に戻るのに対し、第2の実施の形態の状態情報の遷移を表す図11では、認証成功時の第1状態情報(3、R2))に対応する第2状態情報(2、R’2)が保存される点が異なる。
以上のように、第2の実施の形態では、第1状態情報に含まれる失敗回数Cおよび第2状態情報に含まれる失敗回数C’を初期化することなく用いるため、第1の実施の形態に比べて初期化による攻撃に耐性をもたせることが可能となる。
また、第1状態情報(C,R)と第2状態情報(C’,R’)は領域IIIに記憶されているため、攻撃者はRまたはR’を読み出すことはできない。一方、秘密鍵CSKは領域IVに記憶されているため、攻撃者はCSKを読み出すことも書き換えることもできない。
攻撃者はCSKを読み出すことができないため、第1状態情報(C,R)および第2状態情報(C’,R’)を、C”−C'''が1以上N以下かつCH(CPK,C”,R”)=VかつCH(CPK,C''',R''')=Vとなるような第1状態情報(C”,R”)または第2状態情報(C''',R''')に書き換えることは困難である。
また、関数値Vは第1状態情報の初期値(C0,R0)について一意に定まり、認証の失敗回数に依存した状態情報に関して不変であるため、記憶領域を削減することが可能となる。さらに、第2の実施の形態の認証装置では、認証の連続失敗回数によらず、常に第1状態情報(C、R)および第2状態情報(C’、R’)に一方向性関数CHを一度だけ施せば関数値Vと比較することができる。これにより、認証の状態を検証するための処理負荷を軽減することができる。
(変形例3)
変形例3では、第1の実施の形態の変形例1と同様に、関数値Vにデバイス製造者の署名Sを添付する方法を説明する。
変形例3では、第1の実施の形態の変形例1と同様に、関数値Vにデバイス製造者の署名Sを添付する方法を説明する。
図12は、変形例3にかかるICカード1000の構成を示すブロック図である。図12に示すように、ICカード1000は、第1状態記憶部740と、第2状態記憶部750と、パラメータ記憶部1030と、入出力部101と、判定部1002と、制御部103と、認証部704と、第1更新部706と、第2更新部707とを備えている。
変形例3では、パラメータ記憶部1030に記憶されたパラメータの内容、および判定部1002の機能が第2の実施の形態と異なっている。その他の構成および機能は、第2の実施の形態にかかるICカード700の構成を表すブロック図である図9と同様であるので、同一符号を付し、ここでの説明は省略する。
パラメータ記憶部1030は、さらに領域Iを備え、関数値Vおよび関数値Vの署名Sを領域Iに記憶する点が、第2の実施の形態と異なっている。
なお、署名Sは、デバイス製造者が、一方向性関数CHの構成、公開鍵CPK、および状態情報の初期値(C0、R0)を設定し、関数値V0=CH(CPK、C0、S0)を計算した後、S=Sign(SK、V0)により予め計算し、デバイス製造時にパラメータ記憶部1030の領域Iに記憶する。また、Sign、SK、Ver、およびPKは、変形例1と同様の関数または情報を表す。
デバイス製造者の検証鍵PKは、パラメータ記憶部1030に記憶されていてもよいし、認証要求時に入出力部101から受け付けてもよい。パラメータ記憶部1030に記憶する場合には、領域IIに記憶する。以下では、認証要求時に入出力部101から受け付ける場合について説明する。また、署名検証関数Verの構成はパラメータ記憶部1030の領域IIに記憶する。
判定部1002は、さらに、署名Sを用いて関数値Vが正当であることを判定する点が、第2の実施の形態の判定部702と異なっている。
次に、このように構成された変形例3にかかるICカード1000による認証制御処理について図13を用いて説明する。図13は、変形例3における認証制御処理の全体の流れを示すフローチャートである。
ステップS1101からステップS1102までの、認証要求受付処理および状態情報取得処理は、第2の実施の形態にかかるICカード700におけるステップS801からステップS802までと同様の処理なので、その説明を省略する。
状態情報を取得後、判定部1002は、パラメータ記憶部1030から一方向性関数CHの構成、公開鍵CPK、関数値V、認証の連続失敗回数の上限Nに加え、署名Sおよび署名検証関数Verの構成を読み出す(ステップS1103)。次に、判定部1002は、入出力部101を介して検証鍵PKを取得する(ステップS1104)。
次に、判定部1002は、C−C’が1以上N以下の整数値であり、かつ、CH(CPK、C、R)=V、かつ、CH(CPK、C’、R’)=V、かつ、Ver(PK、V、S)=acceptが成り立つか否かを検査する(ステップS1105)。
ステップS1106からステップS1120までは、第2の実施の形態にかかるICカード700におけるステップS805からステップS819までと同様の処理なので、その説明を省略する。
次に、状態情報の遷移について図14を用いて説明する。図14は、変形例3における状態情報の遷移例を示す模式図である。
同図に示すように、変形例3での状態情報の遷移は図11に示す第2の実施の形態と同様であるが、状態情報の検証に用いる関数値Vの署名S(=Sign(SK、V))をさらに検証することができる。このため、よりセキュリティを高めることができる。
(変形例4)
変形例4では、第1の実施の形態における変形例2と同様に、デジタル署名を用いてCSKおよびPINの正当性を保証することにより、第2の実施の形態の変形例3に相当する認証装置を、領域IVを使用せずに構成する。Sign、Ver、SK、PKは変形例2と同じ意味で用いる。
変形例4では、第1の実施の形態における変形例2と同様に、デジタル署名を用いてCSKおよびPINの正当性を保証することにより、第2の実施の形態の変形例3に相当する認証装置を、領域IVを使用せずに構成する。Sign、Ver、SK、PKは変形例2と同じ意味で用いる。
図15は、変形例4にかかるICカード1500の構成を示すブロック図である。図15に示すように、ICカード1500は、第1状態記憶部740と、第2状態記憶部750と、パラメータ記憶部1530と、入出力部101と、判定部1502と、制御部103と、認証部1504と、第1更新部1506と、第2更新部1507とを備えている。
変形例4では、判定部1502、認証部1504、第1更新部1506、および第2更新部1507の機能と、パラメータ記憶部1530の構成とが、第2の実施の形態と異なっている。その他の構成および機能は、第2の実施の形態の変形例2にかかるICカード1000の構成を表すブロック図である図12と同様であるので、同一符号を付し、ここでの説明は省略する。
第1更新部1506は、第1の実施の形態の変形例2の更新部505と同様の方法により、逆関数CHIを用いて第1状態情報を更新し、更新した第1状態情報を第1状態記憶部740に保存する。
第2更新部1507は、第2の実施の形態の変形例3の第2更新部707と同様の方法により第2状態記憶部750の第2状態情報を更新する。ただし、変形例2と同様に、CHIの入力には署名T=Sign(SK、PIN)を含む。
判定部1502は、入出力部101からの要求を受け、パラメータ記憶部1530に記憶されたパラメータを用いて、第1状態記憶部740に記憶されている第1状態情報および第2状態記憶部750に記憶されている第2状態情報が健全であること、および第1状態情報と第2状態情報とから算出した連続失敗回数が上限Nより小さいことを判定する。
認証部1504は、入出力部101からPINを受け付け、パラメータ記憶部1530から検証鍵PKと署名Tを入手して、Ver(PK、PIN、T)が受理されることを確認することにより、利用者の認証を行う。
パラメータ記憶部1530は、認証処理に用いる各種情報(パラメータ)を記憶する。具体的には、パラメータ記憶部1530は、領域IIに、認証の連続失敗回数の上限N、一方向性関数CHの構成、逆関数CHIの構成、関数値V、公開鍵CPK、署名生成関数の構成Sign、署名検証関数の構成Ver、検証鍵PKを記憶する。また、パラメータ記憶部1530は、領域IIIに、秘密鍵CSK、署名鍵SK、署名T=Sign(SK、PIN)、および署名S=Sign(SK、CH(CPK、T、C0、R0))を記憶する。
次に、このように構成された変形例4にかかるICカード1500による認証制御処理について図16を用いて説明する。図16は、変形例4における認証制御処理の全体の流れを示すフローチャートである。
ステップS1601からステップS1602までの、認証要求受付処理および状態情報取得処理は、第2の実施の形態の変形例3にかかるICカード1000におけるステップS1101からステップS1102までと同様の処理なので、その説明を省略する。
状態情報を取得後、判定部1502は、パラメータ記憶部1530から一方向性関数CHの構成、公開鍵CPK、署名生成関数Signの構成、署名検証関数Verの構成、検証鍵PK、署名鍵SK、署名T、署名S、関数値V、および認証の連続失敗回数の上限Nを読み出す(ステップS1603)。
そして、判定部1502は、C−C’が1以上N以下の整数値であり、かつ、CH(CPK、T、C、R)=V、かつ、CH(CPK、T、C’、R’)=V、かつ、Ver(PK、V、S)=accept、かつ、判定部1502内部で生成した乱数Uに対してVer(PK、U、Sign(SK,U))が受理されることを検査する(ステップS1604)。
なお、処理を簡素化するため、CH(CPK、T、C、R)=V、かつ、CH(CPK、T、C’、R’)=V、かつ、Ver(PK、V、S)=acceptを検査する代わりに、CH(CPK、T、C、R)=CH(CPK、T、C’、R’)、かつ、Ver(PK、CH(CPK、T、C、R)、S)=acceptを検査するように構成してもよい。
ステップS1605からステップS1608までの、認証停止処理、認証指示処理、および認証処理は、変形例2にかかるICカード500におけるステップS605からステップS608までと同様の処理なので、その説明を省略する。
認証された場合は(ステップS1608:YES)、認証部1504は、第2更新部1507に認証合格に基づく状態情報の更新を指示する。第2更新部1507は、更新の指示を受けて、第1状態記憶部740から第1状態情報(C、R)を取得し、第2状態記憶部750から第2状態情報(C’、R’)を取得する(ステップS1609)。
次に、第2更新部1507は、取得した第1状態情報に含まれるCと取得した第2状態情報に含まれるC’との差分C−C’を算出し、算出したC−C’が1と等しいか否かを判断する(ステップS1610)。
C−C’が1と等しい場合は(ステップS1610:YES)、認証部1504は、認証に合格したことを、入出力部101を介して外部装置に出力するとともに(ステップS1615)、制御部103に認証合格を通知する。なお、制御部103は、認証合格を受け付けた場合にはICカード1500の利用要求を許可し、認証制御処理を終了する。
C−C’が1と等しくない場合は(ステップS1610:NO)、第2更新部1507は、認証部1504からPINを取得し、パラメータ記憶部1530から更新情報(CHI、CSK)、Sign、Ver、SK、PK、署名S、および署名Tを取得する(ステップS1611)。
そして、第2更新部1507は、第2更新部1507で生成した乱数UについてVer(PK、U、Sign(SK、U))が受理され、かつ、Ver(PK、PIN、T)が受理されることを検査する(ステップS1612)。
検査に不合格となる場合は(ステップS1612:NO)、第2更新部1507は、制御部103に不合格を伝え、認証処理の停止を指示する。制御部103は、指示を受けて認証部504に認証処理の停止を指示する(ステップS1605)。
検査に合格となる場合は(ステップS1612:YES)、第2更新部1507は、更新後のデータR”を、R”=CHI(CSK、T、C’、C−1、R’)によって計算する(ステップS1613)。さらに、第2更新部1507は、第2状態記憶部750に記憶される第2状態情報を(C−1、R”)に更新する(ステップS1614)。
次に、認証部1504は、認証に合格したことを、入出力部101を介して外部装置に出力するとともに(ステップS1615)、制御部103に認証合格を通知する。なお、制御部103は、認証合格を受け付けた場合にはICカード1500の利用要求を許可し、認証制御処理を終了する。
ステップS1608で、利用者が認証されなかった場合は(ステップS1608:NO)、認証部1504は、第1更新部1506に認証不合格に基づく状態情報の更新を指示する。第1更新部1506は、更新の指示を受けて第1状態記憶部740から第1状態情報(C、R)を取得する(ステップS1616)。また、第1更新部1506は、パラメータ記憶部1530から、更新情報(CHI、CSK)、Ver、PK、署名S、および署名Tを取得する(ステップS1617)。
そして、第1更新部1506は、Ver(PK、CH(CPK、T、C、R)、S)が受理されるか検査する(ステップS1618)。検査に不合格となる場合は(ステップS618:NO)、第1更新部1506は、制御部103に不合格を伝え、認証処理の停止を指示する。制御部103は、指示を受けて認証部504に認証処理の停止を指示する(ステップS1605)。
検査に合格となる場合は(ステップS1618:YES)、第1更新部1506は、取得した情報を用いて、更新後のデータR’を、R’=CHI(CSK、T、C、C+1、R)によって計算する(ステップS1619)。
ステップS1620からステップS1621までの、状態情報保存処理および不合格出力処理は、変形例3にかかるICカード1000におけるステップS1119からステップS1120までと同様の処理なので、その説明を省略する。
以上のように、変形例4では、第1状態情報に含まれる失敗回数Cおよび第2状態情報に含まれる失敗回数C’を初期化することなく用いるため、第1の実施の形態に比べて初期化による攻撃に耐性をもたせることが可能となる。
また、第1状態情報(C,R)と第2状態情報(C’,R’)は領域IIIに記憶されているため、攻撃者はRまたはR’を読み出すことはできない。一方、秘密鍵CSKや署名鍵SKは領域IIIに記憶されているため、攻撃者が書き換え可能であるが、デジタル署名の検証により書き換えは検知される。
攻撃者はCSKとTを読み出すことができないため、第1状態情報(C,R)および第2状態情報(C’,R’)を、C”−C'''が1以上N以下かつCH(CPK,T、C”,R”)=CH(CPK,T、C''',R''')=VかつVer(PK、PIN、T)となるような第1状態情報(C”,R”)または第2状態情報(C''',R''')に書き換えることは困難である。
なお、判定部1502で、乱数Uを用いたチャレンジ−レスポンス方式によりSKが改ざんされていないことを検証する処理は、U=Sign(SK、SK)を予め計算してパラメータ記憶部1530の領域IIIに記憶しておき、Ver(PK、SK、U)が受理されることを検証するように構成してもよい。
(第3の実施の形態)
第3の実施の形態にかかる認証装置は、第2の実施の形態と同様に、第1状態情報と第2状態情報を用いることにより状態情報の初期化を行わずに失敗回数を判定する。なお、第3の実施の形態では、失敗回数の代わりに所定のビット数のデータDを含む状態情報(第1状態情報、第2状態情報)を用いる。
第3の実施の形態にかかる認証装置は、第2の実施の形態と同様に、第1状態情報と第2状態情報を用いることにより状態情報の初期化を行わずに失敗回数を判定する。なお、第3の実施の形態では、失敗回数の代わりに所定のビット数のデータDを含む状態情報(第1状態情報、第2状態情報)を用いる。
図17は、第3の実施の形態にかかるICカード1300の構成を示すブロック図である。図17に示すように、ICカード1300は、第1状態記憶部1340と、第2状態記憶部1350と、パラメータ記憶部1330と、入出力部101と、判定部1302と、制御部103と、認証部704と、第1更新部1306と、第2更新部1307とを備えている。
第3の実施の形態では、第1状態記憶部1340および第2状態記憶部1350に記憶する各状態情報(第1状態情報、第2状態情報)のデータ構造と、パラメータ記憶部1330に記憶するパラメータの内容と、判定部1302、第1更新部1306、および第2更新部1307の機能とが、第2の実施の形態と異なっている。その他の構成および機能は、第2の実施の形態にかかるICカード700の構成を表すブロック図である図9と同様であるので、同一符号を付し、ここでの説明は省略する。
第1状態記憶部1340は、認証の失敗回数に依存する情報である第1状態情報を記憶する。具体的には、第1状態情報はデータDとデータRとを含む。データDは、k0ビットとk1ビットのビット列をk1ビットのビット列に変換する一方向性関数Hの入力の第2成分となるk1ビットで表現される整数値である。なお、以下では、一方向性関数Hの入力の第1成分は、PINであるものとする。一方向性関数Hは、PINなどのように領域IVに記憶された情報と第1状態情報に含まれるデータとを入力値として算出した値を出力するものであれば、あらゆる一方向性関数を適用できる。
なお、データDの初期値は整数値D0とする。D0はランダムな値または意図して選択された値など、任意の値を設定する。以下では、後述する第2状態情報(D’、R’)の初期値を(D’0、R’0)としたときに、H(PIN、D’0)として算出される値を初期値D0として定める。
データRは、データDとともに認証に用いられるビット列であり、初期値をR0とする。R0はランダムな値または意図して選択された値など、任意の値を設定する。
第2状態記憶部1350は、認証に最後に成功したときの認証失敗回数に依存する情報である第2状態情報(D’、R’)を記憶する。
データD’はk1ビットで表現されるビット列であり、初期値D’0はランダムな値または意図して選択された値など、任意の値を設定する。データR’はデータD’とともに認証に用いられるビット列である。データR’の初期値R’0はランダムな値または意図して選択された値など、任意の値を設定する。
なお、後述するパラメータ記憶部1330に記憶される値Vの初期値V0は、V0=D’0+R’0となるように設定される。また、後述するように、値Vが一定となるように状態情報(D’、R’)が更新されるため、値Vは初期値V0から不変となる。また、第1状態情報のデータDとデータR、および第2状態情報のデータD’とデータR’は、値が変動する変動情報である。すなわち、これらの各データは、失敗回数の更新に応じて一方向性関数Hおよび値Vを用いてそれぞれ異なる値が算出される。
パラメータ記憶部1330は、認証情報であるPIN、ビット長k0、k1、一方向性関数Hの構成、値V、および認証の連続失敗回数の上限Nを記憶する。
なお、値VおよびPINは、第1更新部1306および第2更新部1307が状態情報を更新するときに用いる更新情報である。また、ビット長k0、k1、一方向性関数Hの構成、値V、認証の連続失敗回数の上限Nは、パラメータ記憶部1330の領域IIに記憶される。また、PINは、パラメータ記憶部1330の領域IVに記憶される。
判定部1302は、入出力部101からの要求を受け、パラメータ記憶部1330に記憶されたパラメータを用いて、第1状態記憶部740に記憶されている第1状態情報および第2状態記憶部750に記憶されている第2状態情報が健全であること、および第1状態情報と第2状態情報とから算出した連続失敗回数が上限Nより小さいことを判定する。
具体的には、判定部1302は、第1状態記憶部1340から第1状態情報(D、R)を読み出し、第2状態記憶部1350から第2状態情報(D’、R’)を読み出し、パラメータ記憶部1330から上限N、一方向性関数Hの構成、値Vを読み出す。そして、判定部1302は、読み出したDとD’について、D’=Hi(PIN、D)となる1以上N以下の整数値iが存在すること、D+R=Vが成立すること、およびD’+R’=Vが成立すること、を検査する。また、判定部1302は、検査結果(合格または不合格)を制御部103に通知する。
なお、正しく認証処理が行われている場合に、利用者が認証の要求にL回連続(L=0、1、...、N−1)して失敗すると、第1状態情報に含まれるDと第2状態情報に含まれるD’と上限Nの間には、1以上N以下の整数値iが存在してD’=Hi(PIN、D)の関係が成り立つ。一方、正しく認証処理が行われている場合に、L=N回連続して失敗すると、D’=HN+1(PIN、D)となる。すなわち、正しく認証処理が行われている場合は、認証の連続失敗回数がN回未満であることは1以上N以下の整数値iが存在してD’=Hi(PIN、D)の関係が成り立つときに限られる。
第1更新部1306は、認証部704による認証結果に応じて、パラメータ記憶部1330が記憶する情報と、第1状態記憶部1340に記憶されている更新前の状態情報とから、更新後の状態情報を生成し、第1状態記憶部1340に記憶される第1状態情報を更新する。
第1更新部1306は、第1状態情報の判定および更新に可逆な演算を用いる。可逆な演算としては、例えば加算(+)と減算(−)や、乗算(*)と除算(/)などを適用できる。以下では、第1更新部1306は、加算(+)と減算(−)を可逆な演算として用いるものとして説明する。すなわち、第1更新部1306は、パラメータ記憶部1330に記憶される値Vの値を更新情報として、D+R=Vとなるように第1状態情報(D、R)を更新する。
具体的には、認証に不合格であった場合に認証部704からの指示を受け、更新部1306は、D’=H(PIN,D)によって、更新後のデータD’を算出する。さらに、更新部1306は、R’=V−D’によって、D’+R’=Vを満たすR’を算出する。そして、更新後の第1状態情報(D’、R’)で第1状態記憶部1340の第1状態情報を更新する。
なお、第1状態情報(D、R)のD成分は記憶せずに、状態判定を行う際に第2状態情報(D’、R’)から、Hi(PIN、D’)+R=VとなるHi(PIN、D’)としてDを復元して利用することも可能である。ここで、Hi(A、B)は、関数Hを入力A、Bについて再帰的にH(A、Hi−1(A、B))として計算することを表す。
なお、第1状態情報は第1状態記憶部1340の領域IIIに記憶され、第2状態情報は第2状態記憶部1350の領域IIIに記憶される。また、第1状態記憶部1340と第2状態記憶部1350とは物理的に区別する必要はなく、同一の記憶媒体上に実現するように構成してもよい。
第2更新部1307は、認証に合格した場合に認証部704からの指示を受け、パラメータ記憶部1330が記憶するパラメータと更新前の第2状態情報とから、更新後の第2状態情報を生成し、第2状態記憶部1350に記憶される第2状態情報を更新する。
具体的には、第2更新部1307は、まずD’=Hi(PIN,D)を満たす2以上N以下の整数値iを算出する。そして、第2更新部1307は、D”=Hi−1(PIN,D)とR”=V−D”とを算出し、算出したデータD”とデータR”とを含む更新後の第2状態情報(D”、R”)で、第2状態記憶部1350の第2状態情報を更新する。
次に、このように構成された第3の実施の形態にかかるICカード1300による認証制御処理について図18を用いて説明する。図18は、第3の実施の形態における認証制御処理の全体の流れを示すフローチャートである。
まず、入出力部101は、外部装置から認証要求および認証情報としてPINを受け付ける(ステップS1401)。そして、入出力部101は、判定部1302に状態情報の判定を要求する。
判定の要求を受け、判定部1302は、第1状態記憶部1340から第1状態情報(D、R)を読み出し、第2状態記憶部1350から第2状態情報(D’、R’)を読み出す(ステップS1402)。また、判定部1302は、パラメータ記憶部1330から一方向性関数Hの構成、値V、認証の連続失敗回数の上限Nを読み出す(ステップS1403)。また、判定部1302は、入出力部101を介して利用者が入力する識別情報PINを取得する(ステップS1404)。そして、判定部1302は、D’=Hi(PIN,D)を満たす1以上N以下の整数値iが存在し、かつ、D+R=Vが成立し、かつ、D’+R’=Vが成立するか否かを検査する(ステップS1405)。
ステップS1406からステップS1409までの、認証停止処理、認証指示処理、および認証処理は、第2の実施の形態にかかるICカード700におけるステップS805からステップS808までと同様の処理なので、その説明を省略する。
認証された場合は(ステップS1409:YES)、認証部704は、第2更新部1307に認証合格に基づく状態情報の更新を指示する。第2更新部1307は、更新の指示を受けて、第1状態記憶部1340から第1状態情報(D、R)を取得し、第2状態記憶部1350から第2状態情報(D’、R’)を取得する(ステップS1410)。
次に、第2更新部1307は、取得した第1状態情報に含まれるDと取得した第2状態情報に含まれるD’との間で、D’=H(PIN、D)の関係が成り立つか否かを判断する(ステップS1411)。
D’=H(PIN、D)の関係が成り立つ場合は(ステップS1411:YES)、認証部704は、認証に合格したことを、入出力部101を介して外部装置に出力するとともに(ステップS1416)、制御部103に認証合格を通知する。なお、制御部103は、認証合格を受け付けた場合にはICカード1300の利用要求を許可し、認証制御処理を終了する。
D’=H(PIN、D)の関係が成り立たない場合は(ステップS1411:NO)、第2更新部1307は、パラメータ記憶部1330から、更新情報(値V、PIN)を取得する(ステップS1412)。そして、第2更新部1307は、取得した更新情報を用いて、D’=Hi(PIN,D)を満たす2以上N以下の整数値iを算出する(ステップS1413)。また、第2更新部1307は、更新後のデータD”を、D”=Hi−1(PIN,D)によって算出し、さらに、更新後のデータR”を、R”=V−D”によって算出する(ステップS1414)。次に、第2更新部1307は、第2状態記憶部1350に記憶される第2状態情報を(D”、R”)に更新する(ステップS1415)。
ステップS1409で、利用者が認証されなかった場合は(ステップS1409:NO)、認証部704は、第1更新部1306に認証不合格に基づく状態情報の更新を指示する。第1更新部1306は、更新の指示を受けて第1状態記憶部1340から第1状態情報(D、R)を取得する(ステップS1417)。また、第1更新部1306は、パラメータ記憶部1330から、更新情報(値V、PIN)を取得する(ステップS1418)。そして、第1更新部1306は、取得した更新情報を用いて、更新後のデータD’を、D’=H(PIN,D)で算出し、更新後のデータR’をR’=V−D’で算出する(ステップS1419)。さらに、第1更新部1306は、第1状態記憶部1340に記憶される第1状態情報を(D’、R’)に更新する(ステップS1420)。
ステップS1421は、第2の実施の形態にかかるICカード700におけるステップS819と同様の処理なので、その説明を省略する。
次に、状態情報の遷移について図19を用いて説明する。図19は、第3の実施の形態における状態情報の遷移例を示す模式図である。なお、同図は、認証に2回続けて失敗したのちに、認証に合格した場合の状態の遷移を表す図である。
第2の実施の形態と同様に、第3の実施の形態の状態情報の遷移を表す図19では、認証成功時の第1状態情報(D2、R2))に対応する第2状態情報(D’2、R’2)が保存される。すなわち、第1の実施の形態のように、認証成功時に状態が初期化されることはない。
以上のように、第3の実施の形態では、第1状態情報に含まれるデータDおよび第2状態情報に含まれるデータD’を初期化することなく用いるため、第1の実施の形態に比べて初期化による攻撃に耐性をもたせることが可能となる。
また、第1状態情報(D、R)と第2状態情報(D’、R’)は領域IIIに記憶されているため、攻撃者はRまたはR’を読み出すことはできない。一方、識別情報PINは領域IVに記憶されているため、攻撃者はPINを読み出すことも書き換えることもできない。
攻撃者はPINを読み出すことができないため、第1状態情報(D、R)および第2状態情報(D’、R’)を、1以上N以下の整数値iが存在し、かつ、D'''=Hi(PIN、D”)の関係が成り立ち、D”+R”=VかつD'''+R'''=Vとなるような第1状態情報(D”、R”)または第2状態情報(D'''、R''')に書き換えることは困難である。
また、状態情報の検証時に比較の対象となる比較値である値Vは、第2状態情報の初期値(D’0、R’0)について一意に定まり、認証の失敗回数に依存した状態情報に関して不変であるため、記憶領域を削減することが可能となる。
(変形例5)
変形例5では、上述の変形例1および変形例3と同様に、関数値Vにデバイス製造者の署名Sを添付する方法を説明する。
変形例5では、上述の変形例1および変形例3と同様に、関数値Vにデバイス製造者の署名Sを添付する方法を説明する。
図20は、変形例5にかかるICカード1600の構成を示すブロック図である。図20に示すように、ICカード1600は、第1状態記憶部1340と、第2状態記憶部1350と、パラメータ記憶部1630と、入出力部101と、判定部1602と、制御部103と、認証部704と、第1更新部1306と、第2更新部1307とを備えている。
変形例5では、パラメータ記憶部1630に記憶されたパラメータの内容、および判定部1602の機能が第3の実施の形態と異なっている。その他の構成および機能は、第3の実施の形態にかかるICカード1300の構成を表すブロック図である図17と同様であるので、同一符号を付し、ここでの説明は省略する。
パラメータ記憶部1630は、さらに領域Iを備え、値Vおよび値Vの署名Sを領域Iに記憶する点が、第3の実施の形態と異なっている。
なお、署名Sは、デバイス製造者が、一方向性関数Hの構成、および第2状態情報の初期値(D’0、R’0)を設定し、値V0=D’0+R’0を計算した後、S=Sign(SK、V0)により予め計算し、デバイス製造時にパラメータ記憶部1630の領域Iに記憶する。また、Sign、SK、Ver、およびPKは、変形例1と同様の関数または情報を表す。
デバイス製造者の検証鍵PKは、パラメータ記憶部1630に記憶されていてもよいし、認証要求時に入出力部101から受け付けてもよい。パラメータ記憶部1630に記憶する場合には、領域IIに記憶する。以下では、認証要求時に入出力部101から受け付ける場合について説明する。また、署名検証関数Verの構成はパラメータ記憶部1630の領域IIに記憶する。
判定部1602は、さらに、署名Sを用いて値Vが正当であることを判定する点が、第3の実施の形態の判定部1002と異なっている。
次に、このように構成された変形例5にかかるICカード1600による認証制御処理について図21を用いて説明する。図21は、変形例5における認証制御処理の全体の流れを示すフローチャートである。
ステップS1701からステップS1702までの、認証要求受付処理および状態情報取得処理は、第3の実施の形態にかかるICカード1300におけるステップS1401からステップS1402までと同様の処理なので、その説明を省略する。
状態情報を取得後、判定部1602は、パラメータ記憶部1630から一方向性関数Hの構成、値V、認証の連続失敗回数の上限Nに加え、署名Sおよび署名検証関数Verの構成を読み出す(ステップS1703)。次に、判定部1602は、入出力部101を介してPINおよび検証鍵PKを取得する(ステップS1704)。
次に、判定部1602は、D’=Hi(PIN,D)を満たす1以上N以下の整数値iが存在し、かつ、D+R=Vが成立し、かつ、D’+R’=Vが成立し、かつ、Ver(PK、V、S)=acceptが成り立つか否かを検査する(ステップS1705)。
ステップS1706からステップS1721までは、第3の実施の形態にかかるICカード1300におけるステップS1406からステップS1421までと同様の処理なので、その説明を省略する。
次に、状態情報の遷移について図22を用いて説明する。図22は、変形例5における状態情報の遷移例を示す模式図である。
同図に示すように、変形例5での状態情報の遷移は図19に示す第3の実施の形態と同様であるが、状態情報の検証に用いる関数値Vの署名S(=Sign(SK、V))をさらに検証することができる。このため、よりセキュリティを高めることができる。
(変形例6)
変形例5では、一方向性関数Hの入力としてPINを利用していた。そのため、PINを安全に記憶するために領域IVを必要としていた。変形例6では、変形例2および変形例4と同様に、PINの署名T=Sign(SK,PIN)を利用し、秘密鍵SK、署名Tをパラメータ記憶部の領域IIIに記憶する。デバイス起動時に、変形例2および変形例4と同様にして、乱数Uを用いたVer(PK、U、Sign(SK、U))の検証と、入力されたPINに対するVer(PK、PIN、T)の検証により、SKとTの不正な書き換えを検出することで、領域IVを使用せずとも安全な認証装置を構成することが可能となる。
変形例5では、一方向性関数Hの入力としてPINを利用していた。そのため、PINを安全に記憶するために領域IVを必要としていた。変形例6では、変形例2および変形例4と同様に、PINの署名T=Sign(SK,PIN)を利用し、秘密鍵SK、署名Tをパラメータ記憶部の領域IIIに記憶する。デバイス起動時に、変形例2および変形例4と同様にして、乱数Uを用いたVer(PK、U、Sign(SK、U))の検証と、入力されたPINに対するVer(PK、PIN、T)の検証により、SKとTの不正な書き換えを検出することで、領域IVを使用せずとも安全な認証装置を構成することが可能となる。
なお、変形例2と変形例4と同様に、乱数Uを用いたチャレンジ−レスポンス方式によりSKが改ざんされていないことを検証する箇所は、U=Sign(SK、SK)を予め計算してパラメータ記憶部の領域IIIに記憶しておき、Ver(PK、SK、U)が受理されることを検証するように構成してもよい。
(第4の実施の形態)
第4の実施の形態にかかる認証装置は、認証の連続失敗回数に対応するデータを含む認証の状態情報を記憶し、所定の一方向性関数を用いて状態情報が正しいことを検査し、検査に合格した場合にのみ認証情報による認証を行う。なお、状態情報および状態情報の更新に利用する更新情報を、物理的な解析により外部からアクセスすることが困難な記憶部に記憶するため、悪意の利用者が、検索に合格できるように、状態情報を不正に書き換えることは困難となる。
第4の実施の形態にかかる認証装置は、認証の連続失敗回数に対応するデータを含む認証の状態情報を記憶し、所定の一方向性関数を用いて状態情報が正しいことを検査し、検査に合格した場合にのみ認証情報による認証を行う。なお、状態情報および状態情報の更新に利用する更新情報を、物理的な解析により外部からアクセスすることが困難な記憶部に記憶するため、悪意の利用者が、検索に合格できるように、状態情報を不正に書き換えることは困難となる。
図23は、第4の実施の形態にかかるICカード1900の構成を示すブロック図である。図23に示すように、ICカード1900は、状態記憶部1920と、パラメータ記憶部1930と、入出力部101と、判定部1902と、制御部103と、認証部104と、更新部1905とを備えている。
第4の実施の形態では、状態記憶部1920およびパラメータ記憶部1930に記憶されるデータの内容と、判定部1902および更新部1905の機能とが、第1の実施の形態と異なっている。その他の構成および機能は、第1の実施の形態にかかるICカード100の構成を表すブロック図である図1と同様であるので、同一符号を付し、ここでの説明は省略する。
状態記憶部1920は、認証の失敗回数に依存する情報であって失敗回数を特定可能な状態情報を記憶する。具体的には、状態情報は、認証の失敗回数に応じて変化するデータCを含む。データCは、k0ビットのビット列を入力としてk0ビットのビット列を出力する一方向性関数Hの入力成分となるk0ビットで表現されるビット列である。データCの初期値はC0とする。C0はランダムな値または意図して選択された値など、任意の値を設定する。
なお、以下では、状態情報を、状態情報Cと表す場合がある。また、状態情報は、状態記憶部1920の領域IIIに記憶される。
パラメータ記憶部1930は、ビット長k0、一方向性関数Hの構成、状態情報Cの初期値C0、値V、および認証の連続失敗回数の上限Nを記憶する。値Vは、状態情報の初期値C0から、V=HN(C0)によって算出される。
なお、一方向性関数Hの構成および初期値C0は、更新部1905が状態情報を更新するときに用いる更新情報である。また、ビット長k0、一方向性関数Hの構成、値V、認証の連続失敗回数の上限Nは、パラメータ記憶部1930の領域IIに記憶される。また、状態情報の初期値C0は、パラメータ記憶部1930の領域IVに記憶される。
判定部1902は、入出力部101からの要求を受け、パラメータ記憶部1930に記憶されたパラメータを用いて、状態記憶部1920に記憶されている状態情報が健全であること、および状態情報から算出した連続失敗回数が上限Nより小さいことを判定する。
具体的には、判定部1902は、状態記憶部1920から状態情報Cを読み出し、パラメータ記憶部1930から上限N、一方向性関数Hの構成、値Vを読み出す。そして、判定部1902は、1以上N未満の整数値iが存在し、Hi(C)=Vが成り立つか否かを検査する。ここで、Hi(A)は、関数Hを入力Aについて再帰的にH(Hi−1(A))として計算することを表す。また、判定部1902は、検査結果(合格または不合格)を制御部103に通知する。
なお、物理的な解析によりデータが書き換えられることなく、正しく認証処理が行われている場合に、利用者の認証がL回連続(L=0、1、...、N−1)して失敗すると、状態情報に含まれるCと上限Nとの間には、1以上N未満のiが存在してHi(C)=Vの関係が成り立つ。
一方、正しく認証処理が行われている場合に、利用者の認証がL=N回連続して失敗すると、Hi+1(C)=Vの関係が成立する。すなわち、正しく認証処理が行われている場合は、認証の連続失敗回数がN回未満となるのは、1以上N未満の整数値iが存在してHi(C)=Vが成り立つときに限られる。
更新部1905は、認証部104による判定結果に応じて、パラメータ記憶部1930に記憶されている更新情報と、状態記憶部1920に記憶されている更新前の状態情報とから、更新後の状態情報を生成し、状態記憶部1920に記憶される状態情報を更新する。
具体的には、認証に合格した場合は、更新部1905は、状態情報に含まれるデータCの初期値C0で状態情報Cを初期化する。そして、更新部1905は、初期化した状態情報C=C0で状態記憶部1920の状態情報を更新する。
また、認証が不合格であった場合は、更新部1905は、C’=H(C)によって、更新後の状態情報C’を算出する。そして、更新部1905は、状態情報C’で状態記憶部1920の状態情報を更新する。
次に、このように構成された第4の実施の形態にかかるICカード1900による認証制御処理について図24を用いて説明する。図24は、第4の実施の形態における認証制御処理の全体の流れを示すフローチャートである。
まず、入出力部101は、外部装置から認証要求および認証情報としてPINを受け付ける(ステップS2001)。そして、入出力部101は、判定部1902に状態情報の判定を要求する。
判定の要求を受け、判定部1902は、状態記憶部1920から状態情報Cを読み出す(ステップS2002)。また、判定部1902は、パラメータ記憶部1930から一方向性関数Hの構成、値V、認証の連続失敗回数の上限Nを読み出す(ステップS2003)。そして、判定部1902は、Hi(C)=Vを満たす1以上N未満の整数値iが存在するか否かを検査する(ステップS2004)。
ステップS2005からステップS2008までの、認証停止処理、認証指示処理、および認証処理は、第1の実施の形態にかかるICカード100におけるステップS205からステップS208までと同様の処理なので、その説明を省略する。
認証された場合は(ステップS2008:YES)、認証部104は、更新部1905に認証合格に基づく状態情報の更新(初期化)を指示する。更新部1905は、更新の指示を受けてパラメータ記憶部1930から初期値C0を取得する(ステップS2009)。そして、更新部1905は、取得した初期値C0で状態情報Cを初期化して状態記憶部1920に保存する(ステップS2010)。
ステップS2011は、第1の実施の形態にかかるICカード100におけるステップS213と同様の処理なので、その説明を省略する。
ステップS2008で、利用者が認証されなかった場合は(ステップS2008:NO)、認証部104は、更新部1905に認証不合格に基づく状態情報の更新を指示する。更新部1905は、更新の指示を受けて状態記憶部1920から状態情報Cを取得する(ステップS2012)。また、更新部1905は、パラメータ記憶部1930から、更新情報(一方向性関数Hの構成)を取得する(ステップS2013)。そして、更新部1905は、取得した更新情報を用いて、更新後のデータC’を、C’=H(C)によって計算する(ステップS2014)。さらに、更新部1905は、状態記憶部1920に記憶される状態情報をC’に更新する(ステップS2015)。
ステップS2016は、第1の実施の形態にかかるICカード100におけるステップS218と同様の処理なので、その説明を省略する。
次に、状態情報の遷移について図25を用いて説明する。図25は、第4の実施の形態における状態情報の遷移例を示す模式図である。なお、図25は、上限N=3としたときの状態情報の遷移を表している。
同図の実線は、状態情報Cを一方向性関数Hに入力して得られる算出値を新たな状態情報として更新していくことを表している。なお、状態情報は、一方向性関数Hを再帰的に適用し、Hi(C)=C3(=V)を満たす整数値iが存在することによって検証する。また、同図の点線は、認証結果に応じて、状態情報を初期値C0に初期化することを示している。
例えば、状態情報が初期値C0の場合に認証に失敗したとすると、次の状態である状態情報C1に遷移する。この状態で認証に成功したとすると、状態情報の初期化により最初の状態である状態情報C0の状態に戻る。
上述のように、状態情報Cは領域IIIに記憶されているため、攻撃者はCを読み出すことはできない。一方、初期値C0は領域IVに記憶されているため、攻撃者はC0を読み出すことも書き換えることもできない。攻撃者はCおよびC0を読み出すことができないため、状態情報Cを1以上N未満のiが存在してHi(C’)=Vが成り立つC’に書き換えることは困難である。
また、状態情報の検証時に比較の対象となる比較値である値Vは、状態情報の初期値C0について一意に定まり、認証の失敗回数に依存した状態情報に関して不変であるため、記憶領域を削減することが可能となる。
このように、第4の実施の形態にかかる認証装置では、連続失敗回数に対応するデータを含む認証の状態情報を記憶し、状態情報が正しいことおよび連続失敗回数が上限を超えていないことを検査し、検査に合格した場合にのみ認証情報による認証を行う。また、物理的な解析が困難な記憶部に記憶された更新情報で状態情報を更新することができる。これにより、物理的な解析に対しても悪意ある利用から保護可能であり、かつ、認証の連続失敗回数が上限を超えた場合に使用を拒絶できる認証装置を提供することが可能となる。
(変形例7)
変形例7では、値Vにデバイス製造者の署名Sを添付することによりセキュリティを強化する方法について説明する。
変形例7では、値Vにデバイス製造者の署名Sを添付することによりセキュリティを強化する方法について説明する。
図26は、変形例7にかかるICカード2200の構成を示すブロック図である。図26に示すように、ICカード2200は、状態記憶部1920と、パラメータ記憶部2230と、入出力部101と、判定部2202と、制御部103と、認証部104と、更新部1905とを備えている。
変形例7では、パラメータ記憶部2230に記憶されたパラメータの内容、および判定部2202の機能が第4の実施の形態と異なっている。その他の構成および機能は、第4の実施の形態にかかるICカード1900の構成を表すブロック図である図23と同様であるので、同一符号を付し、ここでの説明は省略する。
パラメータ記憶部2230は、さらに領域Iを備え、値Vおよび値Vの署名Sを領域Iに記憶する点が、第4の実施の形態と異なっている。
なお、署名Sは、デバイス製造者が、一方向性関数Hの構成、状態情報の初期値C0を設定し、値V=HN(C0)を計算した後、S=Sign(SK、V)により予め計算し、デバイス製造時にパラメータ記憶部2230の領域Iに記憶する。
ここで、署名SiをVi=Hi(C0)となる複数のViに対して計算して、パラメータ記憶部2230の領域Iに記憶しておき、判定部2202が、状態情報Cに最も近いVi=Hi(C)について署名Siを検査するように構成してもよい。以下では値V=HN(C0)に対して、S=Sign(SK、V)のみを用いる例を説明する。
デバイス製造者の検証鍵PKは、パラメータ記憶部2230に記憶されていてもよいし、認証要求時に入出力部101から受け付けてもよい。パラメータ記憶部2230に記憶する場合には、領域IIに記憶する。以下では、認証要求時に入出力部101から受け付ける場合について説明する。また、署名検証関数Verの構成はパラメータ記憶部2230の領域IIに記憶する。
判定部2202は、さらに、署名Sを用いて値Vが正当であることを判定する点が、第4の実施の形態の判定部1902と異なっている。
次に、このように構成された変形例7にかかるICカード2200による認証制御処理について図27を用いて説明する。図27は、変形例7における認証制御処理の全体の流れを示すフローチャートである。
ステップS2301からステップS2302までの、認証要求受付処理および状態情報取得処理は、第4の実施の形態にかかるICカード1900におけるステップS2001からステップS2002までと同様の処理なので、その説明を省略する。
状態情報を取得後、判定部2202は、パラメータ記憶部2230から一方向性関数Hの構成、値V、認証の連続失敗回数の上限Nに加え、署名Sおよび署名検証関数Verの構成を読み出す(ステップS2303)。次に、判定部2202は、入出力部101を介して検証鍵PKを取得する(ステップS2304)。
次に、判定部2202は、Hi(C)=Vを満たす1以上N未満の整数値iが存在し、かつ、Ver(PK,V,S)=acceptが成り立つか否かを検査する(ステップS2305)。
ステップS2306からステップS2317までは、第4の実施の形態にかかるICカード1900におけるステップS2005からステップS2016までと同様の処理なので、その説明を省略する。
次に、状態情報の遷移について図28を用いて説明する。図28は、変形例7における状態情報の遷移例を示す模式図である。
同図に示すように、変形例7での状態情報の遷移は図25に示す第4の実施の形態と同様であるが、状態情報の検証に用いる値V(=C3)の署名S(=Sign(SK、C3))をさらに検証することができる。このため、よりセキュリティを高めることができる。
(変形例8)
変形例8では、変形例2、変形例4、および変形例6と同様に、PINの署名T=Sign(SK,PIN)を利用し、秘密鍵SK、署名Tをパラメータ記憶部の領域IIIに記憶する。デバイス起動時に、変形例2、変形例4、および変形例6と同様にして、乱数Uを用いたVer(PK、U、Sign(SK、U))の検証と、入力されたPINに対するVer(PK、PIN、T)の検証により、SKとTの不正な書き換えを検出することで、領域IVを使用せずとも安全な認証装置を構成することが可能となる。
変形例8では、変形例2、変形例4、および変形例6と同様に、PINの署名T=Sign(SK,PIN)を利用し、秘密鍵SK、署名Tをパラメータ記憶部の領域IIIに記憶する。デバイス起動時に、変形例2、変形例4、および変形例6と同様にして、乱数Uを用いたVer(PK、U、Sign(SK、U))の検証と、入力されたPINに対するVer(PK、PIN、T)の検証により、SKとTの不正な書き換えを検出することで、領域IVを使用せずとも安全な認証装置を構成することが可能となる。
なお、変形例2、変形例4、および変形例6と同様に、乱数Uを用いたチャレンジ−レスポンス方式によりSKが改ざんされていないことを検証する箇所は、U=Sign(SK、SK)を予め計算してパラメータ記憶部の領域IIIに記憶しておき、Ver(PK、SK、U)が受理されることを検証するように構成してもよい。
次に、第1〜第4の実施の形態にかかる認証装置のハードウェア構成について図29を用いて説明する。図29は、第1〜第4の実施の形態にかかる認証装置のハードウェア構成を示す説明図である。
第1〜第4の実施の形態にかかる認証装置は、CPU(Central Processing Unit)51などの制御装置と、ROM52やRAM53などの記憶装置と、ネットワークに接続して通信を行う通信I/F54と、各部を接続するバス61を備えている。
第1〜第4の実施の形態にかかる認証装置で実行される認証プログラムは、ROM52等に予め組み込まれて提供される。
第1〜第4の実施の形態にかかる認証装置で実行される認証プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD−R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
さらに、第1〜第4の実施の形態にかかる認証装置で実行される認証プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第1〜第4の実施の形態にかかる認証装置で実行される認証プログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
第1〜第4の実施の形態にかかる認証装置で実行される認証プログラムは、上述した各部(入出力部、判定部、制御部、認証部、更新部)を含むモジュール構成となっており、実際のハードウェアとしてはCPU51が上記ROM52から認証プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、各部が主記憶装置上に生成されるようになっている。
以上のように、本発明にかかる装置、方法およびプログラムは、認証装置の利用者が所定の回数以上連続して認証に失敗する場合には以後の認証処理を受け付けないことにより、認証装置の不正利用を防止する装置、方法およびプログラムに適している。
51 CPU
52 ROM
53 RAM
54 通信I/F
61 バス
100 ICカード
101 入出力部
102 判定部
103 制御部
104 認証部
105 更新部
120 状態記憶部
130 パラメータ記憶部
400 ICカード
402 判定部
430 パラメータ記憶部
700 ICカード
702 判定部
704 認証部
706 第1更新部
707 第2更新部
740 第1状態記憶部
750 第2状態記憶部
1000 ICカード
1002 判定部
1030 パラメータ記憶部
1300 ICカード
1302 判定部
1306 第1更新部
1307 第2更新部
1330 パラメータ記憶部
1340 第1状態記憶部
1350 第2状態記憶部
1600 ICカード
1602 判定部
1630 パラメータ記憶部
1900 ICカード
1902 判定部
1905 更新部
1920 状態記憶部
1930 パラメータ記憶部
2200 ICカード
2202 判定部
2230 パラメータ記憶部
52 ROM
53 RAM
54 通信I/F
61 バス
100 ICカード
101 入出力部
102 判定部
103 制御部
104 認証部
105 更新部
120 状態記憶部
130 パラメータ記憶部
400 ICカード
402 判定部
430 パラメータ記憶部
700 ICカード
702 判定部
704 認証部
706 第1更新部
707 第2更新部
740 第1状態記憶部
750 第2状態記憶部
1000 ICカード
1002 判定部
1030 パラメータ記憶部
1300 ICカード
1302 判定部
1306 第1更新部
1307 第2更新部
1330 パラメータ記憶部
1340 第1状態記憶部
1350 第2状態記憶部
1600 ICカード
1602 判定部
1630 パラメータ記憶部
1900 ICカード
1902 判定部
1905 更新部
1920 状態記憶部
1930 パラメータ記憶部
2200 ICカード
2202 判定部
2230 パラメータ記憶部
Claims (13)
- 外部からアクセス不能な記憶部であって、認証の失敗回数を特定可能な状態情報を記憶する状態記憶部と、
前記状態情報の更新に用いる更新情報を記憶する更新情報記憶部と、
認証に用いる認証情報を入力する入力部と、
前記状態情報を予め定められた第1関数に入力した結果として出力される算出値を算出し、前記算出値と予め定められた比較値とが一致し、かつ、前記状態情報によって特定される前記失敗回数が予め定められた閾値より小さいか否かを判定する判定部と、
前記算出値が前記比較値と一致し、かつ、前記状態情報によって特定される前記失敗回数が前記閾値より小さい場合に、前記認証情報による認証を行う認証部と、
前記認証部による認証が失敗した場合に、前記更新情報を用いて、前記状態記憶部の前記状態情報を、1を加算した前記失敗回数を特定する前記状態情報に更新し、前記認証部による認証が成功した場合に、前記状態記憶部の前記状態情報を、0を表す前記失敗回数を特定する前記状態情報に更新する更新部と、
を備えたことを特徴とする認証装置。 - 前記状態記憶部は、前記失敗回数と、前記失敗回数に応じて異なる値が算出される変動情報とを含む前記状態情報を記憶し、
前記判定部は、一方向性関数である前記第1関数に前記失敗回数と前記変動情報とを入力して前記算出値を算出し、前記算出値と前記比較値とが一致し、かつ、前記状態情報によって特定される前記失敗回数が前記閾値より小さいか否かを判定し、
前記更新部は、前記認証部による認証が失敗した場合に、1を加算した前記失敗回数と前記変動情報と前記更新情報とを前記第2関数に入力した結果として出力される更新変動情報を算出し、1を加算した前記失敗回数と、前記更新変動情報とを含む前記状態情報で前記状態記憶部の前記状態情報を更新すること、
を特徴とする請求項1に記載の認証装置。 - 前記更新部は、前記認証部による認証が失敗した場合に、1を加算した前記失敗回数とともに前記第1関数に入力したときに算出される前記算出値が前記比較値と一致する前記更新変動情報を算出する前記第2関数によって前記更新変動情報を算出し、1を加算した前記失敗回数と、算出した前記更新変動情報とを含む前記状態情報で前記状態記憶部の前記状態情報を更新すること、
を特徴とする請求項2に記載の認証装置。 - 前記状態記憶部は、認証が失敗するごとに遷移する認証の状態を特定可能な第1特定情報と、最後に認証に成功したときの前記状態を特定可能な第2特定情報とを含む前記状態情報を記憶し、
前記判定部は、前記第1特定情報を前記第1関数に入力して第1算出値を算出し、前記第2特定情報を前記第1関数に入力して第2算出値を算出し、前記第2特定情報によって特定される前記状態から前記第1特定情報によって特定される前記状態までの遷移数によって前記失敗回数を特定し、前記第1算出値および前記第2算出値のそれぞれが前記比較値と一致し、かつ、特定した前記失敗回数が前記閾値より小さいか否かを判定し、
前記認証部は、前記第1算出値および前記第2算出値のそれぞれが前記比較値と一致し、かつ、特定した前記失敗回数が前記閾値より小さい場合に、前記認証情報による認証を行い、
前記更新部は、前記認証部による認証が失敗した場合に、前記更新情報を用いて、前記第1特定情報を、1つ遷移した前記状態を特定する前記第1特定情報に更新し、更新した前記第1特定情報と前記第2特定情報とを含む前記状態情報で前記状態記憶部の前記状態情報を更新すること、
を特徴とする請求項1に記載の認証装置。 - 前記状態記憶部は、認証の通算失敗回数と前記通算失敗回数に応じて異なる値が算出される第1変動情報とを含む前記第1特定情報と、最後に認証に成功したときの前記通算失敗回数を表す基準回数と前記基準回数に応じて異なる値が算出される第2変動情報とを含む前記第2特定情報と、を含む前記状態情報を記憶し、
前記判定部は、一方向性関数である前記第1関数に前記通算失敗回数と前記第1変動情報とを入力して前記第1算出値を算出し、前記一方向性関数に前記基準回数と前記第2変動情報とを入力して前記第2算出値を算出し、前記第1特定情報によって特定される前記通算失敗回数と、前記第2特定情報によって特定される前記基準回数との差分を前記遷移数として前記失敗回数を特定し、前記第1算出値および前記第2算出値のそれぞれが前記比較値一致し、かつ、特定した前記失敗回数が前記閾値より小さいか否かを判定し、
前記更新部は、前記認証部による認証が失敗した場合に、1を加算した前記通算失敗回数と前記第1変動情報と前記更新情報とを予め定められた第3関数に入力した結果として出力される更新変動情報を算出し、1を加算した前記通算失敗回数と前記更新変動情報とを含む前記第1特定情報と、前記第2特定情報とを含む前記状態情報で前記状態記憶部の前記状態情報を更新すること、
を特徴とする請求項4に記載の認証装置。 - 前記更新部は、前記認証部による認証が失敗した場合に、1を加算した前記通算失敗回数とともに前記第1関数に入力したときに算出される前記算出値が前記比較値と一致する前記更新変動情報を算出する前記第3関数によって前記更新変動情報を算出し、1を加算した前記通算失敗回数と、算出した前記更新変動情報とを含む前記第1特定情報と、前記第2特定情報とを含む前記状態情報で前記状態記憶部の前記状態情報を更新すること、
を特徴とする請求項5に記載の認証装置。 - 前記状態記憶部は、認証が失敗するごとに異なる値が算出される第1変動情報と前記第1変動情報に応じて異なる値が算出される第2変動情報とを含む前記第1特定情報と、最後に認証に成功したときの前記第1変動情報を特定可能な第3変動情報と前記第3変動情報に応じて異なる値が算出される第4変動情報とを含む前記第2特定情報と、を含む前記状態情報を記憶し、
前記判定部は、前記第1関数に前記第1変動情報と前記第2変動情報とを入力して前記第1算出値を算出し、前記第1関数に前記第3変動情報と前記第4変動情報とを入力して前記第2算出値を算出し、さらに、予め定められた一方向性関数に前記第1変動情報と前記更新情報とを入力した結果として出力される出力値を算出し、前記出力値を、前記出力値と前記第3変動情報とが一致するまで、前記一方向性関数に再帰的に繰り返し入力して前記出力値を算出し、前記出力値と前記第3変動情報とが一致するまでの前記一方向性関数の演算回数を前記遷移数として前記失敗回数を特定し、特定した前記失敗回数が前記閾値より小さいか否かを判定し、
前記更新部は、前記認証部による認証が失敗した場合に、前記一方向性関数に前記第1変動情報と前記更新情報とを入力して前記出力値を算出し、前記出力値を予め定められた第4関数に入力した結果として出力される更新変動情報を算出し、前記出力値を新たな前記第1変動情報として含み、前記更新変動情報を新たな前記第2変動情報として含む前記第1特定情報と、前記第2特定情報とを含む前記状態情報で前記状態記憶部の前記状態情報を更新すること、
を特徴とする請求項4に記載の認証装置。 - 前記更新部は、前記認証部による認証が失敗した場合に、前記一方向性関数に入力したときに算出される前記出力値が前記第3変動情報と一致する前記更新変動情報を算出する前記第4関数によって前記更新変動情報を算出し、前記出力値を新たな前記第1変動情報として含み、前記更新変動情報を新たな前記第2変動情報として含む前記第1特定情報と、前記第2特定情報とを含む前記状態情報で前記状態記憶部の前記状態情報を更新すること、
を特徴とする請求項7に記載の認証装置。 - 前記更新部は、前記認証部による認証が成功した場合に、前記第2特定情報を、前記第1特定情報によって特定される前記状態より予め定められた個数だけ遷移を戻した前記状態を特定する前記第2特定情報に更新し、前記第1特定情報と、更新した前記第2特定情報とを、含む前記状態情報で前記状態記憶部の前記状態情報を更新し、
前記判定部は、前記第1特定情報を前記第1関数に入力して前記第1算出値を算出し、前記第2特定情報を前記第1関数に入力して前記第2算出値を算出し、前記遷移数と前記個数との差分によって前記失敗回数を特定し、前記第1算出値および前記第2算出値のそれぞれが前記比較値と一致し、かつ、特定した前記失敗回数が前記閾値より小さいか否かを判定すること、
を特徴とする請求項4に記載の認証装置。 - 前記更新情報記憶部は、前記状態情報の初期値である前記更新情報を記憶し、
前記判定部は、一方向性関数である前記第1関数に前記状態情報を入力して算出した前記算出値を、前記算出値と前記比較値とが一致するまで、前記一方向性関数に再帰的に繰り返し入力して前記算出値を算出し、前記算出値と前記比較値とが一致するまでの前記一方向性関数の演算回数によって前記失敗回数を特定し、特定した前記失敗回数が前記閾値より小さいか否かを判定し、
前記更新部は、前記認証部による認証が失敗した場合に、前記状態情報を前記一方向性関数に入力して前記算出値を算出し、算出した前記算出値を新たな状態情報として、前記状態記憶部を更新し、前記認証部による認証が成功した場合に、前記状態記憶部の前記状態情報を前記更新情報記憶部に記憶された前記更新情報である前記初期値に更新すること、
を特徴とする請求項1に記載の認証装置。 - 前記比較値と、前記比較値の署名情報を記憶する署名情報記憶部をさらに備え、
前記判定部は、前記状態情報を前記第1関数に入力して前記算出値を算出し、前記算出値と前記比較値とが一致し、かつ、前記状態情報によって特定される前記失敗回数が前記閾値より小さく、かつ、前記署名情報記憶部に記憶されている前記署名情報が正当であるか否かを判定し、
前記認証部は、前記算出値が前記比較値と一致し、かつ、前記状態情報によって特定される前記失敗回数が前記閾値より小さく、かつ、前記署名情報記憶部に記憶されている前記署名情報が正当である場合に、前記認証情報による認証を行うこと、
を特徴とする請求項1に記載の認証装置。 - 入力部が、認証に用いる認証情報を入力する入力ステップと、
判定部が、外部からアクセス不能な状態記憶部に記憶される情報であって、認証の失敗回数を特定可能な状態情報を予め定められた第1関数に入力した結果として出力される算出値を算出し、前記算出値と予め定められた比較値とが一致し、かつ、前記状態情報によって特定される前記失敗回数が予め定められた閾値より小さいか否かを判定する判定ステップと、
認証部が、前記算出値が前記比較値と一致し、かつ、前記状態情報によって特定される前記失敗回数が前記閾値より小さい場合に、前記認証情報による認証を行う認証ステップと、
更新部が、前記認証ステップによる認証が失敗した場合に、前記状態情報の更新に用いる更新情報を記憶する更新情報記憶部に記憶された前記更新情報を用いて、前記状態記憶部の前記状態情報を、1を加算した前記失敗回数を特定する前記状態情報に更新し、前記認証ステップによる認証が成功した場合に、前記状態記憶部の前記状態情報を、0を表す前記失敗回数を特定する前記状態情報に更新する更新ステップと、
を備えたことを特徴とする認証方法。 - コンピュータを、
認証に用いる認証情報を入力する入力部と、
外部からアクセス不能な状態記憶部に記憶される情報であって、認証の失敗回数を特定可能な状態情報を予め定められた第1関数に入力した結果として出力される算出値を算出し、前記算出値と予め定められた比較値とが一致し、かつ、前記状態情報によって特定される前記失敗回数が予め定められた閾値より小さいか否かを判定する判定部と、
前記算出値が前記比較値と一致し、かつ、前記状態情報によって特定される前記失敗回数が前記閾値より小さい場合に、前記認証情報による認証を行う認証部と、
前記認証部による認証が失敗した場合に、前記状態情報の更新に用いる更新情報を記憶する更新情報記憶部に記憶された前記更新情報を用いて、前記状態記憶部の前記状態情報を、1を加算した前記失敗回数を特定する前記状態情報に更新し、前記認証部による認証が成功した場合に、前記状態記憶部の前記状態情報を、0を表す前記失敗回数を特定する前記状態情報に更新する更新部と、
として機能させる認証プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008101262A JP2009187516A (ja) | 2008-01-11 | 2008-04-09 | 認証する装置、方法およびプログラム |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008003948 | 2008-01-11 | ||
JP2008101262A JP2009187516A (ja) | 2008-01-11 | 2008-04-09 | 認証する装置、方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009187516A true JP2009187516A (ja) | 2009-08-20 |
Family
ID=41070651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008101262A Pending JP2009187516A (ja) | 2008-01-11 | 2008-04-09 | 認証する装置、方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009187516A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013542636A (ja) * | 2010-09-10 | 2013-11-21 | サムスン エレクトロニクス カンパニー リミテッド | 不揮発性記憶装置の認証方法及び装置 |
JP2018061193A (ja) * | 2016-10-07 | 2018-04-12 | 大日本印刷株式会社 | 電子情報記憶媒体、icカード、サポート情報更新方法、及びサポート情報更新プログラム |
JP2021033918A (ja) * | 2019-08-29 | 2021-03-01 | 凸版印刷株式会社 | Icカードの制御システム及びicカード |
WO2023020067A1 (en) * | 2021-08-17 | 2023-02-23 | International Business Machines Corporation | Identifying credential attacks on encrypted network traffic |
-
2008
- 2008-04-09 JP JP2008101262A patent/JP2009187516A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013542636A (ja) * | 2010-09-10 | 2013-11-21 | サムスン エレクトロニクス カンパニー リミテッド | 不揮発性記憶装置の認証方法及び装置 |
JP2015079536A (ja) * | 2010-09-10 | 2015-04-23 | サムスン エレクトロニクス カンパニー リミテッド | 不揮発性記憶装置の認証方法及び装置 |
JP2018061193A (ja) * | 2016-10-07 | 2018-04-12 | 大日本印刷株式会社 | 電子情報記憶媒体、icカード、サポート情報更新方法、及びサポート情報更新プログラム |
JP2021033918A (ja) * | 2019-08-29 | 2021-03-01 | 凸版印刷株式会社 | Icカードの制御システム及びicカード |
JP7310446B2 (ja) | 2019-08-29 | 2023-07-19 | 凸版印刷株式会社 | Icカードの制御システム及びicカード |
WO2023020067A1 (en) * | 2021-08-17 | 2023-02-23 | International Business Machines Corporation | Identifying credential attacks on encrypted network traffic |
US11936668B2 (en) | 2021-08-17 | 2024-03-19 | International Business Machines Corporation | Identifying credential attacks on encrypted network traffic |
GB2623909A (en) * | 2021-08-17 | 2024-05-01 | Ibm | Identifying credential attacks on encrypted network traffic |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10382965B2 (en) | Identity verification using computer-implemented decentralized ledger | |
US10395065B2 (en) | Password protection under close input observation based on dynamic multi-value keyboard mapping | |
EP3499795A1 (en) | Authentication system and method, and user equipment, authentication server, and service server for performing same method | |
CN101903891B (zh) | 在模板保护系统中定义分类阈值 | |
EP3610607B1 (en) | Cryptographic key management based on identity information | |
KR100996466B1 (ko) | 비밀분산 기법을 이용한 지문정보 저장 장치, 비밀분산 기법을 이용한 지문 인증 시스템 및 비밀분산 기법을 이용한 지문 인증 방법 | |
JP4551380B2 (ja) | 認証システムおよびその方法 | |
JP5676592B2 (ja) | 参照点を使用した及び使用しない頑強なバイオメトリック特徴抽出 | |
Cavoukian et al. | Advances in biometric encryption: Taking privacy by design from academic research to deployment | |
EP3637674A1 (en) | Computer system, secret information verification method, and computer | |
US20150254453A1 (en) | Password management system | |
JP2009187516A (ja) | 認証する装置、方法およびプログラム | |
US11251941B2 (en) | Managing cryptographic keys based on identity information | |
KR101841928B1 (ko) | 문서를 오프라인으로 발행하며, 발행된 오프라인 문서에 대한 인증을 수행하는 방법 및 이를 이용한 서버 | |
EP2786519B1 (en) | User access control based on a graphical signature | |
SE540649C2 (en) | Method and system for secure password storage | |
KR101841929B1 (ko) | 머클트리 구조를 사용하여, 문서를 오프라인으로 발행하며 발행된 오프라인 문서에 대한 인증을 수행하는 방법 및 이를 이용한 서버 | |
KR20150115049A (ko) | 얼굴인식을 이용한 금융자동화 기기의 보안 강화 방법 및 시스템 | |
EP3174263A1 (en) | Apparatus and method for verifying detection rule | |
KR20110111661A (ko) | 복제 방지를 위한 rfid 태그, 이를 이용한 복제 방지 시스템 및 방법 | |
US11829459B2 (en) | Apparatus and method for authenticating user based on multiple biometric information | |
JP6464870B2 (ja) | 認証方法、認証プログラム、および認証装置 | |
KR20140142465A (ko) | 대출 계약 방법 및 이러한 방법을 수행하는 장치 | |
TWI844163B (zh) | 金融驗證系統 | |
JP7344071B2 (ja) | 認証システム及び認証方法 |