(57)【要約】【課題】広く普及しているＩＣカード用の通信プロトコルを維持しつつ、シリアル通信インターフェイスを基盤として動作させる新たな通信プロトコルを実現することが可能な電子情報記憶装置、データ処理方法、及びデータ処理プログラムを提供する。【解決手段】セキュアエレメントＳＥは、外部装置ＤＥからＳＰＩを介して送信されたＳＰＩコマンドを受信し、当該受信されたＳＰＩコマンドに基づいて、当該ＩＣカード用の通信プロトコルに応じたデータを解釈し、当該解釈したデータに応じた処理を行ってＳＰＩを介してＳＰＩレスポンスを外部装置ＤＥへ送信する。【選択図】図７
2018088156.tif 000002
【特許請求の範囲】
【請求項１】
外部装置との間で通信を行う電子情報記憶装置であって、
前記外部装置からシリアル通信インターフェイスを介して送信されたコマンドデータであって、ＩＣカード用の通信プロトコルに応じたデータを含み、且つ、前記ＩＣカード用の通信プロトコルの種別を示すデータと前記通信プロトコルに応じたデータの長さを示すデータとの少なくとも何れか一方のデータを含む前記コマンドデータを受信する受信手段と、
前記受信手段により受信された前記コマンドデータ中の前記通信プロトコルの種別を示すデータまたは前記通信プロトコルに応じたデータの長さを示すデータに基づいて、ＩＣカード用の通信プロトコルに応じたデータを解釈し、当該解釈したデータに応じた処理を行ってレスポンスデータを前記シリアル通信インターフェイスを介して前記外部装置へ送信する応答手段と、
を備えることを特徴とする電子情報記憶装置。
【請求項２】
前記シリアル通信インターフェイスは、ＳＰＩ（Serial Peripheral Interface）であることを特徴とする請求項１に記載の電子情報記憶装置。
【請求項３】
前記ＩＣカード用の通信プロトコルがＡＰＤＵ（Application Protocol Data Unit）プロトコルである場合、前記応答手段は、前記ＩＣカード用の通信プロトコルに応じたデータがコマンドＡＰＤＵであると解釈し、当該解釈したコマンドＡＰＤＵに応じた処理を行うことを特徴とする請求項１または２に記載の電子情報記憶装置。
【請求項４】
前記ＩＣカード用の通信プロトコルがリセット制御プロトコルである場合、前記応答手段は、前記ＩＣカード用の通信プロトコルに応じたデータがリセットであると解釈し、当該解釈したリセットに応じた処理を行うことを特徴とする請求項１または２に記載の電子情報記憶装置。
【請求項５】
外部装置との間で通信を行う電子情報記憶装置が備えるプロセッサにより実行されるデータ処理方法であって、
前記外部装置からシリアル通信インターフェイスを介して送信されたコマンドデータであって、ＩＣカード用の通信プロトコルに応じたデータを含み、且つ、前記ＩＣカード用の通信プロトコルの種別を示すデータと前記通信プロトコルに応じたデータの長さを示すデータとの少なくとも何れか一方のデータを含む前記コマンドデータを受信するステップと、
前記受信された前記コマンドデータ中の前記通信プロトコルの種別を示すデータまたは前記通信プロトコルに応じたデータの長さを示すデータに基づいて、ＩＣカード用の通信プロトコルに応じたデータを解釈し、当該解釈したデータに応じた処理を行ってレスポンスデータを前記シリアル通信インターフェイスを介して前記外部装置へ送信するステップと、
を含むことを特徴とするデータ処理方法。
【請求項６】
外部装置との間で通信を行う電子情報記憶装置が備えるプロセッサに、
前記外部装置からシリアル通信インターフェイスを介して送信されたコマンドデータであって、ＩＣカード用の通信プロトコルに応じたデータを含み、且つ、前記ＩＣカード用の通信プロトコルの種別を示すデータと前記通信プロトコルに応じたデータの長さを示すデータとの少なくとも何れか一方のデータを含む前記コマンドデータを受信するステップと、
前記受信された前記コマンドデータ中の前記通信プロトコルの種別を示すデータまたは前記通信プロトコルに応じたデータの長さを示すデータに基づいて、ＩＣカード用の通信プロトコルに応じたデータを解釈し、当該解釈したデータに応じた処理を行ってレスポンスデータを前記シリアル通信インターフェイスを介して前記外部装置へ送信するステップと、
を実行させることを特徴とするデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
外部装置との間で通信を行うＩＣカード等の技術分野に関する。
【背景技術】
【０００２】
従来から、セキュリティデバイスの一例として、ＩＣ（Integrated Circuit）カードが知られている。例えば、特許文献１には、セキュリティーレベルの異なるマルチファンクションを拡張可能なＩＣカードが提案されている。このＩＣカードには、メモリカードユニットとＳＩＭカードユニットを夫々コネクタ端子の所定の端子に専用的に接続して搭載することでマルチファンクション機能を実現している。しかし、このＩＣカードは、メモリカードユニットとＳＩＭカードユニットとの２つのメモリユニットを搭載しなければならないことから、広く普及させるという点では問題がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４７６１４７９号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一方、従来から、通信インターフェイス及び通信プロトコル等に関してISO7816等の規格に準拠するＩＣカードが広く普及している。このＩＣカードは、耐タンパ性を有するデバイスとして、高いセキュリティを誇っている。しかしながら、今後、このＩＣカードを、より幅広い用途で利用できるようにするためには、上記のように、広く普及しているＩＣカード用の通信プロトコルを維持しつつ、例えば広く利用されているＳＰＩ（Serial Peripheral Interface）等のシリアル通信インターフェイスを基盤として動作させる新たな通信プロトコルが望まれる。
【０００５】
そこで、本発明は、このような点に鑑みてなされたものであり、広く普及しているＩＣカード用の通信プロトコルを維持しつつ、シリアル通信インターフェイスを基盤として動作させる新たな通信プロトコルを実現することが可能な電子情報記憶装置、データ処理方法、及びデータ処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、請求項１に記載の発明は、外部装置との間で通信を行う電子情報記憶装置であって、前記外部装置からシリアル通信インターフェイスを介して送信されたコマンドデータであって、ＩＣカード用の通信プロトコルに応じたデータを含み、且つ、前記ＩＣカード用の通信プロトコルの種別を示すデータと前記通信プロトコルに応じたデータの長さを示すデータとの少なくとも何れか一方のデータを含む前記コマンドデータを受信する受信手段と、前記受信手段により受信された前記コマンドデータ中の前記通信プロトコルの種別を示すデータまたは前記通信プロトコルに応じたデータの長さを示すデータに基づいて、ＩＣカード用の通信プロトコルに応じたデータを解釈し、当該解釈したデータに応じた処理を行ってレスポンスデータを前記シリアル通信インターフェイスを介して前記外部装置へ送信する応答手段と、を備える。
【０００７】
請求項２に記載の発明は、請求項１に記載の電子情報記憶装置において、前記シリアル通信インターフェイスは、ＳＰＩ（Serial Peripheral Interface）であることを特徴とする。
【０００８】
請求項３に記載の発明は、請求項１または２に記載の電子情報記憶装置において、前記ＩＣカード用の通信プロトコルがＡＰＤＵ（Application Protocol Data Unit）プロトコルである場合、前記応答手段は、前記ＩＣカード用の通信プロトコルに応じたデータがコマンドＡＰＤＵであると解釈し、当該解釈したコマンドＡＰＤＵに応じた処理を行うことを特徴とする。
【０００９】
請求項４に記載の発明は、請求項１または２に記載の電子情報記憶装置において、前記ＩＣカード用の通信プロトコルがリセット制御プロトコルである場合、前記応答手段は、前記ＩＣカード用の通信プロトコルに応じたデータがリセットであると解釈し、当該解釈したリセットに応じた処理を行うことを特徴とする。
【００１０】
請求項５に記載の発明は、外部装置との間で通信を行う電子情報記憶装置が備えるプロセッサにより実行されるデータ処理方法であって、前記外部装置からシリアル通信インターフェイスを介して送信されたコマンドデータであって、ＩＣカード用の通信プロトコルに応じたデータを含み、且つ、前記ＩＣカード用の通信プロトコルの種別を示すデータと前記通信プロトコルに応じたデータの長さを示すデータとの少なくとも何れか一方のデータを含む前記コマンドデータを受信するステップと、前記受信された前記コマンドデータ中の前記通信プロトコルの種別を示すデータまたは前記通信プロトコルに応じたデータの長さを示すデータに基づいて、ＩＣカード用の通信プロトコルに応じたデータを解釈し、当該解釈したデータに応じた処理を行ってレスポンスデータを前記シリアル通信インターフェイスを介して前記外部装置へ送信するステップと、を含むことを特徴とする。
【００１１】
請求項６に記載の発明は、外部装置との間で通信を行う電子情報記憶装置が備えるプロセッサに、前記外部装置からシリアル通信インターフェイスを介して送信されたコマンドデータであって、ＩＣカード用の通信プロトコルに応じたデータを含み、且つ、前記ＩＣカード用の通信プロトコルの種別を示すデータと前記通信プロトコルに応じたデータの長さを示すデータとの少なくとも何れか一方のデータを含む前記コマンドデータを受信するステップと、前記受信された前記コマンドデータ中の前記通信プロトコルの種別を示すデータまたは前記通信プロトコルに応じたデータの長さを示すデータに基づいて、ＩＣカード用の通信プロトコルに応じたデータを解釈し、当該解釈したデータに応じた処理を行ってレスポンスデータを前記シリアル通信インターフェイスを介して前記外部装置へ送信するステップと、を実行させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、広く普及しているＩＣカード用の通信プロトコルを維持しつつ、シリアル通信インターフェイスを基盤として動作させる新たな通信プロトコルを実現することができる。
【図面の簡単な説明】
【００１３】
【図１】従来のＩＣカードと、本実施形態に係るセキュアエレメントＳＥとの通信インターフェイス及び通信プロトコルの一例を階層別に示す概念図である。
【図２】（Ａ）は、セキュアエレメントＳＥのハードウェア構成例を示す図であり、（Ｂ）は、外部装置ＤＥとセキュアエレメントＳＥとの間でやりとりされる信号の動きの一例を示す図である。
【図３】（Ａ）は、ＳＰＩコマンドのデータ構造の一例を示す図であり、（Ｂ）は、ＳＰＩコマンドの構成要素の詳細を示す図であり、（Ｃ）は、プロトコル選択データの具体例を示す図である。
【図４】（Ａ）は、ＳＰＩレスポンスのデータ構造の一例を示す図であり、（Ｂ）は、ＳＰＩレスポンスの構成要素の詳細を示す図であり、（Ｃ）は、ＳＰＩステータスデータの具体例を示す図である。
【図５】（Ａ）は、ＳＰＩコマンド送信（マスターから送信）からＳＰＩレスポンス受信（マスターが受信）までの動作を示す図であり、（Ｂ）は、（Ａ）に示す動作において、ＳＰＩコマンドでコマンドＡＰＤＵを送信する場合の例を、Case1〜Case4に分けて示す図であり、（Ｃ）は、（Ａ）に示す動作において、ＳＰＩコマンドでコールドリセットを送信する場合の例を示す図である。
【図６】（Ａ）は、マスターからスレーブへ送信されるデータをチェイニングする場合の動作を示す図であり、（Ｂ）は、スレーブからマスターへ送信されるデータをチェイニングする場合の動作を示す図である。
【図７】セキュアエレメントＳＥによりＳＰＩコマンドが受信されたときのＣＰＵ１の処理を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、セキュアエレメント（Secure Element）に対して本発明を適用した場合の実施の形態である。セキュアエレメントは、本発明の電子情報記憶装置の一例であり、外部装置との間で通信を行う。
【００１５】
［１．セキュアエレメントＳＥの通信インターフェイス及び通信プロトコル］
先ず、図１を参照して、本実施形態に係るセキュアエレメントＳＥの通信インターフェイス及び通信プロトコルについて、従来のＩＣカードと比較しつつ説明する。図１は、従来のＩＣカードと、本実施形態に係るセキュアエレメントＳＥとの通信インターフェイス及び通信プロトコルの一例を階層別に示す概念図である。図１に示すように、従来のＩＣカードの下層（物理層）では、ISO7816のＩ／Ｆが用いられる一方、本実施形態に係るセキュアエレメントＳＥの下層（物理層）では、ＳＰＩ（Serial Peripheral Interface）が用いられる。ここで、ISO7816のＩ／Ｆは、ISO7816-2で定義される通信インターフェイス（Ｃ１〜Ｃ８の８個の端子を利用した通信インターフェイス）である。また、ＳＰＩは、シリアル通信インターフェイス（シリアル通信バスともいう）の一例である。なお、シリアル通信インターフェイスの別の例として、Ｉ2Ｃ（Inter-Integrated Circuit）がある。また、従来のＩＣカードの中層では、ＴＰＤＵ（Transmission Protocol Data Unit）プロトコル（例えば、Ｔ＝０またはＴ＝１）が用いられる一方、本実施形態に係るセキュアエレメントＳＥの中層では、本実施形態に係る新規通信プロトコル（つまり、ＳＰＩを用いた新規通信プロトコル）が用いられる。ＴＰＤＵプロトコルは、ISO7816-3で定義されるＴＰＤＵを送受信するためのプロトコルである。また、従来のＩＣカード及び本実施形態に係るセキュアエレメントＳＥの上層（アプリケーション層）は、ともに、ＡＰＤＵ（Application Protocol Data Unit）プロトコルが用いられる。ＡＰＤＵプロトコルは、ISO7816-3で定義されるＡＰＤＵを送受信するためのプロトコルである。本実施形態では、ＳＰＩを用いた新規通信プロトコルを用いてＡＰＤＵが送受信される。なお、ＴＰＤＵプロトコル及びＡＰＤＵプロトコルは、ＩＣカード用の通信プロトコルの一例である。
【００１６】
［２．セキュアエレメントＳＥの構成及び機能］
次に、図２（Ａ）等を参照して、本実施形態に係るセキュアエレメントＳＥの構成及び機能について説明する。図２（Ａ）は、セキュアエレメントＳＥのハードウェア構成例を示す図である。図２（Ａ）に示すように、セキュアエレメントＳＥは、ＣＰＵ（Central Processing Unit）１、ＲＡＭ（Random Access Memory）２、ＲＯＭ（Read Only Memory）３、不揮発性メモリ４、及びＩ／Ｏ回路５等を備えて構成される。ＣＰＵ１は、ＲＯＭ３または不揮発性メモリ４に記憶された各種プログラムを実行するプロセッサ（コンピュータ）である。ＲＡＭ２は、作業用メモリとして利用される。不揮発性メモリ４には、例えばフラッシュメモリが適用される。なお、不揮発性メモリ４は、「Electrically Erasable Programmable Read-Only Memory」であってもよい。また、不揮発性メモリ４に記憶される各種プログラム及びデータの一部は、ＲＯＭ３に記憶されてもよい。ＲＯＭ３または不揮発性メモリ４との何れかに記憶されるプログラムには、従来のＩＣカード（ＩＣチップ）にインストールされるオペレーティングシステム（Operating System）及びアプリケーションプログラム、並びに、本発明のデータ処理プログラム等が含まれる。ＣＰＵ１は、本発明のデータ処理プログラムに従って、本発明の受信手段及び応答手段として機能する。なお、本発明のデータ処理プログラムは、ＯＳに組み込まれてもよいし、或いは、ＯＳとは独立したミドルウェアとしてインストールされてもよい。
【００１７】
Ｉ／Ｏ回路５は、外部装置ＤＥ（例えば、リーダライタ等の端末）との間の通信インターフェイスを担う。この通信インターフェイスは、上述したＳＰＩであり、同時に双方向の通信を行う全二重シリアル通信プロトコルを採用する。なお、外部装置ＤＥはマスター（Master）として機能し、セキュアエレメントＳＥはスレーブ（Slave）として機能する。Ｉ／Ｏ回路５は、送受信されるデータを蓄積するためのシフトレジスタ、及び４つの信号線等を備える。４つの信号線とは、ＳＣＬＫ（Serial Clock）、ＭＯＳＩ（Master-Out Slave-In）、ＭＩＳＯ（Master-In Slave-Out）、及びＳＬＳ（SLave Select）である。なお、シフトレジスタ、ＳＣＬＫ、ＭＯＳＩ 、ＭＩＳＯ、及びＳＬＳは、マスターとしての外部装置ＤＥにも備えられる。Ｉ／Ｏ回路５のＳＣＬＫの端部（接触部）と、外部装置ＤＥのＳＣＬＫの端部とは、直接的にまたは外部信号線を介して接続される。また、Ｉ／Ｏ回路５のＭＯＳＩの端部と、外部装置ＤＥのＭＯＳＩの端部とは、直接的にまたは外部信号線を介して接続される。また、Ｉ／Ｏ回路５のＭＩＳＯの端部と、外部装置ＤＥのＭＩＳＯの端部とは、直接的にまたは外部信号線を介して接続される。また、Ｉ／Ｏ回路５のＳＬＳの端部と、外部装置ＤＥのＳＬＳの端部とは、直接的にまたは外部信号線を介して接続される。
【００１８】
図２（Ｂ）は、外部装置ＤＥとセキュアエレメントＳＥとの間でやりとりされる信号の動きの一例を示す図である。図２（Ｂ）の例において、外部装置ＤＥがＳＬＳを例えばローアクティブにすることで通信が開始される。なお、ＳＰＩは、複数のスレーブを持つことが可能であるが、本実施形態では、１対１の通信を例にとるものとする。外部装置ＤＥのクロック生成器により生成されたクロック信号（同期信号）は、ＳＣＬＫを介して外部装置ＤＥからセキュアエレメントＳＥへ送信される。外部装置ＤＥのシフトレジスタにセットされたデータ（コマンドデータ）が、上記クロック信号に従って１ビットずつシフトされながらＭＯＳＩを介して外部装置ＤＥからセキュアエレメントＳＥへ送信され、且つ、当該データの送信中、ＭＩＳＯを介してセキュアエレメントＳＥから外部装置ＤＥへダミーデータ（例えば、Ｆ(h)が連続するデータ）が送信される。一方、セキュアエレメントＳＥのシフトレジスタにセットされたデータ（レスポンスデータ）が、上記クロック信号に従って１ビットずつシフトされながらＭＩＳＯを介してセキュアエレメントＳＥから外部装置ＤＥへ送信され、且つ、当該データの送信中、ＭＯＳＩを介して外部装置ＤＥからセキュアエレメントＳＥへダミーデータが送信される。
【００１９】
セキュアエレメントＳＥは、外部装置ＤＥからＳＰＩを介して送信されたコマンドデータ（以下、「ＳＰＩコマンド」という）を受信し、当該受信されたＳＰＩコマンドに基づいて、当該ＩＣカード用の通信プロトコルに応じたデータを解釈し、当該解釈したデータに応じた処理を行ってＳＰＩを介してレスポンスデータ（以下、「ＳＰＩレスポンス」という）を外部装置ＤＥへ送信する。
【００２０】
ここで、図３を参照して、本実施形態に係る新規通信プロトコルで規定するＳＰＩコマンドのデータ構造について説明する。図３（Ａ）は、ＳＰＩコマンドのデータ構造の一例を示す図であり、図３（Ｂ）は、ＳＰＩコマンドの構成要素の詳細を示す図である。なお、図３（Ｂ）において、“＃”は、“０”〜“Ｆ” (h)までの何れかの値であることを示す。図３（Ａ）に示すように、ＳＰＩコマンドは、プロトコル選択データ（ＰＳ）、ＳＰＩコマンド長データ（Ｌｆ）、及びＩＣカード用の通信プロトコルに応じたデータを含んで構成される。プロトコル選択データは、ＩＣカード用の通信プロトコルの種別を示すデータであり、プロトコル選択バイトともいう。プロトコル選択データは、図３（Ａ）,（Ｂ）に示すように、ＳＰＩコマンドの先頭の１バイト（８ビット）に割り当てられる。プロトコル選択データにより、通信プロトコルの種別を指定することができる。
【００２１】
図３（Ｃ）は、プロトコル選択データの具体例を示す図である。なお、図３（Ｃ）において、“＊”は、“０”または“１”の値であることを示す。図３（Ｃ）の例では、指定可能な通信プロトコルの種別として、ＡＰＤＵプロトコル、及びＳＥ制御プロトコル（リセット制御プロトコル）が示されている。なお、プロトコル選択データでは、図３（Ｃ）に示すように、チェイニングなし（またはチェイニングの最後のデータ）、チェイング中（後続データあり）、または、チェイニングの後続データを要求、を指定することもできる。チェイニングとは、１塊のデータを複数のＳＰＩコマンドまたはＳＰＩレスポンスにより続けて送受信する仕組みをいう。これにより、１度に（つまり、１つのＳＰＩコマンドまたはＳＰＩレスポンスで）送受信可能なデータの最大長が定められている場合であっても、当該最大長を超えるデータのやり取りを行うことができる。
【００２２】
一方、ＳＰＩコマンド長データは、ＩＣカード用の通信プロトコルに応じたデータの長さ（例えばバイト数）を示すデータであり、ＳＰＩコマンド長バイトともいう。ＳＰＩコマンド長データは、図３（Ａ）,（Ｂ）に示すように、プロトコル選択データの次の１バイトに割り当てられる。なお、ＳＰＩコマンドには、プロトコル選択データとＳＰＩコマンド長データとの何れか一方が含まれるように構成してもよい。
【００２３】
ＩＣカード用の通信プロトコルに応じたデータは、プロトコル選択データにより指定された通信プロトコルに応じたデータであり、これには、ＡＰＤＵプロトコルに応じたデータ、ＴＰＤＵプロトコルに応じたデータ、及びＳＥ制御プロトコルに応じたデータなどがある。図３（Ａ）の例では、ＡＰＤＵプロトコルに応じたデータとして、ISO7816-3で定義されるコマンドＡＰＤＵが示されている。コマンドＡＰＤＵは、例えば、ＣＬＡ、ＩＮＳ、Ｐ１及びＰ２から構成（ヘッダだけで構成）される（Case1）。ここで、ＣＬＡはコマンドクラス（命令クラス）を示し、ＩＮＳはコマンドコード（命令コード）を示し、Ｐ１及びＰ２はコマンドパラメータ（命令パラメータ）を示す。なお、この場合のコマンドＡＰＤＵは、最小単位であり、ＣＬＡ、ＩＮＳ、Ｐ１及びＰ２のそれぞれが１バイトずつである計４バイトからなる。或いは、コマンドＡＰＤＵは、例えば、ＣＬＡ、ＩＮＳ、Ｐ１及びＰ２と（ヘッダと）、Ｌｅと（ボディと）から構成される（Case2）。ここで、ＬｅはレスポンスＡＰＤＵの最大長（最大サイズ）を示す。或いは、コマンドＡＰＤＵは、例えば、ＣＬＡ、ＩＮＳ、Ｐ１及びＰ２と（ヘッダと）、Ｌｃ及びＤａｔａと（ボディと）から構成される（Case3）。ここで、ＬｃはＤａｔａの長さを示し、ＤａｔａはセキュアエレメントＳＥで用いられる可変長のデータ（例えば不揮発性メモリ４に書き込まれるデータ）を示す。或いは、コマンドＡＰＤＵは、例えば、ＣＬＡ、ＩＮＳ、Ｐ１及びＰ２と（ヘッダと）、Ｌｃ、Ｄａｔａ及びＬｅと（ボディと）から構成される（Case4）。
【００２４】
なお、図示しないが、ＴＰＤＵプロトコルに応じたデータは、ISO7816-3で定義されるコマンドＴＰＤＵである。コマンドＴＰＤＵは、例えば、ＣＬＡ、ＩＮＳ、Ｐ１、Ｐ２、及びＰ３（＝０）から構成（ヘッダだけで構成）される（Case1）。或いは、コマンドＴＰＤＵは、例えば、ＣＬＡ、ＩＮＳ、Ｐ１、Ｐ２、及びＰ３（＝Ｌｅ）から構成（ヘッダだけで構成）される（Case2）。或いは、コマンドＴＰＤＵは、例えば、ＣＬＡ、ＩＮＳ、Ｐ１、Ｐ２、及びＰ３（＝Ｌｃ）と（ヘッダと）、Ｄａｔａと（ボディと）から構成される（Case3,Case4）。また、ＡＰＤＵプロトコルまたはＴＰＤＵプロトコルに応じたデータとして、コマンドＡＰＤＵまたはコマンドＴＰＤＵをカプセル化（例えば、コマンドＡＰＤＵまたはコマンドＴＰＤＵの前後に所定のデータを付加）したデータユニットであってもよい。
【００２５】
また、図３（Ａ）の例では、ＳＥ制御プロトコルに応じたデータとして、ＩＣカード用のリセットが示されている。ＩＣカード用のリセットには、コールドリセット（Cold Reset）と、ウォームリセット（Warm Reset）とがある。コールドリセットは、ＩＣカードが活性化された直後に実行されるリセットである。一方、ウォームリセットとは、コールドリセット以外の全てのリセット、つまり、電圧及びクロックが安定状態にあるときに実行されるリセットである。コールドリセットの場合、これを示す値として予め定められた例えば“Ｆ０００”(h)がＳＰＩコマンド内に記述される。一方、ウォームリセットの場合、これを示す値として予め定められた例えば“Ｆ００１”(h)がＳＰＩコマンド内に記述される。
【００２６】
上述したように、ＳＰＩコマンドによって、複数の通信プロトコルのうち何れかの通信プロトコルに応じたデータ（例えば、コマンドＡＰＤＵ、またはリセット）を外部装置ＤＥからセキュアエレメントＳＥへ送信することができる。
【００２７】
次に、図４を参照して、本実施形態に係る新規通信プロトコルで規定するＳＰＩレスポンスのデータ構造について説明する。図４（Ａ）は、ＳＰＩレスポンスのデータ構造の一例を示す図であり、図４（Ｂ）は、ＳＰＩレスポンスの構成要素の詳細を示す図である。図４（Ａ）に示すように、ＳＰＩレスポンスは、送信開始データ（ＴＳ）、ＳＰＩレスポンス長データ（Ｌｆ）、ＩＣカード用の通信プロトコルに応じたレスポンスデータ、及びＳＰＩステータスデータ（ＳＳ）を含んで構成される。送信開始データは、ＳＰＩレスポンスの送信開始を示すデータであり、送信開始バイトともいう。送信開始データは、図４（Ａ）,（Ｂ）に示すように、ＳＰＩレスポンスの先頭の１バイトに“００”(h)として割り当てられる。
【００２８】
ＳＰＩレスポンス長データは、後続データ（つまり、ＩＣカード用の通信プロトコルに応じたレスポンスデータ及びＳＰＩステータスデータ）の長さを示すデータであり、ＳＰＩレスポンス長バイトともいう。ＳＰＩレスポンス長データは、図４（Ａ）,（Ｂ）に示すように、送信開始データの次の１バイトに割り当てられる。
【００２９】
ＩＣカード用の通信プロトコルに応じたレスポンスデータには、例えば、ＡＰＤＵプロトコルに応じたレスポンスデータ、及びＴＰＤＵプロトコルに応じたレスポンスデータなどがある。図４（Ａ）の例では、ＡＰＤＵプロトコルに応じたレスポンスデータとして、ISO7816-3で定義されるレスポンスＡＰＤＵが示されている。レスポンスＡＰＤＵは、例えば、ＳＷ１及びＳＷ２から構成される（Case1,Case3）。ここで、ＳＷ１及びＳＷ２は、ステータスワードであり、コマンドＡＰＤＵに応じた処理状況（処理結果）を示す。ＳＷ１及びＳＷ２は、それぞれが１バイトずつである計２バイトからなる。例えば、ＳＷ１及びＳＷ２が“０００９”(h)である場合、正常終了を示し、ＳＷ１及びＳＷ２が“６５００”(h)である場合、メモリへの書き込み失敗を示す。或いは、レスポンスＡＰＤＵは、例えば、ＤＡＴＡ、ＳＷ１及びＳＷ２から構成される（Case2,Case4）。ここで、ＤＡＴＡは例えば処理結果としてのデータを示す。なお、図示しないが、ＴＰＤＵプロトコルに応じたレスポンスデータは、ISO7816-3で定義されるレスポンスＴＰＤＵである。レスポンスＴＰＤＵのデータ構造は、基本的には、レスポンスＡＰＤＵと同様である。
【００３０】
ＳＰＩステータスデータは、ＳＰＩコマンドに応じた処理状況（処理結果）を示すデータであり、ＳＰＩステータスバイトともいう。ＳＰＩステータスデータは、図４（Ａ）,（Ｂ）に示すように、レスポンスＡＰＤＵの次の１バイトに割り当てられる。図４（Ｃ）は、ＳＰＩステータスデータの具体例を示す図である。図４（Ｃ）の例では、ＳＰＩステータスデータが“９０”(h)である場合、正常終了を示し、ＳＰＩステータスデータが“６２”(h)である場合、チェイングの後続データがあることを示している。
【００３１】
なお、ＳＥ制御プロトコルを示すプロトコル選択データを含むＳＰＩコマンド（つまり、ＳＰＩコマンドにより特定されるリセット）に対するＳＰＩレスポンスには、ＳＥ制御プロトコルに応じたレスポンスデータ（例えば、ISO7816-3で定義されるＡＴＲ（Answer To Reset））が含まれない。これは、例えば、ISO7816-3で定義されるＡＴＲには、外部装置がＩＣカードとの間の通信設定（例えば、通信速度設定）を行うためのパラメータが含まれるが、このようなパラメータは、ＳＰＩを介した通信では必要ないからである。したがって、ＳＥ制御プロトコルを示すプロトコル選択データを含むＳＰＩコマンドに対するＳＰＩレスポンスは、送信開始データ、ＳＰＩレスポンス長データ（ＳＰＩステータスデータの長さを示す）、及びＳＰＩステータスデータから構成されることになる。
【００３２】
以上の構成により、例えば、ＣＰＵ１は、外部装置ＤＥからＳＰＩを介して受信されたＳＰＩコマンド中のプロトコル選択データに基づいて、ＩＣカード用の通信プロトコルに応じたデータを解釈する。例えば、ＩＣカード用の通信プロトコルがＡＰＤＵプロトコルである場合、ＣＰＵ１は、ＩＣカード用の通信プロトコルに応じたデータがコマンドＡＰＤＵであると解釈（つまり、当該プロトコル選択データが示すＡＰＤＵプロトコルから解釈）し、当該解釈したコマンドＡＰＤＵに応じた処理を行って、その処理結果を示すＳＰＩレスポンス（レスポンスＡＰＤＵを含む）をＳＰＩを介して外部装置ＤＥへ送信する。或いは、ＣＰＵ１は、ＩＣカード用の通信プロトコルがＳＥ制御プロトコルである場合、ＣＰＵ１は、ＩＣカード用の通信プロトコルに応じたデータがコールドリセット（またはウォームリセット）であると解釈（つまり、当該プロトコル選択データが示すＳＥ制御プロトコルから解釈）し、当該解釈したコールドリセット（またはウォームリセット）に応じた処理を行って、その処理結果を示すＳＰＩレスポンスをＳＰＩを介して外部装置ＤＥへ送信する。
【００３３】
別の例として、例えば、ＩＣカード用の通信プロトコルの種別が、ＡＰＤＵプロトコル（または、ＴＰＤＵプロトコル）と、ＳＥ制御プロトコルとの２種類である場合、ＣＰＵ１は、外部装置ＤＥからＳＰＩを介して受信されたＳＰＩコマンド中のＳＰＩコマンド長データに基づいて、ＩＣカード用の通信プロトコルに応じたデータを解釈してもよい。すなわち、ＣＰＵ１は、ＳＰＩコマンド中のＳＰＩコマンド長データが４バイト以上の長さを示す場合、ＩＣカード用の通信プロトコルに応じたデータがコマンドＡＰＤＵ（または、コマンドＴＰＤＵ）であると解釈する。一方、ＣＰＵ１は、ＳＰＩコマンド中のＳＰＩコマンド長データが２バイトの長さを示す場合、ＩＣカード用の通信プロトコルに応じたデータがコールドリセット（またはウォームリセット）であると解釈する。
【００３４】
［３．外部装置ＤＥのセキュアエレメントＳＥとの通信時の動作］
次に、図５を参照して、外部装置ＤＥのセキュアエレメントＳＥとの通信時の動作について説明する。図５（Ａ）は、ＳＰＩコマンド送信（マスターから送信）からＳＰＩレスポンス受信（マスターが受信）までの動作を示す図である。図５（Ｂ）は、図５（Ａ）に示す動作において、ＳＰＩコマンドでコマンドＡＰＤＵを送信する場合の例を、Case1〜Case4に分けて示す図であり、図５（Ｃ）は、図５（Ａ）に示す動作において、ＳＰＩコマンドでコールドリセットを送信する場合の例を示す図である。
【００３５】
図５（Ａ）に示すステップＳ１では、外部装置ＤＥが、ＭＯＳＩを介してＳＰＩコマンドをセキュアエレメントＳＥへ送信する一方、セキュアエレメントＳＥが、このＳＰＩコマンドの受信中、ＭＩＳＯを介してダミーデータを外部装置ＤＥへ送信する。次いで、図５（Ａ）に示すステップＳ２では、セキュアエレメントＳＥがＳＰＩコマンドに応じて処理（つまり、上述したように解釈したデータに応じた処理）を行うが、この処理中、外部装置ＤＥが、ＭＯＳＩを介してダミーデータをセキュアエレメントＳＥへ送信する一方、セキュアエレメントＳＥが、ＭＩＳＯを介してダミーデータを外部装置ＤＥへ送信する。次いで、図５（Ａ）に示すステップＳ３では、セキュアエレメントＳＥが、ＭＩＳＯを介してＳＰＩレスポンスを外部装置ＤＥへ送信する一方、外部装置ＤＥが、このＳＰＩレスポンスの受信中、ＭＯＳＩを介してダミーデータをセキュアエレメントＳＥへ送信する。
【００３６】
図５（Ａ）に示す動作において、ＳＰＩコマンドでコマンドＡＰＤＵを送信する場合、図５（Ｂ）のCase1に示すように、ステップＳ１において、外部装置ＤＥは、ＣＬＡ、ＩＮＳ、Ｐ１及びＰ２の４バイトで構成されるコマンドＡＰＤＵを含むＳＰＩコマンドを、ＭＯＳＩを介してセキュアエレメントＳＥへ送信する。この間、セキュアエレメントＳＥは、ＳＰＩコマンドと同一バイトのダミーデータ（“ＦＦ ＦＦ ＦＦ ＦＦＦＦ ＦＦ”(h)）を、ＭＩＳＯを介して外部装置ＤＥへ送信する。その後、図５（Ｂ）のCase1に示すように、ステップＳ３において、セキュアエレメントＳＥは、ＳＷ１及びＳＷ２の２バイトで構成されるレスポンスＡＰＤＵを含むＳＰＩレスポンスを、ＭＩＳＯを介して外部装置ＤＥへ送信する。この間、外部装置ＤＥは、ＳＰＩレスポンスと同一バイトのダミーデータ（“ＦＦ ＦＦ ＦＦ ＦＦ ＦＦ”(h)）を、ＭＯＳＩを介してセキュアエレメントＳＥへ送信する。
【００３７】
別の例として、図５（Ａ）に示す動作において、ＳＰＩコマンドでコマンドＡＰＤＵを送信する場合、図５（Ｂ）のCase2に示すように、ステップＳ１において、外部装置ＤＥは、ＣＬＡ、ＩＮＳ、Ｐ１、Ｐ２、及びＬｅの５バイトで構成されるコマンドＡＰＤＵを含むＳＰＩコマンドを、ＭＯＳＩを介してセキュアエレメントＳＥへ送信する。この間、セキュアエレメントＳＥは、ＳＰＩコマンドと同一バイトのダミーデータを、ＭＩＳＯを介して外部装置ＤＥへ送信する。その後、図５（Ｂ）のCase2に示すように、ステップＳ３において、セキュアエレメントＳＥは、ＤＡＴＡ、ＳＷ１及びＳＷ２の所定バイトで構成されるレスポンスＡＰＤＵを含むＳＰＩレスポンスを、ＭＩＳＯを介して外部装置ＤＥへ送信する。この間、外部装置ＤＥは、ＳＰＩレスポンスと同一バイトのダミーデータを、ＭＯＳＩを介してセキュアエレメントＳＥへ送信する。
【００３８】
更に別の例として、図５（Ａ）に示す動作において、ＳＰＩコマンドでコマンドＡＰＤＵを送信する場合、図５（Ｂ）のCase3に示すように、ステップＳ１において、外部装置ＤＥは、ＣＬＡ、ＩＮＳ、Ｐ１、Ｐ２、Ｌｃ及びＤａｔａの所定バイトで構成されるコマンドＡＰＤＵを含むＳＰＩコマンドを、ＭＯＳＩを介してセキュアエレメントＳＥへ送信する。この間、セキュアエレメントＳＥは、ＳＰＩコマンドと同一バイトのダミーデータを、ＭＩＳＯを介して外部装置ＤＥへ送信する。その後、図５（Ｂ）のCase3に示すように、ステップＳ３において、セキュアエレメントＳＥは、ＳＷ１及びＳＷ２の２バイトで構成されるレスポンスＡＰＤＵを含むＳＰＩレスポンスを、ＭＩＳＯを介して外部装置ＤＥへ送信する。この間、外部装置ＤＥは、ＳＰＩレスポンスと同一バイトのダミーデータを、ＭＯＳＩを介してセキュアエレメントＳＥへ送信する。
【００３９】
更に別の例として、図５（Ａ）に示す動作において、ＳＰＩコマンドでコマンドＡＰＤＵを送信する場合、図５（Ｂ）のCase4に示すように、ステップＳ１において、外部装置ＤＥは、ＣＬＡ、ＩＮＳ、Ｐ１、Ｐ２、Ｌｃ、Ｄａｔａ、及びＬｅの所定バイトで構成されるコマンドＡＰＤＵを含むＳＰＩコマンドを、ＭＯＳＩを介してセキュアエレメントＳＥへ送信する。この間、セキュアエレメントＳＥは、ＳＰＩコマンドと同一バイトのダミーデータを、ＭＩＳＯを介して外部装置ＤＥへ送信する。その後、図５（Ｂ）のCase4に示すように、ステップＳ３において、セキュアエレメントＳＥは、ＤＡＴＡ、ＳＷ１及びＳＷ２の所定バイトで構成されるレスポンスＡＰＤＵを含むＳＰＩレスポンスを、ＭＩＳＯを介して外部装置ＤＥへ送信する。この間、外部装置ＤＥは、ＳＰＩレスポンスと同一バイトのダミーデータを、ＭＯＳＩを介してセキュアエレメントＳＥへ送信する。
【００４０】
一方、図５（Ａ）に示す動作において、ＳＰＩコマンドでコールドリセットを送信する場合、図５（Ｃ）に示すように、ステップＳ１において、外部装置ＤＥは、コールドリセット（“Ｆ０００”(h)）を含むＳＰＩコマンドを、ＭＯＳＩを介してセキュアエレメントＳＥへ送信する。この間、セキュアエレメントＳＥは、ＳＰＩコマンドと同一バイトのダミーデータを、ＭＩＳＯを介して外部装置ＤＥへ送信する。その後、図５（Ｃ）に示すように、ステップＳ３において、セキュアエレメントＳＥは、正常終了（“９０”(h)）を示すＳＰＩステータスデータ（ＳＳ）を含むＳＰＩレスポンスを、ＭＩＳＯを介して外部装置ＤＥへ送信する。この間、外部装置ＤＥは、ＳＰＩレスポンスと同一バイトのダミーデータを、ＭＯＳＩを介してセキュアエレメントＳＥへ送信する。
【００４１】
次に、図６を参照して、外部装置ＤＥのセキュアエレメントＳＥとの通信において、送受信されるデータをチェイングする場合の動作について説明する。図６（Ａ）は、マスターからスレーブへ送信されるデータをチェイニングする場合の動作を示す図であり、図６（Ｂ）は、スレーブからマスターへ送信されるデータをチェイニングする場合の動作を示す図である。
【００４２】
図６（Ａ）に示す動作の場合、ステップＳ１において、外部装置ＤＥは、「チェイニング中（後続データあり）」（“＃１”）を含むプロトコル選択データ（ＰＳ）と、コマンドＡＰＤＵ（Ｄａｔａ１を含む）とを含むＳＰＩコマンドを、ＭＯＳＩを介してセキュアエレメントＳＥへ送信する。その後、図６（Ａ）に示すように、ステップＳ３において、セキュアエレメントＳＥは、「チェイニングの後続データを要求」（“７０”）を示すＳＰＩステータスデータ（ＳＳ）を含むＳＰＩレスポンスを、ＭＩＳＯを介して外部装置ＤＥへ送信する。なお、図６（Ａ）のステップＳ３に示すように、チェイニング中、ＳＰＩレスポンスには、送信開始データ（ＴＳ）及びＳＰＩレスポンス長データ（Ｌｆ）が含まれなくともよい。そして、ステップＳ４において、外部装置ＤＥは、セキュアエレメントＳＥからの上記要求に応じて、「チェイニングの最後のデータ」（“＃０”）を含むプロトコル選択データと、コマンドＡＰＤＵ（Ｄａｔａ２（後続データ）を含む）とを含むＳＰＩコマンドを、ＭＯＳＩを介してセキュアエレメントＳＥへ送信する。
【００４３】
一方、図６（Ｂ）に示す動作の場合、ステップＳ２において、セキュアエレメントＳＥは、外部装置ＤＥからのＳＰＩコマンドに応じて処理を行い、ステップＳ３において、「チェイニングの後続データあり」（“６２”(h)）を示すＳＰＩステータスデータ（ＳＳ）と、レスポンスＡＰＤＵ（ＤＡＴＡ１を含む）とを含むＳＰＩレスポンスを、ＭＩＳＯを介して外部装置ＤＥへ送信する。その後、図６（Ｂ）に示すように、ステップＳ５において、外部装置ＤＥは、「チェイニングの後続データを要求」（“＃２”）を含むプロトコル選択データ（ＰＳ）を含むＳＰＩコマンドを、ＭＯＳＩを介してセキュアエレメントＳＥへ送信する。そして、ステップＳ７において、セキュアエレメントＳＥは、外部装置ＤＥからの上記要求に応じて、レスポンスＡＰＤＵ（ＤＡＴＡ２（後続データ）を含む）を含むＳＰＩレスポンスを、ＭＩＳＯを介して外部装置ＤＥへ送信する。
【００４４】
次に、図７を参照して、セキュアエレメントＳＥによりＳＰＩコマンドが受信されたときのＣＰＵ１の処理について説明する。図７は、セキュアエレメントＳＥによりＳＰＩコマンドが受信されたときのＣＰＵ１の処理を示すフローチャートである。図７に示す処理は、外部装置ＤＥからのＳＰＩコマンドが受信されたときに開始される。
【００４５】
図７に示すステップＳ１１では、ＣＰＵ１は、受信されたＳＰＩコマンド中のプロトコル選択データまたはＳＰＩコマンド長データに基づいて、上述したように、ＩＣカード用の通信プロトコルに応じたデータを解釈する。
【００４６】
次いで、ＣＰＵ１は、ステップＳ１１で解釈したデータが、コールドリセットであるか否かを判定する（ステップＳ１２）。ＣＰＵ１は、ステップＳ１１で解釈したデータが、コールドリセットであると判定した場合（ステップＳ１２：ＹＥＳ）、ステップＳ１３へ進む。一方、ＣＰＵ１は、ステップＳ１１で解釈したデータが、コールドリセットでないと判定した場合（ステップＳ１２：ＮＯ）、ステップＳ１５へ進む。
【００４７】
ステップＳ１３では、ＣＰＵ１は、コールドリセットに応じた処理を行って、ステップＳ１４へ進む。コールドリセットに応じた処理では、メモリの初期化、及びデータの破損がないかどうかのチェックなどが行われる。ステップＳ１４では、ＣＰＵ１は、ＳＰＩステータスデータを含むＳＰＩレスポンスをＭＩＳＯを介して外部装置ＤＥへ送信し、処理を終了する。
【００４８】
一方、ステップＳ１５では、ステップＳ１１で解釈したデータが、ウォームリセットであるか否かを判定する。ＣＰＵ１は、ステップＳ１１で解釈したデータが、ウォームリセットであると判定した場合（ステップＳ１５：ＹＥＳ）、ステップＳ１６へ進む。一方、ＣＰＵ１は、ステップＳ１１で解釈したデータが、ウォームリセットでないと判定した場合（ステップＳ１５：ＮＯ）、ステップＳ１８へ進む。
【００４９】
ステップＳ１６では、ＣＰＵ１は、ウォームリセットに応じた処理を行って、ステップＳ１７へ進む。ウォームリセットに応じた処理では、メモリの初期化、及びデータの破損がないかどうかのチェックなどが行われる。さらに、ウォームリセットに応じた処理では、ウォームリセット前の状態の解析が行われる場合がある。ウォームリセットは、コールドリセットと異なり、電源が落ちていないことから、ウォームリセット前の状態が一部保存されていることがある。例えば、エラーで終了してからウォームリセットが行われた場合、そのエラーの原因がメモリ（例えばＲＡＭ）やレジスタに残っていることがある。そのため、ウォームリセットに応じた処理では、当該ウォームリセット後にメモリやレジスタに残っている値に基づいてエラーの原因が解析される。なお、コールドリセットの場合はメモリやレジスタの値は消えているので、上記解析ができない。ステップＳ１７では、ＣＰＵ１は、ＳＰＩステータスデータを含むＳＰＩレスポンスをＭＩＳＯを介して外部装置ＤＥへ送信し、処理を終了する。
【００５０】
一方、ステップＳ１８では、ステップＳ１１で解釈したデータが、コマンドＡＰＤＵであるか否かを判定する。ＣＰＵ１は、ステップＳ１１で解釈したデータが、コマンドＡＰＤＵであると判定した場合（ステップＳ１８：ＹＥＳ）、ステップＳ１９へ進む。一方、ＣＰＵ１は、ステップＳ１１で解釈したデータが、コマンドＡＰＤＵでないと判定した場合（ステップＳ１８：ＮＯ）、ステップＳ２１へ進む。ステップＳ２１では、ＣＰＵ１は、エラー処理（例えば、セキュアエレメントＳＥの停止）を行う。
【００５１】
ステップＳ１９では、ＣＰＵ１は、コマンドＡＰＤＵに応じた処理を行って、ステップＳ２０へ進む。ステップＳ２０では、ＣＰＵ１は、レスポンスＡＰＤＵと、ＳＰＩステータスデータとを含むＳＰＩレスポンスをＭＩＳＯを介して外部装置ＤＥへ送信し、処理を終了する。
【００５２】
以上説明したように、セキュアエレメントＳＥは、外部装置ＤＥからＳＰＩを介して送信されたＳＰＩコマンドを受信し、当該受信されたＳＰＩコマンドに基づいて、当該ＩＣカード用の通信プロトコルに応じたデータを解釈し、当該解釈したデータに応じた処理を行ってＳＰＩを介してＳＰＩレスポンスを外部装置ＤＥへ送信するように構成したので、広く普及しているＩＣカード用の通信プロトコルを維持しつつ、ＳＰＩを基盤として動作させる新たな通信プロトコルを実現することができる。
【００５３】
なお、上記実施形態においては、シリアル通信インターフェイスとしてＳＰＩを例にとって説明したがＩ2Ｃ（Inter-Integrated Circuit）を適用してもよい。この場合のセキュアエレメントＳＥのＩ／Ｏ回路５は、ＳＤＡ（Serial Data）、及びＳＣＬＫ（Serial Clock）の２つの信号線等を備える。そして、セキュアエレメントＳＥは、外部装置ＤＥからＩ2Ｃ（ＳＤＡ）を介して送信されたＩ2Ｃコマンドを受信し、当該受信されたＩ2Ｃコマンドに基づいて、当該ＩＣカード用の通信プロトコルに応じたデータを解釈し、当該解釈したデータに応じた処理を行ってＩ2Ｃ（ＳＤＡ）を介してＩ2Ｃレスポンスを外部装置ＤＥへ送信する。なお、Ｉ2Ｃコマンドのデータ構造は、ＳＰＩコマンドと同様である。Ｉ2Ｃレスポンスのデータ構造は、ＳＰＩレスポンスと同様である。
【符号の説明】
【００５４】
１  ＣＰＵ
２  ＲＡＭ
３  ＲＯＭ
４  不揮発性メモリ
５  Ｉ／Ｏ回路
ＳＥ  セキュアエレメント
ＤＥ  外部装置
【図１】
2018088156.tif 000003
【図２】
2018088156.tif 000004
【図３】
2018088156.tif 000005
【図４】
2018088156.tif 000006
【図５】
2018088156.tif 000007
【図６】
2018088156.tif 000008
【図７】
2018088156.tif 000009