(57)【要約】【課題】外部機器とセキュアエレメントのそれぞれがマスターとスレーブとなって通信を行う場合におけるセキュアエレメント側の通信に関する制約を減らし、通信の自由度を向上させることができるセキュアエレメント等を提供することを課題とする。【解決手段】外部機器との間でマスターモードとスレーブモードを夫々切り替えながら通信を行うセキュアエレメントであって、スレーブモードである場合に、マスターモードである外部機器からデータを受信し、当該データを受信した場合に、スレーブモードからマスターモードに切り替え、マスターモードである場合に、スレーブモードである外部機器にクロック信号を出力するとともに、当該クロック信号に同期させて、当該外部機器にデータを送信する。【選択図】図３
2020013256.tif 000002
【特許請求の範囲】
【請求項１】
外部機器との間でマスターモードとスレーブモードを夫々切り替えながら通信を行うセキュアエレメントであって、
前記セキュアエレメントが前記マスターモードと前記スレーブモードの何れのモードであるかを示すモード情報を記憶するモード記憶手段と、
前記モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記外部機器が出力するクロック信号に同期して、当該外部機器が送信するデータを受信する受信手段と、
前記受信手段が前記データを受信した場合に、前記モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する更新手段と、
前記モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記外部機器にクロック信号を出力するとともに、当該クロック信号に同期させて、当該外部機器にデータを送信する送信手段と、
を備えることを特徴とするセキュアエレメント。
【請求項２】
請求項１に記載のセキュアエレメントであって、
前記セキュアエレメントが前記外部機器に出力する前記クロック信号のクロック周波数を設定する設定手段を更に備え、
前記送信手段は、前記設定手段により設定された前記クロック周波数により前記外部機器に前記クロック信号を出力することを特徴とするセキュアエレメント。
【請求項３】
請求項１又は２に記載のセキュアエレメントであって、
前記外部機器が出力するクロック信号を受信するクロック線であって、且つ、前記セキュアエレメントが出力するクロック信号を送信するクロック線が接続されるクロック線端子と、
前記外部機器が送信するデータを受信する信号線であって、且つ、前記セキュアエレメントが送信するデータを送信する信号線が接続される信号線端子と、
を更に備えることを特徴とするセキュアエレメント。
【請求項４】
請求項１乃至３の何れか一項に記載のセキュアエレメントであって、
前記セキュアエレメントが前記外部機器に送信するデータを記憶するシフトレジスタを更に備え、
前記送信手段は、前記シフトレジスタに記憶されたデータを、前記クロック信号に同期させて、１ビットずつシフトさせながら送信することを特徴とするセキュアエレメント。
【請求項５】
請求項１乃至４の何れか一項に記載のセキュアエレメントであって、
前記外部機器が前記セキュアエレメントに送信するデータは、ＩＳＯ７８１６−３に準拠したコマンドであり、前記セキュアエレメントが前記外部機器に送信するデータは、ＩＳＯ７８１６−３に準拠したレスポンスであることを特徴とするセキュアエレメント。
【請求項６】
請求項１乃至５の何れか一項に記載のセキュアエレメントであって、
前記受信手段が前記外部機器から受信するデータ、又は、前記送信手段が前記外部機器に送信するデータの少なくとも何れか一方には、スタートビットが付加されていることを特徴とするセキュアエレメント。
【請求項７】
請求項１乃至６の何れか一項に記載のセキュアエレメントであって、
前記受信手段が前記外部機器から受信するデータ、又は、前記送信手段が前記外部機器に送信するデータの少なくとも何れか一方には、パリティビットが付加されていることを特徴とするセキュアエレメント。
【請求項８】
外部機器との間でマスターモードとスレーブモードを夫々切り替えながら通信を行うセキュアエレメントであって、前記セキュアエレメントが前記マスターモードと前記スレーブモードの何れのモードであるかを示すモード情報を記憶するモード記憶手段を備えるセキュアエレメントによる通信方法であって、
前記モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記外部機器が出力するクロック信号に同期して、当該外部機器が送信するデータを受信する受信工程と、
前記受信工程により前記データを受信した場合に、前記モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する更新工程と、
前記モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記外部機器にクロック信号を出力するとともに、当該クロック信号に同期させて、当該外部機器にデータを送信する送信工程と、
を含むことを特徴とする通信方法。
【請求項９】
外部機器との間でマスターモードとスレーブモードを夫々切り替えながら通信を行うセキュアエレメントであって、前記セキュアエレメントが前記マスターモードと前記スレーブモードの何れのモードであるかを示すモード情報を記憶するモード記憶手段を備えるセキュアエレメントに含まれるコンピュータを、
前記モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記外部機器が出力するクロック信号に同期して、当該外部機器が送信するデータを受信する受信手段、
前記受信手段が前記データを受信した場合に、前記モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する更新手段、
前記モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記外部機器にクロック信号を出力するとともに、当該クロック信号に同期させて、当該外部機器にデータを送信する送信手段、
として機能させることを特徴とする通信プログラム。
【請求項１０】
マスターモードとスレーブモードを夫々切り替えながら外部機器とセキュアエレメントの間で通信を行う通信システムであって、
前記外部機器は、
前記外部機器が前記マスターモードと前記スレーブモードの何れのモードであるかを示す第１モード情報を記憶する第１モード記憶手段と、
前記第１モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記セキュアエレメントにクロック信号を出力するとともに、当該クロック信号に同期させて、当該セキュアエレメントにデータを送信する第１送信手段と、
前記第１送信手段が前記データを送信した場合に、前記第１モード情報を前記マスターモードであることを示す情報から前記スレーブモードであることを示す情報に更新する第１更新手段と、
前記第１モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記セキュアエレメントが出力するクロック信号に同期して、当該セキュアエレメントが送信するデータを受信する第１受信手段と、
を備え、
前記セキュアエレメントは、
前記セキュアエレメントが前記マスターモードと前記スレーブモードの何れのモードであるかを示す第２モード情報を記憶する第２モード記憶手段と、
前記第２モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記外部機器が出力するクロック信号に同期して、当該外部機器が送信するデータを受信する第２受信手段と、
前記第２受信手段が前記データを受信した場合に、前記第２モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する第２更新手段と、
前記第２モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記外部機器にクロック信号を出力するとともに、当該クロック信号に同期させて、当該外部機器にデータを送信する第２送信手段と、
を備えることを特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
ＩＣ（Integrated Circuit）チップ等の電子情報記憶媒体の技術分野に関する。
【背景技術】
【０００２】
ＩｏＴ（Internet of Things）製品は、インターネットを介して、ＩｏＴ製品が備えるセンサーで測定したデータをサーバで取得すること、ＩｏＴ製品をサーバにより遠隔管理することなどを目的として利用される。ＩｏＴ製品はインターネットを介してサーバと接続されるため安全性が求められることから、ＩｏＴ製品にセキュアエレメント（Secure Element）を設けて、鍵などの秘密情報を管理する動きがある。特許文献１には、鍵情報を保持するセキュリティチップとサーバとの間で安全な通信経路を確立して秘密情報を送受信するシステムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１２９１４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ＩｏＴ製品に搭載されるマイコンは簡素で汎用性の高いＳＰＩ（Serial Peripheral Interface）が搭載されていることが多く、今後ＳＰＩ通信が可能なセキュアエレメントが求められることが想定される。
【０００５】
従来のＳＰＩ通信では、一方の機器がマスター（Master）、他方の機器がスレーブ（Slave）となって、マスターである機器が発信するクロック信号に同期して、夫々の機器が通信を行う。すなわち、クロック信号を発するマスターである機器が通信を行う時期や通信速度などを主導する。そのため、ＳＰＩ通信はスレーブである機器にとって自由度が低い。
【０００６】
例えば、マスターをマイコン、スレーブをセキュアエレメントとした場合、マイコンがクロック信号を送ったときにしか、セキュアエレメントはデータを送信できないという制約がある。そのため、例えば、マイコンからセキュアエレメントに命令が出された場合、セキュアエレメントはその命令を実行し、結果をマイコンに送信しようとしても、マイコンからクロック信号が送られてくるのを待機しなければならない。この場合、マイコンは、命令を送信してからセキュアエレメントが命令の実行を完了して結果を送信してくるまで、定期的にクロック信号を送り続けることとなる。
【０００７】
こうした事情を鑑み、本発明は、外部機器とセキュアエレメントのそれぞれがマスターとスレーブとなって通信を行う場合におけるセキュアエレメント側の通信に関する制約を減らし、延いては通信の自由度を向上させることを課題とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、請求項１に記載の発明は、外部機器との間でマスターモードとスレーブモードを夫々切り替えながら通信を行うセキュアエレメントであって、前記セキュアエレメントが前記マスターモードと前記スレーブモードの何れのモードであるかを示すモード情報を記憶するモード記憶手段と、前記モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記外部機器が出力するクロック信号に同期して、当該外部機器が送信するデータを受信する受信手段と、前記受信手段が前記データを受信した場合に、前記モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する更新手段と、前記モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記外部機器にクロック信号を出力するとともに、当該クロック信号に同期させて、当該外部機器にデータを送信する送信手段と、を備えることを特徴とする。
【０００９】
請求項２に記載の発明は、請求項１に記載のセキュアエレメントであって、前記セキュアエレメントが前記外部機器に出力する前記クロック信号のクロック周波数を設定する設定手段を更に備え、前記送信手段は、前記設定手段により設定された前記クロック周波数により前記外部機器に前記クロック信号を出力することを特徴とする。
【００１０】
請求項３に記載の発明は、請求項１又は２に記載のセキュアエレメントであって、前記外部機器が出力するクロック信号を受信するクロック線であって、且つ、前記セキュアエレメントが出力するクロック信号を送信するクロック線が接続されるクロック線端子と、前記外部機器が送信するデータを受信する信号線であって、且つ、前記セキュアエレメントが送信するデータを送信する信号線が接続される信号線端子と、を更に備えることを特徴とする。
【００１１】
請求項４に記載の発明は、請求項１乃至３の何れか一項に記載のセキュアエレメントであって、前記セキュアエレメントが前記外部機器に送信するデータを記憶するシフトレジスタを更に備え、前記送信手段は、前記シフトレジスタに記憶されたデータを、前記クロック信号に同期させて、１ビットずつシフトさせながら送信することを特徴とする。
【００１２】
請求項５に記載の発明は、請求項１乃至４の何れか一項に記載のセキュアエレメントであって、前記外部機器が前記セキュアエレメントに送信するデータは、ＩＳＯ７８１６−３に準拠したコマンドであり、前記セキュアエレメントが前記外部機器に送信するデータは、ＩＳＯ７８１６−３に準拠したレスポンスであることを特徴とする。
【００１３】
請求項６に記載の発明は、請求項１乃至５の何れか一項に記載のセキュアエレメントであって、前記受信手段が前記外部機器から受信するデータ、又は、前記送信手段が前記外部機器に送信するデータの少なくとも何れか一方には、スタートビットが付加されていることを特徴とする。
【００１４】
請求項７に記載の発明は、請求項１乃至６の何れか一項に記載のセキュアエレメントであって、前記受信手段が前記外部機器から受信するデータ、又は、前記送信手段が前記外部機器に送信するデータの少なくとも何れか一方には、パリティビットが付加されていることを特徴とする。
【００１５】
請求項８に記載の発明は、外部機器との間でマスターモードとスレーブモードを夫々切り替えながら通信を行うセキュアエレメントであって、前記セキュアエレメントが前記マスターモードと前記スレーブモードの何れのモードであるかを示すモード情報を記憶するモード記憶手段を備えるセキュアエレメントによる通信方法であって、前記モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記外部機器が出力するクロック信号に同期して、当該外部機器が送信するデータを受信する受信工程と、前記受信工程により前記データを受信した場合に、前記モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する更新工程と、前記モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記外部機器にクロック信号を出力するとともに、当該クロック信号に同期させて、当該外部機器にデータを送信する送信工程と、を含むことを特徴とする。
【００１６】
請求項９に記載の発明は、外部機器との間でマスターモードとスレーブモードを夫々切り替えながら通信を行うセキュアエレメントであって、前記セキュアエレメントが前記マスターモードと前記スレーブモードの何れのモードであるかを示すモード情報を記憶するモード記憶手段を備えるセキュアエレメントに含まれるコンピュータを、前記モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記外部機器が出力するクロック信号に同期して、当該外部機器が送信するデータを受信する受信手段、前記受信手段が前記データを受信した場合に、前記モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する更新手段、前記モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記外部機器にクロック信号を出力するとともに、当該クロック信号に同期させて、当該外部機器にデータを送信する送信手段、として機能させることを特徴とする。
【００１７】
請求項１０に記載の発明は、マスターモードとスレーブモードを夫々切り替えながら外部機器とセキュアエレメントの間で通信を行う通信システムであって、前記外部機器は、前記外部機器が前記マスターモードと前記スレーブモードの何れのモードであるかを示す第１モード情報を記憶する第１モード記憶手段と、前記第１モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記セキュアエレメントにクロック信号を出力するとともに、当該クロック信号に同期させて、当該セキュアエレメントにデータを送信する第１送信手段と、前記第１送信手段が前記データを送信した場合に、前記第１モード情報を前記マスターモードであることを示す情報から前記スレーブモードであることを示す情報に更新する第１更新手段と、前記第１モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記セキュアエレメントが出力するクロック信号に同期して、当該セキュアエレメントが送信するデータを受信する第１受信手段と、を備え、前記セキュアエレメントは、前記セキュアエレメントが前記マスターモードと前記スレーブモードの何れのモードであるかを示す第２モード情報を記憶する第２モード記憶手段と、前記第２モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記外部機器が出力するクロック信号に同期して、当該外部機器が送信するデータを受信する第２受信手段と、前記第２受信手段が前記データを受信した場合に、前記第２モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する第２更新手段と、前記第２モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記外部機器にクロック信号を出力するとともに、当該クロック信号に同期させて、当該外部機器にデータを送信する第２送信手段と、を備えることを特徴とする。
【発明の効果】
【００１８】
本発明によれば、外部機器とマスターモードとスレーブモードを夫々切り替えながら、スレーブモードである場合にマスターモードである外部機器からデータを受信し、当該データを受信した場合にスレーブモードからマスターモードに更新し、マスターモードである場合にスレーブモードである外部機器にデータを送信する。すなわち、外部機器とセキュアエレメントのそれぞれがマスターとスレーブとなって通信を行う場合において、セキュアエレメントはマスターとして動作することにより任意のタイミングでデータを送信することができることから、セキュアエレメント側の通信に関する制約が減り、通信の自由度が向上する。
【図面の簡単な説明】
【００１９】
【図１】通信システム構成例を示す図である。
【図２】（Ａ）はＩｏＴ端末１の構成例を示すブロック図である。（Ｂ）は、マイコン１１とセキュアエレメント２間の信号線の一例を示す図である。
【図３】マイコン１１とセキュアエレメント２間の送受信処理（Ｔ＝０）の流れの一例を示すシーケンス図である。
【図４】マイコン１１とセキュアエレメント２間の送受信処理（Ｔ＝０）の流れと送受信されるデータの一例を示すシーケンス図である。
【図５】マイコン１１とセキュアエレメント２間の送受信処理（Ｔ＝０）の流れと送受信されるデータの一例を示すシーケンス図である。
【図６】マイコン１１とセキュアエレメント２間の送受信処理（Ｔ＝１）の流れの一例を示すシーケンス図である。
【図７】マイコン１１とセキュアエレメント２間の送受信処理（Ｔ＝１）の流れと送受信されるデータの一例を示すシーケンス図である。
【図８】（Ａ）〜（Ｅ）は、送信データにスタートビット、パリティビットを付加する方法を説明するための図であり、（Ｆ）は、送信データを送信する際の信号線の電圧遷移例を示す図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、インターネットなどのネットワークを介してサーバと接続するＩｏＴ端末に搭載されるセキュアエレメントに対して本発明を適用した場合の実施の形態である。
【００２１】
図１に示すように、通信システムはサーバＳとＩｏＴ端末１を備え、サーバＳとＩｏＴ端末１はネットワークＮを介して互いに通信し、その際に使用する秘密鍵をそれぞれが記憶する。サーバＳとＩｏＴ端末１は、秘密鍵を使用して、互いの正当性の証明を目的とした相互認証や、通信データを秘匿するための暗号・復号処理を行う。
【００２２】
［１．ＩｏＴ端末１の構成］
図２（Ａ）を用いて、ＩｏＴ端末１の構成について説明する。図２（Ａ）は、ＩｏＴ端末１のハードウェア構成例を示す図である。ＩｏＴ端末１は、マイコン１１、通信部１２、入力部１３、出力部１４及びセキュアエレメント２を備えて構成される。
【００２３】
マイコン１１は、ＣＰＵ（Central Processing Unit）１１１、ＲＡＭ（Random Access Memory）１１２、ＲＯＭ（Read Only Memory）１１３、Ｉ／Ｏ回路１１４、不揮発性メモリ１１５、及び発振器１１６を含んで構成され、ＩｏＴ端末１全体を制御する。例えば、マイコン１１は、入力部１３に入力された入力データや入力情報に基づいて処理を行い、出力部１４に出力データや出力情報を出力する。また、マイコン１１は、サーバＳと通信する場合に、セキュアエレメント２に記憶されている秘密鍵を用いて、相互認証や通信データの暗号・復号処理を行う。通信部１２は、無線通信のためのアンテナを有し、ネットワークＮを介してサーバＳと通信を行うための処理を行う。入力部１３は、マイコン１１に入力データや入力情報を入力する。例えば、入力部１３がセンサーであれば検出データを入力し、タイマーであれば一定時間が経過したことを示す入力データを入力し、入力部１３がキーボードやボタンなどの操作部であれば、操作部に対する操作内容を示す入力情報を入力する。出力部１４は、マイコン１１から出力された出力データや出力情報に基づいて出力を行う。例えば、出力部１４がＬＥＤ（Light Emitting Diode）であれば発光し、音声出力装置であれば音声を出力する。
【００２４】
ＲＡＭ１１２には、例えばＯＳ、各種アプリケーションが機能するうえで一時的に必要となるデータが記憶される。ＲＯＭ１１３には、ＯＳ、各種アプリケーション等が記憶される。不揮発性メモリ１１５には、例えばフラッシュメモリ又は「Electrically Erasable Programmable Read-Only Memory」などを適用することができる。不揮発性メモリ１１５は、図３−図７を用いて説明する処理を実行するためのプログラム等を記憶する。また、不揮発性メモリ１１５は、後述する、マイコン１１がマスターモードであるかスレーブモードであるかを示すモード情報を記憶する。
【００２５】
Ｉ／Ｏ回路１１４は、セキュアエレメント２との通信インターフェイスを担う。この通信インターフェイスはＳＰＩである。Ｉ／Ｏ回路１１４は、送受信されるデータを蓄積するためのシフトレジスタ、及び４つの信号線の端子（接触部）を備える。図２（Ｂ）に示すように、４つの信号線は、Ｃｌｏｃｋ線、ＭＯＳＩ（Master-Out Slave-In）線、ＭＩＳＯ（Master-In Slave-Out）線、及びＳＳ（Slave Select）線であり、端子はそれぞれの信号線に対応するＣｌｏｃｋ端子、ＭＯＳＩ端子、ＭＩＳＯ端子、及びＳＳ端子である。なお、シフトレジスタ、Ｃｌｏｃｋ端子、ＭＯＳＩ端子、ＭＩＳＯ端子、及びＳＳ端子は、セキュアエレメント２にも備えられる。Ｉ／Ｏ回路１１４のＣｌｏｃｋ端子と、セキュアエレメント２のＣｌｏｃｋ端子とは、直接的に又は外部信号線を介して接続される。また、Ｉ／Ｏ回路１１４のＭＯＳＩ端子と、セキュアエレメント２のＭＯＳＩの端子とは、直接的に又は外部信号線を介して接続される。また、Ｉ／Ｏ回路１１４のＭＩＳＯ端子と、セキュアエレメント２のＭＩＳＯ端子とは、直接的に又は外部信号線を介して接続される。また、Ｉ／Ｏ回路１１４のＳＳ端子と、セキュアエレメント２のＳＳ端子とは、直接的に又は外部信号線を介して接続される。
【００２６】
発振器１１６は、予め設定されたクロック周波数のクロック信号を生成し、ＣＰＵ１１１の制御の下、Ｃｌｏｃｋ線を介してセキュアエレメント２に出力する。なお、ＣＰＵ１１１は、外部からの命令、マイコン１１の状況等に従ってクロック周波数を設定する。
【００２７】
セキュアエレメント２は、ＣＰＵ２１、ＲＡＭ２２、不揮発性メモリ２３、Ｉ／Ｏ回路２４及び発振器２５を備えて構成され、外部からの悪意を持った解析攻撃に耐えられるように設計され、セキュアな環境を形成する。ＣＰＵ２１は、不揮発性メモリ２３に記憶された各種プログラムを実行するプロセッサ（コンピュータ）である。
【００２８】
不揮発性メモリ２３には、例えばフラッシュメモリ又は「Electrically Erasable Programmable Read-Only Memory」などを適用することができる。不揮発性メモリ２３は、ＯＳ、各種アプリケーション、図３−図７を用いて説明する処理を実行するためのプログラム、秘密鍵等を記憶する。また、不揮発性メモリ２３は、後述する、セキュアエレメント２がマスターモードであるかスレーブモードであるかを示すモード情報を記憶する。
【００２９】
ＲＡＭ２２には、例えばＯＳ、各種アプリケーションが機能するうえで一時的に必要となるデータが記憶される。
【００３０】
Ｉ／Ｏ回路２４は、マイコン１１との通信インターフェイスを担う。この通信インターフェイスはＳＰＩである。Ｉ／Ｏ回路２４は、送受信されるデータを蓄積するためのシフトレジスタ、及び４つの信号線の端子（接触部）を備える。
【００３１】
発振器２５は、予め設定されたクロック周波数のクロック信号を生成し、ＣＰＵ２１の制御の下、Ｃｌｏｃｋ線を介してマイコン１１に出力する。なお、ＣＰＵ２１は、外部からの命令、セキュアエレメント状況等に従ってクロック周波数を設定する。
【００３２】
ＳＰＩ通信では、マスターがＳＳを例えばローアクティブにすることで通信が開始される。
【００３３】
ＣＰＵ２１は、不揮発性メモリ２３に記憶されているモード情報がマスターモードを示している場合に、ＳＰＩ通信におけるマスターとして動作する。セキュアエレメント２がデータを送信するとき、発振器２５により生成されたクロック信号（同期信号）がＣｌｏｃｋ線を介してセキュアエレメント２からマイコン１１へ送信される。また、セキュアエレメント２のシフトレジスタにセットされたデータが、上記クロック信号に従って１ビットずつシフトされながらＭＯＳＩを介してセキュアエレメント２からマイコン１１へ送信される。
【００３４】
また、ＣＰＵ２１は、不揮発性メモリ２３に記憶されているモード情報がスレーブモードを示している場合に、ＳＰＩ通信におけるスレーブとして動作する。マイコン１１がデータを送信するとき、マイコン１１の発振器１１６により生成されたクロック信号（同期信号）がＣｌｏｃｋ線を介してマイコン１１からセキュアエレメント２へ送信される。また、マイコン１１のシフトレジスタにセットされたデータが、上記クロック信号に従って１ビットずつシフトされながらＭＯＳＩを介してマイコン１１からセキュアエレメント２へ送信される。
【００３５】
本実施形態のマイコン１１とセキュアエレメント２は、それぞれがマスター又はスレーブとして動作する。具体的には、データを送信する場合にマスターとして動作し、データを受信する場合にスレーブとして動作する。そのため、マイコン１１の不揮発性メモリ１１５とセキュアエレメント２の不揮発性メモリ２３は、それぞれ、マスターとして動作するマスターモードであるか、スレーブとして動作するスレーブモードであるかを示すモード情報を記憶する。具体的には、マイコン１１とセキュアエレメント２間で通信が行われない場合には、それぞれスレーブモードとなり、自らデータを相手方に送信する場合に自らのモードをスレーブモードからマスターモードに変更する。なお、マイコン１１とセキュアエレメント２の双方が同時にマスターモードとなってしまうと、データの送受信を正常に行うことができない場合がある。そこで、予めそのような状況にならないようにルールを定め、そのルールに従ってマイコン１１とセキュアエレメント２は動作することとする。
【００３６】
なお、ＳＰＩ通信では、図２（Ｂ）に示すように、Ｃｌｏｃｋ線、ＭＯＳＩ線、ＭＩＳＯ線、及びＳＳ線の４つの信号線を用いて通信を行うが、本実施形態では、マスターモードにある機器からスレーブモードにある機器にデータを送信し、互いに同時にデータを送信することがないことから、ＭＩＳＯ線を使用しない。
【００３７】
［２．マイコン１１とセキュアエレメント２間の送受信処理（Ｔ＝０）］
次に、図３を用いて、マイコン１１とセキュアエレメント２間の送受信処理の流れについて説明する。なお、図３は、マイコン１１とセキュアエレメント２間の送受信処理の流れの一例を示すシーケンス図である。なお、当該シーケンス図に示す処理の開始前における、マイコン１１とセキュアエレメント２のそれぞれのモード情報はスレーブモードを示しているものとする。また、図３は、ＩＳＯ７８１６−３で定められたＴ＝０プロトコルに従って通信を行う場合の例である。
【００３８】
まず、マイコン１１のＣＰＵ１１１は、自らのモードをスレーブモードからマスターモードに移行する（ステップＳ１０１Ａ）。具体的には、マイコン１１の不揮発性メモリ１１５に記憶されているモード情報をスレーブモードであることを示す情報からマスターモードであることを示す情報に更新する。なお、以下、スレーブモードからマスターモードへの移行すること、マスターモードからスレーブモードへの移行することは、マイコン１１が備える不揮発性メモリ１１５、又は、セキュアエレメント２が備える不揮発性メモリ２３において記憶されているモード情報を更新することを意味する。
【００３９】
次いで、ＣＰＵ１１１は、コマンドヘッダをセキュアエレメント２に送信する（ステップＳ１０２Ａ）。コマンドヘッダは、ＣＬＡ部（１バイト）、ＩＮＳ部（１バイト）、Ｐ１部（１バイト）、Ｐ２部（１バイト）、Ｐ３（Ｌｃ）部（１バイト）で構成される。Ｐ３（Ｌｃ）部には、コマンドヘッダに続いて送信すべきデータの長さが格納される。
【００４０】
次いで、ＣＰＵ１１１は、自らのモードをマスターモードからスレーブモードに移行する（ステップＳ１０３Ａ）。
【００４１】
一方、セキュアエレメント２のＣＰＵ２１は、マイコン１１からコマンドヘッダを受信すると（ステップＳ１０１Ｂ）、コマンドに応じた処理を開始する（ステップＳ１０２Ｂ）。コマンドに応じた処理とは、例えば、ＩＮＳ部を解釈する処理や、解釈した内容に応じた処理などを含む。
【００４２】
次いで、ＣＰＵ２１は、コマンドに応じた処理が終了したか否かを判定する（ステップＳ１０３Ｂ）。ＣＰＵ２１は、コマンドに応じた処理が終了したと判定した場合には（ステップＳ１０３Ｂ：ＹＥＳ）、ステップＳ１０８Ｂの処理に移行する。一方、ＣＰＵ２１は、コマンドに応じた処理が終了していないと判定した場合には（ステップＳ１０３Ｂ：ＮＯ）、次いで、処理を開始してから所定時間が経過したか否かを判定する（ステップＳ１０４Ｂ）。所定時間は、ＩＳＯ７８１６−３で定められた、コマンドを受信してから応答を返信するまでの上限時間に応じて設定される。ＣＰＵ２１は、所定時間が経過したと判定した場合には（ステップＳ１０４Ｂ：ＹＥＳ）、自らのモードをスレーブモードからマスターモードに移行し（ステップＳ１０５Ｂ）、１バイトのプロシージャバイト「６０ｈ」をマイコン１１に送信する（ステップＳ１０６Ｂ）。次に、ＣＰＵ２１は、自らのモードをマスターモードからスレーブモードに移行し（ステップＳ１０７Ｂ）、ステップＳ１０３Ｂの処理に移行する。
【００４３】
プロシージャバイトは、マイコン１１から受信したデータ（コマンドヘッダを含む）に対する１バイトの応答のことである。本実施形態において、ＣＰＵ２１は４種類のプロシージャバイトをマイコン１１に送信する。一つ目は、「６０ｈ」（「ＮＵＬＬバイト」という）であり、マイコン１１に正式な応答を待って欲しい（処理が終了していないため）ことを意味する。ＩＳＯ７８１６−３では、コマンドを受信してから所定時間内に応答しないとならないというルールが定められているため、処理が終了していない場合にこの応答を返す。二つ目は、「６Ｘ（６０以外）ｈ」、「９Ｘｈ」であり、処理結果に応じた値である。なお、プロシージャバイトが「６Ｘ（６０以外）ｈ」、「９Ｘｈ」である場合、プロシージャバイトはステータスワード（ＳＷ）の１バイト目（ＳＷ１）に対応する。この場合、ＳＷ１であるプロシージャバイトに続いて、ＳＷ２（ＳＷの２バイト目）がマイコン１１に送信される。三つ目は、ステップＳ１０１Ｂの処理で受信したコマンドヘッダのＩＮＳ部に格納された値と同じ値（「ＡＣＫバイト」という）であり、コマンドヘッダに続くデータをまとめて送信することを要求する場合や、レスポンスデータを送信することを知らせる場合に設定される。例えば、ＩＮＳ部がファイル選択（ＳＥＬＥＣＴ）の命令を示していた場合、ＣＰＵ２１がＩＮＳ部の値をプロシージャバイトとして返すことにより、マイコン１１は、選択するファイルを識別するためのファイルＩＤ（ＦＩＤ）をセキュアエレメント２に送信する。四つ目は、ステップＳ１０１Ｂの処理で受信したコマンドヘッダのＩＮＳ部に格納された値と「ＦＦｈ」のＸＯＲ（排他的論理和）であり、コマンドヘッダに続くデータを１バイト送信することを要求する場合に設定される。
【００４４】
ＣＰＵ２１は、ステップＳ１０４Ｂの処理において、所定時間が経過していないと判定した場合には（ステップＳ１０４Ｂ：ＮＯ）、ステップＳ１０３Ｂの処理に移行する。すなわち、ＣＰＵ２１は、ステップ１０３Ｂにおいて「ＹＥＳ」と判定するまで、所定時間経過毎にプロシージャバイト「６０ｈ」をマイコン１１に送信する。
【００４５】
ＣＰＵ２１は、ステップＳ１０３Ｂの処理において終了したと判定した場合には（ステップＳ１０３Ｂ：ＹＥＳ）、次いで、コマンドヘッダに続くコマンドデータが必要か否かを判定する（ステップＳ１０８Ｂ）。ＣＰＵ２１は、コマンドデータが必要ではないと判定した場合には（ステップＳ１０８Ｂ：ＮＯ）、ステップＳ１２７Ｂの処理に移行する。一方、ＣＰＵ２１は、コマンドデータが必要であると判定した場合には（ステップＳ１０８Ｂ：ＹＥＳ）、次いで、コマンドデータを一括受信するか否かを判定する（ステップＳ１０９Ｂ）。
【００４６】
ＣＰＵ２１は、コマンドデータを一括受信すると判定した場合には（ステップＳ１０９Ｂ：ＹＥＳ）、自らのモードをスレーブモードからマスターモードに移行し（ステップＳ１１０Ｂ）、ステップＳ１０１Ｂの処理で受信したコマンドヘッダのＩＮＳ部をマイコン１１に送信する（ステップＳ１１１Ｂ）。次に、ＣＰＵ２１は、自らのモードをマスターモードからスレーブモードに移行し（ステップＳ１１２Ｂ）、次いで、マイコン１１からコマンドデータを一括受信すると（ステップＳ１１３Ｂ）、ステップＳ１１９Ｂの処理に移行する。
【００４７】
一方、ＣＰＵ２１は、コマンドデータを一括受信しない（すなわち、１バイトずつ受信する）と判定した場合には（ステップＳ１０９Ｂ：ＮＯ）、自らのモードをスレーブモードからマスターモードに移行し（ステップＳ１１４Ｂ）、ステップＳ１０１Ｂの処理で受信したコマンドヘッダのＩＮＳ部と「ＦＦｈ」のＸＯＲをマイコン１１に送信する（ステップＳ１１５Ｂ）。次に、ＣＰＵ２１は、自らのモードをマスターモードからスレーブモードに移行し（ステップＳ１１６Ｂ）、次いで、マイコン１１からコマンドデータを１バイト受信する（ステップＳ１１７Ｂ）。次に、ＣＰＵ２１は、受信したコマンドデータの合計がステップＳ１０１Ｂの処理で受信したコマンドヘッダのＰ３部が示すバイト数と一致したか否かを判定する（ステップＳ１１８Ｂ）。ＣＰＵ２１は、受信したコマンドデータの合計が、Ｐ３部が示すバイト数と一致していないと判定した場合には（ステップＳ１１８Ｂ：ＮＯ）、ステップＳ１１４Ｂの処理に移行する。一方、ＣＰＵ２１は、受信したコマンドデータの合計が、Ｐ３部が示すバイト数と一致したと判定した場合には（ステップＳ１１８Ｂ：ＹＥＳ）、ステップＳ１１９Ｂの処理に移行する。
【００４８】
次に、ＣＰＵ２１は、コマンドに応じた処理を開始する（ステップＳ１１９Ｂ）。具体的には、ＣＰＵ２１は、マイコン１１から受信したコマンドヘッダ及びコマンドデータに応じた処理を開始する。例えば、ステップＳ１０１Ｂの処理でＩＮＳ部がファイル選択（ＳＥＬＥＣＴ）を示すコマンドヘッダを受信し、ステップＳ１１３Ｂの処理でファイルＩＤを示すコマンドデータを受信した場合には、ファイルＩＤで識別されるファイルを選択する処理を開始する。
【００４９】
次に、ＣＰＵ２１は、コマンドに応じた処理の結果に対応するレスポンスにデータフィールドを含むか否かを判定する（ステップＳ１２０Ｂ）。ＣＰＵ２１は、処理の結果に対応するレスポンスにデータフィールドを含むと判定した場合には（ステップＳ１２０Ｂ：ＹＥＳ）、自らのモードをスレーブモードからマスターモードに移行し（ステップＳ１２１Ｂ）、次に、ＣＰＵ２１は、ＳＷ「６１ＸＸｈ」をマイコン１１に送信する（ステップＳ１２２Ｂ）。このとき、ステータスワードの１バイト目「６１ｈ」は、ステップＳ１０４Ａの処理でマイコン１１に受信され、ステータスワードの２バイト目「ＸＸｈ」は、ステップＳ１１７Ａの処理でマイコン１１に受信される。次いで、ＣＰＵ２１は、自らのモードをマスターモードからスレーブモードに移行し（ステップＳ１２３Ｂ）、当該シーケンス図に示す処理を終了する。
【００５０】
一方、ＣＰＵ２１は、処理の結果に対応するレスポンスにデータフィールドを含まないと判定した場合には（ステップＳ１２０Ｂ：ＮＯ）、自らのモードをスレーブモードからマスターモードに移行し（ステップＳ１２４Ｂ）、ＳＷ「６ＸＸＸｈ」又はＳＷ「９ＸＸＸｈ」をマイコン１１に送信する（ステップＳ１２５Ｂ）。このとき、ステータスワードの１バイト目「６Ｘｈ」又は「９Ｘｈ」は、ステップＳ１０４Ａの処理でマイコン１１に受信され、ステータスワードの２バイト目「ＸＸｈ」は、ステップＳ１１７Ａの処理でマイコン１１に受信される。次いで、ＣＰＵ２１は、自らのモードをマスターモードからスレーブモードに移行し（ステップＳ１２６Ｂ）、当該シーケンス図に示す処理を終了する。
【００５１】
また、ＣＰＵ２１は、ステップＳ１０８Ｂの処理において、コマンドデータが必要ではないと判定した場合には（ステップＳ１０８Ｂ：ＮＯ）、処理の結果に対応するレスポンスにデータフィールドを含むか否かを判定する（ステップＳ１２７Ｂ）。ＣＰＵ２１は、処理の結果に対応するレスポンスにデータフィールドを含むと判定した場合には（ステップＳ１２７Ｂ：ＹＥＳ）、自らのモードをスレーブモードからマスターモードに移行し（ステップＳ１２８Ｂ）、ステップＳ１０１Ｂの処理で受信したコマンドヘッダのＩＮＳ部をマイコン１１に送信する（ステップＳ１２９Ｂ）。次に、ＣＰＵ２１は、処理の結果に対応するレスポンスデータをマイコン１１に送信する（ステップＳ１３０Ｂ）。例えば、マイコン１１からＲＥＡＤ（読み出し）コマンドを受信し、データのＲＥＡＤ処理を行った場合であれば、読み出したデータをマイコン１１に送信する。次に、ＣＰＵ２１は、ＳＷ「６ＸＸＸｈ」又はＳＷ「９ＸＸＸｈ」をマイコン１１に送信する（ステップＳ１３１Ｂ）。このとき、ステータスワードは、ステップＳ１１２Ａの処理でマイコン１１に受信される。次いで、ＣＰＵ２１は、自らのモードをマスターモードからスレーブモードに移行し（ステップＳ１３２Ｂ）、当該シーケンス図に示す処理を終了する。
【００５２】
一方、ＣＰＵ２１は、処理の結果に対応するレスポンスにデータフィールドを含まないと判定した場合には（ステップＳ１２７Ｂ：ＮＯ）、自らのモードをスレーブモードからマスターモードに移行し（ステップＳ１３３Ｂ）、ＳＷ「６ＸＸＸｈ」又はＳＷ「９ＸＸＸｈ」をマイコン１１に送信する（ステップＳ１３４Ｂ）。このとき、ステータスワードの１バイト目「６Ｘｈ」又は「９Ｘｈ」は、ステップＳ１０４Ａの処理でマイコン１１に受信され、ステータスワードの２バイト目「ＸＸｈ」は、ステップＳ１１７Ａの処理でマイコン１１に受信される。次いで、ＣＰＵ２１は、自らのモードをマスターモードからスレーブモードに移行し（ステップＳ１３５Ｂ）、当該シーケンス図に示す処理を終了する。
【００５３】
他方、マイコン１１のＣＰＵ１１１は、ステップＳ１０３Ａの処理の後、セキュアエレメント２からプロシージャバイトを受信する（ステップＳ１０４Ａ）。次いで、ＣＰＵ１１１は、プロシージャバイトは「６０ｈ」であるか否かを判定する（ステップＳ１０５Ａ）。ＣＰＵ１１１は、プロシージャバイトは「６０ｈ」であると判定した場合には（ステップＳ１０５Ａ：ＹＥＳ）、ステップＳ１０４Ａの処理に移行する。
【００５４】
一方、ＣＰＵ１１１は、プロシージャバイトは「６０ｈ」ではないと判定した場合には（ステップＳ１０５Ａ：ＮＯ）、次いで、プロシージャバイトはステップＳ１０２Ａの処理で送信したコマンドヘッダのＩＮＳ部に格納した値と同じ値であるか否かを判定する（ステップＳ１０６Ａ）。ＣＰＵ１１１は、プロシージャバイトはＩＮＳ部に格納した値と同じ値ではないと判定した場合には（ステップＳ１０６Ａ：ＮＯ）、ステップＳ１１３Ａの処理に移行する。一方、ＣＰＵ１１１は、プロシージャバイトはＩＮＳ部に格納した値と同じ値であると判定した場合には（ステップＳ１０６Ａ：ＹＥＳ）、次いで、コマンドヘッダに続くコマンドデータ部が存在するか否かを判定する（ステップＳ１０７Ａ）。
【００５５】
ＣＰＵ１１１は、コマンドデータ部が存在すると判定した場合には（ステップＳ１０７Ａ：ＹＥＳ）、自らのモードをスレーブモードからマスターモードに移行する（ステップＳ１０８Ａ）。次いで、ＣＰＵ１１１は、コマンドヘッダのＰ３部で指定した長さのコマンドデータをセキュアエレメント２に送信する（ステップＳ１０９Ａ）。次いで、ＣＰＵ１１１は、自らのモードをマスターモードからスレーブモードに移行し（ステップＳ１１０Ａ）、ステップＳ１０４Ａの処理に移行する。
【００５６】
一方、ＣＰＵ１１１は、コマンドデータ部が存在しないと判定した場合には（ステップＳ１０７Ａ：ＮＯ）、コマンドヘッダのＰ３部で指定した長さのレスポンスデータをセキュアエレメント２から受信する（ステップＳ１１１Ａ）。なお、レスポンスデータは、ステップＳ１３０Ｂの処理で送信される。
【００５７】
また、マイコン１１のＣＰＵ１１１は、ステップＳ１０６Ａの処理で「ＮＯ」と判定した場合には、次いで、プロシージャバイトはＩＮＳ部に格納した値と「ＦＦｈ」のＸＯＲと同じ値であるか否かを判定する（ステップＳ１１３Ａ）。ＣＰＵ２１は、ＩＮＳ部に格納した値と「ＦＦｈ」のＸＯＲと同じ値であると判定した場合には（ステップＳ１１３Ａ：ＹＥＳ）、自らのモードをスレーブモードからマスターモードに移行する（ステップＳ１１４Ａ）。次いで、ＣＰＵ１１１は、１バイトのコマンドデータをセキュアエレメント２に送信し（ステップＳ１１５Ａ）、自らのモードをマスターモードからスレーブモードに移行し（ステップＳ１１６Ａ）、ステップＳ１０４Ａの処理に移行する。なお、この場合、ＣＰＵ１１１はコマンドデータを１バイトずつ、セキュアエレメント２に送信するが先頭のデータから１バイトずつ順番に送信することとする。一方、ＣＰＵ２１は、ＩＮＳ部に格納した値と「ＦＦｈ」のＸＯＲと同じ値ではないと判定した場合には（ステップＳ１１３Ａ：ＮＯ）、ＳＷ２「ＸＸｈ」をセキュアエレメント２から受信し（ステップＳ１１７Ａ）、当該シーケンス図に示す処理を終了する。
【００５８】
次に、図４及び図５を用いて、マイコン１１とセキュアエレメント２間で送受信されるデータの一例について説明する。図４及び図５は、マイコン１１とセキュアエレメント２間の送受信処理の流れと送受信されるデータの一例を示すシーケンス図である。なお、図４及び図５では、ＩＳＯ７８１６−３で定められたＴ＝０プロトコルに従って通信が行われる場合について説明する。また、図４では、マイコン１１がセキュアエレメント２の不揮発性メモリ２３に格納されているファイル（ＦＩＤ「０００１ｈ」）を選択して、選択した当該ファイルの１６バイトのデータ（「０１０２０３０４０５０６０７０８０９０Ａ０Ｂ０Ｃ０Ｄ０Ｅ０Ｆ１０ｈ」を読み出す場合を例に挙げて説明する。図５では、マイコン１１がセキュアエレメント２のアプレット（アプレットＩＤ「Ａ００００００１６８０００００１ｈ」）を選択して、選択した当該アプレットに関する１２バイトのアプレット情報を取得する場合を例に挙げて説明する。図４及び図５においてブロックＭはマスターモードであることを示す。
【００５９】
まず、マイコン１１のＣＰＵ１１１は、ＳＥＬＥＣＴコマンドのコマンドヘッダ（５バイト）をセキュアエレメント２に送信する（ステップＳ２０１）。ＩＮＳ部の「Ａ４ｈ」はファイル選択（SELECT FILE）を示す値である。Ｐ３部は、次に送信するデータ（選択するファイルを識別するＦＩＤ）が２バイトであることを示している。
【００６０】
これに対してセキュアエレメント２のＣＰＵ２１は、ＩＮＳ部を解釈し、次いでＦＩＤを送信してもらうべく、ＩＮＳ部に格納された値と同じ値である「Ａ４ｈ」をプロシージャバイトとして返信する（ステップＳ２０２）。
【００６１】
次に、マイコン１１のＣＰＵ１１１は、選択するファイルを識別するＦＩＤ（２バイト）をセキュアエレメント２に送信する（ステップＳ２０３）。
【００６２】
これに対してセキュアエレメント２のＣＰＵ２１は、受信したＦＩＤに基づいてファイルを選択する処理を実行し、処理が正常終了したことを示すＳＷ「９０００ｈ」をマイコン１１に返信する。このとき、ＣＰＵ２１は、ＳＷ１に相当するプロシージャバイト「９０ｈ」を送信し（ステップＳ２０４）、次いで、ＳＷ２「００ｈ」を送信する（ステップＳ２０５）。
【００６３】
次に、マイコン１１のＣＰＵ１１１は、ＲＥＡＤコマンドのコマンドヘッダ（５バイト）をセキュアエレメント２に送信する（ステップＳ２０６）。ＩＮＳ部の「Ｂ０ｈ」はバイナリデータ読み出し（READ BINARY）を示す値である。また、Ｐ３部は読み出すデータのサイズ（バイト数）を示しており「００ｈ」は読み出すデータのサイズとして２５６バイトを指定していることを意味する。
【００６４】
これに対してセキュアエレメント２のＣＰＵ２１は、ＩＮＳ部を解釈する。ここで、Ｐ３部に読み出すデータサイズとして「００ｈ」となっているが、実際に読み出すデータのサイズは１６バイトである。そこで、ＣＰＵ２１は、Ｐ３部に「１０ｈ」を格納したコマンドヘッダを再送する要求を意味するＳＷ「６Ｃ１０ｈ」をマイコン１１に返信する。このとき、ＣＰＵ２１は、ＳＷ１に相当するプロシージャバイト「６Ｃｈ」を送信し（ステップＳ２０７）、次いで、ＳＷ２「１０ｈ」を送信する（ステップＳ２０８）。
【００６５】
次に、マイコン１１のＣＰＵ１１１は、ＲＥＡＤコマンドのコマンドヘッダ（５バイト）をセキュアエレメント２に再送する（ステップＳ２０９）。ここでは、Ｐ３部に「１０ｈ」を格納したコマンドヘッダを再送する。
【００６６】
これに対してセキュアエレメント２のＣＰＵ２１は、ＩＮＳ部を解釈し、Ｐ３部に「１０ｈ」が格納されていることを確認すると、ＩＮＳ部と同じ値「Ｂ０ｈ」を返信し（ステップＳ２１０）、次いで、先に選択したファイル（ＦＩＤ「０００１ｈ」で識別されるファイル）の１６バイトのデータを返信する（ステップＳ２１１）。更に、ＣＰＵ２１は、処理が正常終了したことを示すＳＷ「９０００ｈ」をマイコン１１に返信する。このとき、ＣＰＵ２１は、ＳＷ１に相当するプロシージャバイト「９０ｈ」を送信し（ステップＳ２１２）、次いで、ＳＷ２「００ｈ」を送信する（ステップＳ２１３）。
【００６７】
次に、図５の例について説明する。まず、マイコン１１のＣＰＵ１１１は、ＳＥＬＥＣＴコマンドのコマンドヘッダ（５バイト）をセキュアエレメント２に送信する（ステップＳ２５１）。ＩＮＳ部の「Ａ４ｈ」はファイル（アプレットを含む）選択（SELECT FILE）を示す値である。Ｐ３部は、次に送信するデータ（選択するアプレットを識別するＩＤ）が８バイトであることを示している。
【００６８】
これに対してセキュアエレメント２のＣＰＵ２１は、ＩＮＳ部を解釈し、次いでアプレットＩＤを送信してもらうべく、ＩＮＳ部に格納された値と同じ値である「Ａ４ｈ」をプロシージャバイトとして返信する（ステップＳ２５２）。
【００６９】
次に、マイコン１１のＣＰＵ１１１は、選択するアプレットを識別するアプレットＩＤ（８バイト）をセキュアエレメント２に送信する（ステップＳ２５３）。
【００７０】
これに対してセキュアエレメント２のＣＰＵ２１は、受信したアプレットＩＤに基づいてアプレットを選択する処理を実行し、ＳＷ１「６１ｈ」と、ＳＷ２「０Ｃｈ」をマイコン１１に返信する（ステップＳ２５４、ステップＳ２５５）。ＳＷ２「０Ｃｈ」は、選択したアプレットに関するアプレット情報が１２バイトであることを示している。
【００７１】
次に、マイコン１１のＣＰＵ１１１は、ＧＥＴ  ＲＥＳＰＯＮＳＥコマンドのコマンドヘッダ（５バイト）をセキュアエレメント２に送信する（ステップＳ２５６）。ＩＮＳ部の「Ｃ０ｈ」はＧＥＴ  ＲＥＳＰＯＮＳＥコマンドであることを示す値である。また、Ｐ３部は取得するアプレット情報のサイズ（バイト数）を示しており、ステップＳ２５５の処理で受信した「０Ｃｈ」が格納される。
【００７２】
これに対してセキュアエレメント２のＣＰＵ２１は、ＩＮＳ部を解釈し、ＩＮＳ部と同じ値「Ｃ０ｈ」を返信し（ステップＳ２５７）、次いで、先に選択したアプレットに関する１２バイトのアプレット情報を返信する（ステップＳ２５８）。更に、ＣＰＵ２１は、処理が正常終了したことを示すＳＷ「９０００ｈ」をマイコン１１に返信する。このとき、ＣＰＵ２１は、ＳＷ１に相当するプロシージャバイト「９０ｈ」を送信し（ステップＳ２５９）、次いで、ＳＷ２「００ｈ」を送信する（ステップＳ２６０）。
【００７３】
［３．マイコン１１とセキュアエレメント２間の送受信処理（Ｔ＝１）］
次に、図６を用いて、マイコン１１とセキュアエレメント２間の送受信処理の流れについて説明する。なお、図６は、マイコン１１とセキュアエレメント２間の送受信処理の流れの一例を示すシーケンス図である。なお、当該シーケンス図に示す処理の開始前における、マイコン１１とセキュアエレメント２のそれぞれのモード情報はスレーブモードを示しているものとする。また、図６は、ＩＳＯ７８１６−３で定められたＴ＝１プロトコルに従って通信を行う場合の例である。
【００７４】
まず、マイコン１１のＣＰＵ１１１は、自らのモードをスレーブモードからマスターモードに移行する（ステップＳ３０１Ａ）。
【００７５】
次いで、マイコン１１のＣＰＵ１１１は、コマンド（ＣＬＡ部、ＩＮＳ部、Ｐ１部、Ｐ２部、Ｌｃ部、Ｄａｔａ部、Ｌｅ部）を含むブロックをセキュアエレメント２に送信する（ステップＳ３０２Ａ）。ブロックの基本構成は、ＮＡＤ部、ＰＣＢ部、ＬＥＮ部、コマンド、ＬＲＣ（又はＣＲＣ）部を有する。ＮＡＤ部はブロックの送信先を示す値が格納され、ＰＣＢ部はＬＥＣ部に続くデータの意味を示す値が格納され、ＬＲＣ（又はＣＲＣ）部には誤り検出に使用される値（符号）が格納される。
【００７６】
次いで、マイコン１１のＣＰＵ１１１は、自らのモードをマスターモードからスレーブモードに移行する（ステップＳ３０３Ａ）。
【００７７】
一方、セキュアエレメント２のＣＰＵ２１は、マイコン１１からブロックを受信すると（ステップＳ３０１Ｂ）、自らのモードをスレーブモードからマスターモードに移行する（ステップＳ３０２Ｂ）。
【００７８】
次に、ＣＰＵ２１は、コマンドに応じた処理（ＩＮＳ部を解釈する処理、解釈した内容に応じた処理）を開始する（ステップＳ３０３Ｂ）。次いで、ＣＰＵ２１は、その処理を終了したか否かを判定する（ステップＳ３０４Ｂ）。ＣＰＵ２１は、処理を終了していないと判定した場合には（ステップＳ３０４Ｂ：ＮＯ）、ステップＳ３０４Ｂを繰り返す。
【００７９】
一方、ＣＰＵ２１は、処理を終了したと判定した場合には（ステップＳ３０４Ｂ：ＹＥＳ）、処理結果に応じたブロックをマイコン１１に送信する（ステップＳ３０５Ｂ）。なお、セキュアエレメント２からマイコン１１に送信するブロックの基本構成は、ＮＡＤ部、ＰＣＢ部、ＬＥＮ部、Ｄａｔａ部、ＳＷ部（２バイト）、ＬＲＣ（又はＣＲＣ）部を有する。ＮＡＤ部、ＰＣＢ部には、マイコン１１から直前に受信したブロックのＮＡＤ部、ＰＣＢ部と同じ値が格納される。Ｄａｔａ部には、マイコン１１から直前に受信したブロックに含まれるコマンドに対応する処理の結果により得られたデータが格納される。但し、データが得られない処理を行った場合には、Ｄａｔａ部は省かれる。ＳＷ部には、マイコン１１から直前に受信したブロックに含まれるコマンドに対応する処理の結果に応じたＳＷ（ＳＷ１＋ＳＷ２）が格納される。
【００８０】
次に、ＣＰＵ２１は、自らのモードをマスターモードからスレーブモードに移行し（ステップＳ３０６Ｂ）、当該シーケンス図に示す処理を終了する。
【００８１】
これに対して、マイコン１１のＣＰＵ１１１は、ステップＳ３０３Ａの処理後、セキュアエレメント２からブロックを受信し（ステップＳ３０４Ａ）、当該シーケンス図に示す処理を終了する。
【００８２】
次に、図７を用いて、マイコン１１とセキュアエレメント２間で送受信されるデータの一例について説明する。図７は、マイコン１１とセキュアエレメント２間の送受信処理の流れと送受信されるデータの一例を示すシーケンス図である。なお、図７では、ＩＳＯ７８１６−３で定められたＴ＝１プロトコルに従って通信が行われる場合について説明する。またここでは、マイコン１１がセキュアエレメント２の不揮発性メモリ２３に格納されているファイル（ＦＩＤ「０００１ｈ」）を選択して、選択した当該ファイルの１６バイトのデータ（「０１０２０３０４０５０６０７０８０９０Ａ０Ｂ０Ｃ０Ｄ０Ｅ０Ｆ１０ｈ」を読み出す場合を例に挙げて説明する。図７においてブロックＭはマスターモードであることを示す。
【００８３】
まず、マイコン１１のＣＰＵ１１１は、ＳＥＬＥＣＴコマンドを含むブロックをセキュアエレメント２に送信する（ステップＳ４０１）。ＩＮＳ部の「Ａ４ｈ」はファイル選択（SELECT FILE）を示す値である。Ｄ１部、Ｄ２部の２バイトに、選択するファイルのＦＩＤが格納される。
【００８４】
これに対してセキュアエレメント２のＣＰＵ２１は、ＩＮＳ部に基づいてＳＥＬＥＣＴコマンドであることを解釈し、Ｄ１部、Ｄ２部に格納されたＦＩＤにより識別されるファイルを選択する処理を実行し、処理が正常終了したことを示すＳＷ「９０００ｈ」を含むブロックをマイコン１１に返信する（ステップＳ４０２）。このとき、ＣＰＵ２１は、ＮＡＤ部及びＰＣＢ部には、ステップＳ４０１の処理で受信したブロックのＮＡＤ部及びＰＣＢ部と同じ値を格納する。
【００８５】
次に、マイコン１１のＣＰＵ１１１は、ＲＥＡＤコマンドを含むブロックをセキュアエレメント２に送信する（ステップＳ４０３）。ＩＮＳ部の「Ｂ０ｈ」はバイナリデータ読み出し（READ BINARY）を示す値である。
【００８６】
これに対してセキュアエレメント２のＣＰＵ２１は、ＩＮＳ部に基づいてＲＥＡＤコマンドであることを解釈し、直前に選択したファイルのデータを読み出す処理を実行し、処理が正常終了したことを示すＳＷ「９０００ｈ」を含むブロックをマイコン１１に返信する（ステップＳ４０４）。このとき、ＣＰＵ２１は、ＮＡＤ部及びＰＣＢ部には、ステップＳ４０３の処理で受信したブロックのＮＡＤ部及びＰＣＢ部と同じ値を格納する。また、ＬＥＮ部に続くＤ１部〜Ｄ１６部に読み出したデータを格納する。更にＤ１６部に続くＳＷ１部、ＳＷ２部にＳＷを格納する。
【００８７】
以上のように、本実施形態のセキュアエレメント２は、マイコン１１（「外部機器」の一例）との間でマスターモードとスレーブモードを夫々切り替えながら通信を行うものであって、不揮発性メモリ２３（「モード記憶手段」の一例）は、セキュアエレメント２がマスターモードとスレーブモードの何れのモードであるかを示すモード情報を記憶し、ＣＰＵ２１（「受信手段」、「更新手段」、「送信手段」の一例）が、モード情報がスレーブモードであることを示している場合に、マスターモードであるマイコン１１が出力するクロック信号に同期して、マイコン１１が送信するデータを受信し、当該データを受信した場合に、モード情報をスレーブモードであることを示す情報からマスターモードであることを示す情報に更新し、モード情報がマスターモードであることを示している場合に、スレーブモードであるマイコン１１にクロック信号を出力するとともに、当該クロック信号に同期させて、マイコン１１にデータを送信する。
【００８８】
したがって、本実施形態のセキュアエレメント２によれば、マイコン１１とマスターモードとスレーブモードを夫々切り替えながら、スレーブモードである場合にマスターモードであるマイコン１１からデータを受信し、当該データを受信した場合にスレーブモードからマスターモードに更新し、マスターモードである場合にスレーブモードであるマイコン１１にデータを送信する。すなわち、マイコン１１とセキュアエレメント２のそれぞれがマスターとスレーブとなって通信を行う場合において、セキュアエレメント２はマスターとして動作することにより任意のタイミングでデータを送信することができ、セキュアエレメント２側の通信に関する制約を減らし、通信の自由度を向上させることができる。
【００８９】
また、ＣＰＵ２１（「設定手段」の一例）は、セキュアエレメント２がマイコン１１に出力するクロック信号のクロック周波数を設定し、当該設定されたクロック周波数によりマイコン１１にクロック信号を出力する。これにより、セキュアエレメント２は自ら通信速度を設定することができ、通信の自由度が向上する。
【００９０】
更に、セキュアエレメント２におけるＩ／Ｏ回路２４のＣｌｏｃｋ端子（「クロック線端子」の一例）は、マイコン１１が出力するクロック信号を受信するクロック線であって、且つ、セキュアエレメント２が出力するクロック信号を送信するクロック線が接続され、Ｉ／Ｏ回路２４のＭＯＳＩ端子（「信号線端子」の一例）は、マイコン１１が送信するデータを受信する信号線であって、且つ、セキュアエレメント２が送信するデータを送信する信号線が接続される。すなわち、マイコン１１とセキュアエレメント２は、ＳＰＩ通信のクロック線とＭＯＳＩ線を用いて通信を行うことができる。
【００９１】
更にまた、セキュアエレメント２におけるＩ／Ｏ回路２４のシフトレジスタは、セキュアエレメント２がマイコン１１に送信するデータを記憶し、ＣＰＵ２１は、シフトレジスタに記憶されたデータを、クロック信号に同期させて、１ビットずつシフトさせながら送信する。これにより、シリアル通信によりセキュアエレメント２はマイコン１１にデータを送信することができる。
【００９２】
更にまた、マイコン１１がセキュアエレメント２に送信するデータは、ＩＳＯ７８１６−３に準拠したコマンドであり、セキュアエレメント２がマイコン１１に送信するデータは、ＩＳＯ７８１６−３に準拠したレスポンスである。これにより、ＳＰＩ通信のスレーブ側の制約を受けることなくセキュアエレメント２は通信を行うことができる。
【００９３】
［４．スタートビット及びパリティビットの追加］
従来、ＳＰＩ通信では機器間で通信される通信データにスタートビットやパリティビットを付加せずに送信する。そのため、データを受信するスレーブ側では、そのデータがマスター側の意図したデータに間違いないか確認することができなかった。
【００９４】
そこで、マイコン１１とセキュアエレメント２間でのデータ通信では、通信データにスタートビットやパリティビットを付加して送信することとしてもよい。以下、図８を用いて、通信データにスタートビットやパリティビットを付加する方法について説明する。なおここでは、図８（Ａ）に示すように、通信データである「Ａ５ｈ（１０１００１０１ｂ）」に、スタートビット（１ビット）、パリティビット（１ビット）及び補足ビット（６ビット）を付加して２バイトの通信データとして送信する場合について説明する。
【００９５】
まず、「Ａ５ｈ（１０１００１０１ｂ）」が格納される領域に１バイト（８ビット）の領域を追加する（図８（Ｂ）参照）。
【００９６】
次に、追加した８ビットのうち２ビットをスタートビット用の１ビットと、パリティビット用の１ビットとして、「Ａ５ｈ（１０１００１０１ｂ）」が格納される領域の前後に配置する（図８（Ｃ）参照）。このとき、「１０１００１０１ｂ」は１ビットシフトすることとなる。
【００９７】
次に、スタートビット用の１ビットを「０ｂ」とし、パリティビット用の１ビットを「０ｂ」とする（図８（Ｄ）参照）。なお、ここでは偶数パリティ方式を採用することとするが、奇数パリティ方式としてもよい。
【００９８】
次に、追加した８ビットの残り６ビット（補足ビット）をすべて「１ｂ」とする（図８（Ｅ）参照）。すなわち、送信データは「ＦＤ４Ａｈ」となる。
【００９９】
これにより、データの送信時には、図８（Ｆ）に示すようにＭＯＳＩ線の電圧が推移することとなる。なお、「Ｈ」ｉｇｈが「１ｂ」に対応し、「Ｌ」ｏｗが「０ｂ」に対応する。
【０１００】
このように、マイコン１１とセキュアエレメント２の間で通信される通信データにスタートビットを付加することにより、スレーブ側は通信データが例えば「ＦＦｈ」のためにＭＯＳＩ線の電圧がＨｉｇｈとなっている場合と、通信データがないためにＭＯＳＩ線の電圧がＨｉｇｈとなっている場合とを判別することができる。
【０１０１】
また、マイコン１１とセキュアエレメント２の間で通信される通信データにパリティビットを付加することにより、通信データを受信したスレーブ（受信）側はパリティビットに基づいて、通信データがマスター（送信）側の意図したデータであるかを確認することができる。
【０１０２】
なお、ここでは、マイコン１１とセキュアエレメント２の間で通信される通信データにスタートビット及びパリティビットを付加することとしたが、マイコン１１からセキュアエレメント２に送信されるデータ、又は、セキュアエレメント２からマイコン１１に送信されるデータの少なくとも何れか一方に、スタートビット又はパリティビットの少なくとも何れか一方を付加することとしてもよい。
【符号の説明】
【０１０３】
１  ＩｏＴ端末
１１  マイコン
１１１  ＣＰＵ
１１２  ＲＡＭ
１１３  ＲＯＭ
１１４  Ｉ／Ｏ回路
１１５  不揮発性メモリ
１１６  発振器
１２  通信部
１３  入力部
１４  出力部
２  セキュアエレメント
２１  ＣＰＵ
２２  ＲＡＭ
２３  不揮発性メモリ
２４  Ｉ／Ｏ回路
２５  発振器
Ｓ  サーバ
Ｎ  ネットワーク
【図１】
2020013256.tif 000003
【図２】
2020013256.tif 000004
【図３】
2020013256.tif 000005
【図４】
2020013256.tif 000006
【図５】
2020013256.tif 000007
【図６】
2020013256.tif 000008
【図７】
2020013256.tif 000009
【図８】
2020013256.tif 000010