モード変更機能を備えたICカード、および、ICカードプログラム
【課題】上位装置とSIM間で繰り返し伝送されるパターンを省略することができるICカードを提供する。
【解決手段】本発明に係るSIM1は、上位装置2と通信するモードとして、APDUを交換するISOモードと、APDUのデータ部のみを交換するデータモードを備え、ISOモードからデータモードへ遷移するトリガーとなるモード変更コマンドを備える。データモードでは、上位装置2とSIM1間ではAPDUのデータ部が交換され、上位装置2からSIM1には平文のみが送信され、SIM1から上位装置2には暗号文のみが送信される。なお、データモードで処理したコマンドデータのデータ量が、モード変更コマンドのデータフィールドで示された総量に達すると、SIM1のモードはデータモードからISOモードに自動復帰する。
【解決手段】本発明に係るSIM1は、上位装置2と通信するモードとして、APDUを交換するISOモードと、APDUのデータ部のみを交換するデータモードを備え、ISOモードからデータモードへ遷移するトリガーとなるモード変更コマンドを備える。データモードでは、上位装置2とSIM1間ではAPDUのデータ部が交換され、上位装置2からSIM1には平文のみが送信され、SIM1から上位装置2には暗号文のみが送信される。なお、データモードで処理したコマンドデータのデータ量が、モード変更コマンドのデータフィールドで示された総量に達すると、SIM1のモードはデータモードからISOモードに自動復帰する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ICチップが実装されたカード媒体であるICカードに関し、更に詳しくは、上位装置とICカード間の通信時間を短縮する技術に関する。
【背景技術】
【0002】
ICカードに実装されたICチップ近傍を短冊状に切り取ったSIM(Subscriber Identity Module)は、上位装置に組み込まれ、上位装置で利用するデータを暗号化/復号するデバイスとして利用されている。
【0003】
SIMを上位装置に組み込む一例としては、同一出願人は、インターネットに接続できる監視カメラにSIMを搭載し、監視カメラが撮像した動画をSIMで暗号化するシステムを出願している(特許文献1)。
【0004】
監視カメラなどの上位装置とSIMとを組み合わせることで、データを暗号化するために施す上位装置の変更点が最小限に抑えられ、更に、暗号アルゴリズム交換も容易になるメリットが生じる。
【0005】
しかしながら、SIMの通信速度は、標準で9600bpsと一般的なネットワークや無線通信速度と比べて非常に遅く、上位装置にSIMを組み込み利用する際は、上位装置とSIM間の通信時間がボトルネックとなってしまう。このため、上位装置とSIM間の通信時間を短縮する上で、上位装置とSIM間の通信量を減らすことは大変メリットがある。
【0006】
近年では、特許文献2で開示されているようなUSBインターフェースを搭載し、通信速度を飛躍的に向上させることの可能なICチップも提案されてきているが、上位装置とSIM間の通信量を減らすことにメリットがあることにかわりはない。
【0007】
上位装置とSIM間の通信量を少なくする一つの発明として、同一出願人は、繰り返して利用することのできるパターンがコマンドに含まれる場合、あらかじめSIM内にこのパターンを登録し、SIMへはこのパターン番号を送ることで、上位装置とSIM間の通信量を減らす発明を出願している(特許文献3)。
【特許文献1】特願2005−108601号公報
【特許文献2】特表2003−532936号公報
【特許文献3】特願2005−265605号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
確かに、特許文献3の技術を用いることで、繰り返しのパターンがコマンドに含まれる場合、あらかじめSIM内にパターンを登録し、繰り返しのパターンの代わりにパターン番号を上位装置からSIMに送信することで通信量を削減することができる。
【0009】
しかしながら、あるコマンドの処理を連続してSIMに実行させる場合、上位装置側では、コマンドを実行させるごとにパターン番号をSIMに送信する必要があるし、また、SIM側では、受信したパターン番号を解釈しなければならない。
【0010】
そこで、本発明は、あるコマンドの処理を連続してSIMに実行させる場合、上位装置とSIM間で繰り返し伝送されるパターン(例えば、コマンドコード)を省略することができ、更に、このパターンを識別するパターン番号でさえも省略することのできるICカード、およびICカードプログラムを提供することを目的とする。
【課題を解決するための手段】
【0011】
上述した課題を解決する第1の発明は、上位装置に組み込まれ利用されるICカードであって、前記ICカードは、前記ICカードのモードを示すモード情報をメモリに記憶し、前記モード情報によって、少なくとも、コマンドAPDU及びレスポンスAPDUを前記上位装置とやり取りする第1のモード、或いは、前記コマンドAPDUのデータ部であるコマンドデータ及び前記レスポンスAPDUのデータ部であるレスポンスデータのみを前記上位装置とやり取りする第2のモードのいずれかのモードが示され、前記ICカードは、前記モード情報を操作するモード変更コマンドと、前記モード情報を参照し、前記モード情報に基づいて前記ICカードの振舞いを変更する制御手段とを備え、前記モード変更コマンドは特定の処理モジュールに関連付けられ、更に、前記モード変更コマンドは、前記第1のモードで前記コマンドAPDUを処理するときには、前記モード情報を操作して前記ICカードのモードを前記第2のモードに遷移させ、前記第2のモードに遷移してからは、処理した前記コマンドデータのデータ量をカウントし、カウントしたデータ量が前記モード変更コマンドの前記コマンドAPDUのデータ部で示される前記コマンドデータの総量を超えたときに、前記モード情報を操作して前記ICカードのモードを前記第1のモードに復帰させ、前記制御手段は、前記モード情報が前記第2のモードを示すときは、前記上位装置から送信された前記コマンドデータの処理を前記モード変更コマンドに委任し、前記モード変更コマンドから得られる前記レスポンスデータを前記上位装置に送信することを特徴とする。
【0012】
更に、第2の発明は、第1の発明に記載のICカードであって、前記モード変更コマンドに関連付けられた処理モジュールは、前記コマンドデータを暗号化/複合するモジュールであることを特徴とする。
【0013】
更に、第3の発明は、少なくとも、コマンドAPDU及びレスポンスAPDUを前記上位装置とやり取りする第1のモード、或いは、前記コマンドAPDUのデータ部であるコマンドデータ及び前記レスポンスAPDUのデータ部であるレスポンスデータのみを前記上位装置とやり取りする第2のモードのいずれかのモードが示されるモード情報を記憶したICカードに実装されるICカードプログラムであって、特定の処理に関連付けられ、前記第1のモードで前記コマンドAPDUを処理するときには、前記モード情報を操作して前記ICカードのモードを前記第2のモードに遷移させ、前記第2のモードに遷移してからは、処理した前記コマンドデータのデータ量をカウントし、カウントしたデータ量が前記コマンドAPDUのデータ部で示される前記コマンドデータの総量を超えたときに、前記モード情報を操作して前記ICカードのモードを前記第1のモードに復帰させるモード変更コマンド機能と、前記モード情報が前記第2のモードを示すときは、前記上位装置から送信された前記コマンドデータの処理を前記モード変更コマンド機能に委任し、前記モード変更コマンドから得られる前記レスポンスデータを前記上位装置に送信する制御機能として、前記ICカードのCPUを動作させるためのICカードプログラムである。
【0014】
更に、第4の発明は、第3の発明に記載のICカードプログラムにおいて、前記モード変更コマンド機能に関連付けられた処理は、前記コマンドデータを暗号化/複合する処理であることを特徴とするICカードプログラムである。
【発明の効果】
【0015】
上述した発明によれば、上述した第2のモードでは、上位装置とICカード間ではコマンドデータ/レスポンスデータが伝送されため、上位装置とICカード間の通信量を減らす効果が得られるばかりか、ICカードは、上位装置から受信したコマンドAPDUを毎回解釈する必要がなくなるため、ICカードの処理時間を短縮する効果が得られる。
【0016】
更に、第2のモードで処理したコマンドデータのデータ量が総量に達した後は、コマンドAPDUのデータ部であるコマンドデータ及びレスポンスAPDUのデータ部であるレスポンスデータのみを前記上位装置とやり取りする第2のモードから、コマンドAPDU及びレスポンスAPDUを前記上位装置とやり取りする第1のモードに自動復帰するため、第2のモードに遷移した後でも、上位装置はISO/IEC7816などの規格に準拠した手順に従い、ICカードを利用したトランザクションを実行することができる。
【0017】
更に、モード変更コマンドが有する処理モジュールを、平文を暗号化/複合するモジュールとすることで、上位装置が大量の平文を暗号化したときに処理時間を短縮できる。なお、第1のモードに自動復帰することで、暗号鍵の変更やICカードの認証など、モード変更コマンド以外の処理を行うことができる。
【0018】
なお、本発明において、ICカードとは、ICチップが実装されたカード媒体を意味し、上位装置と通信するためのインターフェースは接触/非接触を問うものではない。更に、本発明に係るICカードには、ICチップの周辺を短冊状に切り取ったSIM或いはUIMも含まれる。
【発明を実施するための最良の形態】
【0019】
ここから、図を参照しながら、本発明に係るSIMについて詳細に説明する。本発明に係るSIM1は、上位装置2と通信するモードとして2つのモードを備え、一つのモードは、APDU(Application Protocol Data Unit)を交換するISOモードであり、もう一つのモードは、APDUのデータ部のみを交換するデータモードである。
【0020】
図1は、SIM1の振舞いを説明する図で、図1(a)は、APDUを交換するISOモードを説明する図で、図1(b)は、APDUのデータ部のみを交換するデータモードを説明する図である。
【0021】
図1(a)に示したように、ISOモードは、ISO/IEC7816の手順に従い、上位装置2とSIM1間でAPDUを交換するモードで、上位装置2からSIM1に送信されるAPDUはコマンドAPDUと呼ばれ、このコマンドAPDUには、実行するコマンドを示すコマンドヘッダと、コマンドで利用されるコマンドデータが含まれる。
【0022】
また、SIM1から上位装置2に送信されるAPDUはレスポンスAPDUと呼ばれ、このレスポンスAPDUには、コマンドのレスポンスデータと、コマンドの実行結果を示すステータスワード(SW: status word)が含まれる。
【0023】
図1(b)に示したように、SIM1がデータモードであるとき、上位装置2とSIM1間ではAPDUのデータ部のみが交換され、上位装置2からSIM1にはコマンドデータのみが送信され、SIM1から上位装置2にはレスポンスデータのみが送信される。
【0024】
活性化されたときのSIM1のモードはISOモードで、SIM1は、ISOモードからデータモードへ遷移するトリガーとなるモード変更コマンドを備える。
【0025】
SIM1はモード変更コマンドを受信すると、SIM1のモードはISOモードからデータモードへと遷移し、データモードでは、SIM1は、上位装置2から送信されたコマンドデータをモード変更コマンドによって処理し、モード変更コマンドの処理結果であるレスポンスデータのみを上位装置2に送信する。
【0026】
モード変更コマンドのデータ部には、データモードに遷移しているときに処理すべきコマンドデータの総量でが含まれ、データモードで処理したコマンドデータのデータ量が総量に達したときには、SIM1のモードは、データモードからISOモードに自動復帰する。
【0027】
SIM1が上述したデータモードを有することで、上位装置2とSIM1間の通信量を減らす効果が得られるばかりか、SIM1は、上位装置2から受信したコマンドAPDUを毎回解釈する必要がなくなるため、SIM1の処理時間を短縮する効果が得られる。
【0028】
更に、モード変更コマンドのデータ部に、データモードに遷移しているときに処理すべきコマンドデータの総量を含ませることで、非常に大きいデータ量のコマンドデータを処理することができる。
【0029】
更に、コマンドデータを処理したコマンドデータのデータ量が総量に達した後は、SIM1のモードはデータモードからISOモードに自動復帰するため、データモードに遷移した後でも、上位装置2はISO/IEC7816に準拠した手順に従い、ICカードを利用したトランザクションを実行することができる。
【0030】
ここから、本発明に係るSIM1についてより詳しく説明する。図2は、本発明に係るSIM1の外観図である。SIM1は、ICチップ10がモールドされたICモジュール1a周辺を約11.5mm×25mm状に切り取った形状をしており、SIM1の詳細な形状はGSM(Global System for Mobile communications)規格等で規格化されている。
【0031】
図3は、SIM1のICモジュール1aにモールドされるICチップ10のハードウェア構造図である。ICチップ10は、Vcc、Reset、Clock、I/O及びGnd用の外部端子を有し、このICチップ10には、中央演算装置11(Central Processing Unit、以下CPUと記す)に、バス17を介して、読み出し専用メモリ15(Read Only Memory、以下ROMと記す)、書換え可能なメモリとしてEEPROM16(Electrically Erasable Programmable Read-Only Memoryの略)、揮発性メモリとしてランダムアクセスメモリ14(Random Access Memory、以下RAMと記す)、暗号演算専用の回路である暗号演算回路12、及び、上位装置2とデータを通信するための通信I/F回路13などが接続されている。
【0032】
図4は、SIM1のソフトウェア構成図である。図4に示したように、SIM1は、上位装置2から送信された平文を暗号化する暗号鍵104をEEPROM16に記憶し、SIM1が遷移しているモードを示すモード情報105をRAM14などの揮発性メモリに記憶している。
【0033】
更に、SIM1は、図3で示したICチップ10のハードウェアを利用し、CPU11を動作させるプログラムとして、I/F回路13を制御し、上位装置2とデータ通信するための伝送制御モジュール103と、上位装置2から送信されたコマンドAPDUを解釈し、コマンドAPDUに対応するコマンドに処理を委任する手段となるディスパッチャ100(dispatcher)と、ディスパッチャ100から処理を委任される複数のコマンドからなるコマンド群106を備え、このコマンド群106には、上位装置2から送信された平文を暗号化する暗号化コマンド101と、暗号化コマンド101で利用される暗号鍵104をEEPROM16に書込む暗号鍵設定コマンド102が含まれる。
【0034】
更に、暗号化コマンド101は、暗号演算回路12を作動させ、暗号鍵104を用いて、所定のアルゴリズムで引渡されたデータを暗号化/複合する暗号モジュール107を有している。
【0035】
SIM1に備えられた伝送制御モジュール103とは、通信I/F回路13を制御し、上位装置2と確実にデータを送受信するためのプログラムで、例えば、ISO/IEC7816で定義されている伝送プロトコル(T0,T1)や、USB規格の伝送プロトコルに従い、誤り訂正や、再送制御などを行なうプログラムである。
【0036】
ディスパッチャ100とは、本発明に係る制御手段を実現するプログラムであって、モード情報105を参照し、SIM1の振舞いを変更する。モード情報105がISOモードを示すとき、ディスパッチャ100は上位装置2から送信されたコマンドAPDUを解釈し、コマンド群106の中からコマンドAPDUを処理させるコマンドを選択し、選択したコマンドにコマンドAPDUの処理を委任する。
【0037】
また、モード情報105がデータモードを示すとき、ディスパッチャ100は上位装置2から送信されたコマンドデータを解釈することなく、暗号化コマンド101にコマンドデータの処理を委任する。
【0038】
暗号鍵設定コマンド102とは、ISO/IEC7816規格で定義されているWriteコマンドのように、上位装置2から受信したデータ(暗号鍵104)をEEPROM16に書き込むプログラムである。SIM1がこの暗号鍵設定コマンド102を備えることで、平文を暗号化する暗号鍵104を任意に変更することが可能である。
【0039】
暗号化コマンド101とは、ICチップ10の暗号演算回路12を操作し、SIM1に記憶された暗号鍵104を用い、所定の暗号アルゴリズムに従い、上位装置2から伝送される平文を暗号化する処理モジュールを備えたコマンドで、SIM1がデータモードへ遷移するトリガーとなるモード変更コマンドである。
【0040】
図5は、SIM1のモード遷移を説明する図である。上述しているように、SIM1は、ISOモードとデータモードの2つのモードを有し、SIM1が遷移しているモードは、モード情報105によって示される。
【0041】
ISOモードでは、SIM1と上位装置2間でAPDUが交換され、ISOモードで、暗号化コマンド101のコマンドAPDUを受信したとき、SIM1のモードは、ISOモードからデータモードに遷移する。そして、データモードでは、APDUのデータ部のみ、すなわち、コマンドデータとレスポンスデータのみが交換される。
【0042】
ISOモードからデータモードに遷移した後は、暗号化コマンド101のコマンドAPDUのデータフィールドに含まれる処理データ量の平文の暗号処理がすべて終了したときに、SIM1のモードは、データモードからISOモードへと自動復帰する。
【0043】
図6は、ISOモードにおけるSIM1の動作を説明する図である。ISOモードでは、コマンド群106に含まれるコマンドの実行が可能で、このISOモードでは、プロトコルバイトとチェックコードが付加されたコマンドAPDUが、上位装置2からSIM1に送信される。
【0044】
SIM1の伝送制御モジュール103は、コマンドAPDUを受信すると、コマンドAPDUに付加されたプロトコルバイトとチェックコードを確認し、データを正常に受信したと判断した場合、ディスパッチャ100がコマンドAPDUのコマンドヘッダの内容を解釈し、コマンド群106に含まれ、受信したコマンドAPDUに対応するコマンドに処理を委任する。委任されたコマンドはコマンドAPDUで示される処理を実行した後、レスポンスAPDUを生成し、伝送制御モジュール103は生成したレスポンスAPDUを上位装置2に返信する。
【0045】
図7は、データモードにおけるSIM1の動作を説明する図である。SIM1が暗号化コマンド102のコマンドAPDUを受信することで、SIM1のモードはISOモードからデータモードへ遷移し、上位装置2にACK(acknowledgment)を返信する。
【0046】
データモードでは、ISOモードとは異なり、上位装置2からSIM1には平文のみが送信される。上位装置2が平文をSIM1に送信するとき、平文には、コマンドAPDUと同様にプロトコルバイトとチェックコードが付加される。
【0047】
SIM1が平文を受信すると、伝送制御モジュール103は、平文に付加されたプロトコルバイトとチェックコードを確認し、正常にデータを受信したと判断した場合、受信した平文の暗号化を暗号化コマンド101に委任し、暗号化コマンド101は暗号モジュール107に平文を受渡し、平文を暗号化した暗号文を得る。
【0048】
暗号化コマンド101が得た暗号文は、伝送制御モジュール103に受け渡され、しかるべきプロトコルバイトとチェックコードが付加されてSIM1から上位装置1に送信される。
【0049】
また、暗号化コマンド101は、データモードにおいて暗号化した平文のデータ量をカウントし、カウントしたデータ量が、暗号化コマンド101のコマンドAPDUのデータフィールドで示される処理データ量に達したとき、モード情報105を操作し、SIM1のモードをデータモードからISOモードへと遷移させると共に、暗号化コマンドのレスポンスAPDUを生成し、生成したレスポンスAPDUにプロトコルバイトとチェックコードを付加して上位装置2へ送信する。
【0050】
従来のICカードにおいては、データ容量の大きい平文を暗号化する際、一つのコマンドAPDUに含めることができるブロックサイズに平文を分割し、分割した平文ごとにコマンドAPDUを生成しなければならないが、本発明に係るSIM1を用いれば、分割した平文ごとにコマンドAPDUを生成する必要はなくなるため、上位装置2とSIM1間の通信量を減らす効果が得られるばかりか、SIM1は、上位装置2から受信したコマンドAPDUを毎回解釈する必要がなくなるため、SIM1の処理時間を短縮する効果が得られる。
【0051】
更に、処理データ量の平文を処理した後は、SIM1のモードはデータモードからISOモードに自動復帰するため、データモードに遷移した後であっても、上位装置2はISO/IEC7816などに準拠した手順に従い、ICカードを利用したトランザクションを実行することができる。
【0052】
図8は、暗号化コマンド101のコマンドAPDUの一例を示した図である。図8で示しているように、本実施の形態において、ISOモード時に上位装置からSIM1に送信されるコマンドAPDUの構造は、ISO/IEC7816規格のCase3のコマンド構造で、CLA、INS、P1及びP2とから成るコマンドヘッダと、Lc及びデータフィールドとから成るボディとから構成される。
【0053】
暗号化コマンド101のコマンドAPDUのヘッダーに含まれるCLAとINSは、コマンドAPDUを識別するためのデータで、本実施の形態において、暗号化コマンド101のCLAは「D0h」で、INSは「04h」である。
【0054】
暗号化コマンド101のコマンドAPDUのヘッダーに含まれるP1およびP2は、暗号化コマンド101が実行されるときのパラメータで、本実施の形態においては、P1及びP2は用いられず、P1及びP2の値はそれぞれ「00h」である。
【0055】
暗号化コマンド101のボディのLcは、データフィールドに含まれるデータの長さを示し、データフィールドには、暗号化する平文の総量が記述される。なお、上述しているように、データモードでは、平文のみが送信され、コマンドヘッダのCLA、INS、P1およびP2は送信されない。
【0056】
SIM1がデータモードにいるときは、上位装置2からSIM1に平文のデータオブジェクトが送信され、このデータオブジェクトには平文のデータ長と平文とが含まれ、暗号化コマンド101は、データ長で示される長さの平文を暗号化する。
【0057】
図9は、暗号化コマンド101のレスポンスAPDUの一例を示した図で、暗号化した平文の総データ量が暗号化コマンド101のデータフィールドで示される総量に達したときはレスポンスAPDUを生成する。
【0058】
図9で示したように、暗号化コマンド101のレスポンスAPDUの構造は、ISO/IEC7816のレスポンスAPDUの構造に準拠し、ボディと、トレイラー(Trailer)である2バイトのSWとから構成される。
【0059】
暗号化コマンド101のレスポンスAPDUのボディには、最後に受信する平文を暗号化した暗号文が含まれる。また、レスポンスAPDUの2バイトのSWでは、暗号化コマンド101の実行結果が示される。
【0060】
ここから、暗号化コマンド101を実装したSIM1の動作フローについて説明する。図10は、SIM1の動作を示したフロー図である。図10の最初のステップS1は、SIM1が活性化されるステップである。このステップでは、SIM1は、ISO/IEC7816の手順に従い活性化され、SIM1の初期処理が実行される。
【0061】
この初期処理によって、SIM1のモード情報105の値がISOモードを示す値に設定されることで、SIM1のモードはISOモードになる。
【0062】
次のステップS2は、SIM1が非活性化されるまで繰り返し実行されるループ処理である。
【0063】
次のステップS3は、SIM1が上位装置2からコマンドAPDUを受信するステップである。SIM1の伝送制御モジュール103は、上位装置2から、プロトコルバイトとチェックコードが付加されたコマンドAPDUを受信すると、コマンドAPDUに付加されたプロトコルバイトとチェックコードを確認し、データを正常に受信したと判断した場合、コマンドAPDUのみをディスパッチャ100に受け渡す。
【0064】
次のステップS4は、SIM1が上位装置から受信したコマンドAPDUを処理するコマンドを特定するステップである。このステップでは、SIM1のモード情報105の値は、ISOモードを示す値に設定されているため、SIM1のディスパッチャ100は、コマンドAPDUのCLA,INSを解析することで、SIM1が有するコマンド群106の中から、SIM1は実行するコマンドを特定し、P1、P2およびデータフィールドのデータを引渡すなどして、コマンドAPDUの処理を特定したコマンドに委任する。
【0065】
なお、このステップで、特定したコマンドが暗号化コマンド101の場合はステップS10に進み、他のコマンドの場合はステップS5に進む。
【0066】
ステップS5において、暗号化コマンド101以外のコマンド(例えば、暗号鍵設定コマンド102)を処理され、レスポンスAPDUが生成される。そして、ステップS6では、伝送制御モジュール103は、生成したレスポンスAPDUにプロトコルバイトとチェックコードを付加し上位装置2に送信する。
【0067】
図11は、図10のステップS10で実行され、暗号化コマンド101を処理する手順を示したフロー図である。暗号化コマンド101を処理する手順の最初のステップS11は、SIM1のモードを、ISOモードからデータモードへ遷移させるステップである。
【0068】
このステップS11では、ディスパッチャ100は、図10のステップS3で受信したコマンドAPDUが、暗号化コマンド101のコマンドAPDUであると判断した場合、暗号化コマンド101を呼び出す。暗号化コマンド101が読み出されると、暗号化コマンド101は、ISOモードを示す値からデータモードを示す値に、モード情報105の値を変更することで、SIM1のモードを、ISOモードからデータモードへ遷移させる。
【0069】
次のステップS12は、暗号化した平文のデータ量を示すカウンタを初期化するステップである。このステップでは、SIM1の暗号化コマンド101は、図10のステップS3で受信した暗号化コマンド101のコマンドAPDUに含まれる総量を、CPU11のレジスタまたはRAM14にコピーしておく。
【0070】
次のステップS13は、暗号化コマンド101のコマンドAPDUを正常に受信したことを示すACKを返信するステップである。なお、このACKにはプロトコルバイトやチェックコードは伝送制御モジュール103によって付加される。なお、ACKとレスポンスAPDUに含まれるSWを区別できるように、ACKの値は、SWで使用される以外の値であることが望ましい。
【0071】
次のステップS14は、上位装置2から平文を受信するステップである。このステップで受信する平文には、プロトコルバイトとチェックコードが付加される。SIM1が平文を受信すると、伝送制御モジュール103は、コマンドAPDUに付加されたプロトコルバイトとチェックコードを確認する。
【0072】
次のステップS15は、上位装置2から送信された平文を暗号化した暗号文を生成するステップである。このステップでは、暗号化コマンド101は、暗号演算回路12を作動させ、暗号鍵104を用いて所定の暗号アルゴリズムに従い、ディスパッチャ100から引渡された平文を暗号化する。
【0073】
次のステップS16は、暗号化した平文のデータ量を示すカウンタを更新するステップである。このステップでは、暗号化コマンド101は、平文のデータオブジェクトに含まれるデータ長をカウンタに加算することで、カウンタを更新する。
【0074】
次のステップS17は、ステップS3で受信した暗号化コマンド101のコマンドPADUのデータフィールドに含まれていた総量とカウンタの値を比較し、総量の平文を暗号化したか確認するステップである。
【0075】
ステップS17で、総量の平文を暗号化していない場合はステップS18に進み、暗号化した場合は正常終了処理(ステップS20)に進む。
【0076】
総量の平文を暗号化していない場合に実行されるステップS18では、平文を暗号化した暗号文のみが上位装置2に送信される。このステップでは、暗号化コマンド101は、ステップS15で生成した暗号文を伝送制御モジュール103に引渡し、伝送制御モジュール103は、暗号文に、プロトコルバイトとチェックコードを付加して上位装置2に送信し、送信後にSIM1は上位装置2からデータを受信する状態になる。なお、ステップS18を実行した後は、ステップS14に戻る。
【0077】
図12は、正常終了処理に手順を示したフロー図である。この手順の最初のステップS21は、正常終了を示すSWと、最後に暗号化した平文の暗号文であるレスポンスデータとからなるレスポンスAPDUを生成し、更に、データモードを示す値からISOモードを示す値にモード情報105の値を変更する。
【0078】
ステップS21の後に実行されるステップS22は、ステップS21で生成したレスポンスAPDUを上位装置2に送信するステップである。このステップでは、暗号化コマンド101は、ステップS21で生成したレスポンスAPDUを伝送制御モジュール103に引渡し、伝送制御モジュール103は、プロトコルバイトとチェックコードをレスポンスAPDUに付加し、レスポンスAPDUを上位装置2に送信する。
【図面の簡単な説明】
【0079】
【図1】SIMの振舞いを説明する図。
【図2】SIMの外観図。
【図3】ICチップのハードウェア構造図。
【図4】SIMのソフトウェア構成図。
【図5】SIMのモード遷移を説明する図。
【図6】ISOモードにおけるSIMの動作を説明する図。
【図7】データモードにおけるSIMの動作を説明する図。
【図8】暗号化コマンドのコマンドAPDUの一例を示した図。
【図9】暗号化コマンドのレスポンスAPDUの一例を示した図。
【図10】SIMの動作を示したフロー図。
【図11】暗号化コマンドを処理する手順を示したフロー図。
【図12】正常終了時の手順を示したフロー図。
【符号の説明】
【0080】
1 SIM
100 ディスパッチ
101 暗号鍵設定コマンド
102 暗号化コマンド
103 伝送制御モジュール
104 暗号鍵
105 モード情報
2 上位装置
【技術分野】
【0001】
本発明は、ICチップが実装されたカード媒体であるICカードに関し、更に詳しくは、上位装置とICカード間の通信時間を短縮する技術に関する。
【背景技術】
【0002】
ICカードに実装されたICチップ近傍を短冊状に切り取ったSIM(Subscriber Identity Module)は、上位装置に組み込まれ、上位装置で利用するデータを暗号化/復号するデバイスとして利用されている。
【0003】
SIMを上位装置に組み込む一例としては、同一出願人は、インターネットに接続できる監視カメラにSIMを搭載し、監視カメラが撮像した動画をSIMで暗号化するシステムを出願している(特許文献1)。
【0004】
監視カメラなどの上位装置とSIMとを組み合わせることで、データを暗号化するために施す上位装置の変更点が最小限に抑えられ、更に、暗号アルゴリズム交換も容易になるメリットが生じる。
【0005】
しかしながら、SIMの通信速度は、標準で9600bpsと一般的なネットワークや無線通信速度と比べて非常に遅く、上位装置にSIMを組み込み利用する際は、上位装置とSIM間の通信時間がボトルネックとなってしまう。このため、上位装置とSIM間の通信時間を短縮する上で、上位装置とSIM間の通信量を減らすことは大変メリットがある。
【0006】
近年では、特許文献2で開示されているようなUSBインターフェースを搭載し、通信速度を飛躍的に向上させることの可能なICチップも提案されてきているが、上位装置とSIM間の通信量を減らすことにメリットがあることにかわりはない。
【0007】
上位装置とSIM間の通信量を少なくする一つの発明として、同一出願人は、繰り返して利用することのできるパターンがコマンドに含まれる場合、あらかじめSIM内にこのパターンを登録し、SIMへはこのパターン番号を送ることで、上位装置とSIM間の通信量を減らす発明を出願している(特許文献3)。
【特許文献1】特願2005−108601号公報
【特許文献2】特表2003−532936号公報
【特許文献3】特願2005−265605号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
確かに、特許文献3の技術を用いることで、繰り返しのパターンがコマンドに含まれる場合、あらかじめSIM内にパターンを登録し、繰り返しのパターンの代わりにパターン番号を上位装置からSIMに送信することで通信量を削減することができる。
【0009】
しかしながら、あるコマンドの処理を連続してSIMに実行させる場合、上位装置側では、コマンドを実行させるごとにパターン番号をSIMに送信する必要があるし、また、SIM側では、受信したパターン番号を解釈しなければならない。
【0010】
そこで、本発明は、あるコマンドの処理を連続してSIMに実行させる場合、上位装置とSIM間で繰り返し伝送されるパターン(例えば、コマンドコード)を省略することができ、更に、このパターンを識別するパターン番号でさえも省略することのできるICカード、およびICカードプログラムを提供することを目的とする。
【課題を解決するための手段】
【0011】
上述した課題を解決する第1の発明は、上位装置に組み込まれ利用されるICカードであって、前記ICカードは、前記ICカードのモードを示すモード情報をメモリに記憶し、前記モード情報によって、少なくとも、コマンドAPDU及びレスポンスAPDUを前記上位装置とやり取りする第1のモード、或いは、前記コマンドAPDUのデータ部であるコマンドデータ及び前記レスポンスAPDUのデータ部であるレスポンスデータのみを前記上位装置とやり取りする第2のモードのいずれかのモードが示され、前記ICカードは、前記モード情報を操作するモード変更コマンドと、前記モード情報を参照し、前記モード情報に基づいて前記ICカードの振舞いを変更する制御手段とを備え、前記モード変更コマンドは特定の処理モジュールに関連付けられ、更に、前記モード変更コマンドは、前記第1のモードで前記コマンドAPDUを処理するときには、前記モード情報を操作して前記ICカードのモードを前記第2のモードに遷移させ、前記第2のモードに遷移してからは、処理した前記コマンドデータのデータ量をカウントし、カウントしたデータ量が前記モード変更コマンドの前記コマンドAPDUのデータ部で示される前記コマンドデータの総量を超えたときに、前記モード情報を操作して前記ICカードのモードを前記第1のモードに復帰させ、前記制御手段は、前記モード情報が前記第2のモードを示すときは、前記上位装置から送信された前記コマンドデータの処理を前記モード変更コマンドに委任し、前記モード変更コマンドから得られる前記レスポンスデータを前記上位装置に送信することを特徴とする。
【0012】
更に、第2の発明は、第1の発明に記載のICカードであって、前記モード変更コマンドに関連付けられた処理モジュールは、前記コマンドデータを暗号化/複合するモジュールであることを特徴とする。
【0013】
更に、第3の発明は、少なくとも、コマンドAPDU及びレスポンスAPDUを前記上位装置とやり取りする第1のモード、或いは、前記コマンドAPDUのデータ部であるコマンドデータ及び前記レスポンスAPDUのデータ部であるレスポンスデータのみを前記上位装置とやり取りする第2のモードのいずれかのモードが示されるモード情報を記憶したICカードに実装されるICカードプログラムであって、特定の処理に関連付けられ、前記第1のモードで前記コマンドAPDUを処理するときには、前記モード情報を操作して前記ICカードのモードを前記第2のモードに遷移させ、前記第2のモードに遷移してからは、処理した前記コマンドデータのデータ量をカウントし、カウントしたデータ量が前記コマンドAPDUのデータ部で示される前記コマンドデータの総量を超えたときに、前記モード情報を操作して前記ICカードのモードを前記第1のモードに復帰させるモード変更コマンド機能と、前記モード情報が前記第2のモードを示すときは、前記上位装置から送信された前記コマンドデータの処理を前記モード変更コマンド機能に委任し、前記モード変更コマンドから得られる前記レスポンスデータを前記上位装置に送信する制御機能として、前記ICカードのCPUを動作させるためのICカードプログラムである。
【0014】
更に、第4の発明は、第3の発明に記載のICカードプログラムにおいて、前記モード変更コマンド機能に関連付けられた処理は、前記コマンドデータを暗号化/複合する処理であることを特徴とするICカードプログラムである。
【発明の効果】
【0015】
上述した発明によれば、上述した第2のモードでは、上位装置とICカード間ではコマンドデータ/レスポンスデータが伝送されため、上位装置とICカード間の通信量を減らす効果が得られるばかりか、ICカードは、上位装置から受信したコマンドAPDUを毎回解釈する必要がなくなるため、ICカードの処理時間を短縮する効果が得られる。
【0016】
更に、第2のモードで処理したコマンドデータのデータ量が総量に達した後は、コマンドAPDUのデータ部であるコマンドデータ及びレスポンスAPDUのデータ部であるレスポンスデータのみを前記上位装置とやり取りする第2のモードから、コマンドAPDU及びレスポンスAPDUを前記上位装置とやり取りする第1のモードに自動復帰するため、第2のモードに遷移した後でも、上位装置はISO/IEC7816などの規格に準拠した手順に従い、ICカードを利用したトランザクションを実行することができる。
【0017】
更に、モード変更コマンドが有する処理モジュールを、平文を暗号化/複合するモジュールとすることで、上位装置が大量の平文を暗号化したときに処理時間を短縮できる。なお、第1のモードに自動復帰することで、暗号鍵の変更やICカードの認証など、モード変更コマンド以外の処理を行うことができる。
【0018】
なお、本発明において、ICカードとは、ICチップが実装されたカード媒体を意味し、上位装置と通信するためのインターフェースは接触/非接触を問うものではない。更に、本発明に係るICカードには、ICチップの周辺を短冊状に切り取ったSIM或いはUIMも含まれる。
【発明を実施するための最良の形態】
【0019】
ここから、図を参照しながら、本発明に係るSIMについて詳細に説明する。本発明に係るSIM1は、上位装置2と通信するモードとして2つのモードを備え、一つのモードは、APDU(Application Protocol Data Unit)を交換するISOモードであり、もう一つのモードは、APDUのデータ部のみを交換するデータモードである。
【0020】
図1は、SIM1の振舞いを説明する図で、図1(a)は、APDUを交換するISOモードを説明する図で、図1(b)は、APDUのデータ部のみを交換するデータモードを説明する図である。
【0021】
図1(a)に示したように、ISOモードは、ISO/IEC7816の手順に従い、上位装置2とSIM1間でAPDUを交換するモードで、上位装置2からSIM1に送信されるAPDUはコマンドAPDUと呼ばれ、このコマンドAPDUには、実行するコマンドを示すコマンドヘッダと、コマンドで利用されるコマンドデータが含まれる。
【0022】
また、SIM1から上位装置2に送信されるAPDUはレスポンスAPDUと呼ばれ、このレスポンスAPDUには、コマンドのレスポンスデータと、コマンドの実行結果を示すステータスワード(SW: status word)が含まれる。
【0023】
図1(b)に示したように、SIM1がデータモードであるとき、上位装置2とSIM1間ではAPDUのデータ部のみが交換され、上位装置2からSIM1にはコマンドデータのみが送信され、SIM1から上位装置2にはレスポンスデータのみが送信される。
【0024】
活性化されたときのSIM1のモードはISOモードで、SIM1は、ISOモードからデータモードへ遷移するトリガーとなるモード変更コマンドを備える。
【0025】
SIM1はモード変更コマンドを受信すると、SIM1のモードはISOモードからデータモードへと遷移し、データモードでは、SIM1は、上位装置2から送信されたコマンドデータをモード変更コマンドによって処理し、モード変更コマンドの処理結果であるレスポンスデータのみを上位装置2に送信する。
【0026】
モード変更コマンドのデータ部には、データモードに遷移しているときに処理すべきコマンドデータの総量でが含まれ、データモードで処理したコマンドデータのデータ量が総量に達したときには、SIM1のモードは、データモードからISOモードに自動復帰する。
【0027】
SIM1が上述したデータモードを有することで、上位装置2とSIM1間の通信量を減らす効果が得られるばかりか、SIM1は、上位装置2から受信したコマンドAPDUを毎回解釈する必要がなくなるため、SIM1の処理時間を短縮する効果が得られる。
【0028】
更に、モード変更コマンドのデータ部に、データモードに遷移しているときに処理すべきコマンドデータの総量を含ませることで、非常に大きいデータ量のコマンドデータを処理することができる。
【0029】
更に、コマンドデータを処理したコマンドデータのデータ量が総量に達した後は、SIM1のモードはデータモードからISOモードに自動復帰するため、データモードに遷移した後でも、上位装置2はISO/IEC7816に準拠した手順に従い、ICカードを利用したトランザクションを実行することができる。
【0030】
ここから、本発明に係るSIM1についてより詳しく説明する。図2は、本発明に係るSIM1の外観図である。SIM1は、ICチップ10がモールドされたICモジュール1a周辺を約11.5mm×25mm状に切り取った形状をしており、SIM1の詳細な形状はGSM(Global System for Mobile communications)規格等で規格化されている。
【0031】
図3は、SIM1のICモジュール1aにモールドされるICチップ10のハードウェア構造図である。ICチップ10は、Vcc、Reset、Clock、I/O及びGnd用の外部端子を有し、このICチップ10には、中央演算装置11(Central Processing Unit、以下CPUと記す)に、バス17を介して、読み出し専用メモリ15(Read Only Memory、以下ROMと記す)、書換え可能なメモリとしてEEPROM16(Electrically Erasable Programmable Read-Only Memoryの略)、揮発性メモリとしてランダムアクセスメモリ14(Random Access Memory、以下RAMと記す)、暗号演算専用の回路である暗号演算回路12、及び、上位装置2とデータを通信するための通信I/F回路13などが接続されている。
【0032】
図4は、SIM1のソフトウェア構成図である。図4に示したように、SIM1は、上位装置2から送信された平文を暗号化する暗号鍵104をEEPROM16に記憶し、SIM1が遷移しているモードを示すモード情報105をRAM14などの揮発性メモリに記憶している。
【0033】
更に、SIM1は、図3で示したICチップ10のハードウェアを利用し、CPU11を動作させるプログラムとして、I/F回路13を制御し、上位装置2とデータ通信するための伝送制御モジュール103と、上位装置2から送信されたコマンドAPDUを解釈し、コマンドAPDUに対応するコマンドに処理を委任する手段となるディスパッチャ100(dispatcher)と、ディスパッチャ100から処理を委任される複数のコマンドからなるコマンド群106を備え、このコマンド群106には、上位装置2から送信された平文を暗号化する暗号化コマンド101と、暗号化コマンド101で利用される暗号鍵104をEEPROM16に書込む暗号鍵設定コマンド102が含まれる。
【0034】
更に、暗号化コマンド101は、暗号演算回路12を作動させ、暗号鍵104を用いて、所定のアルゴリズムで引渡されたデータを暗号化/複合する暗号モジュール107を有している。
【0035】
SIM1に備えられた伝送制御モジュール103とは、通信I/F回路13を制御し、上位装置2と確実にデータを送受信するためのプログラムで、例えば、ISO/IEC7816で定義されている伝送プロトコル(T0,T1)や、USB規格の伝送プロトコルに従い、誤り訂正や、再送制御などを行なうプログラムである。
【0036】
ディスパッチャ100とは、本発明に係る制御手段を実現するプログラムであって、モード情報105を参照し、SIM1の振舞いを変更する。モード情報105がISOモードを示すとき、ディスパッチャ100は上位装置2から送信されたコマンドAPDUを解釈し、コマンド群106の中からコマンドAPDUを処理させるコマンドを選択し、選択したコマンドにコマンドAPDUの処理を委任する。
【0037】
また、モード情報105がデータモードを示すとき、ディスパッチャ100は上位装置2から送信されたコマンドデータを解釈することなく、暗号化コマンド101にコマンドデータの処理を委任する。
【0038】
暗号鍵設定コマンド102とは、ISO/IEC7816規格で定義されているWriteコマンドのように、上位装置2から受信したデータ(暗号鍵104)をEEPROM16に書き込むプログラムである。SIM1がこの暗号鍵設定コマンド102を備えることで、平文を暗号化する暗号鍵104を任意に変更することが可能である。
【0039】
暗号化コマンド101とは、ICチップ10の暗号演算回路12を操作し、SIM1に記憶された暗号鍵104を用い、所定の暗号アルゴリズムに従い、上位装置2から伝送される平文を暗号化する処理モジュールを備えたコマンドで、SIM1がデータモードへ遷移するトリガーとなるモード変更コマンドである。
【0040】
図5は、SIM1のモード遷移を説明する図である。上述しているように、SIM1は、ISOモードとデータモードの2つのモードを有し、SIM1が遷移しているモードは、モード情報105によって示される。
【0041】
ISOモードでは、SIM1と上位装置2間でAPDUが交換され、ISOモードで、暗号化コマンド101のコマンドAPDUを受信したとき、SIM1のモードは、ISOモードからデータモードに遷移する。そして、データモードでは、APDUのデータ部のみ、すなわち、コマンドデータとレスポンスデータのみが交換される。
【0042】
ISOモードからデータモードに遷移した後は、暗号化コマンド101のコマンドAPDUのデータフィールドに含まれる処理データ量の平文の暗号処理がすべて終了したときに、SIM1のモードは、データモードからISOモードへと自動復帰する。
【0043】
図6は、ISOモードにおけるSIM1の動作を説明する図である。ISOモードでは、コマンド群106に含まれるコマンドの実行が可能で、このISOモードでは、プロトコルバイトとチェックコードが付加されたコマンドAPDUが、上位装置2からSIM1に送信される。
【0044】
SIM1の伝送制御モジュール103は、コマンドAPDUを受信すると、コマンドAPDUに付加されたプロトコルバイトとチェックコードを確認し、データを正常に受信したと判断した場合、ディスパッチャ100がコマンドAPDUのコマンドヘッダの内容を解釈し、コマンド群106に含まれ、受信したコマンドAPDUに対応するコマンドに処理を委任する。委任されたコマンドはコマンドAPDUで示される処理を実行した後、レスポンスAPDUを生成し、伝送制御モジュール103は生成したレスポンスAPDUを上位装置2に返信する。
【0045】
図7は、データモードにおけるSIM1の動作を説明する図である。SIM1が暗号化コマンド102のコマンドAPDUを受信することで、SIM1のモードはISOモードからデータモードへ遷移し、上位装置2にACK(acknowledgment)を返信する。
【0046】
データモードでは、ISOモードとは異なり、上位装置2からSIM1には平文のみが送信される。上位装置2が平文をSIM1に送信するとき、平文には、コマンドAPDUと同様にプロトコルバイトとチェックコードが付加される。
【0047】
SIM1が平文を受信すると、伝送制御モジュール103は、平文に付加されたプロトコルバイトとチェックコードを確認し、正常にデータを受信したと判断した場合、受信した平文の暗号化を暗号化コマンド101に委任し、暗号化コマンド101は暗号モジュール107に平文を受渡し、平文を暗号化した暗号文を得る。
【0048】
暗号化コマンド101が得た暗号文は、伝送制御モジュール103に受け渡され、しかるべきプロトコルバイトとチェックコードが付加されてSIM1から上位装置1に送信される。
【0049】
また、暗号化コマンド101は、データモードにおいて暗号化した平文のデータ量をカウントし、カウントしたデータ量が、暗号化コマンド101のコマンドAPDUのデータフィールドで示される処理データ量に達したとき、モード情報105を操作し、SIM1のモードをデータモードからISOモードへと遷移させると共に、暗号化コマンドのレスポンスAPDUを生成し、生成したレスポンスAPDUにプロトコルバイトとチェックコードを付加して上位装置2へ送信する。
【0050】
従来のICカードにおいては、データ容量の大きい平文を暗号化する際、一つのコマンドAPDUに含めることができるブロックサイズに平文を分割し、分割した平文ごとにコマンドAPDUを生成しなければならないが、本発明に係るSIM1を用いれば、分割した平文ごとにコマンドAPDUを生成する必要はなくなるため、上位装置2とSIM1間の通信量を減らす効果が得られるばかりか、SIM1は、上位装置2から受信したコマンドAPDUを毎回解釈する必要がなくなるため、SIM1の処理時間を短縮する効果が得られる。
【0051】
更に、処理データ量の平文を処理した後は、SIM1のモードはデータモードからISOモードに自動復帰するため、データモードに遷移した後であっても、上位装置2はISO/IEC7816などに準拠した手順に従い、ICカードを利用したトランザクションを実行することができる。
【0052】
図8は、暗号化コマンド101のコマンドAPDUの一例を示した図である。図8で示しているように、本実施の形態において、ISOモード時に上位装置からSIM1に送信されるコマンドAPDUの構造は、ISO/IEC7816規格のCase3のコマンド構造で、CLA、INS、P1及びP2とから成るコマンドヘッダと、Lc及びデータフィールドとから成るボディとから構成される。
【0053】
暗号化コマンド101のコマンドAPDUのヘッダーに含まれるCLAとINSは、コマンドAPDUを識別するためのデータで、本実施の形態において、暗号化コマンド101のCLAは「D0h」で、INSは「04h」である。
【0054】
暗号化コマンド101のコマンドAPDUのヘッダーに含まれるP1およびP2は、暗号化コマンド101が実行されるときのパラメータで、本実施の形態においては、P1及びP2は用いられず、P1及びP2の値はそれぞれ「00h」である。
【0055】
暗号化コマンド101のボディのLcは、データフィールドに含まれるデータの長さを示し、データフィールドには、暗号化する平文の総量が記述される。なお、上述しているように、データモードでは、平文のみが送信され、コマンドヘッダのCLA、INS、P1およびP2は送信されない。
【0056】
SIM1がデータモードにいるときは、上位装置2からSIM1に平文のデータオブジェクトが送信され、このデータオブジェクトには平文のデータ長と平文とが含まれ、暗号化コマンド101は、データ長で示される長さの平文を暗号化する。
【0057】
図9は、暗号化コマンド101のレスポンスAPDUの一例を示した図で、暗号化した平文の総データ量が暗号化コマンド101のデータフィールドで示される総量に達したときはレスポンスAPDUを生成する。
【0058】
図9で示したように、暗号化コマンド101のレスポンスAPDUの構造は、ISO/IEC7816のレスポンスAPDUの構造に準拠し、ボディと、トレイラー(Trailer)である2バイトのSWとから構成される。
【0059】
暗号化コマンド101のレスポンスAPDUのボディには、最後に受信する平文を暗号化した暗号文が含まれる。また、レスポンスAPDUの2バイトのSWでは、暗号化コマンド101の実行結果が示される。
【0060】
ここから、暗号化コマンド101を実装したSIM1の動作フローについて説明する。図10は、SIM1の動作を示したフロー図である。図10の最初のステップS1は、SIM1が活性化されるステップである。このステップでは、SIM1は、ISO/IEC7816の手順に従い活性化され、SIM1の初期処理が実行される。
【0061】
この初期処理によって、SIM1のモード情報105の値がISOモードを示す値に設定されることで、SIM1のモードはISOモードになる。
【0062】
次のステップS2は、SIM1が非活性化されるまで繰り返し実行されるループ処理である。
【0063】
次のステップS3は、SIM1が上位装置2からコマンドAPDUを受信するステップである。SIM1の伝送制御モジュール103は、上位装置2から、プロトコルバイトとチェックコードが付加されたコマンドAPDUを受信すると、コマンドAPDUに付加されたプロトコルバイトとチェックコードを確認し、データを正常に受信したと判断した場合、コマンドAPDUのみをディスパッチャ100に受け渡す。
【0064】
次のステップS4は、SIM1が上位装置から受信したコマンドAPDUを処理するコマンドを特定するステップである。このステップでは、SIM1のモード情報105の値は、ISOモードを示す値に設定されているため、SIM1のディスパッチャ100は、コマンドAPDUのCLA,INSを解析することで、SIM1が有するコマンド群106の中から、SIM1は実行するコマンドを特定し、P1、P2およびデータフィールドのデータを引渡すなどして、コマンドAPDUの処理を特定したコマンドに委任する。
【0065】
なお、このステップで、特定したコマンドが暗号化コマンド101の場合はステップS10に進み、他のコマンドの場合はステップS5に進む。
【0066】
ステップS5において、暗号化コマンド101以外のコマンド(例えば、暗号鍵設定コマンド102)を処理され、レスポンスAPDUが生成される。そして、ステップS6では、伝送制御モジュール103は、生成したレスポンスAPDUにプロトコルバイトとチェックコードを付加し上位装置2に送信する。
【0067】
図11は、図10のステップS10で実行され、暗号化コマンド101を処理する手順を示したフロー図である。暗号化コマンド101を処理する手順の最初のステップS11は、SIM1のモードを、ISOモードからデータモードへ遷移させるステップである。
【0068】
このステップS11では、ディスパッチャ100は、図10のステップS3で受信したコマンドAPDUが、暗号化コマンド101のコマンドAPDUであると判断した場合、暗号化コマンド101を呼び出す。暗号化コマンド101が読み出されると、暗号化コマンド101は、ISOモードを示す値からデータモードを示す値に、モード情報105の値を変更することで、SIM1のモードを、ISOモードからデータモードへ遷移させる。
【0069】
次のステップS12は、暗号化した平文のデータ量を示すカウンタを初期化するステップである。このステップでは、SIM1の暗号化コマンド101は、図10のステップS3で受信した暗号化コマンド101のコマンドAPDUに含まれる総量を、CPU11のレジスタまたはRAM14にコピーしておく。
【0070】
次のステップS13は、暗号化コマンド101のコマンドAPDUを正常に受信したことを示すACKを返信するステップである。なお、このACKにはプロトコルバイトやチェックコードは伝送制御モジュール103によって付加される。なお、ACKとレスポンスAPDUに含まれるSWを区別できるように、ACKの値は、SWで使用される以外の値であることが望ましい。
【0071】
次のステップS14は、上位装置2から平文を受信するステップである。このステップで受信する平文には、プロトコルバイトとチェックコードが付加される。SIM1が平文を受信すると、伝送制御モジュール103は、コマンドAPDUに付加されたプロトコルバイトとチェックコードを確認する。
【0072】
次のステップS15は、上位装置2から送信された平文を暗号化した暗号文を生成するステップである。このステップでは、暗号化コマンド101は、暗号演算回路12を作動させ、暗号鍵104を用いて所定の暗号アルゴリズムに従い、ディスパッチャ100から引渡された平文を暗号化する。
【0073】
次のステップS16は、暗号化した平文のデータ量を示すカウンタを更新するステップである。このステップでは、暗号化コマンド101は、平文のデータオブジェクトに含まれるデータ長をカウンタに加算することで、カウンタを更新する。
【0074】
次のステップS17は、ステップS3で受信した暗号化コマンド101のコマンドPADUのデータフィールドに含まれていた総量とカウンタの値を比較し、総量の平文を暗号化したか確認するステップである。
【0075】
ステップS17で、総量の平文を暗号化していない場合はステップS18に進み、暗号化した場合は正常終了処理(ステップS20)に進む。
【0076】
総量の平文を暗号化していない場合に実行されるステップS18では、平文を暗号化した暗号文のみが上位装置2に送信される。このステップでは、暗号化コマンド101は、ステップS15で生成した暗号文を伝送制御モジュール103に引渡し、伝送制御モジュール103は、暗号文に、プロトコルバイトとチェックコードを付加して上位装置2に送信し、送信後にSIM1は上位装置2からデータを受信する状態になる。なお、ステップS18を実行した後は、ステップS14に戻る。
【0077】
図12は、正常終了処理に手順を示したフロー図である。この手順の最初のステップS21は、正常終了を示すSWと、最後に暗号化した平文の暗号文であるレスポンスデータとからなるレスポンスAPDUを生成し、更に、データモードを示す値からISOモードを示す値にモード情報105の値を変更する。
【0078】
ステップS21の後に実行されるステップS22は、ステップS21で生成したレスポンスAPDUを上位装置2に送信するステップである。このステップでは、暗号化コマンド101は、ステップS21で生成したレスポンスAPDUを伝送制御モジュール103に引渡し、伝送制御モジュール103は、プロトコルバイトとチェックコードをレスポンスAPDUに付加し、レスポンスAPDUを上位装置2に送信する。
【図面の簡単な説明】
【0079】
【図1】SIMの振舞いを説明する図。
【図2】SIMの外観図。
【図3】ICチップのハードウェア構造図。
【図4】SIMのソフトウェア構成図。
【図5】SIMのモード遷移を説明する図。
【図6】ISOモードにおけるSIMの動作を説明する図。
【図7】データモードにおけるSIMの動作を説明する図。
【図8】暗号化コマンドのコマンドAPDUの一例を示した図。
【図9】暗号化コマンドのレスポンスAPDUの一例を示した図。
【図10】SIMの動作を示したフロー図。
【図11】暗号化コマンドを処理する手順を示したフロー図。
【図12】正常終了時の手順を示したフロー図。
【符号の説明】
【0080】
1 SIM
100 ディスパッチ
101 暗号鍵設定コマンド
102 暗号化コマンド
103 伝送制御モジュール
104 暗号鍵
105 モード情報
2 上位装置
【特許請求の範囲】
【請求項1】
上位装置に組み込まれ利用されるICカードであって、前記ICカードは、前記ICカードのモードを示すモード情報をメモリに記憶し、前記モード情報によって、少なくとも、コマンドAPDU及びレスポンスAPDUを前記上位装置とやり取りする第1のモード、或いは、前記コマンドAPDUのデータ部であるコマンドデータ及び前記レスポンスAPDUのデータ部であるレスポンスデータのみを前記上位装置とやり取りする第2のモードのいずれかのモードが示され、前記ICカードは、前記モード情報を操作するモード変更コマンドと、前記モード情報を参照し、前記モード情報に基づいて前記ICカードの振舞いを変更する制御手段とを備え、前記モード変更コマンドは特定の処理モジュールに関連付けられ、更に、前記モード変更コマンドは、前記第1のモードで前記コマンドAPDUを処理するときには、前記モード情報を操作して前記ICカードのモードを前記第2のモードに遷移させ、前記第2のモードに遷移してからは、処理した前記コマンドデータのデータ量をカウントし、カウントしたデータ量が前記モード変更コマンドの前記コマンドAPDUのデータ部で示される前記コマンドデータの総量を超えたときに、前記モード情報を操作して前記ICカードのモードを前記第1のモードに復帰させ、前記制御手段は、前記モード情報が前記第2のモードを示すときは、前記上位装置から送信された前記コマンドデータの処理を前記モード変更コマンドに委任し、前記モード変更コマンドから得られる前記レスポンスデータを前記上位装置に送信することを特徴とするICカード。
【請求項2】
請求項1に記載のICカードであって、前記モード変更コマンドに関連付けられた処理モジュールは、前記コマンドデータを暗号化/複合するモジュールであることを特徴とするICカード。
【請求項3】
少なくとも、コマンドAPDU及びレスポンスAPDUを前記上位装置とやり取りする第1のモード、或いは、前記コマンドAPDUのデータ部であるコマンドデータ及び前記レスポンスAPDUのデータ部であるレスポンスデータのみを前記上位装置とやり取りする第2のモードのいずれかのモードが示されるモード情報を記憶したICカードに実装されるICカードプログラムであって、特定の処理に関連付けられ、前記第1のモードで前記コマンドAPDUを処理するときには、前記モード情報を操作して前記ICカードのモードを前記第2のモードに遷移させ、前記第2のモードに遷移してからは、処理した前記コマンドデータのデータ量をカウントし、カウントしたデータ量が前記コマンドAPDUのデータ部で示される前記コマンドデータの総量を超えたときに、前記モード情報を操作して前記ICカードのモードを前記第1のモードに復帰させるモード変更コマンド機能と、前記モード情報が前記第2のモードを示すときは、前記上位装置から送信された前記コマンドデータの処理を前記モード変更コマンド機能に委任し、前記モード変更コマンドから得られる前記レスポンスデータを前記上位装置に送信する制御機能として、前記ICカードのCPUを動作させるためのICカードプログラム。
【請求項4】
請求項3に記載のICカードプログラムにおいて、前記モード変更コマンド機能に関連付けられた処理は、前記コマンドデータを暗号化/複合する処理であることを特徴とするICカードプログラム。
【請求項1】
上位装置に組み込まれ利用されるICカードであって、前記ICカードは、前記ICカードのモードを示すモード情報をメモリに記憶し、前記モード情報によって、少なくとも、コマンドAPDU及びレスポンスAPDUを前記上位装置とやり取りする第1のモード、或いは、前記コマンドAPDUのデータ部であるコマンドデータ及び前記レスポンスAPDUのデータ部であるレスポンスデータのみを前記上位装置とやり取りする第2のモードのいずれかのモードが示され、前記ICカードは、前記モード情報を操作するモード変更コマンドと、前記モード情報を参照し、前記モード情報に基づいて前記ICカードの振舞いを変更する制御手段とを備え、前記モード変更コマンドは特定の処理モジュールに関連付けられ、更に、前記モード変更コマンドは、前記第1のモードで前記コマンドAPDUを処理するときには、前記モード情報を操作して前記ICカードのモードを前記第2のモードに遷移させ、前記第2のモードに遷移してからは、処理した前記コマンドデータのデータ量をカウントし、カウントしたデータ量が前記モード変更コマンドの前記コマンドAPDUのデータ部で示される前記コマンドデータの総量を超えたときに、前記モード情報を操作して前記ICカードのモードを前記第1のモードに復帰させ、前記制御手段は、前記モード情報が前記第2のモードを示すときは、前記上位装置から送信された前記コマンドデータの処理を前記モード変更コマンドに委任し、前記モード変更コマンドから得られる前記レスポンスデータを前記上位装置に送信することを特徴とするICカード。
【請求項2】
請求項1に記載のICカードであって、前記モード変更コマンドに関連付けられた処理モジュールは、前記コマンドデータを暗号化/複合するモジュールであることを特徴とするICカード。
【請求項3】
少なくとも、コマンドAPDU及びレスポンスAPDUを前記上位装置とやり取りする第1のモード、或いは、前記コマンドAPDUのデータ部であるコマンドデータ及び前記レスポンスAPDUのデータ部であるレスポンスデータのみを前記上位装置とやり取りする第2のモードのいずれかのモードが示されるモード情報を記憶したICカードに実装されるICカードプログラムであって、特定の処理に関連付けられ、前記第1のモードで前記コマンドAPDUを処理するときには、前記モード情報を操作して前記ICカードのモードを前記第2のモードに遷移させ、前記第2のモードに遷移してからは、処理した前記コマンドデータのデータ量をカウントし、カウントしたデータ量が前記コマンドAPDUのデータ部で示される前記コマンドデータの総量を超えたときに、前記モード情報を操作して前記ICカードのモードを前記第1のモードに復帰させるモード変更コマンド機能と、前記モード情報が前記第2のモードを示すときは、前記上位装置から送信された前記コマンドデータの処理を前記モード変更コマンド機能に委任し、前記モード変更コマンドから得られる前記レスポンスデータを前記上位装置に送信する制御機能として、前記ICカードのCPUを動作させるためのICカードプログラム。
【請求項4】
請求項3に記載のICカードプログラムにおいて、前記モード変更コマンド機能に関連付けられた処理は、前記コマンドデータを暗号化/複合する処理であることを特徴とするICカードプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2008−33669(P2008−33669A)
【公開日】平成20年2月14日(2008.2.14)
【国際特許分類】
【出願番号】特願2006−206814(P2006−206814)
【出願日】平成18年7月28日(2006.7.28)
【出願人】(000002897)大日本印刷株式会社 (14,506)
【Fターム(参考)】
【公開日】平成20年2月14日(2008.2.14)
【国際特許分類】
【出願日】平成18年7月28日(2006.7.28)
【出願人】(000002897)大日本印刷株式会社 (14,506)
【Fターム(参考)】
[ Back to top ]