モード変更機能を備えたICカード、および、ICカードプログラム
【課題】上位装置とSIM間で繰り返し伝送されるパターンを省略することができるICカードを提供する。
【解決手段】本発明に係るSIM1は、上位装置2と通信するモードとして、APDUを交換するISOモードと、APDUのデータ部のみを交換するデータモードを備え、ISOモードからデータモードへ遷移するトリガーとなるモード変更コマンドを備える。データモードでは、上位装置2とSIM1間ではAPDUのデータ部が交換され、上位装置2からSIM1には平文のみが送信され、SIM1から上位装置2には暗号文のみが送信される。SIM1がデータモードを有することで、上位装置2とSIM1間の通信量を減らす効果が得られるばかりか、SIM1は、上位装置2から受信したコマンドAPDUを毎回解釈する必要がなくなるため、SIM1の処理時間を短縮する効果が得られる。
【解決手段】本発明に係るSIM1は、上位装置2と通信するモードとして、APDUを交換するISOモードと、APDUのデータ部のみを交換するデータモードを備え、ISOモードからデータモードへ遷移するトリガーとなるモード変更コマンドを備える。データモードでは、上位装置2とSIM1間ではAPDUのデータ部が交換され、上位装置2からSIM1には平文のみが送信され、SIM1から上位装置2には暗号文のみが送信される。SIM1がデータモードを有することで、上位装置2とSIM1間の通信量を減らす効果が得られるばかりか、SIM1は、上位装置2から受信したコマンドAPDUを毎回解釈する必要がなくなるため、SIM1の処理時間を短縮する効果が得られる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ICチップが実装されたカード媒体である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カードの振舞いを変更する制御手段とを備え、前記モード変更コマンドは前記コマンドデータを処理する処理モジュールを有し、前記制御手段は、前記モード情報が前記第2のモードを示すときは、前記上位装置から送信された前記コマンドデータの処理を前記モード変更コマンドに委任し、前記モード変更コマンドから得られる前記レスポンスデータを前記上位装置に送信することを特徴とする。
【0012】
更に、第2の発明は、第1の発明に記載のICカードにおいて、前記上位装置から送信される前記コマンドデータは前記ICカードで暗号化される平文で、前記モード変更コマンドの前記処理モジュールは前記平文を暗号化するモジュールであって、前記制御手段は、前記モード情報が前記第2のモードを示すとき、前記上位装置から送信された前記コマンドデータすべての暗号化を、前記処理モジュールに委任し、前記レスポンスデータとして、前記コマンドデータすべてを暗号化した暗号文を前記上位装置に送信することを特徴とする。
【0013】
更に、第3の発明は、第2の発明に記載のICカードにおいて、前記モード変更コマンドは、前記モード情報が前記第2のモードを示すとき、前記コマンドデータを受信した回数をカウントし、暗号化する前記コマンドデータを受信した回数が、前記モード変更コマンドの前記コマンドAPDUで示された指定回数になったときは、前記モード情報を前記第1のモードを示すように変更することを特徴とする。
【0014】
更に、第4の発明は、第2の発明または第3の発明に記載のICカードにおいて、前記モード変更コマンドの前記コマンドAPDUで、前記コマンドデータの前記指定回数が無制限であることが示された場合、前記モード変更コマンドは、前記コマンドデータの先頭から定められたバイト数を前記平文のデータ長と解釈し、前記コマンドデータに含まれ、前記データ長で示される長さのデータを暗号化することを特徴とする。
【0015】
更に、第5の発明は、第3の発明に記載のICカードであって、前記モード変更コマンドは、暗号化する前記データ部を受信した回数が前記指定回数になったとき、前記モード変更コマンドのレスポンスとなる前記APDUを生成し、前記制御手段は、前記モード変更コマンドのレスポンスとなる前記APDUを前記上位装置に送信することを特徴とする。
【0016】
更に、第6の発明は、モードを示すモード情報をメモリに記憶し、前記モード情報によって、少なくとも、コマンドAPDU及びレスポンスAPDUを前記上位装置とやり取りする第1のモード、或いは、コマンドAPDUのデータ部であるコマンドデータ及びレスポンスAPDUのデータ部であるレスポンスデータのみを前記上位装置とやり取りする第2のモードが示され、前記ICカードは、前記コマンドデータを処理する処理モジュールを有し、前記モード情報を操作するモード変更コマンドと、前記モード情報を参照し、前記モード情報が前記第2のモードを示すときは、前記上位装置から送信された前記コマンドデータの処理を前記モード変更コマンドに委任し、前記モード変更コマンドから得られる前記レスポンスデータを前記上位装置に送信する制御手段と、を備えたICカードとして、前記ICカードのCPUを機能させるためのICカードプログラムである。
【0017】
更に、第7の発明は、第6の発明に記載のICカードプログラムにおいて、前記上位装置から送信される前記コマンドデータは前記ICカードで暗号化される平文で、前記平文を暗号化する前記処理モジュールを備えた前記モード変更コマンドと、前記モード情報が前記第2のモードを示すとき、前記上位装置から送信された前記コマンドデータすべての暗号化を、前記処理モジュールに委任し、前記レスポンスデータとして、前記コマンドデータすべてを暗号化した暗号文のみを前記上位装置に送信する前記制御手段と、を備えた前記ICカードとして、前記ICカードのCPUを機能させるためのICカードプログラムである。
【0018】
更に、第8の発明は、第7の発明に記載のICカードプログラムにおいて、前記モード情報が前記第1のモードを示すとき、前記モード情報が前記第2のモードを示すとき、前記コマンドデータを受信した回数をカウントし、暗号化する前記コマンドデータを受信した回数が、前記モード変更コマンドの前記コマンドAPDUで示された指定回数になったときは、前記モード情報を前記第1のモードを示すように変更する前記モード変更コマンドを備えた前記ICカードとして、前記ICカードのCPUを機能させるためのICカードプログラムである。
【0019】
更に、第9の発明は、第6の発明または第7の発明に記載のICカードプログラムにおいて、前記モード変更コマンドの前記コマンドAPDUで、前記コマンドデータの前記指定回数が無制限であることが示された場合、前記コマンドデータの先頭から定められたバイト数を前記平文のデータ長と解釈し、前記コマンドデータに含まれ、前記データ長で示される長さのデータを暗号化する前記モード変更コマンドを備えた前記ICカードとして、前記ICカードのCPUを機能させるためのICカードプログラムである。
【0020】
更に、第10の発明は、第8の発明に記載のICカードプログラムであって、暗号化する前記データ部を受信した回数が前記指定回数になったとき、前記モード変更コマンドのレスポンスとなる前記APDUを生成する前記モード変更コマンドと、前記モード変更コマンドのレスポンスとなる前記APDUを前記上位装置に送信する前記制御手段と、を備えた前記ICカードとして、前記ICカードのCPUを機能させるためのICカードプログラムである。
【発明の効果】
【0021】
上述した発明によれば、上述したデータモードでは、上位装置とICカード間ではコマンドデータのみが伝送されため、上位装置とICカード間の通信量を減らす効果が得られるばかりか、ICカードは、上位装置から受信したコマンドAPDUを毎回解釈する必要がなくなるため、ICカードの処理時間を短縮する効果が得られる。
【0022】
更に、モード変更コマンドを、平文を暗号化するコマンドとすることで、本発明に係るICカードを用いることで、上位装置が大量の平文を暗号化したときに処理時間を短縮できる。なお、データモードが一定回数でISOモードに戻るようにすることで、暗号鍵の変更やICカードの認証など、モード変更コマンド以外の処理を行うことができる。
【0023】
更に、コマンドデータが送信される回数が無制限であるとき、コマンドデータの先頭から定められたバイト数を平文のデータ長と解釈し、コマンドデータに含まれ、データ長で示される長さのデータを暗号化することで、上位装置がICカードに可変長でコマンドデータを送信できるようになる。
【0024】
更に、モード変更コマンドのコマンドAPDUで示される処理が終了したときに、レスポンスAPDUをICカードから上位装置に送信することで、ISO7816規格に準拠したシステムと親和性がとり易くなる。
【0025】
なお、本発明において、ICカードとは、ICチップが実装されたカード媒体を意味し、上位装置と通信するためのインターフェースは接触/非接触を問うものではない。更に、本発明に係るICカードには、ICチップの周辺を短冊状に切り取ったSIM或いはUIMも含まれる。
【発明を実施するための最良の形態】
【0026】
ここから、図を参照しながら、本発明に係るSIMについて詳細に説明する。本発明に係るSIM1は、上位装置2と通信するモードとして2つのモードを備え、一つのモードは、APDU(Application Protocol Data Unit)を交換するISOモードであり、もう一つのモードは、APDUのデータ部のみを交換するデータモードである。
【0027】
図1は、SIM1の振舞いを説明する図で、図1(a)は、APDUを交換するISOモードを説明する図で、図1(b)は、APDUのデータ部のみを交換するデータモードを説明する図である。
【0028】
図1(a)に示したように、ISOモードは、ISO/IEC7816の手順に従い、上位装置2とSIM1間でAPDUを交換するモードで、上位装置2からSIM1に送信されるAPDUはコマンドAPDUと呼ばれ、このコマンドAPDUには、実行するコマンドを示すコマンドヘッダと、コマンドで利用されるコマンドデータが含まれる。
【0029】
また、SIM1から上位装置2に送信されるAPDUはレスポンスAPDUと呼ばれ、このレスポンスAPDUには、コマンドのレスポンスデータと、コマンドの実行結果を示すステータスワード(SW: status word)が含まれる。
【0030】
図1(b)に示したように、SIM1がデータモードであるとき、上位装置2とSIM1間ではAPDUのデータ部のみが交換され、上位装置2からSIM1にはコマンドデータのみが送信され、SIM1から上位装置2にはレスポンスデータのみが送信される。
【0031】
活性化されたときのSIM1のモードはISOモードで、SIM1は、ISOモードからデータモードへ遷移するトリガーとなるモード変更コマンドを備える。
【0032】
SIM1はモード変更コマンドを受信すると、SIM1のモードはISOモードからデータモードへと遷移し、データモードでは、SIM1は、上位装置2から送信されたコマンドデータをモード変更コマンドによって処理し、コマンドデータの処理結果としてレスポンスデータのみを上位装置2に送信する。
【0033】
SIM1が上述したデータモードを有することで、上位装置2とSIM1間の通信量を減らす効果が得られるばかりか、SIM1は、上位装置2から受信したコマンドAPDUを毎回解釈する必要がなくなるため、SIM1の処理時間を短縮する効果が得られる。
【0034】
ここから、本発明に係るSIM1についてより詳しく説明する。図2は、本発明に係るSIM1の外観図である。SIM1は、ICチップ10がモールドされたICモジュール1a周辺を約11.5mm×25mm状に切り取った形状をしており、SIM1の詳細な形状はGSM(Global System for Mobile communications)規格等で規格化されている。
【0035】
図3は、SIM1のICモジュール1aにモールドされるICチップ10のハードウェア構造図である。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、図外の外部端末とデータを通信するための通信I/F回路13などが接続されている。
【0036】
図4は、SIM1のソフトウェア構成図である。図4に示したように、SIM1は、上位装置2から送信された平文を暗号化する暗号鍵104PROM16に記憶し、SIM1が遷移しているモードを示すモード情報105をRAM14などの揮発性メモリに記憶している。
【0037】
更に、SIM1は、図3で示したICチップ10のハードウェアを利用し、CPU11を動作させるプログラムとして、通信I/F回路13を制御し、上位装置2とデータ通信するための伝送制御モジュール103と、上位装置2から送信されたコマンドAPDUを解釈し、コマンドAPDUに対応するコマンドに処理を委任する手段となるディスパッチャ100(dispatcher)と、ディスパッチャ100から処理を委任される複数のコマンドからなるコマンド群106を備え、このコマンド群106には、暗号演算回路12を作動させ、上位装置2から送信された平文を暗号化する暗号化コマンド101と、暗号化コマンド101で利用される暗号鍵104をEEPROM16に書込む暗号鍵設定コマンド102が含まれる。
【0038】
SIM1に備えられた伝送制御モジュール103とは、通信I/F回路13を制御し、上位装置2と確実にデータを送受信するためのプログラムで、例えば、ISO/IEC7816規格で定義されている伝送プロトコル(T0,T1)や、USB規格の伝送プロトコルに従い、誤り訂正や、再送制御などを行なうプログラムである。
【0039】
暗号鍵設定コマンド102とは、ISO/IEC7816規格で定義されているWriteコマンドのように、上位装置2から受信したデータ(暗号鍵104)をEEPROM16に書き込むプログラムである。SIM1がこの暗号鍵設定コマンド102を備えることで、平文を暗号化する暗号鍵104を任意に変更することが可能である。
【0040】
暗号化コマンド101とは、ICチップ10の暗号演算回路12を操作し、SIM1に記憶された暗号鍵104を用い、所定の暗号アルゴリズムに従い、上位装置2から伝送される平文を暗号化する処理モジュールを備えたコマンドで、SIM1がデータモードへ遷移するトリガーとなるモード変更コマンドである。
【0041】
図5は、SIM1のモード遷移を説明する図である。上述しているように、SIM1は、ISOモードとデータモードの2つのモードを有し、SIM1が遷移しているモードは、モード情報105によって示される。
【0042】
ISOモードでは、SIM1と上位装置2間でAPDUが交換され、ISOモードで、暗号化コマンド101のコマンドAPDUを受信したとき、SIM1のモードは、ISOモードからデータモードに遷移する。そして、データモードでは、APDUのデータ部のみ、すなわち、コマンドデータとレスポンスデータのみが交換され、暗号化コマンド101のコマンドAPDUで示される処理がすべて終了したときに、SIM1のモードは、データモードからISOモードへと遷移し、SIM1から上位装置2へ、暗号化コマンド101のレスポンスAPDUが上位装置2へ送信される。
【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を受信することで、SIM1のモードはISOモードからデータモードへ遷移し、データモードでは、ISOモードとは異なり、上位装置2からSIM1には平文のみが送信される。
【0046】
上位装置2が平文をSIM1に送信するとき、平文には、コマンドAPDUと同様にプロトコルバイトとチェックコードが付加される。SIM1が平文を受信すると、伝送制御モジュール103は、平文に付加されたプロトコルバイトとチェックコードを確認し、正常にデータを受信したと判断した場合、受信した平文の暗号化を暗号化コマンド101に委任し、暗号化コマンド101は平文を暗号化した暗号文を生成する。暗号化コマンド101が生成した暗号文は、伝送制御モジュール103に受け渡され、しかるべきプロトコルバイトとチェックコードが付加されて上位装置2に送信される。
【0047】
そして、上位装置2から送信される最後の平文を受信すると、SIM1のモードは、データモードからISOモードへと遷移し、SIM1は暗号化コマンドのレスポンスAPDUを生成し、生成したレスポンスAPDUにプロトコルバイトとチェックコードを付加して上位装置2へ送信する。
【0048】
従来のICカードにおいては、データ容量の大きい平文を暗号化する際、一つのコマンドAPDUに含めることができるブロックサイズに平文を分割し、分割した平文ごとにコマンドAPDUを生成しなければならないが、本発明に係るSIM1を用いれば、分割した平文ごとにコマンドAPDUを生成する必要はなくなるため、上位装置2とSIM1間の通信量を減らす効果が得られるばかりか、SIM1は、上位装置2から受信したコマンドAPDUを毎回解釈する必要がなくなるため、SIM1の処理時間を短縮する効果が得られる。
【0049】
図8は、暗号化コマンド101のコマンドAPDUの一例を示した図である。図6で示しているように、本実施の形態において、ISOモード時に上位装置からSIM1に送信されるコマンドAPDUの構造は、ISO/IEC7816規格のCase3のコマンド構造で、CLA、INS、P1及びP2とから成るコマンドヘッダと、Lc及びデータフィールドとから成るボディとから構成される。
【0050】
暗号化コマンド101のコマンドAPDUのヘッダーに含まれるCLAとINSは、コマンドAPDUを識別するためのデータで、本実施の形態において、暗号化コマンド101のCLAは「D0h」で、INSは「04h」である。
【0051】
暗号化コマンド101のコマンドAPDUのヘッダーに含まれるP1およびP2は、暗号化コマンド101が実行されるときのパラメータで、本実施の形態においては、P1は、暗号化コマンド101のコマンドAPDUも含め、平文が送信される回数を示し、P2は、コマンドAPDUのデータフィールドに含まれる平文とデータモードで送信される平文の長さを示している。
【0052】
例えば、P1=「80h」、P2=「C0h」(hは16進表記)であるときは、P2によって、暗号コマンド102が暗号化する平文の長さは192バイトであることが示され、P1によって、暗号コマンド102が平文を暗号化する回数は128回であることが示される。
【0053】
なお、P1で示され、上位装置からSIM1に平文が送信される回数には、コマンドAPDUのデータフィールドに含まれ送信される平文も含まれる。この例では、データモードで平文が送信される回数は127回になる。
【0054】
暗号化コマンド101のボディのLcは、データフィールドに含まれるデータの長さを示し、この値はP2の値と同じである。更に、データフィールドには平文が含まれる。なお、上述しているように、データモードでは、平文のみが送信され、コマンドヘッダのCLA、INS、P1およびP2、ボディのLcは送信されない。
【0055】
また、本実施の形態において、P2の「FFh」は、平文が送信される回数が無制限であることを示すように設計されている。P2の値が「FFh」であるとき、SIM1はデータモードに遷移した後、再度活性化されるまで、ISOモードに遷移しない。
【0056】
また、P2では、平文が送信される回数が無制限であることが示される場合、データモードでは、暗号化コマンド101のボディ、すなわち、送信する平文の長さを示すLcと平文とが送信され、暗号化コマンド101は、Lcで示される長さの平文を暗号化する。
【0057】
図9は、暗号化コマンド101のレスポンスAPDUの一例を示した図で、平文を暗号化した回数がP1で示される回数に達したとき、暗号化コマンド101はレスポンスAPDUを生成する。図9で示したように、暗号化コマンド101のレスポンスAPDUの構造は、ISO/IEC7816規格のレスポンスAPDUの構造に準拠し、ボディと、トレイラー(Trailer)である2バイトのSWとから構成される。
【0058】
暗号化コマンド101のレスポンスAPDUのボディには、最後に受信する平文を暗号化した暗号文が含まれる。また、レスポンスAPDUの2バイトのSWでは、暗号化コマンド101の実行結果(成功、失敗)が示される。
【0059】
ここから、暗号化コマンド101を実装したSIM1の動作フローについて説明する。図10は、SIM1の動作を示したフロー図である。図10の最初のステップS1は、SIM1が活性化されるステップである。このステップでは、SIM1は、ISO/IEC7816の手順に従い活性化され、SIM1の初期処理が実行される。
【0060】
この初期処理によって、SIM1のモード情報105の値がISOモードを示す値に設定されることで、SIM1のモードはISOモードになる。
【0061】
次のステップS2は、SIM1が非活性化されるまで繰り返し実行されるループ処理である。
【0062】
次のステップS3は、SIM1が上位装置2からコマンドAPDUを受信するステップである。SIM1の伝送制御モジュール103は、上位装置2から、プロトコルバイトとチェックコードが付加されたコマンドAPDUを受信すると、コマンドAPDUに付加されたプロトコルバイトとチェックコードを確認し、データを正常に受信したと判断した場合、コマンドAPDUのみをディスパッチャ100に受け渡す。
【0063】
次のステップS4は、SIM1が上位装置から受信したコマンドAPDUを処理するコマンドを特定するステップである。このステップでは、SIM1のモード情報105の値は、ISOモードを示す値に設定されているため、SIM1のディスパッチャ100は、コマンドAPDUのCLA,INSを解析することで、SIM1が有するコマンド群106の中から、SIM1は実行するコマンドを特定し、P1、P2およびデータフィールドのデータを引渡すなどして、コマンドAPDUの処理を特定したコマンドに委任する。
【0064】
なお、このステップで、特定したコマンドが暗号化コマンド101の場合はステップS10に進み、他のコマンドの場合はステップS5に進む。
【0065】
ステップS5において、暗号化コマンド101以外のコマンド(例えば、暗号鍵設定コマンド102)を処理され、レスポンスAPDUが生成される。そして、ステップS6では、伝送制御モジュール103は、生成したレスポンスAPDUにプロトコルバイトとチェックコードを付加し上位装置2に送信する。
【0066】
図11は、図10のステップS10で実行され、暗号化コマンド101を処理する手順を示したフロー図である。暗号化コマンド101を処理する手順の最初のステップS11は、SIM1のモードを、ISOモードからデータモードへ遷移させるステップである。
【0067】
このステップS11では、ディスパッチャ100は、図10のステップS3で受信したコマンドAPDUが、暗号化コマンド101のコマンドAPDUであると判断した場合、暗号化コマンド101を呼び出す。暗号化コマンド101が読み出されると、暗号化コマンド101は、ISOモードを示す値からデータモードを示す値に、モード情報105の値を変更することで、SIM1のモードを、ISOモードからデータモードへ遷移させる。
【0068】
次のステップS12は、上位装置から送信される平文を暗号化する回数を示すカウンタを初期化するステップである。このステップでは、SIM1のディスパッチャ100は、図10のステップS3で受信した暗号化コマンド101のコマンドAPDUに含まれるP1の値を、CPU11のレジスタまたはRAM14にコピーすることで、暗号化する回数を示すカウンタを初期化する。
【0069】
次のステップS13は、上位装置2から送信された平文を暗号化した暗号文を生成するステップである。このステップでは、ディスパッチャ100は、上位装置2から受信した平文と、そのデータ長(例えば、P2の値)を暗号化コマンド101に引渡し、暗号化コマンド101は、暗号演算回路12を作動させ、暗号鍵104を用い、所定の暗号アルゴリズムに従い平文を暗号化する。
【0070】
なお、このステップで暗号化する最初の平文は、図10のステップS3で受信したコマンドAPDUのデータフィールドに含まれる平文で、2回目以降に暗号化する平文は、後述するステップS17で受信する平文である。
【0071】
次のステップS14は、平文を暗号化した回数を示カウンタの値を一つデクリメントするステップである。このステップでは、暗号化コマンド101は、CPU11のレジスタまたはRAM14に生成されたカウンタの値を一つだけデクリメントする。
【0072】
次のステップS15は、カウンターの値を参照し、図10のステップS3で受信した暗号化コマンド101のコマンドAPDUのP1で示される回数だけ、平文を暗号化したか確認するステップである。例えば、暗号化コマンド101は、CPUのレジスタまたはRAMに生成されたカウンタの値が「0」であるか確認することで、暗号化コマンド101のコマンドAPDUのP1で示される回数だけ、平文を暗号化したかが確認される。
【0073】
ステップS15で、暗号化コマンド101のコマンドAPDUのP1で示される回数だけ、平文を暗号化していない場合はステップS16に進み、暗号化した場合はステップS18に進む。
【0074】
暗号化コマンド101のコマンドAPDUのP1で示される回数だけ、平文を暗号化していない場合に実行されるステップS16では、平文を暗号化した暗号文のみが上位装置2に送信される。このステップでは、暗号化コマンド101は、ステップS12で生成した暗号文を伝送制御モジュール103に引渡し、伝送制御モジュール103は、暗号文に、プロトコルバイトとチェックコードを付加して上位装置2に送信し、送信後にSIM1は上位装置2からデータを受信する状態になる。
【0075】
ステップS16の後に実行されるステップS17は、上位装置2から平文を受信するステップである。このステップS17で、上位装置2からSIM1に送信される平文には、プロトコルバイトとチェックコードが付加される。SIM1が平文を受信すると、伝送制御モジュール103は、コマンドAPDUに付加されたプロトコルバイトとチェックコードを確認し、データを正常に受信したと判断し、モード情報105の値を確認する。
【0076】
ステップS17では、モード情報105はデータモードを示す値に設定されているため、ディスパッチャ100は、コマンドAPDUを解析することなく、ステップS13に進み、ステップS17で受信した平文の暗号化を暗号化コマンド101に委任する。
【0077】
なお、ステップS15において、暗号化コマンド101のコマンドAPDUのP1で示される回数だけ、平文を暗号化した場合は、ステップS18において、暗号化コマンド101は、暗号化コマンド101の実行結果を示すSWを暗号文に付加することで、暗号化コマンド101のレスポンスAPDUを生成し、更に、データモードを示す値からISOモードを示す値に、モード情報105の値を変更することで、SIM1のモードを、データモードからISOモードへ遷移させる。
【0078】
ステップS18の後に実行されるステップS19は、ステップS18で生成したレスポンスAPDUを上位装置2に送信するステップである。このステップでは、暗号化コマンド101は、ステップS18で生成したレスポンスAPDUを伝送制御モジュール103に引渡し、伝送制御モジュール103は、プロトコルバイトとチェックコードをレスポンスAPDUに付加し、レスポンスAPDUを上位装置2に送信する。
【0079】
ステップS19で、暗号化コマンド105のレスポンスAPDUを送信することで、図10のステップS3で受信した暗号化コマンド101のコマンドAPDUの処理が終了する。
【0080】
本発明に係るICカードであるSIM1を組み込み利用する上位装置の一例として、SIM1を組み込み利用する監視カメラ3を、図12で図示した。図12において、本発明係るSIM1は、監視カメラ3が撮像した動画データの漏洩と動画データの改ざんとを防止するために、動画データを暗号化する暗号モジュールとして利用され、監視カメラ3は、SIM1を用いて、一定期間に撮像した動画データを暗号化し、暗号化した動画データをメモリカード3aに記憶する。
【図面の簡単な説明】
【0081】
【図1】SIMの振舞いを説明する図。
【図2】SIMの外観図。
【図3】ICチップのハードウェア構造図。
【図4】SIMのソフトウェア構成図。
【図5】SIMのモード遷移を説明する図。
【図6】ISOモードにおけるSIMの動作を説明する図。
【図7】データモードにおけるSIMの動作を説明する図。
【図8】暗号化コマンドのコマンドAPDUの一例を示した図。
【図9】暗号化コマンドのレスポンスAPDUの一例を示した図。
【図10】SIMの動作を示したフロー図。
【図11】暗号化コマンドを処理する手順を示したフロー図。
【図12】SIMを組み込み利用する監視カメラを示した図。
【符号の説明】
【0082】
1 SIM
100 ディスパッチ
101 暗号鍵設定コマンド
102 暗号化コマンド
103 伝送制御モジュール
104 暗号鍵
105 モード情報
2 上位装置
【技術分野】
【0001】
本発明は、ICチップが実装されたカード媒体である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カードの振舞いを変更する制御手段とを備え、前記モード変更コマンドは前記コマンドデータを処理する処理モジュールを有し、前記制御手段は、前記モード情報が前記第2のモードを示すときは、前記上位装置から送信された前記コマンドデータの処理を前記モード変更コマンドに委任し、前記モード変更コマンドから得られる前記レスポンスデータを前記上位装置に送信することを特徴とする。
【0012】
更に、第2の発明は、第1の発明に記載のICカードにおいて、前記上位装置から送信される前記コマンドデータは前記ICカードで暗号化される平文で、前記モード変更コマンドの前記処理モジュールは前記平文を暗号化するモジュールであって、前記制御手段は、前記モード情報が前記第2のモードを示すとき、前記上位装置から送信された前記コマンドデータすべての暗号化を、前記処理モジュールに委任し、前記レスポンスデータとして、前記コマンドデータすべてを暗号化した暗号文を前記上位装置に送信することを特徴とする。
【0013】
更に、第3の発明は、第2の発明に記載のICカードにおいて、前記モード変更コマンドは、前記モード情報が前記第2のモードを示すとき、前記コマンドデータを受信した回数をカウントし、暗号化する前記コマンドデータを受信した回数が、前記モード変更コマンドの前記コマンドAPDUで示された指定回数になったときは、前記モード情報を前記第1のモードを示すように変更することを特徴とする。
【0014】
更に、第4の発明は、第2の発明または第3の発明に記載のICカードにおいて、前記モード変更コマンドの前記コマンドAPDUで、前記コマンドデータの前記指定回数が無制限であることが示された場合、前記モード変更コマンドは、前記コマンドデータの先頭から定められたバイト数を前記平文のデータ長と解釈し、前記コマンドデータに含まれ、前記データ長で示される長さのデータを暗号化することを特徴とする。
【0015】
更に、第5の発明は、第3の発明に記載のICカードであって、前記モード変更コマンドは、暗号化する前記データ部を受信した回数が前記指定回数になったとき、前記モード変更コマンドのレスポンスとなる前記APDUを生成し、前記制御手段は、前記モード変更コマンドのレスポンスとなる前記APDUを前記上位装置に送信することを特徴とする。
【0016】
更に、第6の発明は、モードを示すモード情報をメモリに記憶し、前記モード情報によって、少なくとも、コマンドAPDU及びレスポンスAPDUを前記上位装置とやり取りする第1のモード、或いは、コマンドAPDUのデータ部であるコマンドデータ及びレスポンスAPDUのデータ部であるレスポンスデータのみを前記上位装置とやり取りする第2のモードが示され、前記ICカードは、前記コマンドデータを処理する処理モジュールを有し、前記モード情報を操作するモード変更コマンドと、前記モード情報を参照し、前記モード情報が前記第2のモードを示すときは、前記上位装置から送信された前記コマンドデータの処理を前記モード変更コマンドに委任し、前記モード変更コマンドから得られる前記レスポンスデータを前記上位装置に送信する制御手段と、を備えたICカードとして、前記ICカードのCPUを機能させるためのICカードプログラムである。
【0017】
更に、第7の発明は、第6の発明に記載のICカードプログラムにおいて、前記上位装置から送信される前記コマンドデータは前記ICカードで暗号化される平文で、前記平文を暗号化する前記処理モジュールを備えた前記モード変更コマンドと、前記モード情報が前記第2のモードを示すとき、前記上位装置から送信された前記コマンドデータすべての暗号化を、前記処理モジュールに委任し、前記レスポンスデータとして、前記コマンドデータすべてを暗号化した暗号文のみを前記上位装置に送信する前記制御手段と、を備えた前記ICカードとして、前記ICカードのCPUを機能させるためのICカードプログラムである。
【0018】
更に、第8の発明は、第7の発明に記載のICカードプログラムにおいて、前記モード情報が前記第1のモードを示すとき、前記モード情報が前記第2のモードを示すとき、前記コマンドデータを受信した回数をカウントし、暗号化する前記コマンドデータを受信した回数が、前記モード変更コマンドの前記コマンドAPDUで示された指定回数になったときは、前記モード情報を前記第1のモードを示すように変更する前記モード変更コマンドを備えた前記ICカードとして、前記ICカードのCPUを機能させるためのICカードプログラムである。
【0019】
更に、第9の発明は、第6の発明または第7の発明に記載のICカードプログラムにおいて、前記モード変更コマンドの前記コマンドAPDUで、前記コマンドデータの前記指定回数が無制限であることが示された場合、前記コマンドデータの先頭から定められたバイト数を前記平文のデータ長と解釈し、前記コマンドデータに含まれ、前記データ長で示される長さのデータを暗号化する前記モード変更コマンドを備えた前記ICカードとして、前記ICカードのCPUを機能させるためのICカードプログラムである。
【0020】
更に、第10の発明は、第8の発明に記載のICカードプログラムであって、暗号化する前記データ部を受信した回数が前記指定回数になったとき、前記モード変更コマンドのレスポンスとなる前記APDUを生成する前記モード変更コマンドと、前記モード変更コマンドのレスポンスとなる前記APDUを前記上位装置に送信する前記制御手段と、を備えた前記ICカードとして、前記ICカードのCPUを機能させるためのICカードプログラムである。
【発明の効果】
【0021】
上述した発明によれば、上述したデータモードでは、上位装置とICカード間ではコマンドデータのみが伝送されため、上位装置とICカード間の通信量を減らす効果が得られるばかりか、ICカードは、上位装置から受信したコマンドAPDUを毎回解釈する必要がなくなるため、ICカードの処理時間を短縮する効果が得られる。
【0022】
更に、モード変更コマンドを、平文を暗号化するコマンドとすることで、本発明に係るICカードを用いることで、上位装置が大量の平文を暗号化したときに処理時間を短縮できる。なお、データモードが一定回数でISOモードに戻るようにすることで、暗号鍵の変更やICカードの認証など、モード変更コマンド以外の処理を行うことができる。
【0023】
更に、コマンドデータが送信される回数が無制限であるとき、コマンドデータの先頭から定められたバイト数を平文のデータ長と解釈し、コマンドデータに含まれ、データ長で示される長さのデータを暗号化することで、上位装置がICカードに可変長でコマンドデータを送信できるようになる。
【0024】
更に、モード変更コマンドのコマンドAPDUで示される処理が終了したときに、レスポンスAPDUをICカードから上位装置に送信することで、ISO7816規格に準拠したシステムと親和性がとり易くなる。
【0025】
なお、本発明において、ICカードとは、ICチップが実装されたカード媒体を意味し、上位装置と通信するためのインターフェースは接触/非接触を問うものではない。更に、本発明に係るICカードには、ICチップの周辺を短冊状に切り取ったSIM或いはUIMも含まれる。
【発明を実施するための最良の形態】
【0026】
ここから、図を参照しながら、本発明に係るSIMについて詳細に説明する。本発明に係るSIM1は、上位装置2と通信するモードとして2つのモードを備え、一つのモードは、APDU(Application Protocol Data Unit)を交換するISOモードであり、もう一つのモードは、APDUのデータ部のみを交換するデータモードである。
【0027】
図1は、SIM1の振舞いを説明する図で、図1(a)は、APDUを交換するISOモードを説明する図で、図1(b)は、APDUのデータ部のみを交換するデータモードを説明する図である。
【0028】
図1(a)に示したように、ISOモードは、ISO/IEC7816の手順に従い、上位装置2とSIM1間でAPDUを交換するモードで、上位装置2からSIM1に送信されるAPDUはコマンドAPDUと呼ばれ、このコマンドAPDUには、実行するコマンドを示すコマンドヘッダと、コマンドで利用されるコマンドデータが含まれる。
【0029】
また、SIM1から上位装置2に送信されるAPDUはレスポンスAPDUと呼ばれ、このレスポンスAPDUには、コマンドのレスポンスデータと、コマンドの実行結果を示すステータスワード(SW: status word)が含まれる。
【0030】
図1(b)に示したように、SIM1がデータモードであるとき、上位装置2とSIM1間ではAPDUのデータ部のみが交換され、上位装置2からSIM1にはコマンドデータのみが送信され、SIM1から上位装置2にはレスポンスデータのみが送信される。
【0031】
活性化されたときのSIM1のモードはISOモードで、SIM1は、ISOモードからデータモードへ遷移するトリガーとなるモード変更コマンドを備える。
【0032】
SIM1はモード変更コマンドを受信すると、SIM1のモードはISOモードからデータモードへと遷移し、データモードでは、SIM1は、上位装置2から送信されたコマンドデータをモード変更コマンドによって処理し、コマンドデータの処理結果としてレスポンスデータのみを上位装置2に送信する。
【0033】
SIM1が上述したデータモードを有することで、上位装置2とSIM1間の通信量を減らす効果が得られるばかりか、SIM1は、上位装置2から受信したコマンドAPDUを毎回解釈する必要がなくなるため、SIM1の処理時間を短縮する効果が得られる。
【0034】
ここから、本発明に係るSIM1についてより詳しく説明する。図2は、本発明に係るSIM1の外観図である。SIM1は、ICチップ10がモールドされたICモジュール1a周辺を約11.5mm×25mm状に切り取った形状をしており、SIM1の詳細な形状はGSM(Global System for Mobile communications)規格等で規格化されている。
【0035】
図3は、SIM1のICモジュール1aにモールドされるICチップ10のハードウェア構造図である。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、図外の外部端末とデータを通信するための通信I/F回路13などが接続されている。
【0036】
図4は、SIM1のソフトウェア構成図である。図4に示したように、SIM1は、上位装置2から送信された平文を暗号化する暗号鍵104PROM16に記憶し、SIM1が遷移しているモードを示すモード情報105をRAM14などの揮発性メモリに記憶している。
【0037】
更に、SIM1は、図3で示したICチップ10のハードウェアを利用し、CPU11を動作させるプログラムとして、通信I/F回路13を制御し、上位装置2とデータ通信するための伝送制御モジュール103と、上位装置2から送信されたコマンドAPDUを解釈し、コマンドAPDUに対応するコマンドに処理を委任する手段となるディスパッチャ100(dispatcher)と、ディスパッチャ100から処理を委任される複数のコマンドからなるコマンド群106を備え、このコマンド群106には、暗号演算回路12を作動させ、上位装置2から送信された平文を暗号化する暗号化コマンド101と、暗号化コマンド101で利用される暗号鍵104をEEPROM16に書込む暗号鍵設定コマンド102が含まれる。
【0038】
SIM1に備えられた伝送制御モジュール103とは、通信I/F回路13を制御し、上位装置2と確実にデータを送受信するためのプログラムで、例えば、ISO/IEC7816規格で定義されている伝送プロトコル(T0,T1)や、USB規格の伝送プロトコルに従い、誤り訂正や、再送制御などを行なうプログラムである。
【0039】
暗号鍵設定コマンド102とは、ISO/IEC7816規格で定義されているWriteコマンドのように、上位装置2から受信したデータ(暗号鍵104)をEEPROM16に書き込むプログラムである。SIM1がこの暗号鍵設定コマンド102を備えることで、平文を暗号化する暗号鍵104を任意に変更することが可能である。
【0040】
暗号化コマンド101とは、ICチップ10の暗号演算回路12を操作し、SIM1に記憶された暗号鍵104を用い、所定の暗号アルゴリズムに従い、上位装置2から伝送される平文を暗号化する処理モジュールを備えたコマンドで、SIM1がデータモードへ遷移するトリガーとなるモード変更コマンドである。
【0041】
図5は、SIM1のモード遷移を説明する図である。上述しているように、SIM1は、ISOモードとデータモードの2つのモードを有し、SIM1が遷移しているモードは、モード情報105によって示される。
【0042】
ISOモードでは、SIM1と上位装置2間でAPDUが交換され、ISOモードで、暗号化コマンド101のコマンドAPDUを受信したとき、SIM1のモードは、ISOモードからデータモードに遷移する。そして、データモードでは、APDUのデータ部のみ、すなわち、コマンドデータとレスポンスデータのみが交換され、暗号化コマンド101のコマンドAPDUで示される処理がすべて終了したときに、SIM1のモードは、データモードからISOモードへと遷移し、SIM1から上位装置2へ、暗号化コマンド101のレスポンスAPDUが上位装置2へ送信される。
【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を受信することで、SIM1のモードはISOモードからデータモードへ遷移し、データモードでは、ISOモードとは異なり、上位装置2からSIM1には平文のみが送信される。
【0046】
上位装置2が平文をSIM1に送信するとき、平文には、コマンドAPDUと同様にプロトコルバイトとチェックコードが付加される。SIM1が平文を受信すると、伝送制御モジュール103は、平文に付加されたプロトコルバイトとチェックコードを確認し、正常にデータを受信したと判断した場合、受信した平文の暗号化を暗号化コマンド101に委任し、暗号化コマンド101は平文を暗号化した暗号文を生成する。暗号化コマンド101が生成した暗号文は、伝送制御モジュール103に受け渡され、しかるべきプロトコルバイトとチェックコードが付加されて上位装置2に送信される。
【0047】
そして、上位装置2から送信される最後の平文を受信すると、SIM1のモードは、データモードからISOモードへと遷移し、SIM1は暗号化コマンドのレスポンスAPDUを生成し、生成したレスポンスAPDUにプロトコルバイトとチェックコードを付加して上位装置2へ送信する。
【0048】
従来のICカードにおいては、データ容量の大きい平文を暗号化する際、一つのコマンドAPDUに含めることができるブロックサイズに平文を分割し、分割した平文ごとにコマンドAPDUを生成しなければならないが、本発明に係るSIM1を用いれば、分割した平文ごとにコマンドAPDUを生成する必要はなくなるため、上位装置2とSIM1間の通信量を減らす効果が得られるばかりか、SIM1は、上位装置2から受信したコマンドAPDUを毎回解釈する必要がなくなるため、SIM1の処理時間を短縮する効果が得られる。
【0049】
図8は、暗号化コマンド101のコマンドAPDUの一例を示した図である。図6で示しているように、本実施の形態において、ISOモード時に上位装置からSIM1に送信されるコマンドAPDUの構造は、ISO/IEC7816規格のCase3のコマンド構造で、CLA、INS、P1及びP2とから成るコマンドヘッダと、Lc及びデータフィールドとから成るボディとから構成される。
【0050】
暗号化コマンド101のコマンドAPDUのヘッダーに含まれるCLAとINSは、コマンドAPDUを識別するためのデータで、本実施の形態において、暗号化コマンド101のCLAは「D0h」で、INSは「04h」である。
【0051】
暗号化コマンド101のコマンドAPDUのヘッダーに含まれるP1およびP2は、暗号化コマンド101が実行されるときのパラメータで、本実施の形態においては、P1は、暗号化コマンド101のコマンドAPDUも含め、平文が送信される回数を示し、P2は、コマンドAPDUのデータフィールドに含まれる平文とデータモードで送信される平文の長さを示している。
【0052】
例えば、P1=「80h」、P2=「C0h」(hは16進表記)であるときは、P2によって、暗号コマンド102が暗号化する平文の長さは192バイトであることが示され、P1によって、暗号コマンド102が平文を暗号化する回数は128回であることが示される。
【0053】
なお、P1で示され、上位装置からSIM1に平文が送信される回数には、コマンドAPDUのデータフィールドに含まれ送信される平文も含まれる。この例では、データモードで平文が送信される回数は127回になる。
【0054】
暗号化コマンド101のボディのLcは、データフィールドに含まれるデータの長さを示し、この値はP2の値と同じである。更に、データフィールドには平文が含まれる。なお、上述しているように、データモードでは、平文のみが送信され、コマンドヘッダのCLA、INS、P1およびP2、ボディのLcは送信されない。
【0055】
また、本実施の形態において、P2の「FFh」は、平文が送信される回数が無制限であることを示すように設計されている。P2の値が「FFh」であるとき、SIM1はデータモードに遷移した後、再度活性化されるまで、ISOモードに遷移しない。
【0056】
また、P2では、平文が送信される回数が無制限であることが示される場合、データモードでは、暗号化コマンド101のボディ、すなわち、送信する平文の長さを示すLcと平文とが送信され、暗号化コマンド101は、Lcで示される長さの平文を暗号化する。
【0057】
図9は、暗号化コマンド101のレスポンスAPDUの一例を示した図で、平文を暗号化した回数がP1で示される回数に達したとき、暗号化コマンド101はレスポンスAPDUを生成する。図9で示したように、暗号化コマンド101のレスポンスAPDUの構造は、ISO/IEC7816規格のレスポンスAPDUの構造に準拠し、ボディと、トレイラー(Trailer)である2バイトのSWとから構成される。
【0058】
暗号化コマンド101のレスポンスAPDUのボディには、最後に受信する平文を暗号化した暗号文が含まれる。また、レスポンスAPDUの2バイトのSWでは、暗号化コマンド101の実行結果(成功、失敗)が示される。
【0059】
ここから、暗号化コマンド101を実装したSIM1の動作フローについて説明する。図10は、SIM1の動作を示したフロー図である。図10の最初のステップS1は、SIM1が活性化されるステップである。このステップでは、SIM1は、ISO/IEC7816の手順に従い活性化され、SIM1の初期処理が実行される。
【0060】
この初期処理によって、SIM1のモード情報105の値がISOモードを示す値に設定されることで、SIM1のモードはISOモードになる。
【0061】
次のステップS2は、SIM1が非活性化されるまで繰り返し実行されるループ処理である。
【0062】
次のステップS3は、SIM1が上位装置2からコマンドAPDUを受信するステップである。SIM1の伝送制御モジュール103は、上位装置2から、プロトコルバイトとチェックコードが付加されたコマンドAPDUを受信すると、コマンドAPDUに付加されたプロトコルバイトとチェックコードを確認し、データを正常に受信したと判断した場合、コマンドAPDUのみをディスパッチャ100に受け渡す。
【0063】
次のステップS4は、SIM1が上位装置から受信したコマンドAPDUを処理するコマンドを特定するステップである。このステップでは、SIM1のモード情報105の値は、ISOモードを示す値に設定されているため、SIM1のディスパッチャ100は、コマンドAPDUのCLA,INSを解析することで、SIM1が有するコマンド群106の中から、SIM1は実行するコマンドを特定し、P1、P2およびデータフィールドのデータを引渡すなどして、コマンドAPDUの処理を特定したコマンドに委任する。
【0064】
なお、このステップで、特定したコマンドが暗号化コマンド101の場合はステップS10に進み、他のコマンドの場合はステップS5に進む。
【0065】
ステップS5において、暗号化コマンド101以外のコマンド(例えば、暗号鍵設定コマンド102)を処理され、レスポンスAPDUが生成される。そして、ステップS6では、伝送制御モジュール103は、生成したレスポンスAPDUにプロトコルバイトとチェックコードを付加し上位装置2に送信する。
【0066】
図11は、図10のステップS10で実行され、暗号化コマンド101を処理する手順を示したフロー図である。暗号化コマンド101を処理する手順の最初のステップS11は、SIM1のモードを、ISOモードからデータモードへ遷移させるステップである。
【0067】
このステップS11では、ディスパッチャ100は、図10のステップS3で受信したコマンドAPDUが、暗号化コマンド101のコマンドAPDUであると判断した場合、暗号化コマンド101を呼び出す。暗号化コマンド101が読み出されると、暗号化コマンド101は、ISOモードを示す値からデータモードを示す値に、モード情報105の値を変更することで、SIM1のモードを、ISOモードからデータモードへ遷移させる。
【0068】
次のステップS12は、上位装置から送信される平文を暗号化する回数を示すカウンタを初期化するステップである。このステップでは、SIM1のディスパッチャ100は、図10のステップS3で受信した暗号化コマンド101のコマンドAPDUに含まれるP1の値を、CPU11のレジスタまたはRAM14にコピーすることで、暗号化する回数を示すカウンタを初期化する。
【0069】
次のステップS13は、上位装置2から送信された平文を暗号化した暗号文を生成するステップである。このステップでは、ディスパッチャ100は、上位装置2から受信した平文と、そのデータ長(例えば、P2の値)を暗号化コマンド101に引渡し、暗号化コマンド101は、暗号演算回路12を作動させ、暗号鍵104を用い、所定の暗号アルゴリズムに従い平文を暗号化する。
【0070】
なお、このステップで暗号化する最初の平文は、図10のステップS3で受信したコマンドAPDUのデータフィールドに含まれる平文で、2回目以降に暗号化する平文は、後述するステップS17で受信する平文である。
【0071】
次のステップS14は、平文を暗号化した回数を示カウンタの値を一つデクリメントするステップである。このステップでは、暗号化コマンド101は、CPU11のレジスタまたはRAM14に生成されたカウンタの値を一つだけデクリメントする。
【0072】
次のステップS15は、カウンターの値を参照し、図10のステップS3で受信した暗号化コマンド101のコマンドAPDUのP1で示される回数だけ、平文を暗号化したか確認するステップである。例えば、暗号化コマンド101は、CPUのレジスタまたはRAMに生成されたカウンタの値が「0」であるか確認することで、暗号化コマンド101のコマンドAPDUのP1で示される回数だけ、平文を暗号化したかが確認される。
【0073】
ステップS15で、暗号化コマンド101のコマンドAPDUのP1で示される回数だけ、平文を暗号化していない場合はステップS16に進み、暗号化した場合はステップS18に進む。
【0074】
暗号化コマンド101のコマンドAPDUのP1で示される回数だけ、平文を暗号化していない場合に実行されるステップS16では、平文を暗号化した暗号文のみが上位装置2に送信される。このステップでは、暗号化コマンド101は、ステップS12で生成した暗号文を伝送制御モジュール103に引渡し、伝送制御モジュール103は、暗号文に、プロトコルバイトとチェックコードを付加して上位装置2に送信し、送信後にSIM1は上位装置2からデータを受信する状態になる。
【0075】
ステップS16の後に実行されるステップS17は、上位装置2から平文を受信するステップである。このステップS17で、上位装置2からSIM1に送信される平文には、プロトコルバイトとチェックコードが付加される。SIM1が平文を受信すると、伝送制御モジュール103は、コマンドAPDUに付加されたプロトコルバイトとチェックコードを確認し、データを正常に受信したと判断し、モード情報105の値を確認する。
【0076】
ステップS17では、モード情報105はデータモードを示す値に設定されているため、ディスパッチャ100は、コマンドAPDUを解析することなく、ステップS13に進み、ステップS17で受信した平文の暗号化を暗号化コマンド101に委任する。
【0077】
なお、ステップS15において、暗号化コマンド101のコマンドAPDUのP1で示される回数だけ、平文を暗号化した場合は、ステップS18において、暗号化コマンド101は、暗号化コマンド101の実行結果を示すSWを暗号文に付加することで、暗号化コマンド101のレスポンスAPDUを生成し、更に、データモードを示す値からISOモードを示す値に、モード情報105の値を変更することで、SIM1のモードを、データモードからISOモードへ遷移させる。
【0078】
ステップS18の後に実行されるステップS19は、ステップS18で生成したレスポンスAPDUを上位装置2に送信するステップである。このステップでは、暗号化コマンド101は、ステップS18で生成したレスポンスAPDUを伝送制御モジュール103に引渡し、伝送制御モジュール103は、プロトコルバイトとチェックコードをレスポンスAPDUに付加し、レスポンスAPDUを上位装置2に送信する。
【0079】
ステップS19で、暗号化コマンド105のレスポンスAPDUを送信することで、図10のステップS3で受信した暗号化コマンド101のコマンドAPDUの処理が終了する。
【0080】
本発明に係るICカードであるSIM1を組み込み利用する上位装置の一例として、SIM1を組み込み利用する監視カメラ3を、図12で図示した。図12において、本発明係るSIM1は、監視カメラ3が撮像した動画データの漏洩と動画データの改ざんとを防止するために、動画データを暗号化する暗号モジュールとして利用され、監視カメラ3は、SIM1を用いて、一定期間に撮像した動画データを暗号化し、暗号化した動画データをメモリカード3aに記憶する。
【図面の簡単な説明】
【0081】
【図1】SIMの振舞いを説明する図。
【図2】SIMの外観図。
【図3】ICチップのハードウェア構造図。
【図4】SIMのソフトウェア構成図。
【図5】SIMのモード遷移を説明する図。
【図6】ISOモードにおけるSIMの動作を説明する図。
【図7】データモードにおけるSIMの動作を説明する図。
【図8】暗号化コマンドのコマンドAPDUの一例を示した図。
【図9】暗号化コマンドのレスポンスAPDUの一例を示した図。
【図10】SIMの動作を示したフロー図。
【図11】暗号化コマンドを処理する手順を示したフロー図。
【図12】SIMを組み込み利用する監視カメラを示した図。
【符号の説明】
【0082】
1 SIM
100 ディスパッチ
101 暗号鍵設定コマンド
102 暗号化コマンド
103 伝送制御モジュール
104 暗号鍵
105 モード情報
2 上位装置
【特許請求の範囲】
【請求項1】
上位装置に組み込まれ利用されるICカードであって、前記ICカードは、前記ICカードのモードを示すモード情報をメモリに記憶し、前記モード情報によって、少なくとも、コマンドAPDU及びレスポンスAPDUを前記上位装置とやり取りする第1のモード、或いは、コマンドAPDUのデータ部であるコマンドデータ及びレスポンスAPDUのデータ部であるレスポンスデータのみを前記上位装置とやり取りする第2のモードが示され、前記ICカードは、前記モード情報を操作するモード変更コマンドと、前記モード情報を参照し、前記モード情報に基づいて前記ICカードの振舞いを変更する制御手段とを備え、前記モード変更コマンドは前記コマンドデータを処理する処理モジュールを有し、前記制御手段は、前記モード情報が前記第2のモードを示すときは、前記上位装置から送信された前記コマンドデータの処理を前記モード変更コマンドに委任し、前記モード変更コマンドから得られる前記レスポンスデータを前記上位装置に送信することを特徴とするICカード。
【請求項2】
請求項1の発明に記載のICカードにおいて、前記上位装置から送信される前記コマンドデータは前記ICカードで暗号化される平文で、前記モード変更コマンドの前記処理モジュールは前記平文を暗号化するモジュールであって、前記制御手段は、前記モード情報が前記第2のモードを示すとき、前記上位装置から送信された前記コマンドデータすべての暗号化を、前記処理モジュールに委任し、前記レスポンスデータとして、前記コマンドデータすべてを暗号化した暗号文を前記上位装置に送信することを特徴とするICカード。
【請求項3】
請求項2の発明に記載のICカードにおいて、前記モード変更コマンドは、前記モード情報が前記第2のモードを示すとき、前記コマンドデータを受信した回数をカウントし、暗号化する前記コマンドデータを受信した回数が、前記モード変更コマンドの前記コマンドAPDUで示される指定回数になったときは、前記モード情報を前記第1のモードを示すように変更することを特徴とするICカード。
【請求項4】
請求項2の発明または請求項3の発明に記載のICカードにおいて、前記モード変更コマンドの前記コマンドAPDUで、前記指定回数が無制限であることが示された場合、前記モード変更コマンドは、前記コマンドデータの先頭から定められたバイト数を前記平文のデータ長と解釈し、前記コマンドデータに含まれ、前記データ長で示される長さのデータを暗号化することを特徴とするICカード。
【請求項5】
請求項3の発明に記載のICカードであって、前記モード変更コマンドは、暗号化する前記データ部を受信した回数が前記指定回数になったとき、前記モード変更コマンドのレスポンスとなる前記APDUを生成し、前記制御手段は、前記モード変更コマンドのレスポンスとなる前記APDUを前記上位装置に送信することを特徴とするICカード。
【請求項6】
モードを示すモード情報をメモリに記憶し、前記モード情報によって、少なくとも、コマンドAPDU及びレスポンスAPDUを前記上位装置とやり取りする第1のモード、或いは、コマンドAPDUのデータ部であるコマンドデータ及びレスポンスAPDUのデータ部であるレスポンスデータのみを前記上位装置とやり取りする第2のモードが示され、前記ICカードは、前記コマンドデータを処理する処理モジュールを有し、前記モード情報を操作するモード変更コマンドと、前記モード情報を参照し、前記モード情報が前記第2のモードを示すときは、前記上位装置から送信された前記コマンドデータの処理を前記モード変更コマンドに委任し、前記モード変更コマンドから得られる前記レスポンスデータを前記上位装置に送信する制御手段と、を備えたICカードとして、前記ICカードのCPUを機能させるためのICカードプログラム。
【請求項7】
請求項6の発明に記載のICカードプログラムにおいて、前記上位装置から送信される前記コマンドデータは前記ICカードで暗号化される平文で、前記平文を暗号化する前記処理モジュールを備えた前記モード変更コマンドと、前記モード情報が前記第2のモードを示すとき、前記上位装置から送信された前記コマンドデータすべての暗号化を、前記処理モジュールに委任し、前記レスポンスデータとして、前記コマンドデータすべてを暗号化した暗号文のみを前記上位装置に送信する前記制御手段と、を備えた前記ICカードとして、前記ICカードのCPUを機能させるためのICカードプログラム。
【請求項8】
請求項7の発明に記載のICカードプログラムにおいて、前記モード情報が前記第1のモードを示すとき、前記モード情報が前記第2のモードを示すとき、前記コマンドデータを受信した回数をカウントし、暗号化する前記コマンドデータを受信した回数が、前記モード変更コマンドの前記コマンドAPDUで示される指定回数になったときは、前記モード情報を前記第1のモードを示すように変更する前記モード変更コマンドを備えた前記ICカードとして、前記ICカードのCPUを機能させるためのICカードプログラム。
【請求項9】
請求項6の発明または請求項7の発明に記載のICカードプログラムにおいて、前記モード変更コマンドの前記コマンドAPDUで、前記コマンドデータの前記指定回数が無制限であることが示された場合、前記コマンドデータの先頭から定められたバイト数を前記平文のデータ長と解釈し、前記コマンドデータに含まれ、前記データ長で示される長さのデータを暗号化する前記モード変更コマンドを備えた前記ICカードとして、前記ICカードのCPUを機能させるためのICカードプログラム。
【請求項10】
請求項8の発明に記載のICカードプログラムであって、暗号化する前記データ部を受信した回数が前記指定情報になったとき、前記モード変更コマンドのレスポンスとなる前記APDUを生成する前記モード変更コマンドと、前記モード変更コマンドのレスポンスとなる前記APDUを前記上位装置に送信する前記制御手段と、を備えた前記ICカードとして、前記ICカードのCPUを機能させるためのICカードプログラム。
【請求項1】
上位装置に組み込まれ利用されるICカードであって、前記ICカードは、前記ICカードのモードを示すモード情報をメモリに記憶し、前記モード情報によって、少なくとも、コマンドAPDU及びレスポンスAPDUを前記上位装置とやり取りする第1のモード、或いは、コマンドAPDUのデータ部であるコマンドデータ及びレスポンスAPDUのデータ部であるレスポンスデータのみを前記上位装置とやり取りする第2のモードが示され、前記ICカードは、前記モード情報を操作するモード変更コマンドと、前記モード情報を参照し、前記モード情報に基づいて前記ICカードの振舞いを変更する制御手段とを備え、前記モード変更コマンドは前記コマンドデータを処理する処理モジュールを有し、前記制御手段は、前記モード情報が前記第2のモードを示すときは、前記上位装置から送信された前記コマンドデータの処理を前記モード変更コマンドに委任し、前記モード変更コマンドから得られる前記レスポンスデータを前記上位装置に送信することを特徴とするICカード。
【請求項2】
請求項1の発明に記載のICカードにおいて、前記上位装置から送信される前記コマンドデータは前記ICカードで暗号化される平文で、前記モード変更コマンドの前記処理モジュールは前記平文を暗号化するモジュールであって、前記制御手段は、前記モード情報が前記第2のモードを示すとき、前記上位装置から送信された前記コマンドデータすべての暗号化を、前記処理モジュールに委任し、前記レスポンスデータとして、前記コマンドデータすべてを暗号化した暗号文を前記上位装置に送信することを特徴とするICカード。
【請求項3】
請求項2の発明に記載のICカードにおいて、前記モード変更コマンドは、前記モード情報が前記第2のモードを示すとき、前記コマンドデータを受信した回数をカウントし、暗号化する前記コマンドデータを受信した回数が、前記モード変更コマンドの前記コマンドAPDUで示される指定回数になったときは、前記モード情報を前記第1のモードを示すように変更することを特徴とするICカード。
【請求項4】
請求項2の発明または請求項3の発明に記載のICカードにおいて、前記モード変更コマンドの前記コマンドAPDUで、前記指定回数が無制限であることが示された場合、前記モード変更コマンドは、前記コマンドデータの先頭から定められたバイト数を前記平文のデータ長と解釈し、前記コマンドデータに含まれ、前記データ長で示される長さのデータを暗号化することを特徴とするICカード。
【請求項5】
請求項3の発明に記載のICカードであって、前記モード変更コマンドは、暗号化する前記データ部を受信した回数が前記指定回数になったとき、前記モード変更コマンドのレスポンスとなる前記APDUを生成し、前記制御手段は、前記モード変更コマンドのレスポンスとなる前記APDUを前記上位装置に送信することを特徴とするICカード。
【請求項6】
モードを示すモード情報をメモリに記憶し、前記モード情報によって、少なくとも、コマンドAPDU及びレスポンスAPDUを前記上位装置とやり取りする第1のモード、或いは、コマンドAPDUのデータ部であるコマンドデータ及びレスポンスAPDUのデータ部であるレスポンスデータのみを前記上位装置とやり取りする第2のモードが示され、前記ICカードは、前記コマンドデータを処理する処理モジュールを有し、前記モード情報を操作するモード変更コマンドと、前記モード情報を参照し、前記モード情報が前記第2のモードを示すときは、前記上位装置から送信された前記コマンドデータの処理を前記モード変更コマンドに委任し、前記モード変更コマンドから得られる前記レスポンスデータを前記上位装置に送信する制御手段と、を備えたICカードとして、前記ICカードのCPUを機能させるためのICカードプログラム。
【請求項7】
請求項6の発明に記載のICカードプログラムにおいて、前記上位装置から送信される前記コマンドデータは前記ICカードで暗号化される平文で、前記平文を暗号化する前記処理モジュールを備えた前記モード変更コマンドと、前記モード情報が前記第2のモードを示すとき、前記上位装置から送信された前記コマンドデータすべての暗号化を、前記処理モジュールに委任し、前記レスポンスデータとして、前記コマンドデータすべてを暗号化した暗号文のみを前記上位装置に送信する前記制御手段と、を備えた前記ICカードとして、前記ICカードのCPUを機能させるためのICカードプログラム。
【請求項8】
請求項7の発明に記載のICカードプログラムにおいて、前記モード情報が前記第1のモードを示すとき、前記モード情報が前記第2のモードを示すとき、前記コマンドデータを受信した回数をカウントし、暗号化する前記コマンドデータを受信した回数が、前記モード変更コマンドの前記コマンドAPDUで示される指定回数になったときは、前記モード情報を前記第1のモードを示すように変更する前記モード変更コマンドを備えた前記ICカードとして、前記ICカードのCPUを機能させるためのICカードプログラム。
【請求項9】
請求項6の発明または請求項7の発明に記載のICカードプログラムにおいて、前記モード変更コマンドの前記コマンドAPDUで、前記コマンドデータの前記指定回数が無制限であることが示された場合、前記コマンドデータの先頭から定められたバイト数を前記平文のデータ長と解釈し、前記コマンドデータに含まれ、前記データ長で示される長さのデータを暗号化する前記モード変更コマンドを備えた前記ICカードとして、前記ICカードのCPUを機能させるためのICカードプログラム。
【請求項10】
請求項8の発明に記載のICカードプログラムであって、暗号化する前記データ部を受信した回数が前記指定情報になったとき、前記モード変更コマンドのレスポンスとなる前記APDUを生成する前記モード変更コマンドと、前記モード変更コマンドのレスポンスとなる前記APDUを前記上位装置に送信する前記制御手段と、を備えた前記ICカードとして、前記ICカードのCPUを機能させるための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−4021(P2008−4021A)
【公開日】平成20年1月10日(2008.1.10)
【国際特許分類】
【出願番号】特願2006−175441(P2006−175441)
【出願日】平成18年6月26日(2006.6.26)
【出願人】(000002897)大日本印刷株式会社 (14,506)
【Fターム(参考)】
【公開日】平成20年1月10日(2008.1.10)
【国際特許分類】
【出願日】平成18年6月26日(2006.6.26)
【出願人】(000002897)大日本印刷株式会社 (14,506)
【Fターム(参考)】
[ Back to top ]