(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024073789
(43)【公開日】2024-05-30
(54)【発明の名称】ICカードリーダ及びその通信処理方法
(51)【国際特許分類】
G06F 11/07 20060101AFI20240523BHJP
G06K 7/00 20060101ALI20240523BHJP
G06K 17/00 20060101ALI20240523BHJP
【FI】
G06F11/07 196
G06K7/00 086
G06K17/00 022
G06F11/07 140T
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022184686
(22)【出願日】2022-11-18
(71)【出願人】
【識別番号】000002233
【氏名又は名称】ニデックインスツルメンツ株式会社
(74)【代理人】
【識別番号】100123788
【弁理士】
【氏名又は名称】宮崎 昭夫
(74)【代理人】
【識別番号】100127454
【弁理士】
【氏名又は名称】緒方 雅昭
(72)【発明者】
【氏名】佐伯 和人
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GA35
5B042KK02
5B042KK15
5B042KK20
(57)【要約】
【課題】上位装置に接続するICカードリーダにおいて、ICカードのRST端子での接触異常などが発生してプロトコルレイヤでは通信をリカバリしたがアプリケーションレイヤでの異常データとなるときに、その異常データが上位装置に送られないようにする。
【解決手段】上位装置からのコマンドに基づいてICカードとの通信を行っているときにICカードから受信したブロックが、ICカードがリセットから復帰したことを示すATRであるかどうかを判定し(ステップ105)、受信ブロックがATRであるときにはICカードを非活性化する処理を実行し(ステップ106)、異常終了として受信処理を終了する(ステップ107)。
【選択図】
図3
【特許請求の範囲】
【請求項1】
上位装置に接続し、接触型のICカードからデータを読み出すICカードリーダであって、
前記ICカードの外部接点端子と電気的に接続する接点ピンと、
前記上位装置からのコマンドに基づいて前記接点ピンを介して前記ICカードとの通信を行っているときにおいて、前記ICカードから受信したブロックが当該ICカードがリセットから復帰したことを示すATRのブロックであるかどうかを判定し、前記ATRのブロックであると判定したときに異常処理として受信処理を終了する制御手段と、
を備える、ICカードリーダ。
【請求項2】
EMV規格に定めるT=1プロトコル通信方式にしたがって動作し、
前記制御手段は、前記ICカードから受信した前記ブロックの先頭バイトが3BHまたは3FHであるときに当該ブロックが前記ATRのブロックであると判定する、請求項1に記載のICカードリーダ。
【請求項3】
前記制御手段は、前記異常処理として受信処理を終了するときに、前記ICカードを非活性化する処理を実行する、請求項1または2に記載のICカードリーダ。
【請求項4】
上位装置に接続して接触型のICカードからデータを読み出すICカードリーダにおける通信処理方法であって、
前記上位装置からのコマンドに基づいて前記ICカードにブロックを送信する送信工程と、
前記送信工程で送信した前記ブロックに対する応答となるブロックを受信する受信工程と、
前記受信工程で受信した前記ブロックが、前記ICカードがリセットから復帰したことを示すATRのブロックであるかどうかを判定するATR判定工程と、
前記ATR判定工程において前記ATRのブロックであると判定したときに異常処理として受信処理を終了する終了工程と、
を有する、通信処理方法。
【請求項5】
EMV規格に定めるT=1プロトコル通信方式に基づいて送受信を行い、
前記ATR判定工程において、前記受信工程で受信した前記ブロックの先頭バイトが3BHまたは3FHであるときに当該ブロックが前記ATRのブロックであると判定する、請求項4に記載の通信処理方法。
【請求項6】
前記終了工程において前記ICカードを非活性化する処理を実行する、請求項4または5に記載の通信処理方法。
【請求項7】
前記受信工程ののち、正常に受信できたかどうかを判定する受信判定工程をさらに有し、
前記受信判定工程において受信が異常であると判定したときに前記ATR判定工程を実施する、請求項4または5に記載の通信処理方法。
【請求項8】
前記ATR判定工程において前記ATRのブロックではないと判定したときに、前記ICカードに対してリトライ用のブロックを送信する、請求項7に記載の通信処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、接触型のICカードと通信してICカードからデータを読み出すICカードリーダと、その通信処理方法とに関する。
【背景技術】
【0002】
集積回路などを内蔵したカード形状の媒体であるICカード(スマートカードともいう)は、接触型と非接触型のものとがあり、接触型のICカードの表面の所定の位置には、外部との通信を行うための複数の外部接点端子が設けられている。外部接点端子には、VCC(電源)端子、GND(接地)端子、CLK(クロック)端子、I/O(データ入出力)端子のほかに、RST(リセット)端子が含まれる。接触型のICカードと通信してそのICカードからデータを読み出すICカードリーダには、ICカード側の外部接点端子と電気的に接触可能な接点ピンを備えたIC接点ブロックが設けられている。ICカードリーダにICカードが挿入されるとIC接点ブロックの接点ピンがICカードの外部接点端子と電気的に接触し、ICカードリーダとICカードとの間で通信を行うことが可能になる。ICカードの形状や寸法などはISO/IEC 7816規格によって定められており、特に、ICカードリーダとICカードとの間の通信プロトコルはISO/IEC 7816-3規格またはEMV Level 1規格によって定められている。
【0003】
ICカードリーダが接触型のICカードと通信しているときは、ICカードリーダの接点ピンとICカードの外部接点端子とは接触状態を維持する必要がある。しかしながらICカードリーダへの挿抜を繰り返したときにICカードの外部接点端子の表面が削れ、それに起因してICカードリーダ側の接点ピンとICカードの外部接点端子との間で接触異常が起きてICカードリーダとICカードとの間での通信エラーが発生することがある。接点ピンや外部接点端子にゴミなどの異物が付着しているときにも通信エラーが発生することがある。特に、RST端子は、通信中においてはその端子電圧をハイレベルに維持する必要があり、RST端子の電圧がローレベルに変化するとICカードが意図せずリセットされてしまい、後述するようにデータ異常などが発生してしまう。RST端子における接触異常による不具合を回避する技術として、ICカードへの電源電圧の供給開始時点において確実にICカードをリセットさせるための技術であるが、特許文献1は、電源電圧が所定値を超えたのちにリセット端子の電圧のローレベルからハイレベルへの遷移を検出したときにICカード内部でのリセット状態を解除することを開示している。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
EMV Level 1規格(以下、EMV規格と呼ぶ)によれば、ICカードリーダとICカードとが当該規格が定めるT=1プロトコル通信方式によって通信しているときに通信エラーが発生した場合には、通信の復帰のためにリカバリ処理が行われることになっている。しかしながらRST端子における接触異常によって通信エラーとなり、そののちリカバリ処理が行われた場合、プロトコルレイヤでは通信が復帰したように見えるが、ICカードリーダが接続するホスト装置などの上位装置におけるアプリケーションレイヤではデータ欠損などの異常データとなることがある。
【0006】
本発明の目的は、RST端子での接触異常などが発生してリカバリ処理を行った結果、プロトコルレイヤでは通信がリカバリしたがアプリケーションレイヤでの異常データとなるときに、その異常を検出してその異常データを上位装置に送らないようにすることができるICカードリーダと、その通信処理方法とを提供することにある。
【課題を解決するための手段】
【0007】
本発明の一態様のカードリーダは、上位装置に接続し、接触型のICカードからデータを読み出すICカードリーダであって、ICカードの外部接点端子と電気的に接続する接点ピンと、上位装置からのコマンドに基づいて接点ピンを介してICカードとの通信を行っているときにおいて、ICカードから受信したブロックがそのICカードがリセットから復帰したことを示すAnswer To Reset(ATR)のブロックであるかどうかを判定し、ATRのブロックであると判定したときに異常処理として受信処理を終了する制御手段と、を備える。
【0008】
一態様のカードリーダでは、ICカードから受信したブロックがATRのブロックであるときに異常処理として受信処理を終了させるので、ICカードが意図せずリセットされたことに伴って異常データが上位装置側に送信されることを防ぐことができる。
【0009】
一態様のICカードリーダは、EMV規格に定めるT=1プロトコル通信方式にしたがって動作することが好ましく、その場合、制御手段は、ICカードから受信したブロックの先頭バイトが3BHまたは3FHであるときにそのブロックがATRのブロックであると判定することが好ましい。T=1プロトコル通信方式では、正常な受信ブロックの先頭バイトは、通常、00Hであり、それに対してATRのブロックの先頭バイトは3BHあるいは3FHであるので、受信ブロックの先頭バイトのみでATRのブロックであるかどうかを判定することにより、ATRのブロックの全体を読み込んで判定のための処理を行う必要がなくなる。
【0010】
一態様のICカードリーダでは、制御手段は、異常処理として受信処理を終了するときに、ICカードを非活性化する処理を実行することが好ましい。非活性化処理を行うことにより、ICカードの損傷などを防ぐことができる。
【0011】
本発明の一態様の通信処理方法は、上位装置に接続して接触型のICカードからデータを読み出すICカードリーダにおける通信処理方法であって、上位装置からのコマンドに基づいてICカードにブロックを送信する送信工程と、送信工程で送信したブロックに対する応答となるブロックを受信する受信工程と、受信工程で受信したブロックが、ICカードがリセットから復帰したことを示すATRのブロックであるかどうかを判定するATR判定工程と、ATR判定工程においてATRのブロックであると判定したときに異常処理として受信処理を終了する終了工程と、を有する。
【0012】
一態様の通信処理方法では、ICカードから受信したブロックがATRのブロックであるときに異常処理として受信処理を終了させるので、ICカードが意図せずリセットされたことに伴って異常データが上位装置側に送信されることを防ぐことができる。
【0013】
一態様の通信処理方法では、EMV規格に定めるT=1プロトコル通信方式に基づいて送受信を行い、ATR判定工程において、受信工程で受信したブロックの先頭バイトが3BHまたは3FHであるときにそのブロックがATRのブロックであると判定することが好ましい。T=1プロトコル通信方式では、正常な受信ブロックの先頭バイトは、通常、00Hであり、それに対してATRのブロックの先頭バイトは3BHあるいは3FHであるので、受信ブロックの先頭バイトのみでATRのブロックであるかどうかを判定することにより、ATRのブロックの全体を読み込んでATR判定工程を実行する必要がなくなる。
【0014】
一態様の通信処理方法では、終了工程においてICカードを非活性化する処理を実行することが好ましい。非活性化処理を行うことにより、ICカードの損傷などを防ぐことができる。
【0015】
一態様の通信処理方法では、受信工程ののち、正常に受信できたかどうかを判定する受信判定工程をさらに設け、受信判定工程において受信が異常であると判定したときにATR判定工程を実施することが好ましい。受信が異常であると判定したときにATR判定工程を実施することによって、正常に受信を行なえたときの処理時間を短縮できる。またこの場合、ATR判定工程においてATRのブロックではないと判定したときに、ICカードに対してリトライ用のブロックを送信することが好ましい。ATRのブロックではないと判定したときにリトライ用のブロックを送信することによって、ICカードの意図しないリセット以外の要因で受信異常となったときのリカバリ処理を行うことが可能になる。
【発明の効果】
【0016】
本発明によれば、RST端子での接触異常などが発生してリカバリ処理を行った結果、プロトコルレイヤでは通信がリカバリしたがアプリケーションレイヤでの異常データとなるときに、その異常を検出して異常データが上位装置に送られないようにすることができる。
【図面の簡単な説明】
【0017】
【
図1】(a)は本発明の実施の一形態のICカードリーダを示すブロック図であり、(b)はICカードの平面図である。
【
図2】ホスト装置とICカードリーダとICカードの間の通信を説明するシーケンス図である。
【
図3】ICカードリーダの動作を示すフローチャートである。
【発明を実施するための形態】
【0018】
次に、本発明を実施するための形態について、図面を参照して説明する。
図1(a)は、本発明の実施の一形態のICカードリーダ10を示しており、
図1(b)は、ICカードリーダ10でのデータ読み出しの対象となるICカード20を示している。
【0019】
ICカードリーダ10は、上位装置であるホスト装置30に接続し、ホスト装置30上で動作するアプリケーションプログラムがICカード20へのアクセスを必要とするときに、プロトコルレイヤでの処理を行ってホスト装置30とICカード20とのデータのやり取りを媒介する。ICカードリーダ10は、ICカードリーダ10の全体の動作の制御を行なうプロセッサ11と、ICカード20に対する信号上のインタフェースを構成するインタフェース部12と、ICカード20の後述する外部接点端子C1~C8に対して電気的に接続可能な接点ピンを備えるIC接点ブロック13とを備えている。プロセッサ11は、制御手段に対応するものであって、例えば、マイクロプロセッサユニット(MPU)、マイクロコンピュータあるいはCPU(中央処理装置)などからなり、インタフェース部12を介してIC接点ブロック13に接続している。プロセッサ11は、ホスト装置30からコマンドを受信してそのコマンドのプロトコル変換を行ってICカード20に送信し、ICカード20から応答のデータを受信し、そのプロトコル変換を行ってホスト装置30にデータを送信する。ICカードリーダ10にICカード20を挿入してIC接点ブロック13をICカード20に当接させることによって、ICカードリーダ10の接点ピンとICカード20の外部接点端子C1~C8とが電気的に接触してICカードリーダ10とICカード20との間で通信を行うことが可能になる。本実施形態においてICカードリーダ10は、EMV Level 1規格のT=1プロトコル通信方式によってICカード20との通信を行う。T=1プロトコル通信方式では、調歩同期式半二重ブロック転送プロトコルによって通信が行なわれる。
【0020】
ICカード20は、ISO/IEC 7816規格によって寸法などが規定されたものであり、その表面には規格で定められた位置に8個の外部接点端子C1~C8が外部接点端子群21を構成して設けられている。8個の外部接点端子C1~C8のうち、C1はVCC(電源)端子であり、C2はRST(リセット)端子であり、C3はCLK(クロック)端子であり、C5はGND(接地)端子であり、C7はI/O(データ入出力端子)である。ICカードリーダ10とICカード20との間の通信には、通常、これら5個の外部接点端子C1,C2,C3,C5,C7が使用される。
【0021】
本実施形態におけるICカードリーダ10の動作を説明する前に、RST端子の接触異常などにより通信中にICカード20がリセットされた場合においてプロトコルレイヤでは通信のリカバリがなされるもののアプリケーションレイヤでは異常データとなることがあることを詳しく説明する。
【0022】
図2は、EMV規格のT=1プロトコル通信方式を使用してホスト装置30、ICカードリーダ10及びICカード20の間で通信を行っているときにやり取りされるデータを時系列にしたがって示している。T=1プロトコル通信方式は半二重シリアル通信方式であってブロック転送を使用する。図では、四角の枠内に、各ブロックによって転送されるデータの内容を示している。四角の枠内の文字列は、ブロックを構成する各バイトの値を16進表記で示したものである。「★」はチェックディジットを示している。「[J]」から「[N]」は、適切な長さのバイト列を示している。この明細書中においても1バイトのデータあるいは値を表現するときは16進表記を使用し、16進表記であることを明示するために、添え字として「H」を付加している。
図2においてI(x,y)やR(0)、R(1)は、転送されるブロックを、EMV規格においてT=1プロトコル通信方式に関して規定されている記法により表したものである。特にI(x,y)の表記においてxはシーケンス番号であり、yはチェイニング(Chaining)の有無(1=あり、0=なし)である。シーケンス番号xは0→1→0→1→…のように変化する。またI(x,y)、R(0)及びR(1)で表されるいずれのブロックにおいても、最初の1バイトは必ず00Hである。I(x,y)、R(0)及びR(1)で表される転送ブロックでは、2バイト目はどの種類のブロックであるかを示し、3バイト目は、それ以降のデータ(チェックディジットを除く)のバイト長を示している。図でのP1~P18は、一連のシーケンスにおける順番を示している。
【0023】
ホスト装置30とICカードリーダ10の間のデータ転送にはAPDU(Application Protocol Data Unit)プロトコルが用いられ、ICカードリーダ10とICカード20の間のデータ転送にはTPDU(Transport Protocol Data Unit)プロトコルが使用される。そのためICカードリーダ10のプロセッサ11は、APDUとTPDUの間のプロトコル変換を実行する。
【0024】
まずホスト装置30は、P1において、ICカードリーダのIC通信コマンドでの表記が「CI9」であるコマンドをICカードリーダ10に送り、ICカードリーダ10は、APDUからTPDUへの変換を行い、P2において、I(0,0)として示されるブロックとしてICカード20に転送する。P2においてICカード20に転送されるI(0,0)ブロックでは、P1において送られてきたコマンドが先頭から4バイト目以降にそのまま埋め込まれている。I(0,0)ブロックの3バイト目は0CH、すなわち10進数で12であり、このことは4バイト目以降の00H、A4H,04H及び[J]の全体で12バイトであることを示しており、バイト列[J]は9バイト長であることが分かる。4バイト目以降の00H、A4H、04H及び[J]からなるコマンドは、APDUプロトコルのコマンドを表わし、APDUプロトコルの2バイト目(A4H)は、規格上、SELECTコマンドであることを示している。このようなI(0,0)ブロックを受信したICカード20は、P3において応答として、例えば6AH 82Hを応答内容とする応答をI(1,0)ブロックでICカードリーダ10に送り、これを受けてICカードリーダ10は、P4において、ICカードリーダでの表記が「PI402」である正常応答として6AH 82Hをホスト装置30に送る。これによりSELECTコマンドに関連する一連の処理が正常終了したことになる。
図2においてP5からP8までは、SELECTコマンドにおけるパラメータが異なっている場合の処理を示しており、この場合もP1からP4までと同様に、SELECTコマンドに関連した一連の処理が正常終了している。
【0025】
ホスト装置30は、P9において、ICカード20からの応答ブロックのデータ長が上述のものよりも長いことが予想されるSELECTコマンドをICカードリーダ10に送り、ICカードリーダ10は、これをTPDUプロトコルでのデータに変換して、P10において、I(0,0)ブロックとしてICカード20に転送する。このとき、接触異常などによりICカード20のRST端子(外部接点端子C2)が一時的にローレベルとなり、ICカード20がリセットされたとする。ICカード20はリセットから復帰すると、P11において、まず応答信号としてATRのブロックをICカードリーダ10に送信する。ATRの1バイト目は3BHか3FHである。ATRを受信したICカードリーダ10は、通信のリカバリのための処理を開始し、P12において、「その他異常」を示すR(1)をICカード20に返し、ICカード20は、ATR直後に受信したR(1)に対し、P13において、R(0)で応答する。このような挙動はEMV規格において定められているものである。R(0)を受信したICカードリーダ10は、P14において、前回のコマンド、すなわちP10において送信したI(0,0)をICカード20に再送する。
【0026】
ICカード20は、P14において送信されてきたコマンドに対し、P15においてI(0,1)をICカードリーダ10に送信することにより応答する。このI(0,1)ではシーケンス番号が0、チェイニングが有り(1)となっているが、シーケンス番号では0と1とが交互に用いられることを考慮すると、シーケンス番号は1でなくてはならず、本来送信されるべきブロックはP20に示すI(1,1)である。P15において送信されたI(0,1)を受信したICカードリーダ10は、シーケンス番号の異常を検出してその旨をICカード20に通知するために、P16においてR(1)をICカード20に送信する。P16で送信されるR(1)は、ICカードリーダ10では「その他異常」を意味するが、EMV規格上の使用により、ICカード20では「後続ブロック要求」と解釈される。そこでICカード20は、P17において、P15において既に送信したブロックに引き続くブロックをI(1,0)によりICカードリーダ10に送信する。ICカードリーダ10は、P17で受信したI(1,0)のブロックを正しいシーケンス番号の単独ブロックとして扱い、このブロックのみをAPDUに変換してP18においてホスト装置18に対して正常応答として送信する。
【0027】
図2に示した処理は、ISO/IEC7816-3規格及びEMV規格に基づくものであるが、P15で送ったブロックとP17で送ったブロックとをつなげて得られるデータ、すなわち
図2の表記によれば、「6F [M] 1A [N]」であるデータが本来ならばICカード20からはホスト装置30に対して送られるべきデータである。これに対して実際には、P18において「1A [N]」がホスト装置30に送られており、本来送られるべきデータの前半部分、すなわち「6F [M]」の部分が欠落している。ここで示す例ではプロトコルレイヤにおいては通信のリカバリが行われたもののアプリケーションレイヤにおいてはデータ異常が発生していることになる。このような齟齬が起こる原因は、意図しないリセットがICカード20で発生したことをICカードリーダ10側では知らないためであると考えられる。
【0028】
上述したようなアプリケーションレイヤにおけるデータ異常の発生を防ぐために、本実施形態のICカードリーダ10では、ICカード20との通信の途中でICカード20からATRを受信したときに異常発生と判定して異常終了とすることにより、データ欠落などを含む異常データがホスト装置30に送信されないようにする。
図3は、本実施形態のICカードリーダ10の動作を示すフローチャートであり、ICカード20に対するブロックデータの送受信の処理を示している。
【0029】
EMV規格のT=1プロトコル通信方式は半二重通信であるので、ICカードリーダ10とICカード20とはブロックを交互にやり取りして通信を行う。この場合、最初の送信権はICカードリーダ10にあるので、ICカードリーダ10は、ステップ101において、ホスト装置30から受信したコマンドに基づいてICカード20に対してブロックを送信し、引き続いてステップ102において、ICカード20からのブロックを受信する。ブロックを受信したらICカードリーダ10は、ステップ103において、受信したブロックの種類、パリティエラーの有無、ブロック長が適切か、チェック用キャラクタ(チェックディジット)が正しいかどうかなどをチェックし、受信が正常に行われたかどうかを判定する。フロックの種類のチェックにおいては、ICカード20に送信したブロックがI(x,y)であるときには、ICカード20から受信したブロックもEMV規格にしたがったブロックであるかどうかもチェックされる。ICカード20にI(x,y)ブロックを送信したにも関わらずEMV規格以外のブロック(例えば以下に説明するATRのブロック)が返された場合には、受信に異常があったと判定される。受信が正常に行われた場合は、ICカードリーダ10は、ステップ104において、ブロックの内容が正しいかどうかの判定処理を行い、内容が正しければそのブロックをAPDUに変換してホスト装置30に送信して一連の処理を終了する。
【0030】
ノイズ、接触不良などの要因により受信異常が発生した場合には、ISO/IEC 7816-3規格やEMV規格によればリトライ処理を行うが、本実施形態では、リトライ処理を行う前に、受信ブロックが、ICカード20がリセットされたことを示すAnswer To Reset、すなわちATRのブロックであるかどうかを判定する。具体的にはICカードリーダ10は、ステップ103において受信異常であると判定した場合に、ステップ105において、受信ブロックの先頭の1バイトが3BHまたは3FHであるかどうかを判定する。上述したようにICカード20から送られてくるブロックの先頭の1バイトは、通常、00Hであり、3BHや3FHとなることはない。これに対し、ICカード20がリセット状態から復帰した直後に送られてくるATRのブロックの先頭の1バイトは、規格上、3BHまたは3FHである。そこでICカードリーダ10は、ステップ105においてブロックの先頭バイトが3BHまたは3FHであるときはATRが送られてきたと判定し、ステップ106において、ICカード20の非活性化処理を行い、ステップ107において、異常発生をホスト装置30に通知するなどの異常終了処理を行い、一連の処理を終了する。
【0031】
ステップ105において受信ブロックの先頭バイトが3BHでも3FHでもないと判定したときは、リカバリ処理のためのリトライ処理を行うこととして、ICカードリーダ10は、ステップ108においてリトライ回数をチェックし、規格で定められている規定値以内かどうかを判定する。リトライ回数が既に規定値を超過しているときは、ICカードリーダ10は、ステップ106の非活性化処理とステップ107の異常終了処理とを実行して一連の処理を終了させる。一方、ステップ108がリトライ回数が規定値以内であれば、ICカードリーダ10は、ステップ109においてリトライ用のブロックをICカード20に送信してリカバリ処理を行い、その後、ステップ102のブロック受信からの処理を繰り返す。
【0032】
以上説明したICカードリーダ10による処理は、実際には、ICカードリーダ10内のプロセッサ11によって実行される。この処理により、見かけ上は正常ではあるが実際には異常であるデータがホスト装置30に送信されることを防ぐことができ、アプリケーションレイヤでの異常の発生を防ぐことができる。本実施形態では、受信ブロックの先頭バイトのみを用いてATRかどうかを判定している。これは、ATRである受信ブロックの全データを用いて判定すると、ATRのキャラクタごとの受信待ち時間がT=1プロトコル通信方式でのキャラクタ間の待ち時間よりも長く、ATRブロックの全データを受信できるとは限られないためである。
【0033】
以上説明した本実施形態のICカードリーダ10によれば、ICカード20のRST端子における接触異常などによってICカード20が意図せずにリセットされた場合において、プロトコルレイヤではリカバリ処理がなされてもアプリケーションレイヤでは異常データとなってその異常データが上位装置であるホスト装置30に送信されることを防ぐことができる。その一方で、ICカード20の意図しないリセット以外の要因で受信異常が発生したと判断された場合には、規格に準拠した形態で通信のリカバリ処理を実行することができる。
【0034】
なお、本技術は以下のような構成をとることが可能である。
【0035】
(1) 上位装置に接続し、接触型のICカードからデータを読み出すICカードリーダであって、
前記ICカードの外部接点端子と電気的に接続する接点ピンと、
前記上位装置からのコマンドに基づいて前記接点ピンを介して前記ICカードとの通信を行っているときにおいて、前記ICカードから受信したブロックが当該ICカードがリセットから復帰したことを示すATRのブロックであるかどうかを判定し、前記ATRのブロックであると判定したときに異常処理として受信処理を終了する制御手段と、
を備える、ICカードリーダ。
【0036】
(2) EMV規格に定めるT=1プロトコル通信方式にしたがって動作し、
前記制御手段は、前記ICカードから受信した前記ブロックの先頭バイトが3BHまたは3FHであるときに当該ブロックが前記ATRのブロックであると判定する、(1)に記載のICカードリーダ。
【0037】
(3) 前記制御手段は、前記異常処理として受信処理を終了するときに、前記ICカードを非活性化する処理を実行する、(1)または(2)に記載のICカードリーダ。
【0038】
(4) 上位装置に接続して接触型のICカードからデータを読み出すICカードリーダにおける通信処理方法であって、
前記上位装置からのコマンドに基づいて前記ICカードにブロックを送信する送信工程と、
前記送信工程で送信した前記ブロックに対する応答となるブロックを受信する受信工程と、
前記受信工程で受信した前記ブロックが、前記ICカードがリセットから復帰したことを示すATRのブロックであるかどうかを判定するATR判定工程と、
前記ATR判定工程において前記ATRのブロックであると判定したときに異常処理として受信処理を終了する終了工程と、
を有する、通信処理方法。
【0039】
(5) EMV規格に定めるT=1プロトコル通信方式に基づいて送受信を行い、
前記ATR判定工程において、前記受信工程で受信した前記ブロックの先頭バイトが3BHまたは3FHであるときに当該ブロックが前記ATRのブロックであると判定する、(4)に記載の通信処理方法。
【0040】
(6) 前記終了工程において前記ICカードを非活性化する処理を実行する、(4)または(5)に記載の通信処理方法。
【0041】
(7) 前記受信工程ののち、正常に受信できたかどうかを判定する受信判定工程をさらに有し、
前記受信判定工程において受信が異常であると判定したときに前記ATR判定工程を実施する、(4)乃至(6)のいずれか1項に記載の通信処理方法。
【0042】
(8) 前記ATR判定工程において前記ATRのブロックではないと判定したときに、前記ICカードに対してリトライ用のブロックを送信する、(7)に記載の通信処理方法。
【符号の説明】
【0043】
10…ICカードリーダ;11…プロセッサ;12…インタフェース部;13…IC接点ブロック;20…ICカード;21…外部接点端子群;30…ホスト装置。