説明

認証システム及び端末装置及びアイシーカード及びコンピュータプログラム及び認証方法及びコマンド送信方法

【課題】利用者認証情報の漏洩を防ぐ。
【解決手段】端末側鍵共有部102とカード側鍵共有部202とが共有鍵Kを生成する。カード認証情報生成部206がカード認証情報732を生成する。カード検証部106がカード認証情報を検証する。検証成功の場合、verifyPINコマンド化部111(利用者認証コマンド生成部)がverifyPINコマンド(利用者認証コマンド)を生成し、暗号化部112(利用者認証暗号化部)が共有鍵Kで暗号化する。復号部211(利用者認証復号部)が共有鍵Kで復号し、ICカード処理部212(利用者認証部)がPIN情報を検証する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ICカードがPIN情報などの利用者認証データを用いて利用者を認証する認証システムに関する。
【背景技術】
【0002】
ICカードの所有者だけが知っている利用者認証情報をICカードが記憶しておき、利用者が入力した利用者認証情報を、ICカードに対して送信して、ICカードのなかで利用者がICカードの所有者であるか否かを認証する認証システムがある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2009−111594号公報
【非特許文献】
【0004】
【非特許文献1】W.Diffie、M.E.Hellman「New Directions in Cryptography」IEEE Transactions on Information Theory、vol.IT−22,No.6、644〜654ページ、1976年11月。
【非特許文献2】RFC2631「Diffie−Hellman Key Agreement Method」1999年6月。
【発明の概要】
【発明が解決しようとする課題】
【0005】
このような認証システムでは、利用者認証情報の漏洩を防ぐ必要がある。このような認証システムから利用者認証情報が盗み出す手口としては、ICカードに対する総当たり攻撃やなりすまし攻撃、ICカードとの通信を盗聴して解析する攻撃、ICカードを偽物とすり替えて偽物のICカードが利用者認証情報を受信するすり替え攻撃などがある。
この発明は、例えば上記のような課題を解決するためになされたものであり、利用者認証情報の漏洩を防ぐことを目的とする。
【課題を解決するための手段】
【0006】
この発明にかかる認証システムは、端末装置と、アイシーカードとを有する認証システムにおいて、
上記端末装置は、
利用者の操作を入力する操作入力装置と、
データを処理する端末処理装置と、
上記アイシーカードと通信する端末通信装置と、
上記操作入力装置を用いて、上記利用者を認証する利用者認証データを入力する利用者認証入力部と、
上記端末通信装置を用いて、上記アイシーカードが送信したカード認証データを受信するカード認証受信部と、
上記端末処理装置を用いて、上記アイシーカードと共有する共有鍵を生成する端末共有鍵生成部と、
上記端末処理装置を用いて、上記利用者認証入力部が入力した利用者認証データと、上記端末共有鍵生成部が生成した共有鍵と、上記カード認証受信部が受信したカード認証データとに基づいて、上記アイシーカードを認証するカード認証部と、
上記カード認証部が上記アイシーカードの認証に成功した場合に、上記端末処理装置を用いて、上記利用者認証入力部が入力した利用者認証データに基づいて、上記アイシーカードに対して上記利用者の認証を要求する利用者認証コマンドを生成する利用者認証生成部と、
上記端末処理装置を用いて、上記利用者認証生成部が生成した利用者認証コマンドを、上記端末共有鍵生成部が生成した共有鍵で暗号化して、暗号化認証コマンドを生成する利用者認証暗号化部と、
上記端末通信装置を用いて、上記利用者認証暗号化部が生成した暗号化認証コマンドを上記アイシーカードに対して送信する暗号化認証送信部とを有し、
上記アイシーカードは、
データを記憶するカード記憶装置と、
データを処理するカード処理装置と、
上記端末装置と通信するカード通信装置と、
上記カード記憶装置を用いて、利用者を認証する利用者認証データを記憶する利用者認証記憶部と、
上記カード処理装置を用いて、上記端末装置と共有する共有鍵を生成するカード共有鍵生成部と、
上記カード処理装置を用いて、上記利用者認証記憶部が記憶した利用者認証データと、上記カード共有鍵生成部が生成した共有鍵とに基づいて、カード認証データを生成するカード認証生成部と、
上記カード通信装置を用いて、上記カード認証生成部が生成したカード認証データを上記端末装置に対して送信するカード認証送信部と、
上記カード通信装置を用いて、上記端末装置が送信した暗号化認証コマンドを受信する暗号化認証受信部と、
上記カード処理装置を用いて、上記暗号化認証受信部が受信した暗号化認証コマンドを、上記カード共有鍵生成部が生成した共有鍵で復号して、利用者認証コマンドを生成する利用者認証復号部と、
上記カード処理装置を用いて、上記利用者認証記憶部が記憶した利用者認証データと、上記利用者認証復号部が生成した利用者認証コマンドとに基づいて、利用者を認証する利用者認証部とを有することを特徴とする。
【発明の効果】
【0007】
利用者認証暗号化部が暗号化した暗号化利用者認証コマンドをICカードに対して送信するので、端末装置とICカードとの間の通信を第三者が傍受して暗号化利用者認証コマンドを入手したとしても、そこから利用者認証データを入手することはできない。
端末共有鍵生成部とカード共有鍵生成部とが、端末装置とICカードとで共有する共有鍵Kを生成するので、利用者認証暗号化部が暗号化した暗号化利用者認証コマンドを、利用者認証復号部が正しく復号できる。
暗号化利用者認証コマンドを送信する前に、ICカードを認証して、偽物でないかを判定するので、偽物のICカードを介して、利用者認証データが漏洩するのを防ぐことができる。
ICカードの認証に用いるカード認証データは、利用者認証記憶部が記憶した利用者認証データと、カード共有鍵生成部が共有した共有鍵とに基づいて生成する。これにより、利用者認証記憶部が記憶した利用者認証データと、利用者認証入力部が入力した利用者認証データとが一致するか否かを検証できる。また、端末装置とICカードとの間の通信を第三者が傍受してカード認証データを入手したとしても、共通鍵Kを知らなければ、そこから利用者識別データを入手することはできない。
【図面の簡単な説明】
【0008】
【図1】実施の形態1における認証システム800の全体構成の一例を示すシステム構成図。
【図2】実施の形態1における端末側鍵共有部102及びカード側鍵共有部202の構成の一例を示す詳細ブロック図。
【図3】実施の形態1におけるカード検証部106及びカード認証情報生成部206の構成の一例を示す詳細ブロック図。
【図4】実施の形態2における認証システム800の全体構成の一例を示すシステム構成図。
【図5】実施の形態2における端末認証情報生成部113及び端末検証部214の構成の一例を示す詳細ブロック図。
【図6】実施の形態3における認証システム800のハードウェア構成の一例を示すハードウェア構成図。
【図7】実施の形態3における端末装置100及びICカード200の機能ブロックの構成の一例を示すブロック構成図。
【図8】実施の形態3における認証処理S400の流れの一例を示す全体フローチャート図。
【図9】実施の形態3における認証処理S400の一部の詳細な流れの一例を示す詳細フローチャート図。
【図10】実施の形態3における利用者認証処理S460の詳細な流れの一例を示す詳細フローチャート図。
【発明を実施するための形態】
【0009】
実施の形態1.
実施の形態1について、図1〜図3を用いて説明する。
【0010】
図1は、この実施の形態における認証システム800の全体構成の一例を示すシステム構成図である。
認証システム800は、ユーザ801と、端末装置100と、カード読取書込装置(カードR/W)810と、ICカード200とを有する。端末装置100は、ユーザ801が利用する。カードR/W810は、端末装置100と、ICカード200との間の通信を仲介する。ICカード200は、ユーザ801が所有する。
【0011】
ユーザ801(利用者)は、ICカード200の所有者である。ユーザ801は、PIN情報711を記憶している。PIN情報711は、ユーザ801を認証するための情報である。PIN情報711は、例えば暗証番号やパスワードである。
【0012】
端末装置100(端末)は、端末側通信部110、PIN情報入力部101、端末側鍵共有部102、カード検証部106、verifyPINコマンド化部111、暗号化部112を有する。
端末側通信部110は、カードR/W810を介してICカード200と通信する。端末側通信部110は、端末鍵要素722や暗号済verifyPINコマンド742などをカードR/W810へ送付する。端末側通信部110は、メッセージ730などをカードR/W810から受け取る。メッセージ730は、カード鍵要素724と、カード認証情報732とを含む。
端末側鍵共有部102は、端末鍵要素722を生成する。端末側鍵共有部102は、端末鍵要素722を端末側通信部110に送付する。端末側鍵共有部102は、カード鍵要素724を端末側通信部110から受け取る。端末側鍵共有部102は、端末鍵要素722と、カード鍵要素724とから共有鍵725を生成する。
PIN情報入力部101は、PIN情報711をユーザ801から受け取る。
カード検証部106は、カード認証情報732を端末側通信部110から受け取る。カード検証部106は、PIN情報711をPIN情報入力部101から受け取る。カード検証部106は、共有鍵725を端末側鍵共有部102から受け取る。カード検証部106は、PIN情報711と、共有鍵725とを用いて、カード認証情報732を検証する。カード検証部106は、カード検証結果735を生成する。
verifyPINコマンド化部111は、カード検証結果735をカード検証部106から受け取る。verifyPINコマンド化部111は、PIN情報711をPIN情報入力部101から受け取る。verifyPINコマンド化部111は、verifyPINコマンド741を生成する。verifyPINコマンド741は、APDU(Application Protocol Data Unit)の一つである。
暗号化部112は、verifyPINコマンド741をverifyPINコマンド化部111から受け取る。暗号化部112は、共有鍵725を端末側鍵共有部102から受け取る。暗号化部112は、暗号済verifyPINコマンド742を生成する。暗号化部112は、暗号済verifyPINコマンド742を端末側通信部110に送付する。
【0013】
ICカード200は、カード側通信部210、PIN情報記憶部201、カード側鍵共有部202、カード認証情報生成部206、復号部211、ICカード処理部212を有する。
カード側通信部210は、カードR/W810を介して端末装置100と通信する。カード側通信部210は、端末鍵要素722や暗号済verifyPINコマンド742などをカードR/W810から受け取る。カード側通信部210は、メッセージ730などをカードR/W810へ送付する。メッセージ730は、カード鍵要素724と、カード認証情報732とを含む。
カード側鍵共有部202は、端末鍵要素722をカード側通信部210から受け取る。カード側鍵共有部202は、カード鍵要素724を生成する。カード側鍵共有部202は、カード鍵要素724をカード側通信部210に送付する。カード側鍵共有部202は、端末鍵要素722とカード鍵要素724とから共有鍵726を生成する。
PIN情報記憶部201は、あらかじめ設定されたPIN情報712を格納する。
カード認証情報生成部206は、PIN情報712をPIN情報記憶部201から受け取る。カード認証情報生成部206は、共有鍵726をカード側鍵共有部202から受け取る。カード認証情報生成部206は、PIN情報712と共有鍵726とを用いてカード認証情報732を生成する。カード認証情報生成部206は、カード認証情報732をカード側通信部210に送付する。
復号部211は、暗号済verifyPINコマンド742をカード側通信部210から受け取る。復号部211は、共有鍵726をカード側鍵共有部202から受け取る。復号部211は、verifyPINコマンド743を生成する。
ICカード処理部212は、verifyPINコマンド743を復号部211から受け取る。
ICカード処理部212は、所定のICカード処理を実行する。
【0014】
次に動作について説明する。
ユーザ801は、PIN情報711を記憶している。また、ICカード200は、あらかじめ何らかの安全な方法により、PIN情報712をPIN情報記憶部201に記憶しておく。PIN情報記憶部201が記憶しておくPIN情報712は、ユーザ801が記憶しているPIN情報711と同一である。
【0015】
引き続き、実際にICカード200と端末装置100との間で認証を行う際の動作について説明する。
ユーザ801は、PIN情報711を端末装置100のPIN情報入力部101により入力する。
【0016】
次に、端末装置100が処理を行う。
端末側鍵共有部102は、端末鍵要素722を生成する。端末側鍵共有部102は、端末鍵要素722を端末側通信部110に送付する。端末側通信部110は、端末鍵要素722をカードR/W810へ送付する。カードR/W810は、端末鍵要素722をカード側通信部210に送付する。
【0017】
次に、ICカード200が処理を行う。
カード側通信部210は、端末鍵要素722をカードR/W810から受け取る。カード側鍵共有部202は、端末鍵要素722をカード側通信部210から受け取る。カード側鍵共有部202は、カード鍵要素724を生成する。カード側鍵共有部202は、端末鍵要素722とカード鍵要素724とから共有鍵726を生成する。
PIN情報記憶部201は、あらかじめ設定され格納しているPIN情報712を取り出す。カード認証情報生成部206は、PIN情報712をPIN情報記憶部201から受け取る。カード認証情報生成部206は、共有鍵726をカード側鍵共有部202から受け取る。カード認証情報生成部206は、PIN情報712と共有鍵726とを用いて、カード認証情報732を生成する。カード認証情報生成部206は、カード認証情報732をカード側通信部210に送付する。
カード側通信部210は、カード鍵要素724をカード側鍵共有部202から受け取る。カード側通信部210は、カード認証情報732をカード認証情報生成部206から受け取る。カード側通信部210は、カード鍵要素724とカード認証情報732とを合わせてメッセージ730とする。カード側通信部210は、メッセージ730をカードR/W810へ送付する。カードR/W810は、メッセージ730を端末側通信部110に送付する。
【0018】
次に、端末装置100が処理を行う。
端末側鍵共有部102は、カード鍵要素724を端末側通信部110から受け取る。端末側鍵共有部102は、端末鍵要素722とカード鍵要素724とから共有鍵725を生成する。
カード検証部106は、カード認証情報732を端末側通信部110から受け取る。カード検証部106は、PIN情報711をPIN情報入力部101から受け取る。カード検証部106は、共有鍵725を端末側鍵共有部102から受け取る。カード検証部106は、PIN情報711と共有鍵725とを用いて、カード認証情報732を検証する。カード検証部106は、カード検証結果735を生成する。
verifyPINコマンド化部111は、カード検証結果735をカード検証部106から受け取る。カード検証結果が正しくない場合、verifyPINコマンド化部111は、エラーにより処理を中断する。
カード検証結果が正しい場合、verifyPINコマンド化部111は、PIN情報711をPIN情報入力部101から受け取る。verifyPINコマンド化部111は、APDUのverifyPINコマンド741を生成する。
暗号化部112は、verifyPINコマンド741をverifyPINコマンド化部111から受け取る。暗号化部112は、共有鍵725を端末側鍵共有部102から受け取る。暗号化部112は、暗号処理をして、暗号済verifyPINコマンド742を生成する。暗号化部112は、暗号済verifyPINコマンド742を端末側通信部110に送付する。
端末側通信部110は、暗号済verifyPINコマンド742をカードR/W810へ送付する。カードR/W810は、暗号済verifyPINコマンド742をカード側通信部210に送付する。
【0019】
次に、ICカード200が処理を行う。
復号部211は、暗号済verifyPINコマンド742をカード側通信部210から受け取る。復号部211は、共有鍵726をカード側鍵共有部202から受け取る。復号部211は、復号処理をして、verifyPINコマンド743を生成する。ICカード処理部212は、verifyPINコマンド743を復号部211から受け取る。ICカード処理部212は、所定のICカード処理を実行する。
【0020】
鍵共有のアルゴリズムとしては、例えば、周知のDH(Diffie−Hellman、ディフィ−ヘルマン)鍵共有方式を用いることができる。
【0021】
以下、DH鍵共有方式の概要を説明する。
XとYとが鍵共有を行うものとする。記号「^」は、べき乗(exponentiation)を表わす。また、「mod」は、剰余(modulo)を表わす。
まず、値の大きな素数pと、その原始根gとを生成する。このgとpとは、公開される。
次に、鍵を共有するXとYとが、お互い秘密の値a、bをそれぞれ選択する。Xは、次の値Aを計算して、これをYに送信する。
A=g^a mod p
【0022】
Yも同様に、次の値Bを計算して、これをXに送信する。
B=g^b mod p
【0023】
Xは、自身の秘密の値aと、受信したBとから、以下の値を計算する。
=B^a mod p
【0024】
Yも、自身の秘密の値bと、受信したAとから、以下の値を計算する。
=A^b mod p
【0025】
このとき、XとYとがそれぞれ計算したK及びKは、
=(g^b mod p)^a mod p=g^(a・b) mod p=K
=(g^a mod p)^b mod p=g^(a・b) mod p=K
となり、共通のK(=K=K)を生成することができる。
【0026】
ここで、第三者がこの二人の通信を盗聴してAとBとを入手しても、A=g^a mod p と、B=g^b mod pとから、K=g^(a・b) mod pを計算する方法は現在のところ存在しない。したがって、XとYとが共有した鍵Kの安全が保たれる。
【0027】
図2は、この実施の形態における端末側鍵共有部102及びカード側鍵共有部202の構成の一例を示す詳細ブロック図である。
この例において、端末側鍵共有部102及びカード側鍵共有部202は、上述したDH鍵共有方式を用いて、共有鍵を共有する。
端末側鍵共有部102は、端末乱数生成部103、端末鍵要素生成部104、共有鍵生成部105を有する。カード側鍵共有部202は、カード乱数生成部203、カード鍵要素生成部204、共有鍵生成部205を有する。
【0028】
まず、端末側鍵共有部102が処理を行う。
端末乱数生成部103は、端末乱数721《a》を生成する。端末鍵要素生成部104は、《A =g^a mod p》を計算し、端末鍵要素722《A》を生成する。端末側鍵共有部102は、端末鍵要素722《A》をICカード200へ送付する。
【0029】
次に、カード側鍵共有部202が処理を行う。
カード乱数生成部203は、カード乱数723《b》を生成する。カード鍵要素生成部204は、《B=g^b mod p》を計算し、カード鍵要素724《B》を生成する。カード側鍵共有部202は、カード鍵要素724《B》を端末装置100へ送付する。
共有鍵生成部205は、端末装置100から受け取った端末鍵要素722《A》とカード乱数723《b》とから、《K=A^b mod p》を計算し、共有鍵726《K》を生成する。
【0030】
次に、端末側鍵共有部102が処理を行う。
共有鍵生成部105は、ICカード200から受け取ったカード鍵要素724《B》と、端末乱数721《a》とから、《K=B^a mod p》を計算し、共有鍵725《K》を生成する。
【0031】
以上のようにして、端末装置100とICカード200とが、共有鍵《K》を共有する。
【0032】
図3は、この実施の形態におけるカード検証部106及びカード認証情報生成部206の構成の一例を示す詳細ブロック図である。
記号「HASH」は、SHA、MD5など公知のハッシュアルゴリズムによる演算を示す。また、記号「MAC」は、HMACなど公知のMAC(Message Authentication Code)生成アルゴリズムによる演算を示す。
カード検証部106は、PIN情報ハッシュ部107、マック値算出部108、認証情報比較部109を有する。カード認証情報生成部206は、PIN情報ハッシュ部207、マック値算出部208を有する。
【0033】
まず、ICカード200のカード認証情報生成部206が処理を行う。
PIN情報ハッシュ部207は、PIN情報712《P》を用いて、《K=HASH(P)》を計算する。マック値算出部208は、ハッシュ値《K》と、共有鍵726《K》とを用いて、《HK=K》《m=K》《C’=MAC(HK,m)》を計算し、カード認証情報732《C’》を生成する。カード認証情報生成部206は、カード認証情報732《C’》を端末装置100に送付する。
【0034】
次に、端末装置100のカード検証部106が処理を行う。
PIN情報ハッシュ部107は、PIN情報711《P》を用いて、《K=HASH(P)》を計算する。PIN情報ハッシュ部107は、ハッシュ値《K》と、共有鍵725《K》とを用いて、《HK=K》《m=K》《C=MAC(HK,m)》を計算し、カード検証用情報《C》を生成する。認証情報比較部109は、ICカード200から受け取ったカード認証情報732《C’》と、カード検証用情報《C》とを比較する。一致すれば「OK」、異なれば「NG」として、認証情報比較部109は、カード検証結果735を生成する。
【0035】
このように、鍵共有部(端末側鍵共有部102,カード側鍵共有部202)により、端末装置100とICカード200とが共有鍵725,726を共有する。ICカード200では、カード認証情報生成部206が、PIN情報712と共有鍵726からカード認証情報732を生成する。これにより、カードR/W810を経由する通信データからは、共有鍵を入手することができない。このため、PINの総当たり攻撃を防止することができる。
また、端末装置100がverifyPINコマンドをICカード200へ送付する前に、カード検証部106が、共有鍵725とPIN情報711とを用いて、ICカード200から受け取ったカード認証情報732を検証する。これにより、正しいICカード200に限定してPIN情報711の含まれるverifyPINコマンドを送付することができる。このため、偽のICカード経由のPIN情報の漏洩を防止することができる。
また、暗号化部112が、共有鍵725を用いてverifyPINコマンドを暗号化することが可能となり、盗聴された通信データからのPIN情報の漏洩を防止することができる。
また、鍵共有部(端末側鍵共有部102、端末乱数生成部103)が、DH鍵共有アルゴリズムにより鍵共有をおこない、ICカード200が端末装置100へカード鍵要素724と一緒にカード認証情報732を送ることで、通信回数を3回に削減することができる。
【0036】
なお、暗号化部112における暗号化方式および復号部211における復号方式は、共通鍵暗号アルゴリズムを用いた方式であればよい。認証システム800は、例えば、MISTY(登録商標)、KASUMI、AESなどの共通鍵暗号方式を利用する構成であってもよい。
また、端末装置100がカードR/W810を内蔵する構成であってもよい。
また、ICカード200がカードR/W810を介さず、端末装置100と直接通信する構成であってもよい。
また、カードR/W810が、ネットワークを経由して端末装置100と通信する構成であってもよい。
また、端末装置100とカードR/W810との間の通信や、カードR/W810とICカード200との間の通信は、有線通信であってもよいし、無線通信であってもよい。
また、PIN情報に代えて、パスワードやユーザのジェスチャや生体情報などを用いる構成であってもよい。
【0037】
実施の形態2.
実施の形態2について、図4〜図5を用いて説明する。
なお、実施の形態1と共通する部分については、同一の符号を付し、説明を省略する。
【0038】
図4は、この実施の形態における認証システム800の全体構成の一例を示すシステム構成図である。
認証システム800は、ユーザ801と、端末装置100と、カードR/W810と、ICカード200とを有する。端末装置100は、ユーザ801が利用する。カードR/W810は、端末装置100と、ICカード200との間の通信を仲介する。ICカード200は、ユーザ801が所有する。
【0039】
ユーザ801は、ICカード200の所有者である。ユーザ801は、PIN情報711を記憶している。PIN情報711が、例えば暗号番号である。
【0040】
端末装置100は、端末側通信部110と、PIN情報入力部101と、端末側鍵共有部102と、カード検証部106と、端末認証情報生成部113と、verifyPINコマンド化部111と、暗号化部112とを有する。
端末側通信部110は、端末鍵要素722やメッセージ740などをカードR/W810へ送付する。メッセージ740は、端末認証情報754や暗号済verifyPINコマンド742を含む。端末側通信部110は、メッセージ730などをカードR/W810から受け取る。メッセージ730は、カード鍵要素724やカード認証情報732や端末用乱数751を含む。
端末側鍵共有部102は、端末鍵要素722を生成する。端末側鍵共有部102は、端末鍵要素722を端末側通信部110に送付する。端末側鍵共有部102は、カード鍵要素724を端末側通信部110から受け取る。端末側鍵共有部102は、端末鍵要素722とカード鍵要素724とから共有鍵725を生成する。
PIN情報入力部101は、PIN情報711をユーザ801から受け取る。
カード検証部106は、カード認証情報732を端末側通信部110から受け取る。カード検証部106は、PIN情報711をPIN情報入力部101から受け取る。カード検証部106は、共有鍵725を端末側鍵共有部102から受け取る。カード検証部106は、PIN情報711と共有鍵725とを用いて、カード認証情報732を検証する。カード検証部106は、カード検証結果735を生成する。
端末認証情報生成部113は、PIN情報711をPIN情報入力部101から受け取る。端末認証情報生成部113は、共有鍵725を端末側鍵共有部102から受け取る。端末認証情報生成部113は、端末用乱数751を端末側通信部110から受け取る。端末認証情報生成部113は、カード検証結果735をカード検証部106から受け取る。端末認証情報生成部113は、PIN情報711と共有鍵725と端末用乱数751とを用いて、端末認証情報754を生成する。端末認証情報生成部113は、端末認証情報754を端末側通信部110に送付する。
verifyPINコマンド化部111は、カード検証結果735をカード検証部106から受け取る。verifyPINコマンド化部111は、PIN情報711をPIN情報入力部101から受け取る。verifyPINコマンド化部111は、APDUのverifyPINコマンド741を生成する。
暗号化部112は、verifyPINコマンド741をverifyPINコマンド化部111から受け取る。暗号化部112は、共有鍵725を端末側鍵共有部102から受け取る。暗号化部112は、暗号済verifyPINコマンド742を生成する。暗号化部112は、暗号済verifyPINコマンド742を端末側通信部110に送付する。
【0041】
ICカード200は、カード側通信部210と、カード側鍵共有部202と、PIN情報記憶部201と、カード認証情報生成部206と、端末用乱数生成部213と、端末検証部214と、復号部211と、ICカード処理部212とを有する。
カード側通信部210は、端末鍵要素722やメッセージ740などをカードR/W810から受け取る。メッセージ740は、端末認証情報754や暗号済verifyPINコマンド742を含む。カード側通信部210は、メッセージ730などをカードR/W810へ送付する。メッセージ730は、カード鍵要素724やカード認証情報732や端末用乱数751を含む。
カード側鍵共有部202は、端末鍵要素722をカード側通信部210から受け取る。カード側鍵共有部202は、カード鍵要素724を生成する。カード側鍵共有部202は、カード鍵要素724をカード側通信部210に送付する。カード側鍵共有部202は、端末鍵要素722とカード鍵要素724とから共有鍵726を生成する。
PIN情報記憶部201は、あらかじめ設定されたPIN情報712を格納する。
カード認証情報生成部206は、PIN情報712をPIN情報記憶部201から受け取る。カード認証情報生成部206は、共有鍵726をカード側鍵共有部202から受け取る。カード認証情報生成部206は、PIN情報712と共有鍵726とを用いて、カード認証情報732を生成する。カード認証情報生成部206は、カード認証情報732をカード側通信部210に送付する。
端末用乱数生成部213は、端末用乱数751を生成する。端末用乱数生成部213は、端末用乱数751をカード側通信部210に送付する。
端末検証部214は、端末認証情報754をカード側通信部210から受け取る。端末検証部214は、PIN情報712をPIN情報記憶部201から受け取る。端末検証部214は、共有鍵726をカード側鍵共有部202から受け取る。端末検証部214は、端末用乱数751を端末用乱数生成部213から受け取る。端末検証部214は、PIN情報712と共有鍵726と端末用乱数751とを用いて、端末認証情報754を検証する。端末検証部214は、端末検証結果758を生成する。
復号部211は、verifyPINコマンド741をカード側通信部210から受け取る。復号部211は、端末検証結果758を端末検証部214から受け取る。復号部211は、共有鍵726をカード側鍵共有部202から受け取る。復号部211は、verifyPINコマンド743を生成する。
ICカード処理部212は、verifyPINコマンド743を復号部211から受け取る。ICカード処理部212は、所定のICカード処理を実行する。
【0042】
次に動作について説明する。
ユーザ801は、PIN情報711を記憶している。ICカード200は、あらかじめ何らかの安全な方法によりPIN情報712をPIN情報記憶部201に記憶しておく。
【0043】
引き続き、ICカード200と端末装置100との間で認証を行う際の動作について説明する。
まず、ユーザ801がPIN情報711を端末装置100のPIN情報入力部101により入力する。
【0044】
次に、端末装置100が処理を行う。
端末側鍵共有部102は、端末鍵要素722を生成する。端末側鍵共有部102は、端末鍵要素722を端末側通信部110に送付する。端末側通信部110は、端末鍵要素722をカードR/W810へ送付する。カードR/W810は、端末鍵要素722をカード側通信部210に送付する。
【0045】
次に、ICカード200が処理を行う。
カード側通信部210は、端末鍵要素722をカードR/W810から受け取る。カード側鍵共有部202は、端末鍵要素722をカード側通信部210から受け取る。カード側鍵共有部202は、カード鍵要素724を生成する。カード側鍵共有部202は、端末鍵要素722とカード鍵要素724とから共有鍵726を生成する。
PIN情報記憶部201は、あらかじめ設定され格納しているPIN情報712を取り出す。カード認証情報生成部206は、PIN情報712をPIN情報記憶部201から受け取る。カード認証情報生成部206は、共有鍵726をカード側鍵共有部202から受け取る。カード認証情報生成部206は、PIN情報712と共有鍵726とを用いて、カード認証情報732を生成する。カード認証情報生成部206は、カード認証情報732をカード側通信部210に送付する。
端末用乱数生成部213は、端末用乱数751を生成する。端末用乱数生成部213は、端末用乱数751をカード側通信部210に送付する。
カード側通信部210は、カード鍵要素724をカード側鍵共有部202から受け取る。カード側通信部210は、カード認証情報732をカード認証情報生成部206から受け取る。カード側通信部210は、端末用乱数751を端末用乱数生成部213から受け取る。カード側通信部210は、カード鍵要素724とカード認証情報732と端末用乱数751とを合わせてメッセージ730とする。カード側通信部210は、メッセージ730をカードR/W810へ送付する。カードR/W810は、メッセージ730を端末側通信部110に送付する。
【0046】
次に、端末装置100が処理を行う。
端末側鍵共有部102は、カード鍵要素724を端末側通信部110から受け取る。端末側鍵共有部102は、端末鍵要素722とカード鍵要素724とから共有鍵725を生成する。
カード検証部106は、カード認証情報732を端末側通信部110から受け取る。カード検証部106は、PIN情報711をPIN情報入力部101から受け取る。カード検証部106は、共有鍵725を端末側鍵共有部102から受け取る。カード検証部106は、PIN情報711と共有鍵725とを用いて、カード認証情報732を検証する。カード検証部106は、カード検証結果735を生成する。
端末認証情報生成部113は、カード検証結果735をカード検証部106から受け取る。カード検証結果735が正しくない場合、端末認証情報生成部113は、エラーにより処理を中断する。
カード検証結果735が正しい場合、端末認証情報生成部113は、PIN情報711をPIN情報入力部101から受け取る。端末認証情報生成部113は、共有鍵725を端末側鍵共有部102から受け取る。端末認証情報生成部113は、端末用乱数751を端末側通信部110から受け取る。端末認証情報生成部113は、PIN情報711と共有鍵725と端末用乱数751とを用いて、端末認証情報754を生成する。端末認証情報生成部113は、端末認証情報754を端末側通信部110に送付する。
verifyPINコマンド化部111は、カード検証結果735をカード検証部106から受け取る。カード検証結果735が正しくない場合、verifyPINコマンド化部111は、エラーにより処理を中断する。
カード検証結果735が正しい場合、verifyPINコマンド化部111は、PIN情報711をPIN情報入力部101から受け取る。verifyPINコマンド化部111は、APDUのverifyPINコマンド741を生成する。
暗号化部112は、verifyPINコマンド741をverifyPINコマンド化部111から受け取る。暗号化部112は、verifyPINコマンド741をverifyPINコマンド化部111から受け取る。暗号化部112は、共有鍵725を端末側鍵共有部102から受け取る。暗号化部112は、暗号処理をして、暗号済verifyPINコマンド742を生成する。暗号化部112は、暗号済verifyPINコマンド742を端末側通信部110に送付する。
端末側通信部110は、暗号済verifyPINコマンド742と端末認証情報754とを合わせてメッセージ740とする。端末側通信部110は、メッセージ740をカードR/W810へ送付する。カードR/W810は、メッセージ740をカード側通信部210に送付する。
【0047】
次に、ICカード200が処理を行う。
端末検証部214は、端末認証情報754をカード側通信部210から受け取る。端末検証部214は、PIN情報712をPIN情報記憶部201から受け取る。端末検証部214は、共有鍵726をカード側鍵共有部202から受け取る。端末検証部214は、端末用乱数751を端末用乱数生成部213から受け取る。端末検証部214は、PIN情報712と共有鍵726と端末用乱数751とを用いて、端末認証情報754を検証する。端末検証部214は、端末検証結果758を生成する。
復号部211は、端末検証結果758を端末検証部214から受け取る。端末検証結果758が正しくない場合、復号部211は、エラーにより処理を中断する。
端末検証結果758が正しい場合、復号部211は、verifyPINコマンド741をカード側通信部210から受け取る。復号部211は、共有鍵726をカード側鍵共有部202から受け取る。復号部211は、復号処理をして、verifyPINコマンド743を生成する。
ICカード処理部212は、verifyPINコマンド743を復号部211から受け取り、所定のICカード処理を実行する。
【0048】
図5は、この実施の形態における端末認証情報生成部113及び端末検証部214の構成の一例を示す詳細ブロック図である。
記号「‖」は、データの連結を表現する。
端末認証情報生成部113は、PIN情報ハッシュ部114と、マック値算出部115とを有する。端末検証部214は、PIN情報ハッシュ部215と、マック値算出部216と、認証情報比較部217とを有する。
【0049】
まず、端末装置100の端末認証情報生成部113が処理を行う。
PIN情報ハッシュ部114は、PIN情報711《P》を用いて、《K=HASH(P)》を計算する。マック値算出部115は、ハッシュ値《K》と共有鍵725《K》と端末用乱数751《r》とを用いて、《HK=K》《m=r‖K》《C’=MAC(HK,m)》を計算して、端末認証情報754《C’》を生成する。端末認証情報生成部113は、端末認証情報754《C’》をICカード200に送付する。
【0050】
次に、ICカード200の端末検証部214が処理を行う。
PIN情報ハッシュ部215は、PIN情報712《P》を用いて、《K=HASH(P)》を計算する。マック値算出部216は、ハッシュ値《K》と、共有鍵726《K》と、端末用乱数751《r》とを用いて、《HK=K》《m=r‖K》《C=MAC(HK,m)》を計算して、端末検証用情報《C》を生成する。
認証情報比較部217は、端末装置100から受け取った端末認証情報754《C’》と、端末検証用情報《C》とを比較する。一致すれば「OK」、異なれば「NG」として、認証情報比較部217は、端末検証結果758を生成する。
【0051】
端末装置100にも端末認証情報生成部113を備えることにより、端末装置100とICカード200との相互認証をすることができる。
ICカード200は、端末用乱数生成部213が生成した端末用乱数751を端末装置100に送付し、端末装置100では、端末認証情報生成部113が、PIN情報711と共有鍵725とICカード200から受け取った端末用乱数751とを用いて、端末認証情報754を生成するので、カード認証情報を利用した端末装置100のなりすましを防止することができる。
また、ICカード200が端末装置100へカード鍵要素724と一緒にカード認証情報732と端末用乱数751を送り、端末装置100がICカード200へ暗号済verifyPINコマンド742と一緒に端末認証情報754を送るので、通信回数を3回に削減することができる。
【0052】
なお、PIN情報ハッシュ部114が用いるハッシュアルゴリズムと、PIN情報ハッシュ部215が用いるハッシュアルゴリズムとが同じであれば、PIN情報ハッシュ部107及びPIN情報ハッシュ部207が用いるハッシュアルゴリズムと異なっていてもよい。また、PIN情報ハッシュ部114及びPIN情報ハッシュ部215を設けず、マック値算出部115は、PIN情報ハッシュ部107が算出したハッシュ値《K》を用い、マック値算出部216は、PIN情報ハッシュ部207が算出したハッシュ値《K》を用いる構成であってもよい。
【0053】
実施の形態3.
実施の形態3について、図6〜図10を用いて説明する。
なお、実施の形態1および実施の形態2と共通する部分については、同一の符号を付し、説明を省略する。
【0054】
認証システム800において、ICカード200は、あらかじめ、利用者認証データを記憶している。利用者認証データは、例えば、PIN情報、暗証番号、パスワードなど、利用者を認証するための情報(以下「利用者認証情報」と呼ぶ。)を表わすデータである。
ICカード200を所有している利用者は、ICカード200が記憶した利用者認証データが表わす利用者認証情報を知っている。利用者は、端末装置100に利用者認証情報を入力する。
端末装置100は、入力した利用者認証情報を表わす利用者認証データをICカード200に送信する。ICカード200は、端末装置100から受信した利用者認証データと、あらかじめ記憶した利用者認証データとを比較して、一致する場合に、利用者がICカード200の所有者であると認め、ICカード200が記憶したデータへのアクセスなどICカード200の利用を許可する。
したがって、利用者認証情報を第三者に盗まれないようにすることが重要である。
【0055】
第三者が利用者認証情報を盗もうとする手口には、例えば、次のようなものがある。
第一に、第三者は、端末装置100とICカード200との間の通信を盗聴することにより、利用者認証情報を手に入れようとする。また、第三者は、正しい利用者認証情報がわからないまでも、盗聴により手に入れたデータをICカード200に対して送信することにより、正しい利用者識別情報を知っているかのように振舞おうとする。
第二に、第三者は、ICカード200から利用者認証情報を引き出そうとする。例えば、第三者は、ICカード200を解析して利用者認証データを読み出そうとする。あるいは、第三者は、利用者情報を推測し、推測した利用者認証情報を表わす利用者認証データをICカード200に送信して認証されるかどうかを見る。
第三に、第三者は、利用者から利用者認証情報を引き出そうとする。例えば、第三者は、ICカード200を偽物のICカードとすり替える。利用者が端末装置100に入力した利用者認証情報を表わす利用者認証データを偽物のICカードが受信して、利用者認証情報を手に入れる。
【0056】
認証システム800は、これらの手口から利用者認証情報を守りつつ、ICカード200の所有者である正しい利用者がICカード200を利用できるシステムである。
【0057】
図6は、この実施の形態における認証システム800のハードウェア構成の一例を示すハードウェア構成図である。
認証システム800は、端末装置100と、ICカード200とを有する。
端末装置100は、処理装置911(端末処理装置)と、操作入力装置912と、出力装置913と、記憶装置914(端末記憶装置)と、通信装置915(端末通信装置)とを有する。
ICカード200は、処理装置921(カード処理装置)と、記憶装置924(カード記憶装置)と、通信装置925(カード通信装置)とを有する。
処理装置911は、記憶装置914が記憶したプログラムを実行することにより、データを処理し、端末装置100を制御する。処理装置921も同様に、記憶装置924が記憶したプログラムを実行することにより、ICカード200を制御する。
記憶装置914は、処理装置911が実行するプログラムや、処理装置911が処理するデータなどを記憶する。記憶装置914は、例えば、揮発性メモリ、不揮発性メモリ、ディスクドライブ装置などである。記憶装置924も同様に、処理装置921が実行するプログラムや、処理装置921が処理するデータなどを記憶する。なお、記憶装置924の全部もしくは少なくとも一部は、耐タンパ性を有する。
操作入力装置912は、利用者の操作を入力し、入力した操作を表わすデータを生成する。操作入力装置912が生成したデータは、処理装置911が直接処理してもよいし、記憶装置914が一時的に記憶してもよい。操作入力装置912は、例えば、キーボード、マウス、タッチパネルなどである。
出力装置913は、処理装置911が処理したデータや、記憶装置914が記憶したデータなどを、端末装置100の外部に出力できる形式に変換して、出力する。出力装置913は、例えば、液晶表示装置、スピーカー、プリンタ装置などである。
通信装置915,925は、互いに通信する。通信装置915と通信装置925とは、直接通信する構成であってもよいし、カードR/Wなどを介して通信する構成であってもよい。また、通信装置915と通信装置925との間の通信は、有線接続によるものであってもよいし、無線接続によるものであってもよい。
【0058】
端末装置100やICカード200の機能ブロックは、記憶装置914,924が記憶したプログラムを処理装置911,921が実行することにより実現する。なお、実施の形態1及び実施の形態2における端末装置100やICカード200も、この実施の形態と同様、プログラムを処理装置が実行することにより実現するものであってもよい。
【0059】
図7は、この実施の形態における端末装置100及びICカード200の機能ブロックの構成の一例を示すブロック構成図である。
【0060】
端末装置100は、利用者認証入力部120と、鍵共有部130と、カード検証部140と、ダミー認証生成部151と、利用者認証生成部152と、利用者認証暗号化部153と、端末鍵要素送信部181と、暗号化認証送信部182と、メッセージ受信部190とを有する。
【0061】
利用者認証入力部120は、利用者認証情報を入力する。
利用者認証入力部120は、操作入力装置912を用いて、利用者の操作に基づいて、利用者認証情報を入力する。利用者認証入力部120は、処理装置911を用いて、入力した利用者認証情報を表わす利用者認証データを生成する。利用者認証入力部120は、記憶装置914を用いて、生成した利用者認証データを記憶する。
【0062】
鍵共有部130(端末鍵共有部)は、ICカード200と共有する共有鍵を生成する。鍵共有部130は、例えばDH鍵共有方式を用いて、共有鍵を生成する。
鍵共有部130は、法記憶部131と、原始根記憶部132と、端末乱数生成部133と、端末鍵要素生成部134と、端末共有鍵生成部135とを有する。
【0063】
法記憶部131は、あらかじめ、記憶装置914を用いて、大きな素数pを表わすデータを記憶している。素数pの大きさは、要求される安全性レベルによって異なり、素数pが大きいほど、安全性レベルが高くなる。
原始根記憶部132は、あらかじめ、記憶装置914を用いて、原始根gを表わすデータを記憶している。原始根gは、素数pを法とする整数の剰余類が乗法についてなす群の生成元である。すなわち、原始根gは、2以上p−1以下の整数であり、gのp乗をpで割った余りがgと等しく、2以上p−1以下のいずれの整数iをとってもgのi乗をpで割った余りがgと異なる。
【0064】
端末乱数生成部133は、処理装置911を用いて、法記憶部131が記憶したデータが表わす素数pに基づく処理をする。端末乱数生成部133は、処理装置911を用いて、1以上p−1以下のp−1個の整数のなかから、ランダムに、整数を1つ選択する。端末乱数生成部133が選択した整数を、端末乱数aと呼ぶ。端末乱数生成部133は、記憶装置914を用いて、選択した端末乱数aを表わすデータを記憶する。
【0065】
端末鍵要素生成部134は、処理装置911を用いて、法記憶部131が記憶したデータが表わす素数pと、原始根記憶部132が記憶したデータが表わす原始根gと、端末乱数生成部133が記憶したデータが表わす端末乱数aとに基づく計算をする。端末鍵要素生成部134は、処理装置911を用いて、gのa乗をpで割った余りを計算する。端末鍵要素生成部134が計算した結果として得られる整数を、端末鍵要素Aと呼ぶ。端末鍵要素生成部134は、記憶装置914を用いて、算出した端末鍵要素Aを表わすデータを記憶する。
【0066】
端末共有鍵生成部135は、処理装置911を用いて、法記憶部131が記憶したデータが表わす素数pと、端末乱数生成部133が記憶したデータが表わす端末乱数aと、カード鍵要素受信部191が記憶したデータが表わすカード鍵要素B(後述)とに基づく計算をする。端末共有鍵生成部135は、処理装置911を用いて、Bのa乗をpで割った余りを計算する。端末共有鍵生成部135が計算した結果として得られる整数を表わすデータを、端末共有鍵Kと呼ぶ。端末共有鍵生成部135は、記憶装置914を用いて、算出した端末共通鍵Kを記憶する。
【0067】
カード検証部140は、ICカード200が偽物でないかを検証する。
カード検証部140は、端末認証ハッシュ部141と、端末認証生成部142と、カード認証部143とを有する。
【0068】
端末認証ハッシュ部141は、処理装置911を用いて、利用者認証入力部120が記憶した利用者認証データに基づく計算をする。端末認証ハッシュ部141は、処理装置911を用いて、あらかじめ定めたハッシュ関数H1により、利用者認証データをハッシュする。端末認証ハッシュ部141がハッシュした結果として得られるハッシュ値を表わすデータを、端末ハッシュ値HKと呼ぶ。端末認証ハッシュ部141は、記憶装置914を用いて、算出した端末ハッシュ値HKを記憶する。
端末認証ハッシュ部141が用いるハッシュ関数H1は、完全ハッシュ関数であることが望ましい。すなわち、元のデータ(利用者認証データ)が異なれば、ハッシュ値(端末ハッシュ値HK)が必ず異なる。これにより、元のデータが異なるにも関わらずハッシュ値が偶然一致することによる誤認証を防ぐことができる。
【0069】
端末認証生成部142は、処理装置911を用いて、端末共有鍵生成部135が記憶した端末共有鍵Kと、端末認証ハッシュ部141が記憶した端末ハッシュ値HKとに基づく計算をする。端末認証生成部142は、処理装置911を用いて、あらかじめ定めたハッシュ関数H2により、端末共有鍵Kと、端末ハッシュ値HKとを連結したデータをハッシュする。端末認証生成部142がハッシュした結果として得られるハッシュ値を表わすデータを、カード検証データCと呼ぶ。端末認証生成部142は、記憶装置914を用いて、算出したカード検証データCを記憶する。
端末認証生成部142が用いるハッシュ関数H2は、一方向性を有する。すなわち、ハッシュ値(カード検証データC)から元のデータ(端末共有鍵Kおよび端末ハッシュ値HK)を算出することが事実上不可能である。また、端末認証生成部142が用いるハッシュ関数H2は、一様性を有する。すなわち、元のデータを変化させた場合、ハッシュ値が一様に分布し、偏りがない。この条件を満たせば、端末認証生成部142が用いる関数は、ハッシュ関数でなくてもよいし、端末認証ハッシュ部141が用いるハッシュ関数H1と同一であってもよい。
【0070】
カード認証部143は、処理装置911を用いて、端末認証生成部142が記憶したカード検証データCと、カード認証受信部192が記憶したカード認証データC’(後述)とに基づく判定をする。カード認証部143は、処理装置911を用いて、カード検証データCとカード認証データC’とを比較する。
カード検証データCとカード認証データC’とが一致する場合、カード認証部143は、処理装置911を用いて、ICカード200の検証に成功したと判定する。
カード検証データCとカード認証データC’とが一致しない場合、カード認証部143は、処理装置911を用いて、ICカード200の検証に失敗したと判定する。
カード認証部143が判定した結果を、カード認証結果と呼ぶ。カード認証部143は、記憶装置914を用いて、カード認証結果を表わすデータを記憶する。
【0071】
ダミー認証生成部151は、処理装置911を用いて、カード認証部143が記憶したデータが表わすカード認証結果に基づいて処理をする。カード検証部140がICカード200の検証に失敗した場合、ダミー認証生成部151は、処理装置911を用いて、ダミーの利用者認証データをランダムに生成する。すなわち、ダミー認証生成部151は、処理装置911を用いて、利用者認証データとして可能な多数のデータのなかから、ダミーの利用者認証データとして、1つのデータをランダムに選択する。ダミー認証生成部151は、記憶装置914を用いて、生成したダミーの利用者認証データを記憶する。
【0072】
利用者認証生成部152は、処理装置911を用いて、カード認証部143が記憶したデータが表わすカード認証結果に基づく処理をする。利用者認証生成部152は、処理装置911を用いて、利用者認証コマンドを生成する。利用者認証コマンドは、ICカード200に対して利用者の認証を要求するコマンドである。利用者認証コマンドは、例えば、APDUのverifyPINコマンドである。利用者認証コマンドは、利用者認証データを含む。
カード検証部140がICカード200の認証に成功した場合、利用者認証生成部152は、処理装置911を用いて、利用者認証入力部120が記憶した利用者認証データを含む利用者認証コマンドを生成する。
カード検証部140がICカード200の認証に失敗した場合、利用者認証生成部152は、処理装置911を用いて、ダミー認証生成部151が記憶したダミーの利用者認証データを含む利用者認証コマンドを生成する。
利用者認証生成部152は、記憶装置914を用いて、生成した利用者認証コマンドを記憶する。
【0073】
利用者認証暗号化部153は、処理装置911を用いて、端末共有鍵生成部135が記憶した端末共有鍵Kと、利用者認証生成部152が記憶した利用者認証コマンドとに基づく処理をする。利用者認証暗号化部153は、処理装置911を用いて、端末共有鍵Kにより利用者認証コマンドを暗号化する。利用者認証暗号化部153が利用者認証コマンドを暗号化した結果として得られる暗号文を、暗号済利用者認証コマンドと呼ぶ。利用者認証暗号化部153は、記憶装置914を用いて、生成した暗号済利用者認証コマンドを記憶する。
【0074】
端末鍵要素送信部181は、処理装置911を用いて、端末鍵要素生成部134が記憶したデータが表わす端末鍵要素Aに基づく処理をする。端末鍵要素送信部181は、処理装置911を用いて、認証開始メッセージを生成する。認証開始メッセージは、ICカード200に対して、認証処理のプロトコルを開始することを通知するとともに、端末鍵要素Aを通知するメッセージである。端末鍵要素送信部181は、処理装置911を用いて、端末鍵要素Aを表わすデータを含む認証開始メッセージを生成する。端末鍵要素送信部181は、通信装置915を用いて、生成した認証開始メッセージを、ICカード200に対して送信する。
【0075】
暗号化認証送信部182は、通信装置915を用いて、利用者認証暗号化部153が記憶した暗号済利用者認証コマンドを送信する。暗号化認証送信部182は、通信装置915を用いて、暗号済利用者認証コマンドを、ICカード200に対して送信する。
【0076】
メッセージ受信部190は、通信装置915を用いて、ICカード200が送信した認証開始応答メッセージを受信する。認証開始応答メッセージは、端末鍵要素送信部181が送信した認証開始メッセージに対する応答である。認証開始応答メッセージは、カード鍵要素Bを表わすデータと、カード認証データC’とを含む。
メッセージ受信部190は、カード鍵要素受信部191と、カード認証受信部192とを有する。
【0077】
カード鍵要素受信部191は、通信装置915を用いて受信した認証開始応答メッセージから、処理装置911を用いて、カード鍵要素Bを表わすデータを取得する。カード鍵要素受信部191は、記憶装置914を用いて、取得したデータを記憶する。
カード認証受信部192は、通信装置915を用いて受信した認証開始応答メッセージから、処理装置911を用いて、カード認証データC’を取得する。カード認証受信部192は、記憶装置914を用いて、取得したカード認証データC’を記憶する。
【0078】
ICカード200は、利用者認証記憶部220と、鍵共有部230と、認証情報生成部240と、利用者認証復号部251と、利用者認証部252と、端末鍵要素受信部281と、暗号化認証受信部282と、メッセージ送信部290とを有する。
【0079】
利用者認証記憶部220は、あらかじめ、耐タンパ性を有する記憶装置924を用いて、利用者認証データを記憶している。したがって、第三者がICカード200を解析しても、利用者認証データを読み出すことはできない。
【0080】
鍵共有部230(カード鍵共有部)は、端末装置100と共有する共有鍵を生成する。鍵共有部230は、例えばDH鍵共有方式を用いて、共有鍵を生成する。
鍵共有部230は、法記憶部231と、原始根記憶部232と、カード乱数生成部233と、カード鍵要素生成部234と、カード共有鍵生成部235とを有する。
【0081】
法記憶部231は、あらかじめ、記憶装置924を用いて、端末装置100の法記憶部131が記憶しているデータが表わす素数pと同一の素数pを表わすデータを記憶している。
原始根記憶部232は、あらかじめ、記憶装置924を用いて、端末装置100の原始根記憶部132が記憶しているデータが表わす原始根gと同一の原始根gを表わすデータを記憶している。
【0082】
カード乱数生成部233は、処理装置921を用いて、法記憶部231が記憶したデータが表わす素数pに基づく処理をする。カード乱数生成部233は、処理装置921を用いて、1以上p−1以下のp−1個の整数のなかから、ランダムに整数を1つ選択する。カード乱数生成部233が選択した整数を、カード乱数bと呼ぶ。カード乱数生成部233は、記憶装置924を用いて、選択したカード乱数bを表わすデータを記憶する。
【0083】
カード鍵要素生成部234は、処理装置921を用いて、法記憶部231が記憶したデータが表わす素数pと、原始根記憶部232が記憶したデータが表わす原始根gと、カード乱数生成部233が記憶したデータが表わすカード乱数bとに基づく計算をする。カード鍵要素生成部234は、処理装置921を用いて、gのb乗をpで割った余りを計算する。カード鍵要素生成部234が計算した結果として得られる整数を、カード鍵要素Bと呼ぶ。カード鍵要素生成部234は、記憶装置924を用いて、算出したカード鍵要素Bを表わすデータを記憶する。
【0084】
カード共有鍵生成部235は、処理装置921を用いて、法記憶部231が記憶したデータが表わす素数pと、カード乱数生成部233が記憶したデータが表わすカード乱数bと、端末鍵要素受信部281が記憶したデータが表わす端末鍵要素Aとに基づく計算をする。カード共有鍵生成部235は、処理装置921を用いて、Aのb乗をpで割った余りを計算する。カード共有鍵生成部235が計算した結果として得られる整数を表わすデータを、カード共有鍵Kと呼ぶ。カード共有鍵生成部235は、記憶装置924を用いて、算出したカード共有鍵Kを記憶する。
【0085】
カード共有鍵生成部235が算出するカード共有鍵Kは、端末共有鍵生成部135が算出する端末共有鍵Kと同一である。したがって、ICカード200は、端末装置100が端末共有鍵Kにより暗号化した暗号化利用者認証コマンドを復号することができる。
端末装置100とICカード200とは、あらかじめ素数pと原始根gとを共有しておく必要があるが、素数pや原始根gは公開された情報である。したがって、端末装置100とICカード200とが、あらかじめ秘密の情報を共有しておく必要はない。
また、第三者が、端末装置100とICカード200との間の通信を傍受して、端末鍵要素Aとカード鍵要素Bとを手に入れたとしても、そこから共有鍵Kを計算することは、事実上不可能である。したがって、第三者が、端末装置100とICカード200との間の通信を傍受して、暗号化利用者認証コマンドを手に入れたとしても、手に入れた暗号化利用者認証コマンドを復号して、そこに含まれる利用者認証データを手に入れることはできない。
また、共有鍵Kは、端末乱数生成部133がランダムに選択した端末乱数aと、カード乱数生成部233がランダムに選択したカード乱数bとに基づいて生成されるので、通信のたびに変化する。したがって、第三者が、端末装置100とICカード200との間の通信を傍受して、暗号化利用者認証コマンドを手に入れ、その後、ICカード200に対して、手に入れた暗号化利用者認証コマンドを送信したとしても、共有鍵Kが異なるので、ICカード200は、第三者が送信した暗号化利用者認証コマンドを受理しない。したがって、再送によるなりすまし攻撃に対しても安全である。
【0086】
認証情報生成部240は、カード認証データC’を生成する。
認証情報生成部240は、カード認証ハッシュ部241と、カード認証生成部242とを有する。
【0087】
カード認証ハッシュ部241は、処理装置921を用いて、利用者認証記憶部220が記憶した利用者認証データに基づく計算をする。カード認証ハッシュ部241は、処理装置921を用いて、端末装置100の端末認証ハッシュ部141が用いるハッシュ関数H1と同一のハッシュ関数H1により、利用者認証データをハッシュする。カード認証ハッシュ部241がハッシュした結果としてあられるハッシュ値を表わすデータを、カードハッシュ値HKと呼ぶ。カード認証ハッシュ部241は、記憶装置924を用いて、算出したカードハッシュ値HKを記憶する。
なお、カード認証ハッシュ部241は、あらかじめ、処理装置921を用いて、カードハッシュ値HKを算出し、耐タンパ性のある記憶装置924を用いて、算出したカードハッシュ値HKを記憶しておいてもよい。これにより、認証処理におけるICカード200の計算量を減らすことができる。
【0088】
カード認証生成部242は、処理装置921を用いて、カード共有鍵生成部235が記憶したカード共有鍵Kと、カード認証ハッシュ部241が記憶したカードハッシュ値HKとに基づく計算をする。カード認証生成部242は、処理装置921を用いて、端末装置100の端末認証生成部142が用いるハッシュ関数H2と同一のハッシュ関数H2により、カード共有鍵Kとカード認証ハッシュ値HKとを連結したデータをハッシュする。カード認証生成部242がハッシュした結果として得られるハッシュ値を表わすデータが、カード認証データC’である。カード認証生成部242は、記憶装置914を用いて、算出したカード認証データC’を記憶する。
【0089】
利用者認証入力部120が入力した利用者認証情報に基づいて生成した利用者認証データが、利用者認証記憶部220が記憶した利用者認証データと同一であれば、端末認証ハッシュ部141が算出する端末ハッシュ値HKは、カード認証ハッシュ部241が算出するカードハッシュ値HKと同一になる。端末共有鍵生成部135が生成する端末共有鍵Kと、カード共有鍵生成部235が生成するカード共通鍵Kとが同一なので、端末認証生成部142が算出するカード検証データCは、カード認証生成部242が算出するカード認証データC’と同一になる。
したがって、利用者認証入力部120が入力した利用者認証情報に基づいて生成した利用者認証データと、利用者認証記憶部220が記憶した利用者認証データとが一致していれば、カード認証部143がICカード200の検証に成功したと判定する。
また、ハッシュ関数H2は一様性を有するので、利用者認証入力部120が入力した利用者認証情報に基づいて生成した利用者認証データと、利用者認証記憶部220が記憶した利用者認証データとが異なるにも関わらず、端末認証生成部142が算出するカード検証データCと、カード認証生成部242が算出するカード認証データC’とが偶然同一になる確率は極めて低く、誤認証を防ぐことができる。
また、ハッシュ関数H2は一方向性を有するので、第三者が、端末装置100とICカード200との間の通信を傍受して、カード認証データC’を手に入れたとしても、そこから共通鍵Kやカード認証ハッシュ値HKを算出することは、事実上不可能である。
【0090】
利用者認証入力部120が入力した利用者認証情報に基づいて生成した利用者認証データと、利用者認証記憶部220が記憶した利用者認証データとが一致せず、カード認証部143がICカード200の検証に失敗したと判定する場合には、いくつかの場合が考えられる。
第一の場合は、利用者が、間違った利用者認証情報を端末装置100に入力した場合である。これは、日常的に発生する状況であり、不正なことは何も起きていない。
第二の場合は、ICカード200を盗んだ第三者が、推測した利用者認証情報を端末装置100に入力して、推測が外れた場合である。
第三の場合は、ICカード200が偽物とすり替えられている場合である。偽物のICカードは、正しい利用者認証データを知らないので、正しいカード認証データC’を生成することができない。このため、利用者が正しい利用者認証情報を入力していたとしても、ICカード200の認証に失敗する。
【0091】
このように、ICカード200の認証に失敗する場合には、第一の場合や第二の場合のように、利用者の側に問題がある場合と、第三の場合のように、ICカードの側に問題がある場合とがある。また、第二の場合や第三の場合のように、何か不正なことが起きている可能性がある。
【0092】
利用者認証復号部251は、処理装置921を用いて、カード共有鍵生成部235が記憶したカード共有鍵Kと、暗号化認証受信部282が記憶した暗号化利用者認証コマンドとに基づく処理をする。利用者認証復号部251は、処理装置921を用いて、カード共有鍵Kにより暗号化利用者認証コマンドを復号する。カード共有鍵Kは、利用者認証暗号化部153が暗号化に用いた端末共有鍵Kと同一なので、利用者認証復号部251が暗号化利用者認証コマンドを復号した結果として得られる復号文は、利用者認証生成部152が生成した利用者認証コマンドと同一になる。利用者認証復号部251は、記憶装置924を用いて、暗号化利用者認証コマンドを復号して得られた利用者認証コマンドを記憶する。
【0093】
なお、共有鍵Kは、通信のたびに生成されるものであり、共有鍵Kの生成に、秘密の情報は何ら必要ではない。したがって、ICカード200が偽物とすり替えられている場合であっても、偽物のICカードは、暗号化利用者認証コマンドを正しく復号して、利用者認証コマンドを得ることができる。
しかし、ICカード200が偽物とすり替えられている場合には、利用者認証暗号化部153がICカード200の認証に失敗する。このため、利用者認証コマンドに含まれる利用者認証データは、ダミー認証生成部151が生成したダミーの利用者認証データである。したがって、ICカード200を偽物とすり替えたとしても、第三者が、正しい利用者認証データを手に入れることはできない。
【0094】
利用者認証部252は、処理装置921を用いて、利用者認証記憶部220が記憶した利用者認証データと、利用者認証復号部251が取得した利用者認証コマンドとに基づく判定をする。利用者認証部252は、処理装置921を用いて、利用者認証コマンドに含まれる利用者認証データと、利用者認証記憶部220が記憶した利用者認証データとを比較する。
両者が一致する場合、利用者認証部252は、処理装置911を用いて、利用者の認証に成功したと判定する。
両者が一致しない場合、利用者認証部252は、処理装置911を用いて、利用者の認証に失敗したと判定する。
利用者認証部252が判定した結果を、利用者認証結果と呼ぶ。利用者認証部252は、記憶装置924を用いて、判定した利用者認証結果を表わすデータを記憶する。
【0095】
利用者認証部252が判定した利用者認証結果に基づいて、ICカード200は、様々な処理をする。その後の処理は、従来のICカードと同様なので、簡単に説明するに留める。
利用者の認証に成功した場合、ICカード200は、端末装置100に対して、ICカード200が記憶したデータなどに対するアクセスを許可する。例えば、端末装置100がデータの読出しや書き込みを指示するコマンドを送信した場合、ICカード200は、そのコマンドに基づいて、記憶したデータを読み出して端末装置100に対して送信し、あるいは、コマンドで指示されたデータを受け取って記憶する。
利用者の認証に失敗した場合、ICカード200は、端末装置100に対して、ICカード200が記憶したデータなどに対するアクセスを許可しない。更に、利用者認証の失敗が所定の回数(例えば3回)連続した場合、ICカード200は、外部からのコマンドを一切受け付けないロック状態になる。これにより、ICカード200を盗んだ第三者が、推測した利用者認証情報を何回も入力することにより、推測が偶然当たってしまうのを防ぐ。
【0096】
ICカード200を盗んだ第三者が、推測した利用者認証情報を端末装置100に入力して推測が外れた場合、カード認証部143が、ICカード200の認証に失敗したと判定する。その場合でも、端末装置100は、ダミーの利用者認証データを含む利用者認証コマンドを生成するので、ロック機能を有するICカード200をロックさせることができる。
【0097】
端末鍵要素受信部281は、通信装置925を用いて、端末装置100が送信した認証開始メッセージを受信する。端末鍵要素受信部281は、処理装置921を用いて、受信した認証開始メッセージから、端末鍵要素Aを表わすデータを取得する。端末鍵要素受信部281は、記憶装置924を用いて、取得したデータを記憶する。
【0098】
暗号化認証受信部282は、通信装置925を用いて、端末装置100が送信した暗号化利用者認証コマンドを受信する。暗号化認証受信部282は、記憶装置924を用いて、受信した暗号化利用者認証コマンドを記憶する。
【0099】
メッセージ送信部290は、カード鍵要素送信部291と、カード認証送信部292とを有する。
カード鍵要素送信部291は、通信装置925を用いて、カード鍵要素生成部234が記憶したデータが表わすカード鍵要素Bを、端末装置100に対して通知する。
カード認証送信部292は、通信装置925を用いて、カード認証生成部242が記憶したカード認証データC’を、端末装置100に対して通知する。
メッセージ送信部290は、処理装置921を用いて、カード鍵要素Bを表わすデータと、カード認証データC’とを含む認証開始応答メッセージを生成する。メッセージ送信部290は、通信装置925を用いて、生成した認証開始応答メッセージを、端末装置100に対して送信する。
【0100】
図8は、この実施の形態における認証処理S400の流れの一例を示す全体フローチャート図である。
認証処理S400は、利用者認証入力工程S410と、鍵共有処理S420と、カード認証処理S440と、ダミー認証生成工程S450と、利用者認証処理S460とを有する。認証処理S400は、端末装置100が利用者認証入力工程S410を実行するところから開始する。
【0101】
利用者認証入力工程S410において、端末装置100(利用者認証入力部120)は、操作入力装置912を用いて、利用者の操作に基づいて、利用者認証データを入力する。
鍵共有処理S420において、端末装置100およびICカード200は、共有鍵Kを共有する。
カード認証処理S440において、ICカード200は、カード認証データC’を生成する。端末装置100は、ICカード200が生成したカード認証データC’を検証することにより、ICカード200の認証に成功したか失敗したかを判定する。ICカード200の認証に成功したと判定した場合、端末装置100は、利用者認証処理S460へ処理を進める。ICカード200の認証に失敗したと判定した場合、端末装置100は、ダミー認証生成工程S450へ処理を進める。
ダミー認証生成工程S450において、端末装置100(ダミー認証生成部151)は、処理装置911を用いて、ダミーの利用者認証データを生成する。
利用者認証処理S460において、端末装置100は、利用者認証コマンドを生成する。ICカード200は、端末装置100が生成した利用者認証コマンドを検証して、利用者の認証に成功したか失敗したかを判定する。
【0102】
図9は、この実施の形態における認証処理S400の一部の詳細な流れの一例を示す詳細フローチャート図である。
端末装置100は、端末乱数生成工程S421と、端末鍵要素生成工程S422と、端末鍵要素送信工程S423と、メッセージ受信工程S431と、端末共有鍵生成工程S424と、端末認証ハッシュ工程S441と、端末認証生成工程S442と、カード認証工程S443と、ダミー認証生成工程S450とを実行する。
ICカード200は、端末鍵要素受信工程S521と、カード乱数生成工程S522と、カード鍵要素生成工程S523と、カード共有鍵生成工程S524と、カード認証ハッシュ工程S541と、カード認証生成工程S542と、メッセージ送信工程S531とを実行する。
このうち、端末乱数生成工程S421と、端末鍵要素生成工程S422と、端末鍵要素送信工程S423と、端末共有鍵生成工程S424と、端末鍵要素受信工程S521と、カード乱数生成工程S522と、カード鍵要素生成工程S523と、カード共有鍵生成工程S524とは、鍵共有処理S420の一部である。また、端末認証ハッシュ工程S441と、端末認証生成工程S442と、カード認証工程S443と、カード認証ハッシュ工程S541とは、カード認証処理S440の一部である。また、メッセージ受信工程S431と、メッセージ送信工程S531とは、鍵共有処理S420とカード認証処理S440との両方に属する工程である。
このように、鍵共有処理S420が終わったあとでカード認証処理S440が実行されるわけではなく、鍵共有処理S420とカード認証処理S440とは、入り組んだ順序で実行される。
【0103】
端末装置100は、利用者認証入力工程S410を実行したのち、端末乱数生成工程S421を実行するところから鍵共有処理S420を開始する。
【0104】
端末乱数生成工程S421において、端末装置100の端末乱数生成部133は、処理装置911を用いて、端末乱数aをランダムに選択する。端末装置100は、処理装置911を用いて、端末鍵要素生成工程S422へ処理を進める。
端末鍵要素生成工程S422において、端末装置100の端末鍵要素生成部134は、処理装置911を用いて、端末乱数生成工程S421で端末乱数生成部133が選択した端末乱数aに基づいて、端末鍵要素Aを算出する。端末装置100は、処理装置911を用いて、端末鍵要素送信工程S423へ処理を進める。
端末鍵要素送信工程S423において、端末装置100の端末鍵要素送信部181は、通信装置915を用いて、端末鍵要素生成工程S422で端末鍵要素生成部134が算出した端末鍵要素Aを含む認証開始メッセージを、ICカード200に対して送信する。端末装置100は、処理装置911を用いて、メッセージ受信工程S431へ処理を進め、送信した認証開始メッセージに対する応答が、ICカード200から返ってくるのを待つ。
【0105】
ICカード200は、端末装置100が送信した認証開始メッセージを受信して、端末鍵要素受信工程S521を実行するところから、鍵共有処理S420を開始する。
【0106】
端末鍵要素受信工程S521において、ICカード200の端末鍵要素受信部281は、通信装置925を用いて、端末鍵要素送信工程S423で端末装置100が送信した認証開始メッセージを受信する。ICカード200は、処理装置921を用いて、カード乱数生成工程S522へ処理を進める。
カード乱数生成工程S522において、ICカード200のカード乱数生成部233は、処理装置921を用いて、カード乱数bをランダムに選択する。ICカード200は、処理装置921を用いて、カード鍵要素生成工程S523へ処理を進める。
カード鍵要素生成工程S523において、ICカード200のカード鍵要素生成部234は、処理装置921を用いて、カード乱数生成工程S522でカード乱数生成部233が選択したカード乱数bに基づいて、カード鍵要素Bを算出する。ICカード200は、処理装置921を用いて、カード共有鍵生成工程S524へ処理を進める。
カード共有鍵生成工程S524において、ICカード200のカード共有鍵生成部235は、処理装置911を用いて、端末鍵要素受信工程S521で端末鍵要素受信部281が受信した認証開始メッセージに含まれる端末鍵要素Aと、カード乱数生成工程S522でカード乱数生成部233が選択したカード乱数bとに基づいて、カード共有鍵Kを算出する。ICカード200は、処理装置921を用いて、カード認証ハッシュ工程S541へ処理を進める。
【0107】
カード認証ハッシュ工程S541から、カード認証処理S440が開始する。
カード認証ハッシュ工程S541において、ICカード200のカード認証ハッシュ部241は、処理装置921を用いて、利用者認証記憶部220が記憶した利用者認証データに基づいて、カードハッシュ値HKを算出する。ICカード200は、処理装置911を用いて、カード認証生成工程S542へ処理を進める。
カード認証生成工程S542において、ICカード200のカード認証生成部242は、処理装置921を用いて、カード共有鍵生成工程S524でカード共有鍵生成部235が算出したカード共有鍵Kと、カード認証ハッシュ工程S541でカード認証ハッシュ部241が算出したカードハッシュ値HKとに基づいて、カード認証データC’を算出する。ICカード200は、処理装置911を用いて、メッセージ送信工程S531へ処理を進める。
【0108】
メッセージ送信工程S531において、ICカード200のメッセージ送信部290(カード鍵要素送信部291およびカード認証送信部292)は、通信装置925を用いて、カード鍵要素生成工程S523でカード鍵要素生成部234が算出したカード鍵要素Bと、カード認証生成工程S542でカード認証生成部242が算出したカード認証データC’とを含む認証開始応答メッセージを、端末装置100に対して送信する。ICカード200における鍵共有処理S420及びカード認証処理S440は、これで終わりである。ICカード200は、処理装置921を用いて、利用者認証処理S460へ処理を進める。
【0109】
メッセージ受信工程S431において、端末装置100のメッセージ受信部190(カード鍵要素受信部191およびカード認証受信部192)は、通信装置925を用いて、メッセージ送信工程S531でICカード200が送信した認証開始応答メッセージを受信する。端末装置100は、処理装置911を用いて、端末共有鍵生成工程S424へ処理を進める。
【0110】
端末共有鍵生成工程S424において、端末装置100の端末共有鍵生成部135は、処理装置911を用いて、端末乱数生成工程S421で端末乱数生成部133が選択した端末乱数aと、メッセージ受信工程S431でメッセージ受信部190が受信した認証開始応答メッセージに含まれるカード鍵要素Bとに基づいて、端末共有鍵Kを算出する。端末装置100は、処理装置911を用いて、端末認証ハッシュ工程S441へ処理を進める。
【0111】
端末認証ハッシュ工程S441において、端末装置100の端末認証ハッシュ部141は、処理装置911を用いて、利用者認証入力工程S410で利用者認証入力部120が入力した利用者認証データに基づいて、端末ハッシュ値HKを算出する。端末装置100は、処理装置911を用いて、端末認証生成工程S442へ処理を進める。
端末認証生成工程S442において、端末装置100の端末認証生成部142は、処理装置911を用いて、端末共有鍵生成工程S424で端末共有鍵生成部135が算出した端末共有鍵Kと、端末認証ハッシュ工程S441で端末認証ハッシュ部141が算出した端末ハッシュ値HKとに基づいて、カード検証データCを算出する。端末装置100は、処理装置911を用いて、カード認証工程S443へ処理を進める。
カード認証工程S443において、端末装置100のカード認証部143は、処理装置911を用いて、メッセージ受信工程S431でメッセージ受信部190が受信した認証開始応答メッセージに含まれるカード認証データC’と、端末認証生成工程S442で端末認証生成部142が算出したカード検証データCとを比較する。
両者が一致する場合は、認証成功である。端末装置100は、処理装置911を用いて、利用者認証処理S460へ処理を進める。
両者が一致しない場合は、認証失敗である。端末装置100は、処理装置911を用いて、ダミー認証生成工程S450へ処理を進める。
【0112】
図10は、この実施の形態における利用者認証処理S460の詳細な流れの一例を示す詳細フローチャート図である。
利用者認証処理S460において、端末装置100は、利用者認証生成工程S461と、利用者認証暗号化工程S462と、暗号化認証送信工程S463とを実行する。ICカード200は、暗号化認証受信工程S561と、利用者認証復号工程S562と、利用者認証工程S563とを実行する。利用者認証処理S460は、端末装置100のカード認証部143が認証成功と判定した場合、あるいは、カード認証部143が認証失敗と判定し、端末装置100がダミー認証生成工程S450を実行したのちに、端末装置100が利用者認証生成工程S461を実行するところから処理を開始する。
【0113】
利用者認証生成工程S461において、端末装置100の利用者認証生成部152は、処理装置911を用いて、利用者認証コマンドを生成する。
カード認証処理S440でカード認証部143がICカード200の認証に成功した場合、利用者認証生成部152は、処理装置911を用いて、利用者認証入力工程S410で利用者認証入力部120が入力した利用者認証データを含む利用者認証コマンドを生成する。
カード認証処理S440でカード認証部143がICカード200の認証に失敗した場合、利用者認証生成部152は、処理装置911を用いて、ダミー認証生成工程S450でダミー認証生成部151が生成したダミーの利用者認証データを含む利用者認証コマンドを生成する。
端末装置100は、処理装置911を用いて、利用者認証暗号化工程S462へ処理を進める。
【0114】
利用者認証暗号化工程S462において、端末装置100の利用者認証暗号化部153は、処理装置911を用いて、端末共有鍵生成工程S424で端末共有鍵生成部135が算出した端末共有鍵Kと、利用者認証生成工程S461で利用者認証生成部152が生成した利用者認証コマンドとに基づいて、暗号化利用者認証コマンドを生成する。端末装置100は、処理装置911を用いて、暗号化認証送信工程S463へ処理を進める。
暗号化認証送信工程S463において、端末装置100の暗号化認証送信部182は、通信装置915を用いて、利用者認証暗号化工程S462で利用者認証暗号化部153が生成した暗号化利用者認証コマンドを、ICカード200に対して送信する。端末装置100における利用者認証処理S460は、これで終わりである。
【0115】
ICカード200は、端末装置100が送信した暗号化利用者認証コマンドを受信して、暗号化認証受信工程S561を実行するところから、利用者認証処理S460を開始する。
【0116】
暗号化認証受信工程S561において、ICカード200の暗号化認証受信部282は、通信装置925を用いて、端末装置100が送信した暗号化利用者認証コマンドを受信する。ICカード200は、処理装置921を用いて、利用者認証復号工程S562へ処理を進める。
利用者認証復号工程S562において、ICカード200の利用者認証復号部251は、処理装置911を用いて、カード共有鍵生成工程S524でカード共有鍵生成部235が算出したカード共有鍵Kと、暗号化認証受信工程S561で暗号化認証受信部282が受信した暗号化利用者認証コマンドとに基づいて、利用者認証コマンドを復号する。ICカード200は、処理装置921を用いて、利用者認証工程S563へ処理を進める。
利用者認証工程S563において、ICカード200の利用者認証部252は、処理装置921を用いて、利用者認証記憶部220が記憶した利用者認証データと、利用者認証復号工程S562で利用者認証復号部251が復号した利用者認証コマンドに含まれる利用者認証データとを比較する。両者が一致する場合は、認証成功である。両者が一致しない場合は、認証失敗である。
ICカード200は、処理装置921を用いて、利用者認証処理S460を終了し、認証結果に基づく処理をする。
【0117】
認証システム800は、端末装置100と、アイシーカード(ICカード200)とを有する。
上記端末装置100は、操作入力装置912と、端末処理装置(処理装置911)と、端末通信装置(通信装置915)と、利用者認証入力部120と、カード認証受信部192と、端末共有鍵生成部135と、カード認証部143と、利用者認証生成部152と、利用者認証暗号化部153と、暗号化認証送信部182とを有する。
操作入力装置912は、利用者の操作を入力する。
端末処理装置(911)は、データを処理する。
端末通信装置(915)は、上記アイシーカード(200)と通信する。
利用者認証入力部120は、上記操作入力装置912を用いて、上記利用者を認証する利用者認証データを入力する。
カード認証受信部192は、上記端末通信装置(915)を用いて、上記アイシーカード(200)が送信したカード認証データC’を受信する。
端末共有鍵生成部135は、上記端末処理装置(911)を用いて、上記アイシーカード(200)と共有する共有鍵(端末共有鍵K)を生成する。
カード認証部143は、上記端末処理装置(911)を用いて、上記利用者認証入力部120が入力した利用者認証データと、上記端末共有鍵生成部135が生成した共有鍵Kと、上記カード認証受信部192が受信したカード認証データC’とに基づいて、上記アイシーカード(200)を認証する。
利用者認証生成部152は、上記カード認証部143が上記アイシーカード(200)の認証に成功した場合に、上記端末処理装置(911)を用いて、上記利用者認証入力部120が入力した利用者認証データに基づいて、上記アイシーカード(200)に対して上記利用者の認証を要求する利用者認証コマンドを生成する。
利用者認証暗号化部153は、上記端末処理装置(911)を用いて、上記利用者認証生成部152が生成した利用者認証コマンドを、上記端末共有鍵生成部135が生成した共有鍵Kで暗号化して、暗号化認証コマンドを生成する。
暗号化認証送信部182は、上記端末通信装置(915)を用いて、上記利用者認証暗号化部153が生成した暗号化認証コマンドを上記アイシーカード(200)に対して送信する。
【0118】
上記アイシーカード(200)は、カード記憶装置(記憶装置924)と、カード処理装置(処理装置921)と、カード通信装置(通信装置925)と、利用者認証記憶部220と、カード共有鍵生成部235と、カード認証生成部242と、カード認証送信部292と、暗号化認証受信部282と、利用者認証復号部251と、利用者認証部252とを有する。
カード記憶装置(924)は、データを記憶する。
カード処理装置(921)は、データを処理する。
カード通信装置(925)は、上記端末装置100と通信する。
利用者認証記憶部220は、上記カード記憶装置(924)を用いて、利用者を認証する利用者認証データを記憶する。
カード共有鍵生成部235は、上記カード処理装置(921)を用いて、上記端末装置100と共有する共有鍵(カード共有鍵K)を生成する。
カード認証生成部242は、上記カード処理装置(921)を用いて、上記利用者認証記憶部220が記憶した利用者認証データと、上記カード共有鍵生成部235が生成した共有鍵Kとに基づいて、カード認証データC’を生成する。
カード認証送信部292は、上記カード通信装置(925)を用いて、上記カード認証生成部242が生成したカード認証データC’を上記端末装置100に対して送信する。
暗号化認証受信部282は、上記カード通信装置(925)を用いて、上記端末装置100が送信した暗号化認証コマンドを受信する。
利用者認証復号部251は、上記カード処理装置(921)を用いて、上記暗号化認証受信部282が受信した暗号化認証コマンドを、上記カード共有鍵生成部235が生成した共有鍵Kで復号して、利用者認証コマンドを生成する。
利用者認証部252は、上記カード処理装置(921)を用いて、上記利用者認証記憶部220が記憶した利用者認証データと、上記利用者認証復号部251が生成した利用者認証コマンドとに基づいて、利用者を認証する。
【0119】
利用者認証暗号化部153が暗号化した暗号化利用者認証コマンドをICカード200に対して送信するので、端末装置100とICカード200との間の通信を第三者が傍受して暗号化利用者認証コマンドを入手したとしても、そこから利用者認証データを入手することはできない。
端末共有鍵生成部135とカード共有鍵生成部235とが、端末装置100とICカード200とで共有する共有鍵Kを生成するので、利用者認証暗号化部153が暗号化した暗号化利用者認証コマンドを、利用者認証復号部251が正しく復号できる。
暗号化利用者認証コマンドを送信する前に、ICカード200を認証して、偽物でないかを判定するので、偽物のICカードを介して、利用者認証データが漏洩するのを防ぐことができる。
ICカード200の認証に用いるカード認証データC’は、利用者認証記憶部220が記憶した利用者認証データと、カード共有鍵生成部235が共有した共有鍵Kとに基づいて生成する。これにより、利用者認証記憶部220が記憶した利用者認証データと、利用者認証入力部120が入力した利用者認証データとが一致するか否かを検証できる。また、端末装置100とICカード200との間の通信を第三者が傍受してカード認証データC’を入手したとしても、共通鍵Kを知らなければ、そこから利用者識別データを入手することはできない。
【0120】
端末装置100は、ダミー認証生成部151を有する。
ダミー認証生成部151は、上記カード認証部143が上記アイシーカード(200)の認証に失敗した場合に、上記端末処理装置(911)を用いて、ダミーの利用者認証データをランダムに生成する。
利用者認証生成部152は、上記カード認証部143が上記アイシーカード(200)の認証に失敗した場合に、上記端末処理装置(911)を用いて、上記ダミー認証生成部151が生成した利用者認証データに基づいて、上記利用者認証コマンドを生成する。
【0121】
ICカード200の認証に失敗した場合に、ダミーの利用者認証データを含む利用者認証コマンドを生成するので、偽物のICカードを介して、利用者認証データが漏洩するのを防ぐことができる。また、ICカード200が本物である場合には、利用者の認証失敗によるロック機能を働かせることができるので、盗まれたICカード200から利用者認証データが漏洩するのを防ぐことができる。
【0122】
端末装置100は、端末乱数生成部133と、端末鍵要素生成部134と、端末鍵要素送信部181と、カード鍵要素受信部191とを有する。
端末乱数生成部133は、上記端末処理装置(911)を用いて、乱数(端末乱数a)を生成する。
端末鍵要素生成部134は、上記端末処理装置(911)を用いて、上記端末乱数生成部133が生成した乱数aに基づいて、上記共有鍵Kのもととなる鍵要素(端末鍵要素A)を生成する。
端末鍵要素送信部181は、上記端末通信装置(915)を用いて、上記端末鍵要素生成部134が生成した鍵要素Aを、上記アイシーカード(200)に対して送信する。
カード鍵要素受信部191は、上記端末通信装置(915)を用いて、上記アイシーカード(200)が送信した鍵要素(カード鍵要素B)を受信する。
端末共有鍵生成部135は、上記端末処理装置(911)を用いて、上記端末乱数生成部133が生成した乱数aと、上記カード鍵要素受信部191が受信した鍵要素Bとに基づいて、上記共有鍵Kを生成する。
【0123】
アイシーカード(200)は、端末鍵要素受信部281と、カード乱数生成部233と、カード鍵要素生成部234と、カード鍵要素送信部291とを有する。
端末鍵要素受信部281は、上記カード通信装置(925)を用いて、上記端末装置100が送信した鍵要素(端末鍵要素A)を受信する。
カード乱数生成部233は、上記カード処理装置(921)を用いて、乱数(カード乱数b)を生成する。
カード鍵要素生成部234は、上記カード処理装置(921)を用いて、上記カード乱数生成部233が生成した乱数bに基づいて、上記共有鍵Kのもととなる鍵要素(カード鍵要素B)を生成する。
カード鍵要素受信部191は、上記カード通信装置(925)を用いて、上記カード鍵要素生成部234が生成した鍵要素Bを上記端末装置100に対して送信する。
カード共有鍵生成部235は、上記カード処理装置(921)を用いて、上記端末鍵要素受信部281が受信した鍵要素Aと、上記カード乱数生成部233が生成した乱数bとに基づいて、上記共有鍵Kを生成する。
【0124】
端末装置100とICカード200とが、DH鍵共有方式を用いて共有鍵Kを共有するので、端末装置100とICカード200とが秘密の情報をあらかじめ共有しておく必要がない。また、端末装置100とICカード200との間の通信を第三者が傍受して、鍵要素Aと鍵要素Bとを入手したとしても、そこから共有鍵Kを入手することはできない。
【0125】
なお、端末装置100とICカード200とが共有鍵Kを共有する方式は、DH鍵共有方式に限らず、他の方式であってもよい。
【0126】
例えば、あらかじめ定めた秘密の共有鍵Kを、端末装置100およびICカード200が、それぞれ、あらかじめ記憶しておく構成であってもよい。このような構成は、端末装置100とICカード200との組み合わせが限定されている場合に有効である。端末装置100とICカード200との組み合わせが限定されている場合には、例えば、端末装置100が、ある会社のLANに接続された複数の端末装置100であり、ICカード200が、その会社の社員の社員証である場合などである。しかし、端末装置100が街頭など公衆の利用に供する場所に設置されものである場合など、端末装置100とICカード200との組み合わせが限定されていない場合には、あらかじめ共有鍵Kを共有しておくことは困難である。また、共有鍵Kの秘密を保つことが難しく、第三者に漏洩する可能性が高くなる。このため、共有鍵Kをあらかじめ共有しておくのではなく、通信のたびに新しい共有鍵Kを生成して共有する方式のほうが望ましい。
【0127】
また、端末装置100またはICカード200が共有鍵Kをランダムに生成し、公開鍵暗号方式などを用いて暗号化して、他方に送信することにより、共有鍵Kを共有する構成であってもよい。しかし、公開鍵暗号方式における暗号処理は、公開鍵証明書の検証が必要となるなど、必要な計算量が多い。一般に、ICカード200の処理装置921は、データ処理能力が低いので、共有鍵Kを共有するための計算量が多いと、共有鍵Kの共有だけで時間がかかってしまうことになる。このため、DH鍵共有方式のように比較的少ない計算量で、共有鍵Kを共有できる方式のほうが望ましい。
【0128】
また、端末装置100とICカード200とが利用者識別データを共有していることを利用して共有鍵Kを共有する構成としてもよい。例えば、端末装置100及びICカード200は、利用者識別データに基づいて、仮の共有鍵を生成する。端末装置100またはICカード200は、正規の共有鍵Kをランダムに生成し、仮の共有鍵で暗号化して、他方に送信する。端末装置100が入力した利用者識別データと、ICカード200が記憶している利用者識別データとが一致していれば、暗号化された共有鍵Kを正しく復号することができるので、端末装置100とICカード200とが共有鍵Kを共有することができる。逆に、端末装置100が入力した利用者識別データと、ICカード200が記憶している利用者識別データとが一致しない場合は、共有鍵Kの共有に失敗する。このため、ICカード200は、端末装置100が送信した暗号化利用者認証コマンドを正しく復号できない。ICカード200が偽物にすり替えられている場合、偽物のICカードは、そのことをもって認証に失敗したことを知ることができる。これを手がかりにすることにより、第三者に利用者認証データが漏洩する可能性がある。逆に、利用者が偽物である場合には、ICカード200のロック機能を利用してロックさせることができなくなる。このため、共有鍵Kの共有には、利用者認証データを使用しない方式のほうが望ましい。
【0129】
アイシーカード(200)は、上記カード認証送信部292が送信するカード認証データC’と、上記カード鍵要素送信部291が送信する鍵要素Bとを、1つのメッセージ(認証開始応答メッセージ)として送信する。
【0130】
端末装置(100)は、上記カード認証受信部192が受信するカード認証データC’と、上記カード鍵要素受信部191が受信する鍵要素Bとを1つのメッセージ(認証開始応答メッセージ)として受信する。
【0131】
これにより、認証のために必要となる通信は、3回で済む。すなわち、まず、端末装置100がICカード200に対して認証開始メッセージ(鍵要素A)を送信する。次に、ICカード200が端末装置100に対して認証開始応答メッセージ(鍵要素Bおよびカード認証データC’)を送信する。最後に、端末装置100がICカード200に対して暗号化利用者認証コマンドを送信する。一般に、ICカード200の通信装置925は、通信速度が遅いので、通信の回数やデータ量が多いと、通信に時間がかかる。認証のために必要な通信の回数を3回に抑えることにより、認証にかかる時間を短縮し、ICカード200を用いた本来の処理を早く開始することができる。
【0132】
アイシーカード(200)のカード認証生成部242は、上記カード処理装置(921)を用いて、上記利用者認証記憶部220が記憶した利用者認証データと上記カード共有鍵生成部235が生成した共有鍵Kとを所定の一方向性関数(ハッシュ関数H2)の入力とし、上記カード認証データC’として、上記一方向性関数の値を算出する。
端末装置(100)は、端末認証生成部142を有する。
端末認証生成部142は、上記端末処理装置(911)を用いて、上記利用者認証入力部120が入力した利用者認証データと上記端末共有鍵生成部135が生成した共有鍵Kとを上記一方向性関数H2の入力とし、カード検証データCとして、上記一方向性関数H2の値を算出する。
上記カード認証部143は、上記端末処理装置(911)を用いて、上記端末認証生成部142が生成したカード検証データCと、上記カード認証受信部192が受信したカード認証データC’とを比較して、一致する場合に、上記アイシーカード(200)の認証に成功したと判定する。
【0133】
一方向性関数の値をカード認証データとするので、端末装置100とICカード200との間の通信を第三者が傍受してカード認証データを入手したとしても、そこから利用者認証データや共有鍵Kを入手することはできない。
また、利用者認証データだけでなく、共有鍵Kも一方向性関数の入力とするので、総当たり攻撃に対する耐性が高くなる。例えば、利用者認証情報が4桁の暗証番号である場合、利用者認証データは、高々1万個のデータのうちのいずれかである。これに対し、共有鍵Kは、(上述したDH鍵共有方式の場合、p−1個のデータのうちのいずれかなので、利用者認証データと共有鍵Kとの組み合わせは、(p−1)×1万通りである。一方向性関数の入力が高々1万通りしかなければ、すべての入力に対して一方向性関数の値をあらかじめ算出しておき、一致する値を探すことにより、一方向性関数の入力を求めることができる。これに対し、素数pが十分大きければ、(p−1)×1万通りの入力に対して一方向性関数の値をあらじめ算出しておくことは、事実上不可能だから、利用者認証データや共通鍵Kの秘密を保つことができる。
【0134】
端末装置100は、コンピュータを端末装置100として機能させるコンピュータプログラムにより実現することができる。また、ICカード200は、ICカードに上記機能を持たせるプログラムにより実現することができる。
これにより、上述した効果を奏する端末装置100およびICカード200および認証システム800を実現することができる。
【0135】
認証システム800における認証方法は、以下の工程を有する。
あらかじめ、アイシーカード(200)が、利用者認証記憶部220として、利用者を認証する利用者認証データを記憶する。
利用者認証入力工程S410において、端末装置100が、利用者認証入力部120として、利用者の操作に基づいて、上記利用者を認証する利用者認証データを入力する。
カード共有鍵生成工程S524において、アイシーカード(200)が、カード共有鍵生成部235として、上記端末装置100と共有する共有鍵Kを生成する。
カード認証生成工程S542において、アイシーカード(200)が、カード認証生成部242として、上記利用者認証記憶部220が記憶した利用者認証データと、上記カード共有鍵生成部235が生成した共有鍵Kとに基づいて、カード認証データC’を生成する。
メッセージ送信工程S531において、アイシーカード(200)が、カード認証送信部292として、上記カード認証生成部242が生成したカード認証データC’を上記端末装置100に対して送信する。
メッセージ受信工程S431において、端末装置100が、カード認証受信部192として、上記アイシーカード(200)が送信したカード認証データC’を受信する。
端末共有鍵生成工程S424において、端末装置100が、端末共有鍵生成部135として、上記アイシーカード(200)と共有する共有鍵Kを生成する。
カード認証工程S443において、端末装置100が、カード認証部143として、上記利用者認証入力部120が入力した利用者認証データと、上記端末共有鍵生成部135が生成した共有鍵Kと、上記カード認証受信部192が受信したカード認証データC’とに基づいて、上記アイシーカードを認証する。
利用者認証生成工程S461ににおいて、上記カード認証部143が上記アイシーカード(200)の認証に成功した場合に、端末装置100が、利用者認証生成部152として、上記利用者認証入力部120が入力した利用者認証データに基づいて、上記アイシーカード(200)に対して上記利用者の認証を要求する利用者認証コマンドを生成する。
利用者認証暗号化工程S462において、端末装置100が、利用者認証暗号化部153として、上記利用者認証生成部152が生成した利用者認証コマンドを、上記端末共有鍵生成部135が生成した共有鍵Kで暗号化して、暗号化認証コマンドを生成する。
暗号化認証送信工程S463において、端末装置100が、暗号化認証送信部182として、上記利用者認証暗号化部153が生成した暗号化認証コマンドを上記アイシーカード(200)に対して送信する。
暗号化認証受信工程S561において、アイシーカード(200)が、暗号化認証受信部282として、上記端末装置100が送信した暗号化認証コマンドを受信する。
利用者認証復号工程S562において、アイシーカード(200)が、利用者認証復号部251として、上記暗号化認証受信部282が受信した暗号化認証コマンドを、上記カード共有鍵生成部235が生成した共有鍵Kで復号して、利用者認証コマンドを生成する。
利用者認証工程S563において、アイシーカード(200)が、利用者認証部252として、上記利用者認証記憶部220が記憶した利用者認証データと、上記利用者認証復号部251が生成した利用者認証コマンドとに基づいて、利用者を認証する。
【0136】
利用者認証暗号化部153が暗号化した暗号化利用者認証コマンドをICカード200に対して送信するので、端末装置100とICカード200との間の通信を第三者が傍受して暗号化利用者認証コマンドを入手したとしても、そこから利用者認証データを入手することはできない。
端末共有鍵生成部135とカード共有鍵生成部235とが、端末装置100とICカード200とで共有する共有鍵Kを生成するので、利用者認証暗号化部153が暗号化した暗号化利用者認証コマンドを、利用者認証復号部251が正しく復号できる。
暗号化利用者認証コマンドを送信する前に、ICカード200を認証して、偽物でないかを判定するので、偽物のICカードを介して、利用者認証データが漏洩するのを防ぐことができる。
ICカード200の認証に用いるカード認証データC’は、利用者認証記憶部220が記憶した利用者認証データと、カード共有鍵生成部235が共有した共有鍵Kとに基づいて生成する。これにより、利用者認証記憶部220が記憶した利用者認証データと、利用者認証入力部120が入力した利用者認証データとが一致するか否かを検証できる。また、端末装置100とICカード200との間の通信を第三者が傍受してカード認証データを入手したとしても、共通鍵Kを知らなければ、そこから利用者識別データを入手することはできない。
【0137】
なお、カード認証部143がICカード200の認証に失敗し、ダミー認証生成部151が生成したダミーの利用者認証データを含む利用者認証コマンドを、ICカード200に対して送信した場合でも、利用者の認証に成功する場合がある。例えば、ICカード200が偽物にすり替えられている場合、偽物のICカードは、本当の利用者認証データを知らないので、本物のICカード200を偽装するため、利用者の認証に成功したことにして処理を続ける可能性がある。また、ICカード200が本物である場合、ごく稀に、ダミー認証生成部151が生成したダミーの利用者認証データが、本当の利用者認証データと一致して認証を通る可能性がある。
このような事態を防ぐため、端末装置100は、カード認証部143がICカード200の認証に失敗した場合、切断コマンドをICカード200に対して送信する構成としてもよい。例えば、端末装置100は、切断コマンド生成部と、切断コマンド送信部とを有する。切断コマンド生成部は、カード認証部143がICカード200の認証に失敗した場合、処理装置911を用いて、セッションを切断する切断コマンドを生成する。切断コマンド送信部は、暗号化認証送信部182が暗号化利用者認証コマンドを送信したのち、通信装置915を用いて、切断コマンド生成部が生成した切断コマンドをICカード200に対して送信する。
通常であれば、ICカード200は、暗号化利用者認証コマンドによる利用者の認証に失敗するので、切断コマンドは無視される。
ICカード200が利用者の認証に成功した場合、セッションが確立される。しかし、その後すぐに送信される切断コマンドにより、ICカード200は、セッションを切断する。
なお、切断コマンドを共有鍵Kにより暗号化する構成であってもよい。
【符号の説明】
【0138】
100 端末装置、101 PIN情報入力部、102 端末側鍵共有部、103 端末乱数生成部、104 端末鍵要素生成部、105,205 共有鍵生成部、106 カード検証部、107,114,207,215 PIN情報ハッシュ部、108,115,208,216 マック値算出部、109,217 認証情報比較部、110 端末側通信部、111 verifyPINコマンド化部、112 暗号化部、113 端末認証情報生成部、120 利用者認証入力部、130,230 鍵共有部、131,231 法記憶部、132,232 原始根記憶部、133 端末乱数生成部、134 端末鍵要素生成部、135 端末共有鍵生成部、140 カード検証部、141 端末認証ハッシュ部、142 端末認証生成部、143 カード認証部、151 ダミー認証生成部、152 利用者認証生成部、153 利用者認証暗号化部、181 端末鍵要素送信部、182 暗号化認証送信部、190 メッセージ受信部、191 カード鍵要素受信部、192 カード認証受信部、200 ICカード、201 PIN情報記憶部、202 カード側鍵共有部、203 カード乱数生成部、204 カード鍵要素生成部、206 カード認証情報生成部、210 カード側通信部、211 復号部、212 ICカード処理部、213 端末用乱数生成部、214 端末検証部、220 利用者認証記憶部、233 カード乱数生成部、234 カード鍵要素生成部、235 カード共有鍵生成部、240 認証情報生成部、241 カード認証ハッシュ部、242 カード認証生成部、251 利用者認証復号部、252 利用者認証部、281 端末鍵要素受信部、282 暗号化認証受信部、290 メッセージ送信部、291 カード鍵要素送信部、292 カード認証送信部、711,712 PIN情報、721 端末乱数、722 端末鍵要素、723 カード乱数、724 カード鍵要素、725,726 共有鍵、730,740 メッセージ、732 カード認証情報、735 カード検証結果、741,743 verifyPINコマンド、742 暗号済verifyPINコマンド、751 端末用乱数、754 端末認証情報、758 端末検証結果、800 認証システム、801 ユーザ、810 カードR/W、911,921 処理装置、912 操作入力装置、913 出力装置、914,924 記憶装置、915,925 通信装置。

【特許請求の範囲】
【請求項1】
端末装置と、アイシーカードとを有する認証システムにおいて、
上記端末装置は、
利用者の操作を入力する操作入力装置と、
データを処理する端末処理装置と、
上記アイシーカードと通信する端末通信装置と、
上記操作入力装置を用いて、上記利用者を認証する利用者認証データを入力する利用者認証入力部と、
上記端末通信装置を用いて、上記アイシーカードが送信したカード認証データを受信するカード認証受信部と、
上記端末処理装置を用いて、上記アイシーカードと共有する共有鍵を生成する端末共有鍵生成部と、
上記端末処理装置を用いて、上記利用者認証入力部が入力した利用者認証データと、上記端末共有鍵生成部が生成した共有鍵と、上記カード認証受信部が受信したカード認証データとに基づいて、上記アイシーカードを認証するカード認証部と、
上記カード認証部が上記アイシーカードの認証に成功した場合に、上記端末処理装置を用いて、上記利用者認証入力部が入力した利用者認証データに基づいて、上記アイシーカードに対して上記利用者の認証を要求する利用者認証コマンドを生成する利用者認証生成部と、
上記端末処理装置を用いて、上記利用者認証生成部が生成した利用者認証コマンドを、上記端末共有鍵生成部が生成した共有鍵で暗号化して、暗号化認証コマンドを生成する利用者認証暗号化部と、
上記端末通信装置を用いて、上記利用者認証暗号化部が生成した暗号化認証コマンドを上記アイシーカードに対して送信する暗号化認証送信部とを有し、
上記アイシーカードは、
データを記憶するカード記憶装置と、
データを処理するカード処理装置と、
上記端末装置と通信するカード通信装置と、
上記カード記憶装置を用いて、利用者を認証する利用者認証データを記憶する利用者認証記憶部と、
上記カード処理装置を用いて、上記端末装置と共有する共有鍵を生成するカード共有鍵生成部と、
上記カード処理装置を用いて、上記利用者認証記憶部が記憶した利用者認証データと、上記カード共有鍵生成部が生成した共有鍵とに基づいて、カード認証データを生成するカード認証生成部と、
上記カード通信装置を用いて、上記カード認証生成部が生成したカード認証データを上記端末装置に対して送信するカード認証送信部と、
上記カード通信装置を用いて、上記端末装置が送信した暗号化認証コマンドを受信する暗号化認証受信部と、
上記カード処理装置を用いて、上記暗号化認証受信部が受信した暗号化認証コマンドを、上記カード共有鍵生成部が生成した共有鍵で復号して、利用者認証コマンドを生成する利用者認証復号部と、
上記カード処理装置を用いて、上記利用者認証記憶部が記憶した利用者認証データと、上記利用者認証復号部が生成した利用者認証コマンドとに基づいて、利用者を認証する利用者認証部とを有することを特徴とする認証システム。
【請求項2】
上記端末装置は、更に、
上記カード認証部が上記アイシーカードの認証に失敗した場合に、上記端末処理装置を用いて、ダミーの利用者認証データをランダムに生成するダミー認証生成部を有し、
上記利用者認証生成部は、上記カード認証部が上記アイシーカードの認証に失敗した場合に、上記端末処理装置を用いて、上記ダミー認証生成部が生成した利用者認証データに基づいて、上記利用者認証コマンドを生成することを特徴とする請求項1に記載の認証システム。
【請求項3】
上記端末装置は、
上記端末処理装置を用いて、乱数を生成する端末乱数生成部と、
上記端末処理装置を用いて、上記端末乱数生成部が生成した乱数に基づいて、上記共有鍵のもととなる鍵要素を生成する端末鍵要素生成部と、
上記端末通信装置を用いて、上記端末鍵要素生成部が生成した鍵要素を、上記アイシーカードに対して送信する端末鍵要素送信部と、
上記端末通信装置を用いて、上記アイシーカードが送信した鍵要素を受信するカード鍵要素受信部とを有し、
上記端末共有鍵生成部は、上記端末処理装置を用いて、上記端末乱数生成部が生成した乱数と、上記カード鍵要素受信部が受信した鍵要素とに基づいて、上記共有鍵を生成し、
上記アイシーカードは、
上記カード通信装置を用いて、上記端末装置が送信した鍵要素を受信する端末鍵要素受信部と、
上記カード処理装置を用いて、乱数を生成するカード乱数生成部と、
上記カード処理装置を用いて、上記カード乱数生成部が生成した乱数に基づいて、上記共有鍵のもととなる鍵要素を生成するカード鍵要素生成部と、
上記カード通信装置を用いて、上記カード鍵要素生成部が生成した鍵要素を上記端末装置に対して送信するカード鍵要素送信部とを有し、
上記カード共有鍵生成部は、上記カード処理装置を用いて、上記端末鍵要素受信部が受信した鍵要素と、上記カード乱数生成部が生成した乱数とに基づいて、上記共有鍵を生成することを特徴とする請求項1または請求項2に記載の認証システム。
【請求項4】
上記アイシーカードは、上記カード認証送信部が送信するカード認証データと、上記カード鍵要素送信部が送信する鍵要素とを、1つのメッセージとして送信することを特徴とする請求項3に記載の認証システム。
【請求項5】
上記カード認証生成部は、上記カード処理装置を用いて、上記利用者認証記憶部が記憶した利用者認証データと上記カード共有鍵生成部が生成した共有鍵とを所定の一方向性関数の入力とし、上記カード認証データとして、上記一方向性関数の値を算出し、
上記端末装置は、
上記端末処理装置を用いて、上記利用者認証入力部が入力した利用者認証データと上記端末共有鍵生成部が生成した共有鍵とを上記一方向性関数の入力とし、カード検証データとして、上記一方向性関数の値を算出する端末認証生成部を有し、
上記カード認証部は、上記端末処理装置を用いて、上記端末認証生成部が生成したカード検証データと、上記カード認証受信部が受信したカード認証データとを比較して、一致する場合に、上記アイシーカードの認証に成功したと判定することを特徴とする請求項1乃至請求項4のいずれかに記載の認証システム。
【請求項6】
利用者の操作を入力する操作入力装置と、
データを処理する端末処理装置と、
アイシーカードと通信する端末通信装置と、
上記操作入力装置を用いて、上記利用者を認証する利用者認証データを入力する利用者認証入力部と、
上記端末通信装置を用いて、上記アイシーカードが送信したカード認証データを受信するカード認証受信部と、
上記端末処理装置を用いて、上記アイシーカードと共有する共有鍵を生成する端末共有鍵生成部と、
上記端末処理装置を用いて、上記利用者認証入力部が入力した利用者認証データと、上記端末共有鍵生成部が生成した共有鍵と、上記カード認証受信部が受信したカード認証データとに基づいて、上記アイシーカードを認証するカード認証部と、
上記カード認証部が上記アイシーカードの認証に成功した場合に、上記端末処理装置を用いて、上記利用者認証入力部が入力した利用者認証データに基づいて、上記アイシーカードに対して上記利用者の認証を要求する利用者認証コマンドを生成する利用者認証生成部と、
上記端末処理装置を用いて、上記利用者認証生成部が生成した利用者認証コマンドを、上記端末共有鍵生成部が生成した共有鍵で暗号化して、暗号化認証コマンドを生成する利用者認証暗号化部と、
上記端末通信装置を用いて、上記利用者認証暗号化部が生成した暗号化認証コマンドを上記アイシーカードに対して送信する暗号化認証送信部とを有することを特徴とする端末装置。
【請求項7】
上記端末装置は、更に、
上記カード認証部が上記アイシーカードの認証に失敗した場合に、上記端末処理装置を用いて、ダミーの利用者認証データをランダムに生成するダミー認証生成部を有し、
上記利用者認証生成部は、上記カード認証部が上記アイシーカードの認証に失敗した場合に、上記端末処理装置を用いて、上記ダミー認証生成部が生成した利用者認証データに基づいて、上記利用者認証コマンドを生成することを特徴とする請求項6に記載の端末装置。
【請求項8】
上記端末装置は、
上記端末処理装置を用いて、乱数を生成する端末乱数生成部と、
上記端末処理装置を用いて、上記端末乱数生成部が生成した乱数に基づいて、上記共有鍵のもととなる鍵要素を生成する端末鍵要素生成部と、
上記端末通信装置を用いて、上記端末鍵要素生成部が生成した鍵要素を、上記アイシーカードに対して送信する端末鍵要素送信部と、
上記端末通信装置を用いて、上記アイシーカードが送信した鍵要素を受信するカード鍵要素受信部とを有し、
上記端末共有鍵生成部は、上記端末処理装置を用いて、上記端末乱数生成部が生成した乱数と、上記カード鍵要素受信部が受信した鍵要素とに基づいて、上記共有鍵を生成することを特徴とする請求項6または請求項7に記載の端末装置。
【請求項9】
上記端末装置は、上記カード認証受信部が受信するカード認証データと、上記カード鍵要素受信部が受信する鍵要素とを1つのメッセージとして受信することを特徴とする請求項8に記載の端末装置。
【請求項10】
上記端末装置は、
上記端末処理装置を用いて、上記利用者認証入力部が入力した利用者認証データと上記端末共有鍵生成部が生成した共有鍵とを上記一方向性関数の入力とし、カード検証データとして、上記一方向性関数の値を算出する端末認証生成部を有し、
上記カード認証部は、上記端末処理装置を用いて、上記端末認証生成部が生成したカード検証データと、上記カード認証受信部が受信したカード認証データとを比較して、一致する場合に、上記アイシーカードの認証に成功したと判定することを特徴とする請求項6乃至請求項9のいずれかに記載の端末装置。
【請求項11】
データを記憶するカード記憶装置と、
データを処理するカード処理装置と、
端末装置と通信するカード通信装置と、
上記カード記憶装置を用いて、利用者を認証する利用者認証データを記憶する利用者認証記憶部と、
上記カード処理装置を用いて、上記端末装置と共有する共有鍵を生成するカード共有鍵生成部と、
上記カード処理装置を用いて、上記利用者認証記憶部が記憶した利用者認証データと、上記カード共有鍵生成部が生成した共有鍵とに基づいて、カード認証データを生成するカード認証生成部と、
上記カード通信装置を用いて、上記カード認証生成部が生成したカード認証データを上記端末装置に対して送信するカード認証送信部と、
上記カード通信装置を用いて、上記端末装置が送信した暗号化認証コマンドを受信する暗号化認証受信部と、
上記カード処理装置を用いて、上記暗号化認証受信部が受信した暗号化認証コマンドを、上記カード共有鍵生成部が生成した共有鍵で復号して、利用者認証コマンドを生成する利用者認証復号部と、
上記カード処理装置を用いて、上記利用者認証記憶部が記憶した利用者認証データと、上記利用者認証復号部が生成した利用者認証コマンドとに基づいて、利用者を認証する利用者認証部とを有することを特徴とするアイシーカード。
【請求項12】
上記アイシーカードは、
上記カード通信装置を用いて、上記端末装置が送信した鍵要素を受信する端末鍵要素受信部と、
上記カード処理装置を用いて、乱数を生成するカード乱数生成部と、
上記カード処理装置を用いて、上記カード乱数生成部が生成した乱数に基づいて、上記共有鍵のもととなる鍵要素を生成するカード鍵要素生成部と、
上記カード通信装置を用いて、上記カード鍵要素生成部が生成した鍵要素を上記端末装置に対して送信するカード鍵要素送信部とを有し、
上記カード共有鍵生成部は、上記カード処理装置を用いて、上記端末鍵要素受信部が受信した鍵要素と、上記カード乱数生成部が生成した乱数とに基づいて、上記共有鍵を生成することを特徴とする請求項11に記載のアイシーカード。
【請求項13】
上記アイシーカードは、上記カード認証送信部が送信するカード認証データと、上記カード鍵要素送信部が送信する鍵要素とを、1つのメッセージとして送信することを特徴とする請求項12に記載のアイシーカード。
【請求項14】
上記カード認証生成部は、上記カード処理装置を用いて、上記利用者認証記憶部が記憶した利用者認証データと上記カード共有鍵生成部が生成した共有鍵とを所定の一方向性関数の入力とし、上記カード認証データとして、上記一方向性関数の値を算出することを特徴とする請求項11乃至請求項13のいずれかに記載のアイシーカード。
【請求項15】
コンピュータが実行することにより、上記コンピュータが請求項6乃至請求項10のいずれかに記載の端末装置として機能することを特徴とするコンピュータプログラム。
【請求項16】
アイシーカードが実行することにより、上記アイシーカードが請求項11乃至請求項14のいずれかに記載のアイシーカードとして機能することを特徴とするコンピュータプログラム。
【請求項17】
アイシーカードが、利用者認証記憶部として、利用者を認証する利用者認証データを記憶し、
端末装置が、利用者認証入力部として、利用者の操作に基づいて、上記利用者を認証する利用者認証データを入力し、
上記アイシーカードが、カード共有鍵生成部として、上記端末装置と共有する共有鍵を生成し、
上記アイシーカードが、カード認証生成部として、上記利用者認証記憶部が記憶した利用者認証データと、上記カード共有鍵生成部が生成した共有鍵とに基づいて、カード認証データを生成し、
上記アイシーカードが、カード認証送信部として、上記カード認証生成部が生成したカード認証データを上記端末装置に対して送信し、
上記端末装置が、カード認証受信部として、上記アイシーカードが送信したカード認証データを受信し、
上記端末装置が、端末共有鍵生成部として、上記アイシーカードと共有する共有鍵を生成し、
上記端末装置が、カード認証部として、上記利用者認証入力部が入力した利用者認証データと、上記端末共有鍵生成部が生成した共有鍵と、上記カード認証受信部が受信したカード認証データとに基づいて、上記アイシーカードを認証し、
上記カード認証部が上記アイシーカードの認証に成功した場合に、上記端末装置が、利用者認証生成部として、上記利用者認証入力部が入力した利用者認証データに基づいて、上記アイシーカードに対して上記利用者の認証を要求する利用者認証コマンドを生成し、
上記端末装置が、利用者認証暗号化部として、上記利用者認証生成部が生成した利用者認証コマンドを、上記端末共有鍵生成部が生成した共有鍵で暗号化して、暗号化認証コマンドを生成し、
上記端末装置が、暗号化認証送信部として、上記利用者認証暗号化部が生成した暗号化認証コマンドを上記アイシーカードに対して送信し、
上記アイシーカードが、暗号化認証受信部として、上記端末装置が送信した暗号化認証コマンドを受信し、
上記アイシーカードが、利用者認証復号部として、上記暗号化認証受信部が受信した暗号化認証コマンドを、上記カード共有鍵生成部が生成した共有鍵で復号して、利用者認証コマンドを生成し、
上記アイシーカードが、利用者認証部として、上記利用者認証記憶部が記憶した利用者認証データと、上記利用者認証復号部が生成した利用者認証コマンドとに基づいて、利用者を認証することを特徴とする認証方法。
【請求項18】
利用者の操作を入力する操作入力装置と、データを処理する端末処理装置と、アイシーカードと通信する端末通信装置とを有する端末装置が、コマンドを上記アイシーカードに対して送信するコマンド送信方法において、
上記操作入力装置が、利用者認証入力部として、利用者を認証する利用者認証データを入力し、
上記端末処理装置が、端末共有鍵生成部として、アイシーカードと共有する共有鍵を生成し、
上記端末通信装置が、カード認証受信部として、上記アイシーカードが送信したカード認証データを受信し、
上記端末処理装置が、カード認証部として、上記利用者認証入力部が入力した利用者認証データと、上記端末共有鍵生成部が生成した共有鍵と、上記カード認証受信部が受信したカード認証データとに基づいて、上記アイシーカードを認証し、
上記カード認証部が上記アイシーカードの認証に成功した場合に、上記端末処理装置が、利用者認証生成部として、上記利用者認証入力部が入力した利用者認証データに基づいて、上記利用者の認証を要求する利用者認証コマンドを生成し、
上記端末処理装置が、利用者認証暗号化部として、上記利用者認証生成部が生成した利用者認証コマンドを、上記端末共有鍵生成部が生成した共有鍵で暗号化して、暗号化認証コマンドを生成し、
上記端末通信装置が、暗号化認証送信部として、上記利用者認証暗号化部が生成した暗号化認証コマンドを上記アイシーカードに対して送信することを特徴とするコマンド送信方法。
【請求項19】
データを記憶するカード記憶装置と、データを処理するカード処理装置と、端末装置と通信するカード通信装置とを有するアイシーカードが、利用者を認証する認証方法において、
上記カード記憶装置が、利用者認証記憶部として、利用者を認証する利用者認証データを記憶し、
上記カード処理装置が、カード共有鍵生成部として、上記端末装置と共有する共有鍵を生成し、
上記カード処理装置が、カード認証生成部として、上記利用者認証記憶部が記憶した利用者認証データと、上記カード共有鍵生成部が生成した共有鍵とに基づいて、カード認証データを生成し、
上記カード通信装置が、カード認証送信部として、上記カード認証生成部が生成したカード認証データを上記端末装置に対して送信し、
上記カード通信装置が、暗号化認証受信部として、上記端末装置が送信した暗号化認証コマンドを受信し、
上記カード処理装置が、利用者認証復号部として、上記暗号化認証受信部が受信した暗号化認証コマンドを、上記カード共有鍵生成部が生成した共有鍵で復号して、利用者認証コマンドを生成し、
上記カード処理装置が、利用者認証部として、上記利用者認証記憶部が記憶した利用者認証データと、上記利用者認証復号部が生成した利用者認証コマンドとに基づいて、利用者を認証することを特徴とする認証方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2011−248778(P2011−248778A)
【公開日】平成23年12月8日(2011.12.8)
【国際特許分類】
【出願番号】特願2010−123425(P2010−123425)
【出願日】平成22年5月28日(2010.5.28)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】