説明

ICカード、及びICカードの処理方法

【課題】より効率的に非接触通信を行う事ができるICカード、及びICカードの処理方法を提供する。
【解決手段】一実施形態に係るICカードは、外部機器と非接触通信を行うICカードであって、前記外部機器から送信されたコマンドを受信する受信部と、前記受信部により初期応答要求コマンドを受信した場合、カード識別子として第1の乱数を生成する乱数生成部と、前記受信部により乱数要求を受信した場合、前記第1の乱数の全てあるいはその一部を用いて乱数データを生成する乱数生成部と、前記乱数生成部により生成された前記乱数データを前記外部機器に送信する送信部と、を具備する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、ICカード、及びICカードの処理方法に関する。
【背景技術】
【0002】
一般的に、携帯可能電子装置として用いられるICカードは、プラスチックなどで形成されたカード状の本体と本体に埋め込まれたICモジュールとを備えている。ICモジュールは、ICチップを有している。ICチップは、電源が無い状態でもデータを保持することができるEEPROM(Electrically Erasable Programmable Read−Only Memory)またはフラッシュROMなどの不揮発性メモリと、種々の演算を実行するCPUとを有している。
【0003】
ICカードは、例えば、国際標準規格ISO/IEC 7816、及びISO/IEC14443に準拠したICカードである。ICカードは、携帯性に優れ、且つ、外部装置との通信及び複雑な演算処理を行う事ができる。また、偽造が難しい為、ICカードは、機密性の高い情報などを格納してセキュリティシステム、電子商取引などに用いられることが想定される。
【0004】
また、近年、非接触通信によりデータの送受信を行うことができるICカードが一般的に普及している。上記したような非接触通信を行うICカードは、ICチップとアンテナとを備えている。ICカードは、ICカード内のアンテナが、ICカード処理装置のリーダライタから発せられる磁界を受けて、電磁誘導により発生する誘導電流により動作する。また、ICカードは、非接触通信により処理装置からコマンドを受信した場合、受信したコマンドに応じてアプリケーションを実行する。これにより、ICカードは、種々の機能を実現することができる。
【0005】
ICカードの処理装置は、無線通信により最初に初期応答要求コマンドを送信する。ICカードは、初期応答要求コマンドを受信すると、擬似固有カード識別子(PUPI:Pseudo-Unique PICC Identifier)として乱数を生成する。ICカードは、PUPIを含む初期応答要求コマンドに対するレスポンス(初期応答)データを生成し、生成したレスポンスデータを処理装置に送信する。処理装置は、初期応答を受け取ることにより、通信可能範囲にICカードが存在することを認識することができる。処理装置は、PUPIを用いることにより、特定のICカードに次のコマンドを送信することができる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2007−48103号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
ICカードと処理装置との間で相互認証が行われる場合、ICカードは、乱数を生成し、生成した乱数を処理装置に送信する。処理装置は、乱数を暗号化し、暗号化された乱数(暗号化データ)をICカードに送信する。ICカードは、生成した乱数を暗号化し、受信した暗号化データと一致するか否か確認する。
【0008】
しかし、ICカードは、桁数によっては、乱数の生成に時間を要するという課題がある。例えば、ISO/IEC14443では、処理装置とICカードとの相互認証に8バイトの乱数が用いられる。このように、ICカードが桁数の多い乱数を生成する必要がある場合、ICカードの処理の負荷が増し、遅延の原因になる可能性があるという課題がある。
【0009】
そこで、より効率的に非接触通信を行う事ができるICカード、及びICカードの処理方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
一実施形態に係るICカードは、外部機器と非接触通信を行うICカードであって、前記外部機器から送信されたコマンドを受信する受信部と、前記受信部により初期応答要求コマンドを受信した場合、カード識別子として第1の乱数を生成する乱数生成部と、前記受信部により乱数要求を受信した場合、前記第1の乱数の全てあるいはその一部を用いて乱数データを生成する乱数生成部と、前記乱数生成部により生成された前記乱数データを前記外部機器に送信する送信部と、を具備する。
【図面の簡単な説明】
【0011】
【図1】図1は、一実施形態に係るICカード処理システムについて説明するための図である。
【図2】図2は、一実施形態に係るICカードについて説明するための図である。
【図3】図3は、一実施形態に係るICカード処理システムについて説明するための図である。
【図4】図4は、一実施形態に係るICカード処理システムについて説明するための図である。
【図5】図5は、一実施形態に係るICカード処理システムについて説明するための図である。
【図6】図6は、一実施形態に係るICカード処理システムについて説明するための図である。
【図7】図7は、一実施形態に係るICカード処理システムについて説明するための図である。
【図8】図8は、一実施形態に係るICカード処理システムについて説明するための図である。
【図9】図9は、一実施形態に係るICカード処理システムについて説明するための図である。
【発明を実施するための形態】
【0012】
以下、図面を参照しながら、一実施形態に係るICカードの処理装置、及びICカードの処理システムについて詳細に説明する。
【0013】
本実施形態に係る携帯可能電子装置(ICカード)20及びICカードを処理する処理装置(端末装置)10は、例えば、ISO/IEC14443などにより規定されている非接触通信の機能を備える。これにより、ICカード20及び端末装置10は、互いにデータの送受信を行うことができる。
【0014】
図1は、一実施形態に係るICカード処理システム1の構成例を示す。
ICカード処理システム1は、ICカード20を処理する端末装置10と、ICカード20と、を備える。端末装置10とICカード20とは、上記したように非接触通信により互いに種々のデータを送受信する。
【0015】
端末装置10は、CPU11、ROM12、RAM13、不揮発性メモリ14、送受信部15、アンテナ共振回路部16、ロジック回路部17、上位インターフェース部18、及び電源回路部19を備える。
【0016】
CPU11は、端末装置10全体の制御を司る制御部として機能する。CPU11は、ROM12又は不揮発性メモリ14に記憶されている制御プログラム及び制御データに基づいて種々の処理を行う。
【0017】
ROM12は、予め制御用のプログラム及び制御データなどを記憶する不揮発性のメモリである。RAM13は、ワーキングメモリとして機能する揮発性のメモリである。RAM13は、CPU11の処理中のデータなどを一時的に格納する。例えば、RAM13は、送受信部15及びアンテナ共振回路部16を介して外部の機器と送受信するデータを一時的に格納する。また、RAM13は、CPU11が実行するプログラムを一時的に格納する。
【0018】
不揮発性メモリ14は、例えばEEPROM、FRAMなどを備える。不揮発性メモリ14は、例えば、制御用のプログラム、制御データ、アプリケーション、及びアプリケーションに用いられるデータなどを記憶する。また、不揮発性メモリ14は、データの暗号化及び復号などに用いられる暗号鍵(秘密鍵)を記憶する。
【0019】
送受信部15は、アンテナ共振回路部16により送受信するデータに対して信号処理を施す。例えば、送受信部15は、変調、及び復調を行なう。
【0020】
アンテナ共振回路部16は、例えば所定の共振周波数を有するアンテナを有する。アンテナ共振回路部16は、磁界を発生させる。これにより、端末装置10は、通信可能範囲に存在するICカード20に対してデータを非接触で送信することができる。
【0021】
送受信部15は、アンテナ共振回路部16により受信したデータに対して復調及び復号を行う。これにより、端末装置10は、ICカード20から送信された元のデータを再生することができる。
【0022】
ロジック回路部17は、所定の演算処理を行う。例えば、ロジック回路部17は、CPU11の制御に基づいて、データの暗号化、復号、及び乱数生成などの演算処理を行う。
【0023】
上位インターフェース部18は、上位端末と通信するためのインターフェースである。上位端末は、例えば操作部及び表示部などを備える。操作部は、例えば操作キーなどを備え、操作者により入力される操作に基づいて、操作信号を生成する。表示部は、種々の情報を表示する。上位インターフェース部18は、上位端末からデータを受け取り、CPU11に伝送する。また、上位インターフェース部18は、送受信部15及びアンテナ共振回路部16によりICカード20から取得したデータを上位端末に伝送する構成であってもよい。
【0024】
電源回路部19は、端末装置10の各部に電力を供給する。
【0025】
図2は、一実施形態に係るICカード20の構成例を示す。
図2に示すように、ICカード20は、例えば、矩形状の本体21と、本体21内に内蔵されたICモジュール22とを備える。また、本体21には、アンテナ共振回路部(アンテナ)24が設置されている。また、ICモジュール22は、ICチップ23を備える。ICチップ23は、アンテナ共振回路部24と接続された状態でICモジュール22内に形成されている。
【0026】
なお、本体21は、少なくともアンテナ共振回路部24が設置可能な形状であれば、矩形状に限らず如何なる形状であっても良い。
【0027】
図2に示すように、ICカード20は、ICチップ23と、アンテナ共振回路部(アンテナ)24とを備える。
【0028】
ICチップ23は、CPU25、ROM26、RAM27、不揮発性メモリ28、送受信部29、電源回路部31、及びロジック回路部32などを備える。CPU25、ROM26、RAM27、不揮発性メモリ28、送受信部29、及びロジック回路部32は、バスを介して互いに接続されている。
【0029】
アンテナ共振回路部24は、端末装置(外部機器)10のアンテナ共振回路部16と通信を行うためのインターフェースである。アンテナ共振回路部24は、例えば、所定の形状で配設される金属線により構成されるアンテナコイルを備える。
【0030】
CPU25は、ICカード20全体の制御を司る制御部として機能する。CPU25は、ROM26あるいは不揮発性メモリ28に記憶されている制御プログラム及び制御データに基づいて種々の処理を行う。例えば、端末装置10から受信したコマンドに応じて種々の処理を行い、処理結果としてのレスポンスなどのデータの生成を行なう。
【0031】
ROM26は、予め制御用のプログラム及び制御データなどを記憶する不揮発性のメモリである。ROM26は、製造段階で制御プログラム及び制御データなどを記憶した状態で組み込まれる。即ち、ROM26に記憶される制御プログラム及び制御データは、予めICカード20の仕様に応じて組み込まれる。
【0032】
RAM27は、ワーキングメモリとして機能する揮発性のメモリである。RAM27は、CPU25の処理中のデータなどを一時的に格納する。例えば、RAM27は、アンテナ共振回路部24を介して端末装置10から受信したデータを一時的に格納する。またRAM27は、アンテナ共振回路部24を介して端末装置10に送信するデータを一時的に格納する。またさらに、RAM27は、CPU25が実行するプログラムを一時的に格納する。
【0033】
不揮発性メモリ28は、例えば、EEPROMあるいはフラッシュROMなどのデータの書き込み及び書換えが可能な不揮発性のメモリを備える。不揮発性メモリ28は、ICカード20の運用用途に応じて制御プログラム及び種々のデータを格納する。
【0034】
たとえば、不揮発性メモリ28では、プログラムファイル及びデータファイルなどが創成される。創成された各ファイルには、制御プログラム及び種々のデータなどが書き込まれる。CPU25は、不揮発性メモリ28、または、ROM26に記憶されているプログラムを実行することにより、種々の処理を実現することができる。また、不揮発性メモリ28は、データの暗号化及び復号などに用いられる暗号鍵(秘密鍵)を記憶するファイルを備える。
【0035】
送受信部29は、端末装置10に送信するデータに対して、負荷変調などの信号処理を行う。例えば、送受信部29は、端末装置10に送信するデータの変調を行う。
【0036】
また、送受信部29は、アンテナ共振回路部24により受信する信号に対して復調を行う。例えば、送受信部29は、アンテナ共振回路部24により受信する信号の復号化を行う。これにより、送受信部29は、2値の論理データを再生する。送受信部29は、復号化したデータをバスを介してCPU25に送信する。
【0037】
電源回路部31は、アンテナ共振回路部24により受け取った電磁波から電力を生成する。電源回路部31は、生成した電力をICカード20の各部に供給する。ICカード20の各部は、動作に必要な電力の供給を受けた場合、動作可能な状態になる。
【0038】
ロジック回路部32は、演算処理をハードウエアにより行う演算部である。例えば、ロジック回路部32は、端末装置10からのコマンドに基づいて、データの暗号化、復号化、及び乱数の生成などの処理を行う。例えば、ロジック回路部32は、端末装置10から受信したコマンドに応じて、擬似固有カード識別子(PUPI:Pseudo-Unique PICC Identifier)、または、相互認証に用いられる乱数などを生成する。
【0039】
PUPIは、端末装置10がICカード20を識別するための擬似的な固有識別子である。PUPIは、例えば、長さ4バイトの乱数、または固定値である。
【0040】
端末装置10は、PUPIにより処理対象のICカード20を指定して、ATTRIB(カード選択コマンド)を送信する。これにより、端末装置10は、PUPIにより指定したICカード20との通信を確立することができる。
【0041】
また、不揮発性メモリ28は、ロジック回路部32により生成されたPUPIを記憶する記憶部(メモリ)28aを有する。ICカード20は、新たにPUPIを生成した場合、新たに生成されたPUPIをメモリ28aに上書きする。なお、PUPIは、固定値であってもよい。この場合、ICカード20のROM26は、予めPUPIを記憶した状態でICカード20の中に組み込まれる。また、ICカード20は、RAM27がロジック回路部32により生成されたPUPIを記憶する記憶領域を備える構成であってもよい。
【0042】
また、ICカード20は、乱数の生成を必要とするコマンド(例えば相互認証コマンドなど)を受信した場合、乱数を生成する。
【0043】
例えば、端末装置10とICカードとの間で、8バイトの乱数(擬似乱数データ)を用いて相互認証処理が行われる場合がある。このような場合、ICカード20は、メモリ28aにより記憶されている4バイトのPUPIを擬似乱数データの一部として用いる。
【0044】
図3は、ICカード処理システム1の動作の例について示す。
端末装置10は、ICカード20の検知を行なう為に、アンテナ共振回路部16により送信する初期応答要求コマンドを生成する。端末装置10は、生成した初期応答要求コマンドを送信する(ステップS11)。端末装置10は、図4に示すような初期応答要求コマンドデータを生成する。
【0045】
図4は、初期応答要求コマンドフォーマットの例を示す。図4により示されるように、初期応答要求コマンドは、「APf」、「AFI」、「PARAM」、及び「CRC_B」を有する。
【0046】
APfは、初期応答要求コマンドで使用されるパラメータである。APfは、例えば1byteのデータである。
【0047】
AFIは、端末装置10が応用分野を特定する為に用いられる識別子である。AFIは、例えば8bit(1byte)で表現される値である。即ち、端末装置10は、初期応答要求コマンドの先頭から9bit乃至16bit目にAFIの値を設定する。
【0048】
PARAMは、属性情報のパラメータである。PARAMは、例えば8bit(1byte)のデータである。PARAMは、コマンドの種類、及び、スロットマーカ方式またはタイムスロット方式などのアンチコリジョンで使用されるスロットの数などを示す。また、PARAMは、当該初期応答要求コマンドが、REQBコマンド(リクエストコマンド)であるのか、WUPBコマンド(ウェークアップコマンド)であるのかを示す情報を有する。
【0049】
CRC_Bは、巡回冗長検査符号である。CRC_Bは、例えば、16bit(2byte)で表現される値である。CRC_Bは、CRC_Bを含むコマンドをキャラクタとして有するフレーム内のデータビットから計算される値である。ICカード20は、受信したコマンドのCRC_Bを用いて、受信したコマンドが正常に伝送されたものであるか否かを判断する。
【0050】
ICカード20は、端末装置10のアンテナ共振回路部16の通信可能範囲内に進入する場合、活性化されてアイドル状態になる。ICカード20は、初期応答要求コマンドを受信する。
【0051】
ICカード20のCPU25は、受信した初期応答要求コマンドを解析する。ICカード20は、初期応答要求コマンドの「APf」、「AFI」、「PARAM」、及び「CRC_B」のそれぞれの値を認識する。ICカード20は、初期応答要求コマンドを受信した場合、PUPIとして乱数データを生成する(ステップS12)。
【0052】
さらに、ICカード20は、生成したPUPIをメモリ28aに記憶する(ステップS13)。
【0053】
ICカード20は、生成されたPUPIを用いて図5に示すような初期応答要求コマンドに対するレスポンス(初期応答)を生成する。ICカード20は、生成された初期応答を端末装置10に送信する(ステップS14)。
【0054】
図5は、ICカード20により生成された初期応答の例を示す。
ICカード20は、「APa」、「PUPI」、「応用データ」、「プロトコル情報」及び「CRC_B」を生成する。ICカード20は、「APa」、「PUPI」、「応用データ」、「プロトコル情報」及び「CRC_B」を用いて初期応答を生成する。ICカード20は、生成した初期応答要求コマンドに対するレスポンスを端末装置10に送信する。
【0055】
APaは、初期応答要求コマンドに対するレスポンス(初期応答)で使用されるパラメータである。APaは、例えば1byteのデータである。
【0056】
PUPIは、擬似固有カード識別子である。PUPIは、端末装置10側からICカード20を識別するために使用される。PUPIは、例えば、4byteのデータである。ICカード20は、ロジック回路部32により乱数を生成し、生成した乱数を4byteのPUPIとする。なお、ICカード20は、4byteの乱数を生成するようにロジック回路部32を制御する構成であってもよい。また、ICカード20は、ROM26、または不揮発性メモリ28により予め記憶されているPUPIを読み出す構成であってもよい。
【0057】
応用データは、ICカード20にどのようなアプリケーションが書き込まれているかを端末装置10に伝える為のデータである。応用データは、例えば4byteのデータである。
【0058】
プロトコル情報は、ICカード20がサポートする応用プロトコルの状態を表す。例えば、プロトコル情報は、ICカード20がサポートする通信速度を示す情報を含む。プロトコル情報は、例えば3byteのデータである。
【0059】
CRC_Bは、上記したように巡回冗長検査符号である。
【0060】
端末装置10は、ICカード20から送信された初期応答要求コマンドに対するレスポンスを受信する。
【0061】
端末装置10は、初期応答要求コマンドに対するレスポンス(初期応答)を受信する場合、受信したレスポンスを解析する。これにより、端末装置10は、自身の通信可能範囲内にICカード20が存在することを認識する。また、端末装置10は、初期応答を解析することにより、ICカード20のPUPIを取得する。
【0062】
さらに、端末装置10は、例えばATTRIBコマンドなどの選択コマンドをICカード20に送信する(ステップS15)。端末装置10は、ICカード20から受信したPUPIを用いてICカード20を選択する。例えば、端末装置10は、通信の対象として選択したICカード20から受信したPUPIをATTRIBに付加する。
【0063】
ICカード20は、選択コマンドを受信した場合、受信した選択コマンドを解析する。ICカード20は、選択コマンドを解析することにより、PUPIを認識する。ICカード20は、自身のPUPIと、認識したPUPIとを比較する。ICカード20は、自身のPUPIと、認識したPUPIとが一致した場合、論理チャネルの生成、通信速度の設定などを行う。これにより、ICカード20は、端末装置10との通信路を確立することができる。
【0064】
さらに、ICカード20は、選択コマンドに応じた処理の処理結果に基づいて、選択コマンドに対するレスポンスを生成する。ICカード20は、生成したレスポンスを端末装置10に送信する(ステップS16)。
【0065】
端末装置10は、選択コマンドに対するレスポンスをICカード20から受信した場合、ICカード20との間で通信路が確立されたことを認識する。即ち、端末装置10は、ICカード20の選択が完了したことを認識する。
【0066】
端末装置10は、選択したICカード20との間で相互認証を行う。まず、端末装置10は、乱数要求コマンドを生成する。端末装置10は、生成した乱数要求コマンドをICカード20に送信する(ステップS17)。
【0067】
ICカード20は、乱数要求コマンドを受信した場合、ロジック回路部32により乱数を生成するようにロジック回路部32を制御する。さらに、ICカード20は、ロジック回路部32により生成された乱数と、既に生成したPUPIとに基づいて、相互認証に用いる乱数(擬似乱数データ)を生成する。乱数要求コマンドにより擬似乱数データのバイト数が指定されている場合、ICカード20は、指定されたバイト数の擬似乱数データを生成する。また、擬似乱数データは、例えばコマンド毎に固定長であってもよい。
【0068】
例えば、端末装置10とICカード20との間で、8バイトの擬似乱数データを用いて相互認証処理が行われる場合、ICカード20は、メモリ28aにより記憶されている4バイトのPUPIを擬似乱数データの一部として用いる。
【0069】
ICカード20は、乱数要求コマンドを受信した場合、ロジック回路部32により4byteの乱数を生成する(ステップS18)。さらに、ICカード20は、記憶部28aから4byteのPUPIを読み出す(ステップS19)。ICカード20は、ロジック回路部32により生成された4byteの乱数と、記憶部28aから読み出した4byteのPUPIとを結合することにより、8バイトの擬似乱数データを生成する(ステップS20)。
【0070】
なお、擬似乱数データを生成する方法は、上記の方法に限定されない。ICカード20は、少なくともPUPIを擬似乱数データの一部として用いる方法であれば、如何なる方法により擬似乱数データを生成する構成であってもよい。
【0071】
また、PUPIのバイト数は、4バイトに限られるものではない。また、擬似乱数データのバイト数は、8バイトに限られるものではない。例えば、PUPIのバイト数と、擬似乱数データのバイト数が同じである場合、ICカード20は、PUPIを擬似乱数データとして用いる構成であってもよい。
【0072】
ICカード20は、擬似乱数データを用いて、図6に示すような乱数要求コマンドに対するレスポンスを生成する。
【0073】
図6は、ICカード20により生成された乱数要求コマンドに対するレスポンスの例を示す。
乱数要求コマンドに対するレスポンスは、「Data」、「SW1」、及び「SW2」を有する。ICカード20は、乱数要求コマンドに応じて実行した処理の結果に基づいて、「Data」、「SW1」、及び「SW2」に値を付加することにより、乱数要求コマンドに対するレスポンスを生成する。
【0074】
「Data」は、コマンドを実行した結果として得られたデータを格納するフィールドである。ICカード20は、「Data」として擬似乱数データを付加する。
【0075】
「SW1」及び「SW2」は、コマンド処理の正常終了、エラー、または他の状態を示すステータスワードである。乱数要求コマンドに応じて擬似乱数データの生成を正常に行った場合、ICカード20は、正常終了を示す値を「SW1」、及び「SW2」に付加する。
【0076】
ICカード20は、乱数要求コマンドに対するレスポンスを端末装置10に送信する(ステップS21)。
【0077】
端末装置10は、乱数要求コマンドに対するレスポンスを受信した場合、相互認証コマンドを生成する(ステップS22)。即ち、端末装置10は、乱数要求コマンドに対するレスポンスを受信した場合、レスポンスから擬似乱数データを取得する。端末装置10は、擬似乱数データを秘密鍵により暗号化し、暗号化されたデータ(第1の暗号化データ)を相互認証コマンドに付加する。
【0078】
端末装置10は、生成した相互認証コマンドをICカード20に送信する(ステップS23)。
【0079】
ICカード20は、相互認証コマンドを受信した場合、認証処理を行う(ステップS24)。ICカード20は、相互認証コマンドを解析することにより、第1の暗号化データを認識する。さらに、ICカード20は、ステップS20で生成した擬似乱数データを秘密鍵により暗号化し、暗号化されたデータ(第2の暗号化データ)を生成する。
【0080】
ICカード20は、第1の暗号化データと第2の暗号化データとを比較し、一致するか否か判定する。第1の暗号化データと第2の暗号化データとが一致する場合、ICカード20は、認証結果を可と判定する。また、第1の暗号化データと第2の暗号化データとが一致しない場合、認証結果を不可と判定する。
【0081】
ICカード20は、認証結果に基づいて相互認証コマンドに対するレスポンスを生成し、生成したレスポンスを端末装置10に送信する(ステップS25)。
【0082】
端末装置10は、可の認証結果を受信した場合、ICカード20との間で相互認証が正常に完了したと認識する。これ以降、端末装置10は、種々のコマンドをICカード20に送信することにより、種々の処理をICカード20に実行させることができる。
【0083】
上記したように、一実施形態に係るICカード20は、初期応答時に生成したPUPIを記憶しておき、乱数を生成する場合に、記憶しておいたPUPIを乱数の一部として用いる。これにより、ICカード20は、新たに生成する乱数のデータ量を抑えることができる。この為、ICカード20の処理の負荷の軽減、及び高速化を実現することが出来る。
【0084】
この結果、より効率的に非接触通信を行う事ができるICカード、及びICカードの処理方法を提供することができる。
【0085】
なお、ICカード20は、新たに乱数の生成が必要か否かを判定する構成であってもよい。例えば、生成する擬似乱数データのバイト数が、PUPIのバイト数以下である場合、ICカード20は、新たに乱数を生成せずにメモリ28aにより記憶されているPUPIの全体または一部を擬似乱数データとして用いてレスポンスを生成する。また、例えば、生成する擬似乱数データのバイト数が、PUPIのバイト数より大きい場合、ICカード20は、不足するバイト数分の乱数を生成し、PUPIと組み合わせる。これにより、ICカード20は、擬似乱数データを生成する。
【0086】
なお、上記した実施形態では、ICカード20は、乱数要求コマンドを受信した場合に擬似乱数データを生成する構成として説明したが、この構成に限定されない。ICカード20は、端末装置10から初期応答要求コマンドを受信した場合に擬似乱数データを生成し、端末装置10に送信する構成であってもよい。
【0087】
図7は、ICカード処理システム1の動作の他の例について示す。
端末装置10は、ICカード20の検知を行なう為に、アンテナ共振回路部16により送信する初期応答要求コマンドを生成する。端末装置10は、生成した初期応答要求コマンドをアンテナ共振回路部16により送信する(ステップS31)。端末装置10は、図8に示すような初期応答要求コマンドを生成する。
【0088】
図8は、初期応答要求コマンドの例を示す。図8により示されるように、初期応答要求コマンドは、「APf」、「AFI」、「PARAM」、「乱数要求」、及び「CRC_B」を有する。なお、「APf」、「AFI」、「PARAM」、及び「CRC_B」は、図4に示されたものと同様である為、説明を省略する。
【0089】
乱数要求は、ICカード20に乱数(擬似乱数データ)の生成を指示する為の情報である。乱数要求は、例えば、擬似乱数データのバイト数を指定する為の情報を有する。
【0090】
ICカード20は、端末装置10のアンテナ共振回路部16の通信可能範囲内に進入する場合、活性化されてアイドル状態になる。ICカード20は、初期応答要求コマンドを受信する。
【0091】
ICカード20のCPU25は、受信した初期応答要求コマンドを解析する。ICカード20は、初期応答要求コマンドの「APf」、「AFI」、「PARAM」、「乱数要求」、及び「CRC_B」のそれぞれの値を認識する。ICカード20は、初期応答要求コマンドを受信した場合、乱数要求により指定された長さの擬似乱数データを生成する(ステップS32)。
【0092】
ICカード20は、生成された擬似乱数データを用いて図9に示すような初期応答要求コマンドに対するレスポンス(初期応答)を生成する。ICカード20は、生成された初期応答を端末装置10に送信する(ステップS33)。
【0093】
図9は、ICカード20により生成された初期応答の例を示す。初期応答は、「APa」、「擬似乱数データ」、「応用データ」、「プロトコル情報」及び「CRC_B」を有する。なお、「APa」、「応用データ」、「プロトコル情報」及び「CRC_B」は、図5に示されたものと同様である為、説明を省略する。
【0094】
「擬似乱数データ」は、上記のステップS32でICカード20により生成された乱数である。例えば、ICカード20は、8バイトの擬似乱数データを生成する。例えば、端末装置10は、初期応答を受信した場合、第2から第5バイトまでをPUPIとして認識し、第2から第9バイトまでを擬似乱数データとして認識する。また、ICカード20も同様に、初期応答の第2から第5バイトまで、即ち、擬似乱数データの先頭の4バイトをPUPIとして認識する。なお、ICカード20は、擬似乱数データのうちの4バイトをPUPIとして認識する構成であれば、擬似乱数データのどこをPUPIとして認識する構成であってもよい。
【0095】
端末装置10は、初期応答要求コマンドに対するレスポンス(初期応答)を受信する場合、受信したレスポンスを解析する。これにより、端末装置10は、自身の通信可能範囲内にICカード20が存在することを認識する。また、端末装置10は、初期応答を解析することにより、ICカード20のPUPI、及び擬似乱数データを取得する。
【0096】
さらに、端末装置10は、例えばATTRIBコマンドなどの選択コマンドをICカード20に送信する(ステップS34)。端末装置10は、ICカード20から受信したPUPIを用いてICカード20を選択する。例えば、端末装置10は、通信の対象として選択したICカード20から受信したPUPIをATTRIBに付加する。
【0097】
ICカード20は、選択コマンドを受信した場合、受信した選択コマンドを解析する。ICカード20は、選択コマンドを解析することにより、PUPIを認識する。ICカード20は、自身のPUPIと、認識したPUPIとを比較する。ICカード20は、自身のPUPIと、認識したPUPIとが一致した場合、論理チャネルの生成、通信速度の設定などを行う。これにより、ICカード20は、端末装置10との通信路を確立することができる。
【0098】
さらに、ICカード20は、選択コマンドに応じた処理の処理結果に基づいて、選択コマンドに対するレスポンスを生成する。ICカード20は、生成したレスポンスを端末装置10に送信する(ステップS35)。
【0099】
端末装置10は、選択コマンドに対するレスポンスをICカード20から受信した場合、ICカード20との間で通信路が確立されたことを認識する。即ち、端末装置10は、ICカード20の選択が完了したことを認識する。
【0100】
端末装置10は、選択したICカード20との間で相互認証を行う。この場合、端末装置10は、初期応答から取得した擬似乱数データに基づいて、相互認証コマンドを生成する(ステップS36)。即ち、端末装置10は、擬似乱数データを秘密鍵により暗号化し、暗号化された擬似乱数データ(第1の暗号化データ)を相互認証コマンドに付加する。
【0101】
端末装置10は、生成した相互認証コマンドをICカード20に送信する(ステップS37)。
【0102】
ICカード20は、相互認証コマンドを受信した場合、認証処理を行う(ステップS38)。ICカード20は、相互認証コマンドを解析することにより、第1の暗号化データを認識する。さらに、ICカード20は、ステップS32で生成した擬似乱数データを秘密鍵により暗号化し、暗号化された擬似乱数データ(第2の暗号化データ)を生成する。
【0103】
ICカード20は、第1の暗号化データと第2の暗号化データとを比較し、一致するか否か判定する。第1の暗号化データと第2の暗号化データとが一致する場合、ICカード20は、認証結果を可と判定する。また、第1の暗号化データと第2の暗号化データとが一致しない場合、認証結果を不可と判定する。
【0104】
ICカード20は、認証結果に基づいて相互認証コマンドに対するレスポンスを生成し、生成したレスポンスを端末装置10に送信する(ステップS39)。
【0105】
端末装置10は、可の認証結果を受信した場合、ICカード20との間で相互認証が正常に完了したと認識する。これ以降、端末装置10は、種々のコマンドをICカード20に送信することにより、種々の処理をICカード20に実行させることができる。
【0106】
上記したように、一実施形態に係るICカード20は、初期応答時に擬似乱数データを生成する。さらに、ICカード20は、擬似乱数データを初期応答として端末装置10に送信する。
【0107】
この場合、端末装置10は、相互認証に必要な乱数要求コマンドをICカード20に送信する必要がなくなる。この為、ICカード20は、新たに生成する乱数のデータ量を抑え、且つ、より速く端末装置10との相互認証を完了させることができる。これにより、ICカード20の処理の負荷の軽減、及び高速化を実現することが出来る。
【0108】
この結果、より効率的に非接触通信を行う事ができるICカード、及びICカードの処理方法を提供することができる。
【0109】
なお、上記した実施形態では、端末装置10は、乱数要求を初期応答要求コマンドに付加する構成として説明したが、この構成に限定されない。端末装置10は、乱数要求を選択コマンドに付加する構成であってもよい。
【0110】
また、ICカード20は、擬似乱数データを初期応答に付加する構成として説明したが、この構成に限定されない。端末装置10は、擬似乱数データを選択コマンドに対するレスポンスに付加する構成であってもよい。
【0111】
なお、上述の各実施の形態で説明した機能は、ハードウエアを用いて構成するに留まらず、ソフトウエアを用いて各機能を記載したプログラムをコンピュータに読み込ませて実現することもできる。また、各機能は、適宜ソフトウエア、ハードウエアのいずれかを選択して構成するものであっても良い。
【0112】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【0113】
1…ICカード処理システム、10…端末装置、12…ROM、13…RAM、14…不揮発性メモリ、15…送受信部、16…アンテナ共振回路部、17…ロジック回路部、18…上位インターフェース部、19…電源回路部、20…ICカード、21…本体、22…ICモジュール、23…ICチップ、24…アンテナ共振回路部、25…CPU、26…ROM、27…RAM、28…不揮発性メモリ、28a…記憶部、29…送受信部、31…電源回路部、32…ロジック回路部。

【特許請求の範囲】
【請求項1】
外部機器と非接触通信を行うICカードであって、
前記外部機器から送信されたコマンドを受信する受信部と、
前記受信部により初期応答要求コマンドを受信した場合、カード識別子として第1の乱数を生成する乱数生成部と、
前記受信部により乱数要求を受信した場合、前記第1の乱数の全てあるいはその一部を用いて乱数データを生成する乱数生成部と、
前記乱数生成部により生成された前記乱数データを前記外部機器に送信する送信部と、
を具備するICカード。
【請求項2】
前記乱数生成部は、前記第1の乱数を前記乱数データの一部として前記乱数データを生成する、請求項1に記載のICカード。
【請求項3】
前記乱数生成部は、第2の乱数を生成し、生成した前記第2の乱数と前記第1の乱数とを結合させて前記乱数データを生成する、請求項2に記載のICカード。
【請求項4】
前記乱数生成部は、前記乱数要求に基づいて、要求された前記乱数データの長さを特定し、要求された前記乱数データの長さと前記第1の乱数の長さとを比較して不足データ長を特定し、前記不足データ長に相当する前記第2の乱数を生成し、生成した前記第2の乱数と前記第1の乱数とを結合させて前記乱数データを生成する、請求項3に記載のICカード。
【請求項5】
前記乱数生成部は、要求された前記乱数データの長さが前記第1の乱数の長さ以下である場合、前記第1の乱数を前記乱数データとして用いる、請求項4に記載のICカード。
【請求項6】
前記送信部は、前記受信部により前記乱数要求を有する乱数要求コマンドを受信した場合、前記乱数要求コマンドに対するレスポンスとして前記乱数生成部により生成された前記乱数データを前記外部機器に送信する、請求項1に記載のICカード。
【請求項7】
前記送信部は、前記受信部により前記乱数要求を有する初期応答要求コマンドを受信した場合、前記初期応答要求コマンドに対する初期応答として前記乱数生成部により生成された前記乱数データを前記外部機器に送信する、請求項1に記載のICカード。
【請求項8】
前記各部を備えるICモジュールと、
前記ICモジュールが配設される本体と、
を具備する請求項1に記載のICカード。
【請求項9】
外部機器と非接触通信を行うICカードの制御方法であって、
前記外部機器から送信された初期応答要求コマンドを受信した場合、カード識別子としての第1の乱数を生成し、
前記外部機器から送信された乱数要求を受信した場合、前記第1の乱数の全てあるいはその一部を用いて乱数データを生成し、
生成された前記乱数データを前記外部機器に送信する、
ICカードの制御方法。

【図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


【公開番号】特開2013−77236(P2013−77236A)
【公開日】平成25年4月25日(2013.4.25)
【国際特許分類】
【出願番号】特願2011−217905(P2011−217905)
【出願日】平成23年9月30日(2011.9.30)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.FRAM
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】