(58)【調査した分野】(Int.Cl.,DB名)
前記シリアル通信インターフェイスは、SPI(Serial Peripheral Interface)であることを特徴とする請求項1に記載の電子情報記憶装置。
前記ICカード用の通信プロトコルがAPDU(Application Protocol Data Unit)プロトコルである場合、前記応答手段は、前記ICカード用の通信プロトコルに応じたデータがコマンドAPDUであると解釈し、当該解釈したコマンドAPDUに応じた処理を行うことを特徴とする請求項1または2に記載の電子情報記憶装置。
前記ICカード用の通信プロトコルがリセット制御プロトコルである場合、前記応答手段は、前記ICカード用の通信プロトコルに応じたデータがリセットであると解釈し、当該解釈したリセットに応じた処理を行うことを特徴とする請求項1または2に記載の電子情報記憶装置。
【発明を実施するための形態】
【0014】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、セキュアエレメント(Secure Element)に対して本発明を適用した場合の実施の形態である。セキュアエレメントは、本発明の電子情報記憶装置の一例であり、外部装置との間で通信を行う。
【0015】
[1.セキュアエレメントSEの通信インターフェイス及び通信プロトコル]
先ず、
図1を参照して、本実施形態に係るセキュアエレメントSEの通信インターフェイス及び通信プロトコルについて、従来のICカードと比較しつつ説明する。
図1は、従来のICカードと、本実施形態に係るセキュアエレメントSEとの通信インターフェイス及び通信プロトコルの一例を階層別に示す概念図である。
図1に示すように、従来のICカードの下層(物理層)では、ISO7816のI/Fが用いられる一方、本実施形態に係るセキュアエレメントSEの下層(物理層)では、SPI(Serial Peripheral Interface)が用いられる。ここで、ISO7816のI/Fは、ISO7816-2で定義される通信インターフェイス(C1〜C8の8個の端子を利用した通信インターフェイス)である。また、SPIは、シリアル通信インターフェイス(シリアル通信バスともいう)の一例である。なお、シリアル通信インターフェイスの別の例として、I
2C(Inter-Integrated Circuit)がある。また、従来のICカードの中層では、TPDU(Transmission Protocol Data Unit)プロトコル(例えば、T=0またはT=1)が用いられる一方、本実施形態に係るセキュアエレメントSEの中層では、本実施形態に係る新規通信プロトコル(つまり、SPIを用いた新規通信プロトコル)が用いられる。TPDUプロトコルは、ISO7816-3で定義されるTPDUを送受信するためのプロトコルである。また、従来のICカード及び本実施形態に係るセキュアエレメントSEの上層(アプリケーション層)は、ともに、APDU(Application Protocol Data Unit)プロトコルが用いられる。APDUプロトコルは、ISO7816-3で定義されるAPDUを送受信するためのプロトコルである。本実施形態では、SPIを用いた新規通信プロトコルを用いてAPDUが送受信される。なお、TPDUプロトコル及びAPDUプロトコルは、ICカード用の通信プロトコルの一例である。
【0016】
[2.セキュアエレメントSEの構成及び機能]
次に、
図2(A)等を参照して、本実施形態に係るセキュアエレメントSEの構成及び機能について説明する。
図2(A)は、セキュアエレメントSEのハードウェア構成例を示す図である。
図2(A)に示すように、セキュアエレメントSEは、CPU(Central Processing Unit)1、RAM(Random Access Memory)2、ROM(Read Only Memory)3、不揮発性メモリ4、及びI/O回路5等を備えて構成される。CPU1は、ROM3または不揮発性メモリ4に記憶された各種プログラムを実行するプロセッサ(コンピュータ)である。RAM2は、作業用メモリとして利用される。不揮発性メモリ4には、例えばフラッシュメモリが適用される。なお、不揮発性メモリ4は、「Electrically Erasable Programmable Read-Only Memory」であってもよい。また、不揮発性メモリ4に記憶される各種プログラム及びデータの一部は、ROM3に記憶されてもよい。ROM3または不揮発性メモリ4との何れかに記憶されるプログラムには、従来のICカード(ICチップ)にインストールされるオペレーティングシステム(Operating System)及びアプリケーションプログラム、並びに、本発明のデータ処理プログラム等が含まれる。CPU1は、本発明のデータ処理プログラムに従って、本発明の受信手段及び応答手段として機能する。なお、本発明のデータ処理プログラムは、OSに組み込まれてもよいし、或いは、OSとは独立したミドルウェアとしてインストールされてもよい。
【0017】
I/O回路5は、外部装置DE(例えば、リーダライタ等の端末)との間の通信インターフェイスを担う。この通信インターフェイスは、上述したSPIであり、同時に双方向の通信を行う全二重シリアル通信プロトコルを採用する。なお、外部装置DEはマスター(Master)として機能し、セキュアエレメントSEはスレーブ(Slave)として機能する。I/O回路5は、送受信されるデータを蓄積するためのシフトレジスタ、及び4つの信号線等を備える。4つの信号線とは、SCLK(Serial Clock)、MOSI(Master-Out Slave-In)、MISO(Master-In Slave-Out)、及びSLS(SLave Select)である。なお、シフトレジスタ、SCLK、MOSI 、MISO、及びSLSは、マスターとしての外部装置DEにも備えられる。I/O回路5のSCLKの端部(接触部)と、外部装置DEのSCLKの端部とは、直接的にまたは外部信号線を介して接続される。また、I/O回路5のMOSIの端部と、外部装置DEのMOSIの端部とは、直接的にまたは外部信号線を介して接続される。また、I/O回路5のMISOの端部と、外部装置DEのMISOの端部とは、直接的にまたは外部信号線を介して接続される。また、I/O回路5のSLSの端部と、外部装置DEのSLSの端部とは、直接的にまたは外部信号線を介して接続される。
【0018】
図2(B)は、外部装置DEとセキュアエレメントSEとの間でやりとりされる信号の動きの一例を示す図である。
図2(B)の例において、外部装置DEがSLSを例えばローアクティブにすることで通信が開始される。なお、SPIは、複数のスレーブを持つことが可能であるが、本実施形態では、1対1の通信を例にとるものとする。外部装置DEのクロック生成器により生成されたクロック信号(同期信号)は、SCLKを介して外部装置DEからセキュアエレメントSEへ送信される。外部装置DEのシフトレジスタにセットされたデータ(コマンドデータ)が、上記クロック信号に従って1ビットずつシフトされながらMOSIを介して外部装置DEからセキュアエレメントSEへ送信され、且つ、当該データの送信中、MISOを介してセキュアエレメントSEから外部装置DEへダミーデータ(例えば、F(h)が連続するデータ)が送信される。一方、セキュアエレメントSEのシフトレジスタにセットされたデータ(レスポンスデータ)が、上記クロック信号に従って1ビットずつシフトされながらMISOを介してセキュアエレメントSEから外部装置DEへ送信され、且つ、当該データの送信中、MOSIを介して外部装置DEからセキュアエレメントSEへダミーデータが送信される。
【0019】
セキュアエレメントSEは、外部装置DEからSPIを介して送信されたコマンドデータ(以下、「SPIコマンド」という)を受信し、当該受信されたSPIコマンドに基づいて、当該ICカード用の通信プロトコルに応じたデータを解釈し、当該解釈したデータに応じた処理を行ってSPIを介してレスポンスデータ(以下、「SPIレスポンス」という)を外部装置DEへ送信する。
【0020】
ここで、
図3を参照して、本実施形態に係る新規通信プロトコルで規定するSPIコマンドのデータ構造について説明する。
図3(A)は、SPIコマンドのデータ構造の一例を示す図であり、
図3(B)は、SPIコマンドの構成要素の詳細を示す図である。なお、
図3(B)において、“#”は、“0”〜“F” (h)までの何れかの値であることを示す。
図3(A)に示すように、SPIコマンドは、プロトコル選択データ(PS)、SPIコマンド長データ(Lf)、及びICカード用の通信プロトコルに応じたデータを含んで構成される。プロトコル選択データは、ICカード用の通信プロトコルの種別を示すデータであり、プロトコル選択バイトともいう。プロトコル選択データは、
図3(A),(B)に示すように、SPIコマンドの先頭の1バイト(8ビット)に割り当てられる。プロトコル選択データにより、通信プロトコルの種別を指定することができる。
【0021】
図3(C)は、プロトコル選択データの具体例を示す図である。なお、
図3(C)において、“*”は、“0”または“1”の値であることを示す。
図3(C)の例では、指定可能な通信プロトコルの種別として、APDUプロトコル、及びSE制御プロトコル(リセット制御プロトコル)が示されている。なお、プロトコル選択データでは、
図3(C)に示すように、チェイニングなし(またはチェイニングの最後のデータ)、チェイング中(後続データあり)、または、チェイニングの後続データを要求、を指定することもできる。チェイニングとは、1塊のデータを複数のSPIコマンドまたはSPIレスポンスにより続けて送受信する仕組みをいう。これにより、1度に(つまり、1つのSPIコマンドまたはSPIレスポンスで)送受信可能なデータの最大長が定められている場合であっても、当該最大長を超えるデータのやり取りを行うことができる。
【0022】
一方、SPIコマンド長データは、ICカード用の通信プロトコルに応じたデータの長さ(例えばバイト数)を示すデータであり、SPIコマンド長バイトともいう。SPIコマンド長データは、
図3(A),(B)に示すように、プロトコル選択データの次の1バイトに割り当てられる。なお、SPIコマンドには、プロトコル選択データとSPIコマンド長データとの何れか一方が含まれるように構成してもよい。
【0023】
ICカード用の通信プロトコルに応じたデータは、プロトコル選択データにより指定された通信プロトコルに応じたデータであり、これには、APDUプロトコルに応じたデータ、TPDUプロトコルに応じたデータ、及びSE制御プロトコルに応じたデータなどがある。
図3(A)の例では、APDUプロトコルに応じたデータとして、ISO7816-3で定義されるコマンドAPDUが示されている。コマンドAPDUは、例えば、CLA、INS、P1及びP2から構成(ヘッダだけで構成)される(Case1)。ここで、CLAはコマンドクラス(命令クラス)を示し、INSはコマンドコード(命令コード)を示し、P1及びP2はコマンドパラメータ(命令パラメータ)を示す。なお、この場合のコマンドAPDUは、最小単位であり、CLA、INS、P1及びP2のそれぞれが1バイトずつである計4バイトからなる。或いは、コマンドAPDUは、例えば、CLA、INS、P1及びP2と(ヘッダと)、Leと(ボディと)から構成される(Case2)。ここで、LeはレスポンスAPDUの最大長(最大サイズ)を示す。或いは、コマンドAPDUは、例えば、CLA、INS、P1及びP2と(ヘッダと)、Lc及びDataと(ボディと)から構成される(Case3)。ここで、LcはDataの長さを示し、DataはセキュアエレメントSEで用いられる可変長のデータ(例えば不揮発性メモリ4に書き込まれるデータ)を示す。或いは、コマンドAPDUは、例えば、CLA、INS、P1及びP2と(ヘッダと)、Lc、Data及びLeと(ボディと)から構成される(Case4)。
【0024】
なお、図示しないが、TPDUプロトコルに応じたデータは、ISO7816-3で定義されるコマンドTPDUである。コマンドTPDUは、例えば、CLA、INS、P1、P2、及びP3(=0)から構成(ヘッダだけで構成)される(Case1)。或いは、コマンドTPDUは、例えば、CLA、INS、P1、P2、及びP3(=Le)から構成(ヘッダだけで構成)される(Case2)。或いは、コマンドTPDUは、例えば、CLA、INS、P1、P2、及びP3(=Lc)と(ヘッダと)、Dataと(ボディと)から構成される(Case3,Case4)。また、APDUプロトコルまたはTPDUプロトコルに応じたデータとして、コマンドAPDUまたはコマンドTPDUをカプセル化(例えば、コマンドAPDUまたはコマンドTPDUの前後に所定のデータを付加)したデータユニットであってもよい。
【0025】
また、
図3(A)の例では、SE制御プロトコルに応じたデータとして、ICカード用のリセットが示されている。ICカード用のリセットには、コールドリセット(Cold Reset)と、ウォームリセット(Warm Reset)とがある。コールドリセットは、ICカードが活性化された直後に実行されるリセットである。一方、ウォームリセットとは、コールドリセット以外の全てのリセット、つまり、電圧及びクロックが安定状態にあるときに実行されるリセットである。コールドリセットの場合、これを示す値として予め定められた例えば“F000”(h)がSPIコマンド内に記述される。一方、ウォームリセットの場合、これを示す値として予め定められた例えば“F001”(h)がSPIコマンド内に記述される。
【0026】
上述したように、SPIコマンドによって、複数の通信プロトコルのうち何れかの通信プロトコルに応じたデータ(例えば、コマンドAPDU、またはリセット)を外部装置DEからセキュアエレメントSEへ送信することができる。
【0027】
次に、
図4を参照して、本実施形態に係る新規通信プロトコルで規定するSPIレスポンスのデータ構造について説明する。
図4(A)は、SPIレスポンスのデータ構造の一例を示す図であり、
図4(B)は、SPIレスポンスの構成要素の詳細を示す図である。
図4(A)に示すように、SPIレスポンスは、送信開始データ(TS)、SPIレスポンス長データ(Lf)、ICカード用の通信プロトコルに応じたレスポンスデータ、及びSPIステータスデータ(SS)を含んで構成される。送信開始データは、SPIレスポンスの送信開始を示すデータであり、送信開始バイトともいう。送信開始データは、
図4(A),(B)に示すように、SPIレスポンスの先頭の1バイトに“00”(h)として割り当てられる。
【0028】
SPIレスポンス長データは、後続データ(つまり、ICカード用の通信プロトコルに応じたレスポンスデータ及びSPIステータスデータ)の長さを示すデータであり、SPIレスポンス長バイトともいう。SPIレスポンス長データは、
図4(A),(B)に示すように、送信開始データの次の1バイトに割り当てられる。
【0029】
ICカード用の通信プロトコルに応じたレスポンスデータには、例えば、APDUプロトコルに応じたレスポンスデータ、及びTPDUプロトコルに応じたレスポンスデータなどがある。
図4(A)の例では、APDUプロトコルに応じたレスポンスデータとして、ISO7816-3で定義されるレスポンスAPDUが示されている。レスポンスAPDUは、例えば、SW1及びSW2から構成される(Case1,Case3)。ここで、SW1及びSW2は、ステータスワードであり、コマンドAPDUに応じた処理状況(処理結果)を示す。SW1及びSW2は、それぞれが1バイトずつである計2バイトからなる。例えば、SW1及びSW2が“0009”(h)である場合、正常終了を示し、SW1及びSW2が“6500”(h)である場合、メモリへの書き込み失敗を示す。或いは、レスポンスAPDUは、例えば、DATA、SW1及びSW2から構成される(Case2,Case4)。ここで、DATAは例えば処理結果としてのデータを示す。なお、図示しないが、TPDUプロトコルに応じたレスポンスデータは、ISO7816-3で定義されるレスポンスTPDUである。レスポンスTPDUのデータ構造は、基本的には、レスポンスAPDUと同様である。
【0030】
SPIステータスデータは、SPIコマンドに応じた処理状況(処理結果)を示すデータであり、SPIステータスバイトともいう。SPIステータスデータは、
図4(A),(B)に示すように、レスポンスAPDUの次の1バイトに割り当てられる。
図4(C)は、SPIステータスデータの具体例を示す図である。
図4(C)の例では、SPIステータスデータが“90”(h)である場合、正常終了を示し、SPIステータスデータが“62”(h)である場合、チェイングの後続データがあることを示している。
【0031】
なお、SE制御プロトコルを示すプロトコル選択データを含むSPIコマンド(つまり、SPIコマンドにより特定されるリセット)に対するSPIレスポンスには、SE制御プロトコルに応じたレスポンスデータ(例えば、ISO7816-3で定義されるATR(Answer To Reset))が含まれない。これは、例えば、ISO7816-3で定義されるATRには、外部装置がICカードとの間の通信設定(例えば、通信速度設定)を行うためのパラメータが含まれるが、このようなパラメータは、SPIを介した通信では必要ないからである。したがって、SE制御プロトコルを示すプロトコル選択データを含むSPIコマンドに対するSPIレスポンスは、送信開始データ、SPIレスポンス長データ(SPIステータスデータの長さを示す)、及びSPIステータスデータから構成されることになる。
【0032】
以上の構成により、例えば、CPU1は、外部装置DEからSPIを介して受信されたSPIコマンド中のプロトコル選択データに基づいて、ICカード用の通信プロトコルに応じたデータを解釈する。例えば、ICカード用の通信プロトコルがAPDUプロトコルである場合、CPU1は、ICカード用の通信プロトコルに応じたデータがコマンドAPDUであると解釈(つまり、当該プロトコル選択データが示すAPDUプロトコルから解釈)し、当該解釈したコマンドAPDUに応じた処理を行って、その処理結果を示すSPIレスポンス(レスポンスAPDUを含む)をSPIを介して外部装置DEへ送信する。或いは、CPU1は、ICカード用の通信プロトコルがSE制御プロトコルである場合、CPU1は、ICカード用の通信プロトコルに応じたデータがコールドリセット(またはウォームリセット)であると解釈(つまり、当該プロトコル選択データが示すSE制御プロトコルから解釈)し、当該解釈したコールドリセット(またはウォームリセット)に応じた処理を行って、その処理結果を示すSPIレスポンスをSPIを介して外部装置DEへ送信する。
【0033】
別の例として、例えば、ICカード用の通信プロトコルの種別が、APDUプロトコル(または、TPDUプロトコル)と、SE制御プロトコルとの2種類である場合、CPU1は、外部装置DEからSPIを介して受信されたSPIコマンド中のSPIコマンド長データに基づいて、ICカード用の通信プロトコルに応じたデータを解釈してもよい。すなわち、CPU1は、SPIコマンド中のSPIコマンド長データが4バイト以上の長さを示す場合、ICカード用の通信プロトコルに応じたデータがコマンドAPDU(または、コマンドTPDU)であると解釈する。一方、CPU1は、SPIコマンド中のSPIコマンド長データが2バイトの長さを示す場合、ICカード用の通信プロトコルに応じたデータがコールドリセット(またはウォームリセット)であると解釈する。
【0034】
[3.外部装置DEのセキュアエレメントSEとの通信時の動作]
次に、
図5を参照して、外部装置DEのセキュアエレメントSEとの通信時の動作について説明する。
図5(A)は、SPIコマンド送信(マスターから送信)からSPIレスポンス受信(マスターが受信)までの動作を示す図である。
図5(B)は、
図5(A)に示す動作において、SPIコマンドでコマンドAPDUを送信する場合の例を、Case1〜Case4に分けて示す図であり、
図5(C)は、
図5(A)に示す動作において、SPIコマンドでコールドリセットを送信する場合の例を示す図である。
【0035】
図5(A)に示すステップS1では、外部装置DEが、MOSIを介してSPIコマンドをセキュアエレメントSEへ送信する一方、セキュアエレメントSEが、このSPIコマンドの受信中、MISOを介してダミーデータを外部装置DEへ送信する。次いで、
図5(A)に示すステップS2では、セキュアエレメントSEがSPIコマンドに応じて処理(つまり、上述したように解釈したデータに応じた処理)を行うが、この処理中、外部装置DEが、MOSIを介してダミーデータをセキュアエレメントSEへ送信する一方、セキュアエレメントSEが、MISOを介してダミーデータを外部装置DEへ送信する。次いで、
図5(A)に示すステップS3では、セキュアエレメントSEが、MISOを介してSPIレスポンスを外部装置DEへ送信する一方、外部装置DEが、このSPIレスポンスの受信中、MOSIを介してダミーデータをセキュアエレメントSEへ送信する。
【0036】
図5(A)に示す動作において、SPIコマンドでコマンドAPDUを送信する場合、
図5(B)のCase1に示すように、ステップS1において、外部装置DEは、CLA、INS、P1及びP2の4バイトで構成されるコマンドAPDUを含むSPIコマンドを、MOSIを介してセキュアエレメントSEへ送信する。この間、セキュアエレメントSEは、SPIコマンドと同一バイトのダミーデータ(“FF FF FF FFFF FF”(h))を、MISOを介して外部装置DEへ送信する。その後、
図5(B)のCase1に示すように、ステップS3において、セキュアエレメントSEは、SW1及びSW2の2バイトで構成されるレスポンスAPDUを含むSPIレスポンスを、MISOを介して外部装置DEへ送信する。この間、外部装置DEは、SPIレスポンスと同一バイトのダミーデータ(“FF FF FF FF FF”(h))を、MOSIを介してセキュアエレメントSEへ送信する。
【0037】
別の例として、
図5(A)に示す動作において、SPIコマンドでコマンドAPDUを送信する場合、
図5(B)のCase2に示すように、ステップS1において、外部装置DEは、CLA、INS、P1、P2、及びLeの5バイトで構成されるコマンドAPDUを含むSPIコマンドを、MOSIを介してセキュアエレメントSEへ送信する。この間、セキュアエレメントSEは、SPIコマンドと同一バイトのダミーデータを、MISOを介して外部装置DEへ送信する。その後、
図5(B)のCase2に示すように、ステップS3において、セキュアエレメントSEは、DATA、SW1及びSW2の所定バイトで構成されるレスポンスAPDUを含むSPIレスポンスを、MISOを介して外部装置DEへ送信する。この間、外部装置DEは、SPIレスポンスと同一バイトのダミーデータを、MOSIを介してセキュアエレメントSEへ送信する。
【0038】
更に別の例として、
図5(A)に示す動作において、SPIコマンドでコマンドAPDUを送信する場合、
図5(B)のCase3に示すように、ステップS1において、外部装置DEは、CLA、INS、P1、P2、Lc及びDataの所定バイトで構成されるコマンドAPDUを含むSPIコマンドを、MOSIを介してセキュアエレメントSEへ送信する。この間、セキュアエレメントSEは、SPIコマンドと同一バイトのダミーデータを、MISOを介して外部装置DEへ送信する。その後、
図5(B)のCase3に示すように、ステップS3において、セキュアエレメントSEは、SW1及びSW2の2バイトで構成されるレスポンスAPDUを含むSPIレスポンスを、MISOを介して外部装置DEへ送信する。この間、外部装置DEは、SPIレスポンスと同一バイトのダミーデータを、MOSIを介してセキュアエレメントSEへ送信する。
【0039】
更に別の例として、
図5(A)に示す動作において、SPIコマンドでコマンドAPDUを送信する場合、
図5(B)のCase4に示すように、ステップS1において、外部装置DEは、CLA、INS、P1、P2、Lc、Data、及びLeの所定バイトで構成されるコマンドAPDUを含むSPIコマンドを、MOSIを介してセキュアエレメントSEへ送信する。この間、セキュアエレメントSEは、SPIコマンドと同一バイトのダミーデータを、MISOを介して外部装置DEへ送信する。その後、
図5(B)のCase4に示すように、ステップS3において、セキュアエレメントSEは、DATA、SW1及びSW2の所定バイトで構成されるレスポンスAPDUを含むSPIレスポンスを、MISOを介して外部装置DEへ送信する。この間、外部装置DEは、SPIレスポンスと同一バイトのダミーデータを、MOSIを介してセキュアエレメントSEへ送信する。
【0040】
一方、
図5(A)に示す動作において、SPIコマンドでコールドリセットを送信する場合、
図5(C)に示すように、ステップS1において、外部装置DEは、コールドリセット(“F000”(h))を含むSPIコマンドを、MOSIを介してセキュアエレメントSEへ送信する。この間、セキュアエレメントSEは、SPIコマンドと同一バイトのダミーデータを、MISOを介して外部装置DEへ送信する。その後、
図5(C)に示すように、ステップS3において、セキュアエレメントSEは、正常終了(“90”(h))を示すSPIステータスデータ(SS)を含むSPIレスポンスを、MISOを介して外部装置DEへ送信する。この間、外部装置DEは、SPIレスポンスと同一バイトのダミーデータを、MOSIを介してセキュアエレメントSEへ送信する。
【0041】
次に、
図6を参照して、外部装置DEのセキュアエレメントSEとの通信において、送受信されるデータをチェイングする場合の動作について説明する。
図6(A)は、マスターからスレーブへ送信されるデータをチェイニングする場合の動作を示す図であり、
図6(B)は、スレーブからマスターへ送信されるデータをチェイニングする場合の動作を示す図である。
【0042】
図6(A)に示す動作の場合、ステップS1において、外部装置DEは、「チェイニング中(後続データあり)」(“#1”)を含むプロトコル選択データ(PS)と、コマンドAPDU(Data1を含む)とを含むSPIコマンドを、MOSIを介してセキュアエレメントSEへ送信する。その後、
図6(A)に示すように、ステップS3において、セキュアエレメントSEは、「チェイニングの後続データを要求」(“70”)を示すSPIステータスデータ(SS)を含むSPIレスポンスを、MISOを介して外部装置DEへ送信する。なお、
図6(A)のステップS3に示すように、チェイニング中、SPIレスポンスには、送信開始データ(TS)及びSPIレスポンス長データ(Lf)が含まれなくともよい。そして、ステップS4において、外部装置DEは、セキュアエレメントSEからの上記要求に応じて、「チェイニングの最後のデータ」(“#0”)を含むプロトコル選択データと、コマンドAPDU(Data2(後続データ)を含む)とを含むSPIコマンドを、MOSIを介してセキュアエレメントSEへ送信する。
【0043】
一方、
図6(B)に示す動作の場合、ステップS2において、セキュアエレメントSEは、外部装置DEからのSPIコマンドに応じて処理を行い、ステップS3において、「チェイニングの後続データあり」(“62”(h))を示すSPIステータスデータ(SS)と、レスポンスAPDU(DATA1を含む)とを含むSPIレスポンスを、MISOを介して外部装置DEへ送信する。その後、
図6(B)に示すように、ステップS5において、外部装置DEは、「チェイニングの後続データを要求」(“#2”)を含むプロトコル選択データ(PS)を含むSPIコマンドを、MOSIを介してセキュアエレメントSEへ送信する。そして、ステップS7において、セキュアエレメントSEは、外部装置DEからの上記要求に応じて、レスポンスAPDU(DATA2(後続データ)を含む)を含むSPIレスポンスを、MISOを介して外部装置DEへ送信する。
【0044】
次に、
図7を参照して、セキュアエレメントSEによりSPIコマンドが受信されたときのCPU1の処理について説明する。
図7は、セキュアエレメントSEによりSPIコマンドが受信されたときのCPU1の処理を示すフローチャートである。
図7に示す処理は、外部装置DEからのSPIコマンドが受信されたときに開始される。
【0045】
図7に示すステップS11では、CPU1は、受信されたSPIコマンド中のプロトコル選択データまたはSPIコマンド長データに基づいて、上述したように、ICカード用の通信プロトコルに応じたデータを解釈する。
【0046】
次いで、CPU1は、ステップS11で解釈したデータが、コールドリセットであるか否かを判定する(ステップS12)。CPU1は、ステップS11で解釈したデータが、コールドリセットであると判定した場合(ステップS12:YES)、ステップS13へ進む。一方、CPU1は、ステップS11で解釈したデータが、コールドリセットでないと判定した場合(ステップS12:NO)、ステップS15へ進む。
【0047】
ステップS13では、CPU1は、コールドリセットに応じた処理を行って、ステップS14へ進む。コールドリセットに応じた処理では、メモリの初期化、及びデータの破損がないかどうかのチェックなどが行われる。ステップS14では、CPU1は、SPIステータスデータを含むSPIレスポンスをMISOを介して外部装置DEへ送信し、処理を終了する。
【0048】
一方、ステップS15では、ステップS11で解釈したデータが、ウォームリセットであるか否かを判定する。CPU1は、ステップS11で解釈したデータが、ウォームリセットであると判定した場合(ステップS15:YES)、ステップS16へ進む。一方、CPU1は、ステップS11で解釈したデータが、ウォームリセットでないと判定した場合(ステップS15:NO)、ステップS18へ進む。
【0049】
ステップS16では、CPU1は、ウォームリセットに応じた処理を行って、ステップS17へ進む。ウォームリセットに応じた処理では、メモリの初期化、及びデータの破損がないかどうかのチェックなどが行われる。さらに、ウォームリセットに応じた処理では、ウォームリセット前の状態の解析が行われる場合がある。ウォームリセットは、コールドリセットと異なり、電源が落ちていないことから、ウォームリセット前の状態が一部保存されていることがある。例えば、エラーで終了してからウォームリセットが行われた場合、そのエラーの原因がメモリ(例えばRAM)やレジスタに残っていることがある。そのため、ウォームリセットに応じた処理では、当該ウォームリセット後にメモリやレジスタに残っている値に基づいてエラーの原因が解析される。なお、コールドリセットの場合はメモリやレジスタの値は消えているので、上記解析ができない。ステップS17では、CPU1は、SPIステータスデータを含むSPIレスポンスをMISOを介して外部装置DEへ送信し、処理を終了する。
【0050】
一方、ステップS18では、ステップS11で解釈したデータが、コマンドAPDUであるか否かを判定する。CPU1は、ステップS11で解釈したデータが、コマンドAPDUであると判定した場合(ステップS18:YES)、ステップS19へ進む。一方、CPU1は、ステップS11で解釈したデータが、コマンドAPDUでないと判定した場合(ステップS18:NO)、ステップS21へ進む。ステップS21では、CPU1は、エラー処理(例えば、セキュアエレメントSEの停止)を行う。
【0051】
ステップS19では、CPU1は、コマンドAPDUに応じた処理を行って、ステップS20へ進む。ステップS20では、CPU1は、レスポンスAPDUと、SPIステータスデータとを含むSPIレスポンスをMISOを介して外部装置DEへ送信し、処理を終了する。
【0052】
以上説明したように、セキュアエレメントSEは、外部装置DEからSPIを介して送信されたSPIコマンドを受信し、当該受信されたSPIコマンドに基づいて、当該ICカード用の通信プロトコルに応じたデータを解釈し、当該解釈したデータに応じた処理を行ってSPIを介してSPIレスポンスを外部装置DEへ送信するように構成したので、広く普及しているICカード用の通信プロトコルを維持しつつ、SPIを基盤として動作させる新たな通信プロトコルを実現することができる。
【0053】
なお、上記実施形態においては、シリアル通信インターフェイスとしてSPIを例にとって説明したがI
2C(Inter-Integrated Circuit)を適用してもよい。この場合のセキュアエレメントSEのI/O回路5は、SDA(Serial Data)、及びSCLK(Serial Clock)の2つの信号線等を備える。そして、セキュアエレメントSEは、外部装置DEからI
2C(SDA)を介して送信されたI
2Cコマンドを受信し、当該受信されたI
2Cコマンドに基づいて、当該ICカード用の通信プロトコルに応じたデータを解釈し、当該解釈したデータに応じた処理を行ってI
2C(SDA)を介してI
2Cレスポンスを外部装置DEへ送信する。なお、I
2Cコマンドのデータ構造は、SPIコマンドと同様である。I
2Cレスポンスのデータ構造は、SPIレスポンスと同様である。