以下、本発明の実施の形態について説明する。
[発明の実施の形態1]
図1は、本発明の実施の形態1に係る情報処理システムを示すブロック図である。
(情報処理システムの構成)
この実施の形態1に係る情報処理システム1は、図1に示すように、上位装置としてのホストコンピュータ2と、このホストコンピュータ2に通信手段を介して接続された情報処理装置としてのカードリーダ3とから構成されている。なお、本実施の形態では、通信手段はRS232CやUSBのような有線のケーブルである。なお、通信手段は、これら有線に限定されることなく、LANで接続でもよく、または、無線であってもよい。
(ホストコンピュータの構成)
ホストコンピュータ2は、図1に示すように、認証処理部20、制御部25、通信部26、記憶部27、認証情報生成部28から主に構成される。
認証処理部20は、カードリーダ3との間で認証処理を行う。具体的には、本実施の形態では、認証処理部20は、乱数発生部21、暗号部22、復号部23、認証判定部24から構成され、機器認証に必要な各部の制御を行う。
乱数発生部21は、通信用交換鍵Kex(n)(nは整数。以下同じ)および乱数R(n)(nは整数。以下同じ)を生成する。乱数発生部21は、通信用交換鍵Kex(n)、乱数R(n)を生成するアルゴリズム(以下、乱数生成アルゴリズムという)を予め記憶している。通信用交換鍵Kex(n)は、ホストコンピュータ2とカードリーダ3とが互いにデータを暗号化して送信する際に用いられる暗号鍵(本実施の形態では、復号鍵も同じ)である。乱数R(n)は、データを暗号化して送信する際に、機器認証情報等とともに送信されるデータである。
通信用交換鍵Kex(n)、乱数R(n)は、ホストコンピュータ2とカードリーダ3との間で実行される機器認証処理や機器認証情報生成ごとに異なっている。本実施の形態では、通信用交換鍵Kex(n)は機器認証処理ごとに異なるように生成されている。また、乱数R(n)は、機器認証処理および機器認証情報生成ごとに異なるように生成されている。このように、たとえ、同一の機器認証情報が送信される場合であっても、乱数発生部21で生成される度に通信用交換鍵Kex(n)、乱数R(n)が異なるため、これらを用いて暗号化された送信データも異なったものとなる。したがって、ホストコンピュータ2とカードリーダ3との信号を傍受しておき、カードリーダ3を使わずに傍受したのと同様の信号を別のカードリーダに送出したとしても、通信用交換鍵Kex(n)、乱数R(n)が異なるために信号が一致することはなく、不正操作を防止することができる。このため、通信の盗聴や第三者による解読をさらに困難なものにし、よりセキュリティ性を高くしている。
暗号部22は、3DES(トリプルDES)により規格されている暗号アルゴリズムEを予め記憶している。暗号部22は、乱数発生部21で生成した乱数R(n)に暗号アルゴリズムEに従って暗号化された乱数R(n)eを生成する。このとき、通信用交換鍵Kex(n)を暗号アルゴリズムEの鍵とする。暗号化された乱数R(n)eは、次の数1に示すように表現できる。
〔数1〕R(n)e=E(Kex(n),R(n))
(3DESについて)
また、本実施の形態で使用する暗号方式は、暗号化のための鍵(暗号鍵)と復号化のための鍵(復号鍵)とが同じ鍵であることを特徴とする共通鍵暗号方式が用いられている。さらに、この共通鍵暗号方式の中でも、DES(Data Encryption Standardの略)は、1977年に米国情報処理標準規格(FEDERAL INFORMATION PROCESSING STANDARDS PUBLICATION:FIPS−PUB)46−3として規定され、最も広く利用されている暗号方式の1つである。さらに、本実施の形態では、DESから3DESにし、DESに比べて解読しにくくしている。3DESは、DESのアルゴリズムを3回繰り返す暗号方式であり、DESのアルゴリズムを流用することができる、さらに、暗号鍵の鍵長を拡張するのと同様の効果を得ることができ、比較的容易に暗号強度を高めることができる。
復号部23は、DESにより規格されている復号アルゴリズムDを予め記憶している。復号部23は、暗号化された乱数R(n)eを復号アルゴリズムDに従って復号化した乱数R(n)を生成する。このとき、通信用交換鍵Kex(n)を復号アルゴリズムDの鍵とする。生成された乱数R(n)は、次の数2に示すように表現できる。
〔数2〕R(n)=D(Kex(n),R(n)e)
認証判定部24は、カードリーダ3から返され復号部23で復号された機器認証情報に基づき、カードリーダ3が正当な装置であるか、不正な装置であるかを判定する。具体的には、復号部23から受け取った乱数R’と、乱数発生部21で生成され記憶部27に格納されていた乱数Rとを比較し、乱数R’と乱数Rとが一致すれば、ホストコンピュータ2が接続されたカードリーダ3を正しい装置であると正当性を認証する。また、乱数R’と乱数Rとが一致していなければ、ホストコンピュータ2は接続されたカードリーダ3を不正な装置であると判定する。
制御部25は、ホストコンピュータ2全体、すなわち、認証処理部20、通信部26、記憶部27、認証情報生成部28を含めたホストコンピュータ2全体を制御する。具体的には、制御部25には、図示しないが、制御用プログラムなどを用いて様々な演算処理を行い、ホストコンピュータ2全体を制御するCPU、ホストコンピュータ2が処理を実行する際に必要な作業データがコピーされる書換え可能なメモリであって、CPUが使用するプログラムや演算パラメータなどの制御用データが記録されたROM、CPUの作業領域としても機能するRAM等により構成されている。
また、制御部25のROMには、初期(カードリーダ3の工場出荷時)においてカードリーダ3の製造者が作成し提供する仮の機器認証情報Ktが、安全な方法で保持されている。仮の機器認証情報Ktは、ホストコンピュータ2とカードリーダ3との間で送受信されるデータを共通鍵暗号方式を用いて暗号通信するのに先立ち、共通鍵としての通信用交換鍵Kexを生成するためのものである。なお、通信用交換鍵Kexを生成する処理についての説明は後述する。また、ホストコンピュータ2は、種々のシステム制御のためのプログラムやパラメータを格納するための不揮発性メモリやハードディスク装置を備えていてもよく、そこに仮の機器認証情報Ktを格納するようにしてもよい。
通信部26は、カードリーダ3の通信部35との間で通信手段としてのケーブル(通信回線)を介して通信を行う。なお、通信手段は、本実施の形態ではケーブル等の有線であるが、これに限定されるものではなく、無線でもよい。
記憶部27は、揮発性のメモリであり、乱数発生部21で生成された通信用交換鍵Kex(n)および乱数R(n)を格納している。
認証情報生成部28は、機器認証情報Kmを生成する認証情報アルゴリズムを記憶しており、カードリーダ3のシリアル番号が入力されることで、機器認証を行うための機器認証情報Kmを生成する。ここで、シリアル番号とはカードリーダ3の個々の機体に製造ごとに割り付けられる製造番号であるが、シリアル番号以外のカードリーダ3固有の固有情報(例えば、ID番号や機器番号等)であってもよい。なお、本実施の形態では、認証情報アルゴリズムは、ホストコンピュータ2を管理する情報処理システム1のユーザー(例えば、運用管理者)がソースコード(機器認証情報Kmを生成するための認証情報アルゴリズム(原始プログラム))を作成し、カードリーダ3の製造者からカードリーダ3のシリアル番号の提供を受けて機器認証情報Kmを生成する独自のアルゴリズムを組み込むようにしている。これにより、装置運用管理者独自の、機器認証情報Kmを生成する認証情報アルゴリズム(認証情報を生成するプログラム)を完成させるようにする。
また、認証情報生成部28で生成された機器認証情報Kmは、カードリーダ3側へ機器認証情報Kmを設定する動作が終わり次第に消去している。すなわち、ホストコンピュータ2は、カードリーダ3が新たに接続され、または改めて接続し直されて機器認証動作を開始するごとに、接続されたカードリーダ3のシリアル番号に基づき機器認証情報Kmを生成し直すものである。これにより、ホストコンピュータ2は、どのカードリーダ3が接続されるか予測できない場合でも、接続される可能性のある全てのカードリーダ3に対応する形で機器認証情報Kmを長期間にわたって保持する必要はない。また、ホストコンピュータ2で機器認証情報Kmを保持し続けるために、ファイルやレジストリ等にこれを出力する必要もない。つまり、機器認証情報Kmが流出するリスクを減少させ、セキュリティを確保することができ、さらに、メモリ領域を削減することが可能となる。
(カードリーダの構成)
カードリーダ3は、図1に示すように、認証処理および3DESの暗号化/復号化を行う認証処理部30と、カードリーダ3全体の制御を行う制御部34と、ホストコンピュータ2側との通信を行う通信部35と、揮発性の記憶部36と、不揮発性記憶部としてのEEPROM37とを有している。さらに、認証処理部30は、暗号部31、復号部32、認証判定部33から構成されている。
ここで、制御部34、通信部35はそれぞれホストコンピュータ2の制御部25、通信部26と同等の機能を有し、詳細な説明は省略する。同様に、認証処理部30を構成する暗号部31、復号部32は、ホストコンピュータ2の暗号部22、復号部23と同様の暗号アルゴリズムEおよび復号アルゴリズムDを備えて同等の機能を有しているので、ここでの詳細な説明は省略する。
認証判定部33は、ホストコンピュータ2の乱数生成部21で生成された後、暗号化されてカードリーダ3に送信された機器認証情報Kmを復号化した復号部32から送信された通信用交換鍵Kex(n)のデータの有効性(ひいては、ホストコンピュータ1から受信したデータが有効であるか否か)をチェックする。具体的には、パリティチェックや脆弱鍵であるかどうかをチェックしている。パリティチェックはデータの誤り(エラー)を検出する手法の一つである。また、脆弱鍵とは、共通鍵暗号技術としてのDESにおいてセキュリティ上で好ましくないとされる鍵(4個の脆弱鍵と12個の準脆弱鍵)であり、それと一致するかどうかをチェックしている。なお、4個の脆弱鍵と12個の準脆弱鍵は公表されているので、ここでの説明は省略する。
記憶部36は揮発性であり、ホストコンピュータ2の乱数生成部21で生成された後、送信された復号部32で復号された機器認証情報Kmのうち認証判定部33で有効であると判定された通信用交換鍵Kex(n)を格納する。
EEPROM37は、不揮発性であり、仮の機器認証情報Ktおよび機器認証情報Km、カードリーダ3のシリアル番号を格納している。すなわち、カードリーダ3は、電源立ち上げ時またはリセット時においても、機器認証情報Kmを消去せずに保持している。
(機器認証情報の設定動作)
以下、機器認証情報Kmを設定する動作について説明する。
図2は、実施の形態1に係る情報処理システム1における機器認証情報Km(共通鍵)を設定する動作を示す流れ図である。図3は、図2の機器認証情報Km(共通鍵)を設定する動作に対応するフローチャートを示す図である。
情報処理システム1においては、カードリーダ3がホストコンピュータ2にケーブル(通信回線)を介して接続された時点で、このカードリーダ3のシリアル番号に基づく機器認証情報Kmを設定する動作が実行される。以下、この機器認証情報Kmを設定する動作を図2および図3に基づいて詳述する。
初期(工場出荷時)において、カードリーダ3およびホストコンピュータ2は共通暗号鍵として仮の機器認証情報Ktを保持している。例えば、仮の機器認証情報Ktは、カードリーダ3の機種を示す機種番号である。機種番号は、機体固有のシリアル番号とは異なり、同一の機種に共通の番号または記号である。
まず、ホストコンピュータ2の制御部25が、機器認証情報Kmを設定する処理を開始する。具体的には、ホストコンピュータ2から機器認証を行うための要求コマンドが通信部26、通信部35を介して、カードリーダ3に送信される。カードリーダ3は、要求コマンドを受信した旨、通信部35、通信部26を介してホストコンピュータ2に返信される。
次に、ホストコンピュータ2の認証処理部20の乱数発生部21は、制御部25の指令により、通信用交換鍵Kex(n)および乱数R(n)を生成する(ステップS1)。なお、第1回目の生成であるので、nは1とする。すなわち、乱数発生部21は、乱数生成アルゴリズムに従って通信用交換鍵Kex(1)、乱数R(1)を生成する。また、生成した通信用交換鍵Kex(1)および乱数R(1)は、記憶部27に格納される。
その後、認証処理部20の暗号部22は、これらの通信用交換鍵Kex(1)および乱数R(1)を、仮の機器認証情報Ktを用いて3DESの暗号アルゴリズムEに従って暗号化し、暗号データC1=E(Kt,Kex(1)+R(1))を生成する(ステップS2)。ここでは、仮の機器認証情報Ktを暗号アルゴリズムEの鍵として使用している。なお、Kex(1)+R(1)は、通信用交換鍵Kex(1)のデータと乱数R(1)のデータが入れ子のようになっている。
また、ホストコンピュータ2は、制御部25の指令により、暗号データC1を通信部26経由でカードリーダ3へ送信する。
次いで、カードリーダ3は、これを通信部35経由で受信する(ステップS3)。認証処理部30は、受信した暗号データC1を、カードリーダ2が予め保持している仮の機器認証情報Ktを用いて3DESの復号アルゴリズムDに従って復号化し、(Kex(1)+R(1))=D(Kt,C1)により、通信用交換鍵Kex(1)および乱数R(1)を復号化する。ここでは、カードリーダ2が予め保持している仮の機器認証情報Ktを暗号アルゴリズムEの鍵として使用している。
さらに、カードリーダ3の認証処理部30の認証判定部33は、復号化した、ホストコンピュータ2が保持する通信用交換鍵Kexが正しいか否かを確認する(ステップS4)。ここでは、通信用交換鍵Kex(1)のデータのパリティチェック(コード)が正しいかどうかを確認している。また、通信用交換鍵Kex(1)のデータが、3DESとしてセキュリティ上で好ましくないとされる鍵(4個の脆弱鍵と12個の準脆弱鍵)と一致するかどうかをチェックしている。
その結果、認証判定部33は、通信用交換鍵Kexが正しくないと判定した場合、カードリーダ3は、エラーをホストコンピュータ2へ返して機器認証情報Kmを設定する動作を終了させる(ステップS20)。
また、ステップS4に戻り、通信用交換鍵Kex(1)が正しいと判定した場合、カードリーダ3の認証処理部30は、復号化した通信用交換鍵Kex(1)および乱数R(1)を記憶部36に格納する。引き続き、認証処理部30の暗号部31は、復号化した乱数R(1)を、復号化した通信用交換鍵Kex(1)を用いて3DESの暗号アルゴリズムEに従って暗号化し、暗号データC2=E(Kex(1),R(1))を生成する。生成した暗号データC2を、カードリーダ3は、制御部34の指令により通信部35経由でホストコンピュータ2へ送信する(ステップS5)。なお、送信後、漏えい等を含めセキュリティ性を高めるために、乱数R(1)を消去する。
次に、ホストコンピュータ2は、暗号データC2を通信部26経由で受信する。認証処理部20の復号部23は、受信した暗号データC2を、記憶部27に保持している通信用交換鍵Kex(1)を用いて3DESの復号アルゴリズムDに従って復号化し、R(1)=D(Kex(1),C2)により、乱数R(1)を復号化する(ステップS6)。
そして、認証判定部24は、復号化した乱数R(1)が、元の乱数R(1)と一致するか否かを確認する(ステップS7)。つまり、ステップS1で、ホストコンピュータ2の乱数発生部21が生成した乱数R(1)と、カードリーダ3から送信されてきた乱数R(1)とを比較し、両者が一致するか否かを確認する。確認後、漏えい等を含めセキュリティ性を高めるために、乱数R(1)は消去する。
その結果、乱数R(1)が一致しなければ、ホストコンピュータ2の認証処理部20は、エラーを制御部25に出力する。制御部25は、接続されているカードリーダ3の正当性が認証(確認)できなかったので、機器認証情報Kmを設定する動作を終了させる(ステップS20)。
また、ステップS7に戻り、乱数R(1)が一致した場合、認証処理部20は制御部25に一致したことを出力する。制御部25は、カードリーダ3の正当性が確認(認証)できたと判断し、引き続き、機器認証情報Kmを設定する動作を実行する。具体的には、制御部25は、カードリーダ3の固有情報としてのシリアル番号をホストコンピュータ2に送信するようカードリーダ3に対して要求する(ステップS8)。
そして、カードリーダ3の制御部34は、シリアル番号送信の要求を通信部35経由で受信すると、カードリーダ3のシリアル番号をEEPROM37から読み出し、通信部35経由でホストコンピュータ2に送信する(ステップS9)。
次いで、制御部25は、カードリーダ3のシリアル番号を(通信部26を介して)認証情報生成部28に出力し、認証情報生成部28に対して、このシリアル番号を入力して、新規な(正式な)機器認証情報Kmの生成を指令する(ステップS10)。
その後、認証情報生成部28は、機器認証情報Kmを生成する認証情報アルゴリズムに従って、入力したシリアル番号に基づいて機器認証情報Kmを生成し、この機器認証情報Kmを認証処理部20に出力する(ステップS11)。
次に、認証処理部20は、機器認証情報Kmの取得に成功したか否かを確認する(ステップS12)。
その結果、生成した機器認証情報Kmの取得に失敗すれば、ホストコンピュータ2の認証処理部20は、エラーを制御部25に出力する。制御部25は、機器認証情報Kmを取得できなかったので、機器認証情報Kmを設定する動作を終了させる(ステップS20)。
また、ステップS12に戻り、機器認証情報Kmの取得に成功すれば、ホストコンピュータ2の認証処理部20は、制御部25に機器認証情報Kmを出力する。引き続き、制御部25は、認証処理部20(乱数発生部21)に、新規な乱数R(n)の生成を要求する。ここでは、第2回目の乱数なのでn=2とする。乱数発生部21は、乱数生成アルゴリズムに基づいて、乱数R(2)を生成する(ステップS13)。また、生成した乱数R(2)は、記憶部27に格納される。
その後、認証処理部20の暗号部21は、取得した機器認証情報Kmおよび新たに生成した乱数R(2)を、通信用交換鍵Kex(1)を用いて3DESの暗号アルゴリズムEに従って暗号化し、暗号データC3=E(Kex(1),Km+R(2))を生成する。なお、Km+R(2)は、機器認証情報Kmのデータと乱数R(2)のデータが入れ子のようになっている。また、制御部25は、暗号データC3を通信部26経由でカードリーダ3へ送信する(ステップS14)。
そして、カードリーダ3の制御部34は、暗号データC3を通信部35経由で受信する。受信した暗号データC3を、カードリーダ3の認証処理部30は、保持している通信用交換鍵Kex(1)を用いて3DESの復号アルゴリズムDに従って復号化し、Km+R(2)=D(Kex(1),C3)により、機器認証情報Kmおよび乱数R(2)を復号化する(ステップS15)。
さらに、カードリーダ3の認証処理部30の認証判定部33は、復号化した、ホストコンピュータ2が保持する機器認証情報Kmが正しいか否かを確認する(ステップS16)。ここでは、機器認証情報Kmのデータのパリティチェック(コード)が正しいかどうかを確認している。また、機器認証情報Kmのデータが、3DESとしてセキュリティ上で好ましくないとされる鍵(4個の脆弱鍵と12個の準脆弱鍵)と一致するかどうかをチェックしている。
その結果、認証判定部33は、機器認証情報Kmが正しくないと判定した場合、認証処理部30は、エラーをホストコンピュータ2へ返して機器認証情報Kmを設定する動作を終了させる(ステップS20)。
また、ステップS16に戻り、機器認証情報Kmが正しいと判定した場合、カードリーダ3の認証処理部30は、復号化した機器認証情報Kmを取得してEEPROM37に格納されている仮の機器認証情報Ktに上書きする。また、復号化した乱数R(2)は記憶部36に格納される。引き続き、認証処理部30の暗号部31は、復号化した乱数R(2)を、複合した機器認証情報Kmを用いて3DESの暗号アルゴリズムEに従って暗号化し、暗号データC4=E(Km,R(2))を生成する。生成した暗号データC4を、カードリーダ3の制御部34は、通信部35経由でホストコンピュータ2へ送信する(ステップS17)。なお、送信後、漏えい等を含めセキュリティ性を高めるために、乱数R(2)を消去する。
その後、ホストコンピュータ2の制御部20は、暗号データC4を通信部26経由で受信する。認証処理部20の復号部23は、受信した暗号データC4を、保持している機器認証情報Kmを用いて3DESの復号アルゴリズムDに従って復号化し、R(2)=D(Km,C4)により、乱数R(2)を復号化する(ステップS18)。
さらに、認証判定部24は、復号化した乱数R(2)が、元の乱数R(2)と一致するか否かを確認する(ステップS19)。つまり、ステップS13で、ホストコンピュータ2が生成した乱数R(2)と、カードリーダ3から送信されてきた乱数R(2)とを比較し、両者が一致するか否かを確認する。確認後、漏えい等を含めセキュリティ性を高めるために、乱数R(2)は消去する。
その結果、乱数R(2)が一致した場合、認証処理部20は制御部25に一致したことを出力する。制御部25は、カードリーダ3へ正常に機器認証情報Kmを設定できたと判断し、機器認証情報Kmを設定する動作は無事に終了する。
なお、この作業が終了した時点で、ホストコンピュータ2が保持している機器認証情報Kmは、セキュリティ性を高めるために、消去される。換言すれば、機器認証情報Kmを設定する動作が終了すると、ホストコンピュータ2は、仮の機器認証情報Ktを記憶部27で保持しているとともに、カードリーダ3は、ステップS11で生成された機器認証情報KmをEEPROM37で保持している。
一方、もし、ステップS19で乱数R(2)が一致しなければ、ホストコンピュータ2の認証処理部20は、エラーを制御部25に出力する。制御部25は、接続されているカードリーダ3の正当性が認証(確認)できなかったので、機器認証情報Kmを設定する動作を終了させる(ステップS20)。
(機器認証動作の手順)
機器認証情報Kmを設定する動作が無事に終了したカードリーダ3が組み込まれている情報処理システム1、例えばATM装置(現金自動預け入れ払い機)においては、カードを用いた現金の入出金や振込、振替などのトランザクション処理)が行われるたびに、EEPROM37に格納されている機器認証情報Kmを用いてカードリーダ3の機器認証動作が実行される。
以下、この機器認証動作を図4に基づいて詳述する。
まず、ホストコンピュータ2またはカードリーダ3は、電源立ち上げ時またはリセット時に、制御部25は、通信部6経由でカードリーダ3の制御部34に、カードリーダ3の固有情報としてのシリアル番号をホストコンピュータ2に送信するようカードリーダ3に対して要求する(ステップS31)。
そして、カードリーダ3の制御部34は、シリアル番号送信の要求を通信部35経由で受信すると、上述したステップS9と同様に、カードリーダ3のシリアル番号をEEPROM37から読み出し、通信部35経由でホストコンピュータ2に送信する(ステップS32)。
次いで、制御部25は、上述したステップS10と同様に、カードリーダ3のシリアル番号を(通信部26を介して)認証情報生成部28に出力し、認証情報生成部28に対して、このシリアル番号を入力して、新規な(正式な)機器認証情報Kmの生成を指令する(ステップS33)。
その後、認証情報生成部28は、上述したステップS11と同様に、入手したシリアル番号に基づいて機器認証情報Kmを生成し、この機器認証情報Kmを認証処理部20に出力する(ステップS34)。
ここで、機器認証情報Kmの生成に際しては、上述したステップS11と同様に、機器認証情報Kmを生成する認証情報アルゴリズム(プログラム)に従って、入力したシリアル番号に基づいて機器認証情報Kmを生成する。生成した機器認証情報Kmは、同じシリアル番号により生成しているので、上述したステップS11で生成した機器認証情報Kmと同じ鍵となる。すなわち、機器認証情報Kmが再現されたことになり、ホストコンピュータ2で保持する機器認証情報Kmは、カードリーダ3が保持する機器認証情報Kmと同じものとなっている。
次に、認証処理部20は、上述したステップS12と同様に、機器認証情報Kmの取得に成功したか否かを確認する(ステップS35)。そして、機器認証情報Kmの取得に成功すれば、認証処理部20は制御部25に機器認証情報Kmを出力する。引き続き、制御部25は、上述したステップS13と同様に、認証処理部20の乱数発生部21に、新規な通信用交換鍵Kex(n)、乱数R(n)の生成を要求する。
すると、乱数発生部21は、乱数生成アルゴリズムに基づいて、通信用交換鍵Kex(2)、乱数R(3)を生成する。また、生成した通信用交換鍵Kex(2)、乱数R(3)は、記憶部27に格納される。なお、通信用交換鍵Kex(2)は、上述したステップS1で生成した通信用交換鍵Kex(1)とは異なるデータである。また、乱数R(3)は、上述したステップS13で生成した乱数R(2)とは異なるデータである。
また、ステップS35において、図4に示されていないが、認証処理部20が確認した結果、生成した機器認証情報Kmの取得に失敗すれば、ホストコンピュータ2の認証処理部20は、エラーを制御部25に出力する。制御部25は、機器認証情報Kmを取得できなかったので、機器認証情報Kmを設定する動作を終了させる。このようにして生成された(再現された)機器認証情報Kmを共通鍵として用いて、ホストコンピュータ2の認証処理部2aはカードリーダ3の機器認証を行う。
次に、認証処理部20の暗号部21は、生成した通信用交換鍵Kex(2)および乱数R(3)を、機器認証情報Kmを用いて3DESの暗号アルゴリズムEに従って暗号化し、暗号データC5=E(Km,Kex(2)+R(3))を生成する(ステップS36)。なお、Kex(2)+R(3)は、通信用交換鍵Kex(2)のデータと乱数R(3)のデータが入れ子のようになっている。ここでは、ステップS34で生成した機器認証情報Kmを暗号アルゴリズムEの鍵として使用している。また、制御部25は、暗号データC5を通信部26経由でカードリーダ3へ送信する。
その後、カードリーダ3の制御部34は、暗号データC5を通信部35経由で受信する。受信した暗号データC5を、カードリーダ3の認証処理部30は、保持している機器認証情報Kmを用いて3DESの復号アルゴリズムDに従って復号化し、Kex(2)+R(3)=D(Km,C5)により、通信用交換鍵Kex(2)および乱数R(3)を復号化する(ステップS37)。
このとき、カードリーダ3の認証処理部30の認証判定部33は、受信した、ホストコンピュータ2が保持する通信用交換鍵Kex(2)が正しいか否かを確認する。ここでは、通信用交換鍵Kex(2)のデータのパリティチェック(コード)が正しいかどうかを確認している。また、通信用交換鍵Kex(2)のデータが、3DESとしてセキュリティ上で好ましくないとされる鍵(4個の脆弱鍵と12個の準脆弱鍵)と一致するかどうかをチェックしている。その結果、認証判定部33は、受信した(ホストコンピュータ2の)通信用交換鍵Kex(2)が正しくないと判定した場合、認証処理部30は、エラーをホストコンピュータ2へ返して機器認証情報Kmを設定する動作を終了させる。
次いで、認証判定部33は、受信したホストコンピュータ2の通信用交換鍵Kex(2)が正しいと判定した場合、引き続き、認証処理部30の暗号部31は、復号化した乱数R(3)を、復号化した通信交換用鍵Kex(2)を用いて3DESの暗号アルゴリズムEに従って暗号化し、暗号データC6=E(Kex(2),R(3))を生成する(ステップS38)。生成した暗号データC6を、カードリーダ3の制御部34は、通信部35経由でホストコンピュータ2へ送信する。
その後、ホストコンピュータ2の制御部20は、暗号データC6を通信部26経由で受信する。認証処理部20の復号部23は、受信した暗号データC6を、保持している通信用交換鍵Kex(2)を用いて3DESの復号アルゴリズムDに従って復号化し、R(3)=D(Kex(2),C6)により、乱数R(3)を生成する(ステップS39)。
そして、認証判定部24は、復号化した乱数R(3)が一致するか否かを確認する。すなわち、ホストコンピュータ2が生成し、保持している乱数R(3)と、カードリーダ3から送信され、復号化した乱数R(3)とを比較し、両者が一致するか否かを確認する。
また、確認後、漏えい等を含めセキュリティ性を高めるために、乱数R(3)は消去する。
その結果、乱数R(3)が一致した場合、認証処理部20は制御部25に一致したことを出力する。制御部25は、カードリーダ3の正当性が認証(確認)できたと判断し、カードリーダ3の正当性が肯定されたことになるので、ホストコンピュータ2は、機器認証動作を無事に終了させる。これにより、ホストコンピュータ2およびカードリーダ3は、それぞれ通信用交換鍵Kex(2)を保持することになる。
ここで、機器認証動作が終了する。
なお、この作業が終了した時点で、ホストコンピュータ2が保持している機器認証情報Kmは、セキュリティ性を高めるために、消去される。換言すれば、機器認証情報Kmを設定する動作が終了すると、ホストコンピュータ2は、仮の機器認証情報Ktを記憶部27で保持しているとともに、カードリーダ3は、ステップS11で生成された機器認証情報KmをEEPROM37で保持している。
もし、ステップS19で乱数R(3)が一致しなければ、ホストコンピュータ2の認証処理部20は、エラーを制御部25に出力する。制御部25は、接続されているカードリーダ3の正当性が認証(確認)できなかったので、通信用交換鍵Kexを設定する動作を終了させる。
(本実施の形態の主な効果)
このように、この実施の形態1では、情報処理システム1は、カードリーダ3のシリアル番号(機器固有情報)に基づいて生成された機器認証情報Km(共通鍵)を用いて、カードリーダ3とホストコンピュータ2との間で機器認証が行われるので、機器認証情報Kmの漏えいを防止し、第三者の攻撃による機器認証情報Kmの推定を困難にし、従来に比べてよりセキュリティ性の高い機器認証ができる。
この機器認証情報Kmの生成に用いる認証情報アルゴリズムについては、ホストコンピュータ2を管理する情報処理システム1のユーザー(例えば、運用管理者)がソースコード(機器認証情報Kmを生成するための認証情報アルゴリズム(原始プログラム))を作成し、カードリーダ3の製造者からカードリーダ3のシリアル番号の提供を受けて機器認証情報Kmを生成する独自のアルゴリズムを組み込むようにしている。これにより、装置運用管理者独自の、機器認証情報Kmを生成する認証情報アルゴリズム(認証情報を生成するプログラム)を完成させるようにする。
こうすることにより、ホストコンピュータ2を管理する情報処理システム1のユーザー(例えば、運用管理者)は、機器認証情報Kmを生成する認証情報アルゴリズム(認証情報を生成するプログラム)の仕様を統一することができ、カードリーダ3の製造者からカードリーダ3のシリアル番号の提供を受けて機器認証情報Kmを生成する独自のアルゴリズムを組み込むことが可能となる。さらに、カードリーダ3の製造者からカードリーダ3のシリアル番号の提供を受けることで、たとえ情報処理システム1のユーザー(例えば、運用管理者)がプログラミング(共通鍵暗号方式のノウハウなど)に詳しくなくても、認証情報アルゴリズムを容易に作成することができる。同時に、この認証情報アルゴリズムへ組み込んだ独自のアルゴリズムは装置運用管理者以外には不明であるため、機器認証情報Kmの流出リスクを減少させ、ひいては情報処理システム1の運用の安全性を高めることが可能となる。
さらに、情報処理システム1では、たとえ送信データが同じであっても、通信用交換鍵Kex(n)、乱数R(n)が異なるため、これらを用いて暗号化された送信データも異なったものとなる。したがって、カードリーダ3とホストコンピュータ2との信号を傍受しておき、カードリーダ3を使わずに同様の信号を別のカードリーダに送出したとしても、通信用交換鍵Kex、乱数Rが異なるために信号が一致することはなく、不正操作を防止することができる。
また、情報処理システム1では、機器固有情報がカードリーダ3のシリアル番号を用いたので、従来使用している機器固有情報であり、新たに設定する必要もない。したがって、情報処理システム1の構築が簡便なものとなる。
[発明のその他の実施の形態]
なお、上述した実施の形態1では、上位装置としてホストコンピュータ2を備えた情報処理システム1について説明したが、ホストコンピュータに限定されるものではなく、例えば、コンピュータに内蔵されている制御装置や演算装置といった処理装置であってもよく、または、例えば、ATM、POS等であってもよい。
また、上述した実施の形態1では、情報処理装置としてカードリーダ3を備えた情報処理システム1について説明したが、カードリーダ3以外の情報処理装置例えば、ATMやPOS端末に付属する入出力機器:タッチパネル、PINパッド、プリンター、スキャナ等を備えた情報処理システム1であってもよい。
また、上述した実施の形態1では、機器固有情報としてシリアル番号を用いる場合について説明したが、例えば、鍵を生成する種となるユニークな値を機器へ持たせる(外部から種も見えないようにする)ことも可能である。
また、上述した実施の形態1では、不揮発性記憶部としてEEPROM37を用いる場合について説明したが、EEPROM37以外の不揮発性記憶部を代用してもよい。
また、上述した実施の形態1では、乱数や通信用交換鍵Kexを暗号化するのに3DESを用いる場合について説明したが、3DES以外の共通鍵暗号方式としての暗号アルゴリズム(例えば、DES、FEAL、IDEA、AES、Camellia、MISTY、MULTI、RC4、RC5など)を代用してもよい。
また、上述した実施の形態1では、通信用交換鍵Kexのデータと乱数Rのデータが入れ子のようにしたが、これに限定されるものではなく、2つのデータを連結したもの等のように2つのデータが混合されていればよい。
さらに、上述した実施の形態1では、1台のカードリーダ3がホストコンピュータ2に接続された情報処理システム1について説明したが、複数台(2台以上)のカードリーダ3がホストコンピュータ2に接続された情報処理システム1に本発明を同様に適用することも可能である。