(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-08
(45)【発行日】2022-11-16
(54)【発明の名称】セキュアエレメント、通信方法、通信プログラム及び通信システム
(51)【国際特許分類】
G06F 13/38 20060101AFI20221109BHJP
G06F 13/10 20060101ALI20221109BHJP
G06F 13/42 20060101ALI20221109BHJP
【FI】
G06F13/38 320A
G06F13/10 310E
G06F13/38 350
G06F13/42 350B
(21)【出願番号】P 2018134145
(22)【出願日】2018-07-17
【審査請求日】2021-05-25
(73)【特許権者】
【識別番号】000002897
【氏名又は名称】大日本印刷株式会社
(74)【代理人】
【識別番号】110000958
【氏名又は名称】弁理士法人インテクト国際特許事務所
(74)【代理人】
【識別番号】100120189
【氏名又は名称】奥 和幸
(72)【発明者】
【氏名】高田 憲一
【審査官】局 成矢
(56)【参考文献】
【文献】米国特許出願公開第2017/0019142(US,A1)
【文献】特開2018-088156(JP,A)
【文献】特開平09-154184(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/38
H04L 9/10
G06F 13/10
G06F 13/42
(57)【特許請求の範囲】
【請求項1】
データ送信時にマスターモードで動作し、データ送信時以外ではスレーブモードで動作する外部機器との間で前記マスターモードと前記スレーブモードを夫々切り替えながら通信を行うセキュアエレメントであって、
前記セキュアエレメントが前記マスターモードと前記スレーブモードの何れのモードであるかを示すモード情報を記憶するモード記憶手段と、
前記モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記外部機器が出力するクロック信号に同期して、当該外部機器が送信するデータを受信する受信手段と、
前記受信手段が前記データを受信した場合に、前記モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する更新手段と、
前記モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記外部機器にクロック信号を出力するとともに、当該クロック信号に同期させて、当該外部機器にデータを送信する送信手段と、
前記送信手段による前記データの送信が完了した場合に、前記モード情報を前記マスターモードであることを示す情報から前記スレーブモードであることを示す情報に更新する第2更新手段と、
を備え、
前記モード情報は、前記外部機器へのデータ送信時以外ではスレーブモードであることを示すことを特徴とするセキュアエレメント。
【請求項2】
請求項1に記載のセキュアエレメントであって、
前記セキュアエレメントが前記外部機器に出力する前記クロック信号のクロック周波数を設定する設定手段を更に備え、
前記送信手段は、前記設定手段により設定された前記クロック周波数により前記外部機器に前記クロック信号を出力することを特徴とするセキュアエレメント。
【請求項3】
請求項1又は2に記載のセキュアエレメントであって、
前記外部機器が出力するクロック信号を受信するクロック線であって、且つ、前記セキュアエレメントが出力するクロック信号を送信するクロック線が接続されるクロック線端子と、
前記外部機器が送信するデータを受信する信号線であって、且つ、前記セキュアエレメントが送信するデータを送信する信号線が接続される信号線端子と、
を更に備えることを特徴とするセキュアエレメント。
【請求項4】
請求項1乃至3の何れか一項に記載のセキュアエレメントであって、
前記セキュアエレメントが前記外部機器に送信するデータを記憶するシフトレジスタを更に備え、
前記送信手段は、前記シフトレジスタに記憶されたデータを、前記クロック信号に同期させて、1ビットずつシフトさせながら送信することを特徴とするセキュアエレメント。
【請求項5】
請求項1乃至4の何れか一項に記載のセキュアエレメントであって、
前記外部機器が前記セキュアエレメントに送信するデータは、ISO7816-3に準拠したコマンドであり、前記セキュアエレメントが前記外部機器に送信するデータは、ISO7816-3に準拠したレスポンスであることを特徴とするセキュアエレメント。
【請求項6】
請求項1乃至5の何れか一項に記載のセキュアエレメントであって、
前記受信手段が前記外部機器から受信するデータ、又は、前記送信手段が前記外部機器に送信するデータの少なくとも何れか一方には、スタートビットが付加されていることを特徴とするセキュアエレメント。
【請求項7】
請求項1乃至6の何れか一項に記載のセキュアエレメントであって、
前記受信手段が前記外部機器から受信するデータ、又は、前記送信手段が前記外部機器に送信するデータの少なくとも何れか一方には、パリティビットが付加されていることを特徴とするセキュアエレメント。
【請求項8】
データ送信時にマスターモードで動作し、データ送信時以外ではスレーブモードで動作する外部機器との間で前記マスターモードと前記スレーブモードを夫々切り替えながら通信を行うセキュアエレメントであって、前記セキュアエレメントが前記マスターモードと前記スレーブモードの何れのモードであるかを示すモード情報を記憶するモード記憶手段を備えるセキュアエレメントによる通信方法であって、
前記モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記外部機器が出力するクロック信号に同期して、当該外部機器が送信するデータを受信する受信工程と、
前記受信工程により前記データを受信した場合に、前記モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する更新工程と、
前記モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記外部機器にクロック信号を出力するとともに、当該クロック信号に同期させて、当該外部機器にデータを送信する送信工程と、
前記送信工程による前記データの送信が完了した場合に、前記モード情報を前記マスターモードであることを示す情報から前記スレーブモードであることを示す情報に更新する第2更新工程と、
を含み、
前記モード情報は、前記外部機器へのデータ送信時以外ではスレーブモードであることを示すことを特徴とする通信方法。
【請求項9】
データ送信時にマスターモードで動作し、データ送信時以外ではスレーブモードで動作する外部機器との間で前記マスターモードと前記スレーブモードを夫々切り替えながら通信を行うセキュアエレメントであって、前記セキュアエレメントが前記マスターモードと前記スレーブモードの何れのモードであるかを示すモード情報を記憶するモード記憶手段を備えるセキュアエレメントに含まれるコンピュータを、
前記モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記外部機器が出力するクロック信号に同期して、当該外部機器が送信するデータを受信する受信手段、
前記受信手段が前記データを受信した場合に、前記モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する更新手段、
前記モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記外部機器にクロック信号を出力するとともに、当該クロック信号に同期させて、当該外部機器にデータを送信する送信手段、
前記送信手段による前記データの送信が完了した場合に、前記モード情報を前記マスターモードであることを示す情報から前記スレーブモードであることを示す情報に更新する第2更新手段、
として機能させ、
前記モード情報は、前記外部機器へのデータ送信時以外ではスレーブモードであることを示すことを特徴とする通信プログラム。
【請求項10】
マスターモードとスレーブモードを夫々切り替えながら外部機器とセキュアエレメントの間で通信を行う通信システムであって、
前記外部機器は、
前記外部機器が前記マスターモードと前記スレーブモードの何れのモードであるかを示す第1モード情報を記憶する第1モード記憶手段と、
前記セキュアエレメントにデータを送信する場合に、前記第1モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する第1更新手段と、
前記第1モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記セキュアエレメントにクロック信号を出力するとともに、当該クロック信号に同期させて、当該セキュアエレメントにデータを送信する第1送信手段と、
前記第1送信手段による前記データの送信が完了した場合に、前記第1モード情報を前記マスターモードであることを示す情報から前記スレーブモードであることを示す情報に更新する第2更新手段と、
前記第1モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記セキュアエレメントが出力するクロック信号に同期して、当該セキュアエレメントが送信するデータを受信する第1受信手段と、
を備え、
前記セキュアエレメントは、
前記セキュアエレメントが前記マスターモードと前記スレーブモードの何れのモードであるかを示す第2モード情報を記憶する第2モード記憶手段と、
前記第2モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記外部機器が出力するクロック信号に同期して、当該外部機器が送信するデータを受信する第2受信手段と、
前記第2受信手段が前記データを受信した場合に、前記第2モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する第3更新手段と、
前記第2モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記外部機器にクロック信号を出力するとともに、当該クロック信号に同期させて、当該外部機器にデータを送信する第2送信手段と、
前記第2送信手段による前記データの送信が完了した場合に、前記
第2モード情報を前記マスターモードであることを示す情報から前記スレーブモードであることを示す情報に更新する第4更新手段と、
を備え、
第1モード情報は、前記セキュアエレメントへのデータ送信時以外ではスレーブモードであることを示し、
第2モード情報は、前記外部機器へのデータ送信時以外ではスレーブモードであることを示すことを特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【0001】
IC(Integrated Circuit)チップ等の電子情報記憶媒体の技術分野に関する。
【背景技術】
【0002】
IoT(Internet of Things)製品は、インターネットを介して、IoT製品が備えるセンサーで測定したデータをサーバで取得すること、IoT製品をサーバにより遠隔管理することなどを目的として利用される。IoT製品はインターネットを介してサーバと接続されるため安全性が求められることから、IoT製品にセキュアエレメント(Secure Element)を設けて、鍵などの秘密情報を管理する動きがある。特許文献1には、鍵情報を保持するセキュリティチップとサーバとの間で安全な通信経路を確立して秘密情報を送受信するシステムが開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、IoT製品に搭載されるマイコンは簡素で汎用性の高いSPI(Serial Peripheral Interface)が搭載されていることが多く、今後SPI通信が可能なセキュアエレメントが求められることが想定される。
【0005】
従来のSPI通信では、一方の機器がマスター(Master)、他方の機器がスレーブ(Slave)となって、マスターである機器が発信するクロック信号に同期して、夫々の機器が通信を行う。すなわち、クロック信号を発するマスターである機器が通信を行う時期や通信速度などを主導する。そのため、SPI通信はスレーブである機器にとって自由度が低い。
【0006】
例えば、マスターをマイコン、スレーブをセキュアエレメントとした場合、マイコンがクロック信号を送ったときにしか、セキュアエレメントはデータを送信できないという制約がある。そのため、例えば、マイコンからセキュアエレメントに命令が出された場合、セキュアエレメントはその命令を実行し、結果をマイコンに送信しようとしても、マイコンからクロック信号が送られてくるのを待機しなければならない。この場合、マイコンは、命令を送信してからセキュアエレメントが命令の実行を完了して結果を送信してくるまで、定期的にクロック信号を送り続けることとなる。
【0007】
こうした事情を鑑み、本発明は、外部機器とセキュアエレメントのそれぞれがマスターとスレーブとなって通信を行う場合におけるセキュアエレメント側の通信に関する制約を減らし、延いては通信の自由度を向上させることを課題とする。
【課題を解決するための手段】
【0008】
上記課題を解決するために、請求項1に記載の発明は、データ送信時にマスターモードで動作し、データ送信時以外ではスレーブモードで動作する外部機器との間で前記マスターモードと前記スレーブモードを夫々切り替えながら通信を行うセキュアエレメントであって、前記セキュアエレメントが前記マスターモードと前記スレーブモードの何れのモードであるかを示すモード情報を記憶するモード記憶手段と、前記モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記外部機器が出力するクロック信号に同期して、当該外部機器が送信するデータを受信する受信手段と、
前記受信手段が前記データを受信した場合に、前記モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する更新手段と、前記モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記外部機器にクロック信号を出力するとともに、当該クロック信号に同期させて、当該外部機器にデータを送信する送信手段と、前記送信手段による前記データの送信が完了した場合に、前記モード情報を前記マスターモードであることを示す情報から前記スレーブモードであることを示す情報に更新する第2更新手段と、を備え、前記モード情報は、前記外部機器へのデータ送信時以外ではスレーブモードであることを示すことを特徴とする。
【0009】
請求項2に記載の発明は、請求項1に記載のセキュアエレメントであって、前記セキュアエレメントが前記外部機器に出力する前記クロック信号のクロック周波数を設定する設定手段を更に備え、前記送信手段は、前記設定手段により設定された前記クロック周波数により前記外部機器に前記クロック信号を出力することを特徴とする。
【0010】
請求項3に記載の発明は、請求項1又は2に記載のセキュアエレメントであって、前記外部機器が出力するクロック信号を受信するクロック線であって、且つ、前記セキュアエレメントが出力するクロック信号を送信するクロック線が接続されるクロック線端子と、前記外部機器が送信するデータを受信する信号線であって、且つ、前記セキュアエレメントが送信するデータを送信する信号線が接続される信号線端子と、を更に備えることを特徴とする。
【0011】
請求項4に記載の発明は、請求項1乃至3の何れか一項に記載のセキュアエレメントであって、前記セキュアエレメントが前記外部機器に送信するデータを記憶するシフトレジスタを更に備え、前記送信手段は、前記シフトレジスタに記憶されたデータを、前記クロック信号に同期させて、1ビットずつシフトさせながら送信することを特徴とする。
【0012】
請求項5に記載の発明は、請求項1乃至4の何れか一項に記載のセキュアエレメントであって、前記外部機器が前記セキュアエレメントに送信するデータは、ISO7816-3に準拠したコマンドであり、前記セキュアエレメントが前記外部機器に送信するデータは、ISO7816-3に準拠したレスポンスであることを特徴とする。
【0013】
請求項6に記載の発明は、請求項1乃至5の何れか一項に記載のセキュアエレメントであって、前記受信手段が前記外部機器から受信するデータ、又は、前記送信手段が前記外部機器に送信するデータの少なくとも何れか一方には、スタートビットが付加されていることを特徴とする。
【0014】
請求項7に記載の発明は、請求項1乃至6の何れか一項に記載のセキュアエレメントであって、前記受信手段が前記外部機器から受信するデータ、又は、前記送信手段が前記外部機器に送信するデータの少なくとも何れか一方には、パリティビットが付加されていることを特徴とする。
【0015】
請求項8に記載の発明は、データ送信時にマスターモードで動作し、データ送信時以外ではスレーブモードで動作する外部機器との間で前記マスターモードと前記スレーブモードを夫々切り替えながら通信を行うセキュアエレメントであって、前記セキュアエレメントが前記マスターモードと前記スレーブモードの何れのモードであるかを示すモード情報を記憶するモード記憶手段を備えるセキュアエレメントによる通信方法であって、前記モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記外部機器が出力するクロック信号に同期して、当該外部機器が送信するデータを受信する受信工程と、前記受信工程により前記データを受信した場合に、前記モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する更新工程と、前記モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記外部機器にクロック信号を出力するとともに、当該クロック信号に同期させて、当該外部機器にデータを送信する送信工程と、前記送信工程による前記データの送信が完了した場合に、前記モード情報を前記マスターモードであることを示す情報から前記スレーブモードであることを示す情報に更新する第2更新工程と、を含み、前記モード情報は、前記外部機器へのデータ送信時以外ではスレーブモードであることを示すことを特徴とする。
【0016】
請求項9に記載の発明は、データ送信時にマスターモードで動作し、データ送信時以外ではスレーブモードで動作する外部機器との間で前記マスターモードと前記スレーブモードを夫々切り替えながら通信を行うセキュアエレメントであって、前記セキュアエレメントが前記マスターモードと前記スレーブモードの何れのモードであるかを示すモード情報を記憶するモード記憶手段を備えるセキュアエレメントに含まれるコンピュータを、前記モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記外部機器が出力するクロック信号に同期して、当該外部機器が送信するデータを受信する受信手段、前記受信手段が前記データを受信した場合に、前記モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する更新手段、前記モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記外部機器にクロック信号を出力するとともに、当該クロック信号に同期させて、当該外部機器にデータを送信する送信手段、前記送信手段による前記データの送信が完了した場合に、前記モード情報を前記マスターモードであることを示す情報から前記スレーブモードであることを示す情報に更新する第2更新手段、として機能させ、前記モード情報は、前記外部機器へのデータ送信時以外ではスレーブモードであることを示すことを特徴とする。
【0017】
請求項10に記載の発明は、マスターモードとスレーブモードを夫々切り替えながら外部機器とセキュアエレメントの間で通信を行う通信システムであって、前記外部機器は、前記外部機器が前記マスターモードと前記スレーブモードの何れのモードであるかを示す第1モード情報を記憶する第1モード記憶手段と、前記セキュアエレメントにデータを送信する場合に、前記第1モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する第1更新手段と、前記第1モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記セキュアエレメントにクロック信号を出力するとともに、当該クロック信号に同期させて、当該セキュアエレメントにデータを送信する第1送信手段と、前記第1送信手段による前記データの送信が完了した場合に、前記第1モード情報を前記マスターモードであることを示す情報から前記スレーブモードであることを示す情報に更新する第2更新手段と、前記第1モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記セキュアエレメントが出力するクロック信号に同期して、当該セキュアエレメントが送信するデータを受信する第1受信手段と、を備え、前記セキュアエレメントは、前記セキュアエレメントが前記マスターモードと前記スレーブモードの何れのモードであるかを示す第2モード情報を記憶する第2モード記憶手段と、前記第2モード情報が前記スレーブモードであることを示している場合に、前記マスターモードである前記外部機器が出力するクロック信号に同期して、当該外部機器が送信するデータを受信する第2受信手段と、前記第2受信手段が前記データを受信した場合に、前記第2モード情報を前記スレーブモードであることを示す情報から前記マスターモードであることを示す情報に更新する第3更新手段と、前記第2モード情報が前記マスターモードであることを示している場合に、前記スレーブモードである前記外部機器にクロック信号を出力するとともに、当該クロック信号に同期させて、当該外部機器にデータを送信する第2送信手段と、前記第2送信手段による前記データの送信が完了した場合に、前記第2モード情報を前記マスターモードであることを示す情報から前記スレーブモードであることを示す情報に更新する第4更新手段と、を備え、第1モード情報は、前記セキュアエレメントへのデータ送信時以外ではスレーブモードであることを示し、第2モード情報は、前記外部機器へのデータ送信時以外ではスレーブモードであることを示すことを特徴とする。
【発明の効果】
【0018】
本発明によれば、外部機器とマスターモードとスレーブモードを夫々切り替えながら、スレーブモードである場合にマスターモードである外部機器からデータを受信し、当該データを受信した場合にスレーブモードからマスターモードに更新し、マスターモードである場合にスレーブモードである外部機器にデータを送信する。すなわち、外部機器とセキュアエレメントのそれぞれがマスターとスレーブとなって通信を行う場合において、セキュアエレメントはマスターとして動作することにより任意のタイミングでデータを送信することができることから、セキュアエレメント側の通信に関する制約が減り、通信の自由度が向上する。
【図面の簡単な説明】
【0019】
【
図2】(A)はIoT端末1の構成例を示すブロック図である。(B)は、マイコン11とセキュアエレメント2間の信号線の一例を示す図である。
【
図3】マイコン11とセキュアエレメント2間の送受信処理(T=0)の流れの一例を示すシーケンス図である。
【
図4】マイコン11とセキュアエレメント2間の送受信処理(T=0)の流れと送受信されるデータの一例を示すシーケンス図である。
【
図5】マイコン11とセキュアエレメント2間の送受信処理(T=0)の流れと送受信されるデータの一例を示すシーケンス図である。
【
図6】マイコン11とセキュアエレメント2間の送受信処理(T=1)の流れの一例を示すシーケンス図である。
【
図7】マイコン11とセキュアエレメント2間の送受信処理(T=1)の流れと送受信されるデータの一例を示すシーケンス図である。
【
図8】(A)~(E)は、送信データにスタートビット、パリティビットを付加する方法を説明するための図であり、(F)は、送信データを送信する際の信号線の電圧遷移例を示す図である。
【発明を実施するための形態】
【0020】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、インターネットなどのネットワークを介してサーバと接続するIoT端末に搭載されるセキュアエレメントに対して本発明を適用した場合の実施の形態である。
【0021】
図1に示すように、通信システムはサーバSとIoT端末1を備え、サーバSとIoT端末1はネットワークNを介して互いに通信し、その際に使用する秘密鍵をそれぞれが記憶する。サーバSとIoT端末1は、秘密鍵を使用して、互いの正当性の証明を目的とした相互認証や、通信データを秘匿するための暗号・復号処理を行う。
【0022】
[1.IoT端末1の構成]
図2(A)を用いて、IoT端末1の構成について説明する。
図2(A)は、IoT端末1のハードウェア構成例を示す図である。IoT端末1は、マイコン11、通信部12、入力部13、出力部14及びセキュアエレメント2を備えて構成される。
【0023】
マイコン11は、CPU(Central Processing Unit)111、RAM(Random Access Memory)112、ROM(Read Only Memory)113、I/O回路114、不揮発性メモリ115、及び発振器116を含んで構成され、IoT端末1全体を制御する。例えば、マイコン11は、入力部13に入力された入力データや入力情報に基づいて処理を行い、出力部14に出力データや出力情報を出力する。また、マイコン11は、サーバSと通信する場合に、セキュアエレメント2に記憶されている秘密鍵を用いて、相互認証や通信データの暗号・復号処理を行う。通信部12は、無線通信のためのアンテナを有し、ネットワークNを介してサーバSと通信を行うための処理を行う。入力部13は、マイコン11に入力データや入力情報を入力する。例えば、入力部13がセンサーであれば検出データを入力し、タイマーであれば一定時間が経過したことを示す入力データを入力し、入力部13がキーボードやボタンなどの操作部であれば、操作部に対する操作内容を示す入力情報を入力する。出力部14は、マイコン11から出力された出力データや出力情報に基づいて出力を行う。例えば、出力部14がLED(Light Emitting Diode)であれば発光し、音声出力装置であれば音声を出力する。
【0024】
RAM112には、例えばOS、各種アプリケーションが機能するうえで一時的に必要となるデータが記憶される。ROM113には、OS、各種アプリケーション等が記憶される。不揮発性メモリ115には、例えばフラッシュメモリ又は「Electrically Erasable Programmable Read-Only Memory」などを適用することができる。不揮発性メモリ115は、
図3-
図7を用いて説明する処理を実行するためのプログラム等を記憶する。また、不揮発性メモリ115は、後述する、マイコン11がマスターモードであるかスレーブモードであるかを示すモード情報を記憶する。
【0025】
I/O回路114は、セキュアエレメント2との通信インターフェイスを担う。この通信インターフェイスはSPIである。I/O回路114は、送受信されるデータを蓄積するためのシフトレジスタ、及び4つの信号線の端子(接触部)を備える。
図2(B)に示すように、4つの信号線は、Clock線、MOSI(Master-Out Slave-In)線、MISO(Master-In Slave-Out)線、及びSS(Slave Select)線であり、端子はそれぞれの信号線に対応するClock端子、MOSI端子、MISO端子、及びSS端子である。なお、シフトレジスタ、Clock端子、MOSI端子、MISO端子、及びSS端子は、セキュアエレメント2にも備えられる。I/O回路114のClock端子と、セキュアエレメント2のClock端子とは、直接的に又は外部信号線を介して接続される。また、I/O回路114のMOSI端子と、セキュアエレメント2のMOSIの端子とは、直接的に又は外部信号線を介して接続される。また、I/O回路114のMISO端子と、セキュアエレメント2のMISO端子とは、直接的に又は外部信号線を介して接続される。また、I/O回路114のSS端子と、セキュアエレメント2のSS端子とは、直接的に又は外部信号線を介して接続される。
【0026】
発振器116は、予め設定されたクロック周波数のクロック信号を生成し、CPU111の制御の下、Clock線を介してセキュアエレメント2に出力する。なお、CPU111は、外部からの命令、マイコン11の状況等に従ってクロック周波数を設定する。
【0027】
セキュアエレメント2は、CPU21、RAM22、不揮発性メモリ23、I/O回路24及び発振器25を備えて構成され、外部からの悪意を持った解析攻撃に耐えられるように設計され、セキュアな環境を形成する。CPU21は、不揮発性メモリ23に記憶された各種プログラムを実行するプロセッサ(コンピュータ)である。
【0028】
不揮発性メモリ23には、例えばフラッシュメモリ又は「Electrically Erasable Programmable Read-Only Memory」などを適用することができる。不揮発性メモリ23は、OS、各種アプリケーション、
図3-
図7を用いて説明する処理を実行するためのプログラム、秘密鍵等を記憶する。また、不揮発性メモリ23は、後述する、セキュアエレメント2がマスターモードであるかスレーブモードであるかを示すモード情報を記憶する。
【0029】
RAM22には、例えばOS、各種アプリケーションが機能するうえで一時的に必要となるデータが記憶される。
【0030】
I/O回路24は、マイコン11との通信インターフェイスを担う。この通信インターフェイスはSPIである。I/O回路24は、送受信されるデータを蓄積するためのシフトレジスタ、及び4つの信号線の端子(接触部)を備える。
【0031】
発振器25は、予め設定されたクロック周波数のクロック信号を生成し、CPU21の制御の下、Clock線を介してマイコン11に出力する。なお、CPU21は、外部からの命令、セキュアエレメント状況等に従ってクロック周波数を設定する。
【0032】
SPI通信では、マスターがSSを例えばローアクティブにすることで通信が開始される。
【0033】
CPU21は、不揮発性メモリ23に記憶されているモード情報がマスターモードを示している場合に、SPI通信におけるマスターとして動作する。セキュアエレメント2がデータを送信するとき、発振器25により生成されたクロック信号(同期信号)がClock線を介してセキュアエレメント2からマイコン11へ送信される。また、セキュアエレメント2のシフトレジスタにセットされたデータが、上記クロック信号に従って1ビットずつシフトされながらMOSIを介してセキュアエレメント2からマイコン11へ送信される。
【0034】
また、CPU21は、不揮発性メモリ23に記憶されているモード情報がスレーブモードを示している場合に、SPI通信におけるスレーブとして動作する。マイコン11がデータを送信するとき、マイコン11の発振器116により生成されたクロック信号(同期信号)がClock線を介してマイコン11からセキュアエレメント2へ送信される。また、マイコン11のシフトレジスタにセットされたデータが、上記クロック信号に従って1ビットずつシフトされながらMOSIを介してマイコン11からセキュアエレメント2へ送信される。
【0035】
本実施形態のマイコン11とセキュアエレメント2は、それぞれがマスター又はスレーブとして動作する。具体的には、データを送信する場合にマスターとして動作し、データを受信する場合にスレーブとして動作する。そのため、マイコン11の不揮発性メモリ115とセキュアエレメント2の不揮発性メモリ23は、それぞれ、マスターとして動作するマスターモードであるか、スレーブとして動作するスレーブモードであるかを示すモード情報を記憶する。具体的には、マイコン11とセキュアエレメント2間で通信が行われない場合には、それぞれスレーブモードとなり、自らデータを相手方に送信する場合に自らのモードをスレーブモードからマスターモードに変更する。なお、マイコン11とセキュアエレメント2の双方が同時にマスターモードとなってしまうと、データの送受信を正常に行うことができない場合がある。そこで、予めそのような状況にならないようにルールを定め、そのルールに従ってマイコン11とセキュアエレメント2は動作することとする。
【0036】
なお、SPI通信では、
図2(B)に示すように、Clock線、MOSI線、MISO線、及びSS線の4つの信号線を用いて通信を行うが、本実施形態では、マスターモードにある機器からスレーブモードにある機器にデータを送信し、互いに同時にデータを送信することがないことから、MISO線を使用しない。
【0037】
[2.マイコン11とセキュアエレメント2間の送受信処理(T=0)]
次に、
図3を用いて、マイコン11とセキュアエレメント2間の送受信処理の流れについて説明する。なお、
図3は、マイコン11とセキュアエレメント2間の送受信処理の流れの一例を示すシーケンス図である。なお、当該シーケンス図に示す処理の開始前における、マイコン11とセキュアエレメント2のそれぞれのモード情報はスレーブモードを示しているものとする。また、
図3は、ISO7816-3で定められたT=0プロトコルに従って通信を行う場合の例である。
【0038】
まず、マイコン11のCPU111は、自らのモードをスレーブモードからマスターモードに移行する(ステップS101A)。具体的には、マイコン11の不揮発性メモリ115に記憶されているモード情報をスレーブモードであることを示す情報からマスターモードであることを示す情報に更新する。なお、以下、スレーブモードからマスターモードへの移行すること、マスターモードからスレーブモードへの移行することは、マイコン11が備える不揮発性メモリ115、又は、セキュアエレメント2が備える不揮発性メモリ23において記憶されているモード情報を更新することを意味する。
【0039】
次いで、CPU111は、コマンドヘッダをセキュアエレメント2に送信する(ステップS102A)。コマンドヘッダは、CLA部(1バイト)、INS部(1バイト)、P1部(1バイト)、P2部(1バイト)、P3(Lc)部(1バイト)で構成される。P3(Lc)部には、コマンドヘッダに続いて送信すべきデータの長さが格納される。
【0040】
次いで、CPU111は、自らのモードをマスターモードからスレーブモードに移行する(ステップS103A)。
【0041】
一方、セキュアエレメント2のCPU21は、マイコン11からコマンドヘッダを受信すると(ステップS101B)、コマンドに応じた処理を開始する(ステップS102B)。コマンドに応じた処理とは、例えば、INS部を解釈する処理や、解釈した内容に応じた処理などを含む。
【0042】
次いで、CPU21は、コマンドに応じた処理が終了したか否かを判定する(ステップS103B)。CPU21は、コマンドに応じた処理が終了したと判定した場合には(ステップS103B:YES)、ステップS108Bの処理に移行する。一方、CPU21は、コマンドに応じた処理が終了していないと判定した場合には(ステップS103B:NO)、次いで、処理を開始してから所定時間が経過したか否かを判定する(ステップS104B)。所定時間は、ISO7816-3で定められた、コマンドを受信してから応答を返信するまでの上限時間に応じて設定される。CPU21は、所定時間が経過したと判定した場合には(ステップS104B:YES)、自らのモードをスレーブモードからマスターモードに移行し(ステップS105B)、1バイトのプロシージャバイト「60h」をマイコン11に送信する(ステップS106B)。次に、CPU21は、自らのモードをマスターモードからスレーブモードに移行し(ステップS107B)、ステップS103Bの処理に移行する。
【0043】
プロシージャバイトは、マイコン11から受信したデータ(コマンドヘッダを含む)に対する1バイトの応答のことである。本実施形態において、CPU21は4種類のプロシージャバイトをマイコン11に送信する。一つ目は、「60h」(「NULLバイト」という)であり、マイコン11に正式な応答を待って欲しい(処理が終了していないため)ことを意味する。ISO7816-3では、コマンドを受信してから所定時間内に応答しないとならないというルールが定められているため、処理が終了していない場合にこの応答を返す。二つ目は、「6X(60以外)h」、「9Xh」であり、処理結果に応じた値である。なお、プロシージャバイトが「6X(60以外)h」、「9Xh」である場合、プロシージャバイトはステータスワード(SW)の1バイト目(SW1)に対応する。この場合、SW1であるプロシージャバイトに続いて、SW2(SWの2バイト目)がマイコン11に送信される。三つ目は、ステップS101Bの処理で受信したコマンドヘッダのINS部に格納された値と同じ値(「ACKバイト」という)であり、コマンドヘッダに続くデータをまとめて送信することを要求する場合や、レスポンスデータを送信することを知らせる場合に設定される。例えば、INS部がファイル選択(SELECT)の命令を示していた場合、CPU21がINS部の値をプロシージャバイトとして返すことにより、マイコン11は、選択するファイルを識別するためのファイルID(FID)をセキュアエレメント2に送信する。四つ目は、ステップS101Bの処理で受信したコマンドヘッダのINS部に格納された値と「FFh」のXOR(排他的論理和)であり、コマンドヘッダに続くデータを1バイト送信することを要求する場合に設定される。
【0044】
CPU21は、ステップS104Bの処理において、所定時間が経過していないと判定した場合には(ステップS104B:NO)、ステップS103Bの処理に移行する。すなわち、CPU21は、ステップ103Bにおいて「YES」と判定するまで、所定時間経過毎にプロシージャバイト「60h」をマイコン11に送信する。
【0045】
CPU21は、ステップS103Bの処理において終了したと判定した場合には(ステップS103B:YES)、次いで、コマンドヘッダに続くコマンドデータが必要か否かを判定する(ステップS108B)。CPU21は、コマンドデータが必要ではないと判定した場合には(ステップS108B:NO)、ステップS127Bの処理に移行する。一方、CPU21は、コマンドデータが必要であると判定した場合には(ステップS108B:YES)、次いで、コマンドデータを一括受信するか否かを判定する(ステップS109B)。
【0046】
CPU21は、コマンドデータを一括受信すると判定した場合には(ステップS109B:YES)、自らのモードをスレーブモードからマスターモードに移行し(ステップS110B)、ステップS101Bの処理で受信したコマンドヘッダのINS部をマイコン11に送信する(ステップS111B)。次に、CPU21は、自らのモードをマスターモードからスレーブモードに移行し(ステップS112B)、次いで、マイコン11からコマンドデータを一括受信すると(ステップS113B)、ステップS119Bの処理に移行する。
【0047】
一方、CPU21は、コマンドデータを一括受信しない(すなわち、1バイトずつ受信する)と判定した場合には(ステップS109B:NO)、自らのモードをスレーブモードからマスターモードに移行し(ステップS114B)、ステップS101Bの処理で受信したコマンドヘッダのINS部と「FFh」のXORをマイコン11に送信する(ステップS115B)。次に、CPU21は、自らのモードをマスターモードからスレーブモードに移行し(ステップS116B)、次いで、マイコン11からコマンドデータを1バイト受信する(ステップS117B)。次に、CPU21は、受信したコマンドデータの合計がステップS101Bの処理で受信したコマンドヘッダのP3部が示すバイト数と一致したか否かを判定する(ステップS118B)。CPU21は、受信したコマンドデータの合計が、P3部が示すバイト数と一致していないと判定した場合には(ステップS118B:NO)、ステップS114Bの処理に移行する。一方、CPU21は、受信したコマンドデータの合計が、P3部が示すバイト数と一致したと判定した場合には(ステップS118B:YES)、ステップS119Bの処理に移行する。
【0048】
次に、CPU21は、コマンドに応じた処理を開始する(ステップS119B)。具体的には、CPU21は、マイコン11から受信したコマンドヘッダ及びコマンドデータに応じた処理を開始する。例えば、ステップS101Bの処理でINS部がファイル選択(SELECT)を示すコマンドヘッダを受信し、ステップS113Bの処理でファイルIDを示すコマンドデータを受信した場合には、ファイルIDで識別されるファイルを選択する処理を開始する。
【0049】
次に、CPU21は、コマンドに応じた処理の結果に対応するレスポンスにデータフィールドを含むか否かを判定する(ステップS120B)。CPU21は、処理の結果に対応するレスポンスにデータフィールドを含むと判定した場合には(ステップS120B:YES)、自らのモードをスレーブモードからマスターモードに移行し(ステップS121B)、次に、CPU21は、SW「61XXh」をマイコン11に送信する(ステップS122B)。このとき、ステータスワードの1バイト目「61h」は、ステップS104Aの処理でマイコン11に受信され、ステータスワードの2バイト目「XXh」は、ステップS117Aの処理でマイコン11に受信される。次いで、CPU21は、自らのモードをマスターモードからスレーブモードに移行し(ステップS123B)、当該シーケンス図に示す処理を終了する。
【0050】
一方、CPU21は、処理の結果に対応するレスポンスにデータフィールドを含まないと判定した場合には(ステップS120B:NO)、自らのモードをスレーブモードからマスターモードに移行し(ステップS124B)、SW「6XXXh」又はSW「9XXXh」をマイコン11に送信する(ステップS125B)。このとき、ステータスワードの1バイト目「6Xh」又は「9Xh」は、ステップS104Aの処理でマイコン11に受信され、ステータスワードの2バイト目「XXh」は、ステップS117Aの処理でマイコン11に受信される。次いで、CPU21は、自らのモードをマスターモードからスレーブモードに移行し(ステップS126B)、当該シーケンス図に示す処理を終了する。
【0051】
また、CPU21は、ステップS108Bの処理において、コマンドデータが必要ではないと判定した場合には(ステップS108B:NO)、処理の結果に対応するレスポンスにデータフィールドを含むか否かを判定する(ステップS127B)。CPU21は、処理の結果に対応するレスポンスにデータフィールドを含むと判定した場合には(ステップS127B:YES)、自らのモードをスレーブモードからマスターモードに移行し(ステップS128B)、ステップS101Bの処理で受信したコマンドヘッダのINS部をマイコン11に送信する(ステップS129B)。次に、CPU21は、処理の結果に対応するレスポンスデータをマイコン11に送信する(ステップS130B)。例えば、マイコン11からREAD(読み出し)コマンドを受信し、データのREAD処理を行った場合であれば、読み出したデータをマイコン11に送信する。次に、CPU21は、SW「6XXXh」又はSW「9XXXh」をマイコン11に送信する(ステップS131B)。このとき、ステータスワードは、ステップS112Aの処理でマイコン11に受信される。次いで、CPU21は、自らのモードをマスターモードからスレーブモードに移行し(ステップS132B)、当該シーケンス図に示す処理を終了する。
【0052】
一方、CPU21は、処理の結果に対応するレスポンスにデータフィールドを含まないと判定した場合には(ステップS127B:NO)、自らのモードをスレーブモードからマスターモードに移行し(ステップS133B)、SW「6XXXh」又はSW「9XXXh」をマイコン11に送信する(ステップS134B)。このとき、ステータスワードの1バイト目「6Xh」又は「9Xh」は、ステップS104Aの処理でマイコン11に受信され、ステータスワードの2バイト目「XXh」は、ステップS117Aの処理でマイコン11に受信される。次いで、CPU21は、自らのモードをマスターモードからスレーブモードに移行し(ステップS135B)、当該シーケンス図に示す処理を終了する。
【0053】
他方、マイコン11のCPU111は、ステップS103Aの処理の後、セキュアエレメント2からプロシージャバイトを受信する(ステップS104A)。次いで、CPU111は、プロシージャバイトは「60h」であるか否かを判定する(ステップS105A)。CPU111は、プロシージャバイトは「60h」であると判定した場合には(ステップS105A:YES)、ステップS104Aの処理に移行する。
【0054】
一方、CPU111は、プロシージャバイトは「60h」ではないと判定した場合には(ステップS105A:NO)、次いで、プロシージャバイトはステップS102Aの処理で送信したコマンドヘッダのINS部に格納した値と同じ値であるか否かを判定する(ステップS106A)。CPU111は、プロシージャバイトはINS部に格納した値と同じ値ではないと判定した場合には(ステップS106A:NO)、ステップS113Aの処理に移行する。一方、CPU111は、プロシージャバイトはINS部に格納した値と同じ値であると判定した場合には(ステップS106A:YES)、次いで、コマンドヘッダに続くコマンドデータ部が存在するか否かを判定する(ステップS107A)。
【0055】
CPU111は、コマンドデータ部が存在すると判定した場合には(ステップS107A:YES)、自らのモードをスレーブモードからマスターモードに移行する(ステップS108A)。次いで、CPU111は、コマンドヘッダのP3部で指定した長さのコマンドデータをセキュアエレメント2に送信する(ステップS109A)。次いで、CPU111は、自らのモードをマスターモードからスレーブモードに移行し(ステップS110A)、ステップS104Aの処理に移行する。
【0056】
一方、CPU111は、コマンドデータ部が存在しないと判定した場合には(ステップS107A:NO)、コマンドヘッダのP3部で指定した長さのレスポンスデータをセキュアエレメント2から受信する(ステップS111A)。なお、レスポンスデータは、ステップS130Bの処理で送信される。
【0057】
また、マイコン11のCPU111は、ステップS106Aの処理で「NO」と判定した場合には、次いで、プロシージャバイトはINS部に格納した値と「FFh」のXORと同じ値であるか否かを判定する(ステップS113A)。CPU21は、INS部に格納した値と「FFh」のXORと同じ値であると判定した場合には(ステップS113A:YES)、自らのモードをスレーブモードからマスターモードに移行する(ステップS114A)。次いで、CPU111は、1バイトのコマンドデータをセキュアエレメント2に送信し(ステップS115A)、自らのモードをマスターモードからスレーブモードに移行し(ステップS116A)、ステップS104Aの処理に移行する。なお、この場合、CPU111はコマンドデータを1バイトずつ、セキュアエレメント2に送信するが先頭のデータから1バイトずつ順番に送信することとする。一方、CPU21は、INS部に格納した値と「FFh」のXORと同じ値ではないと判定した場合には(ステップS113A:NO)、SW2「XXh」をセキュアエレメント2から受信し(ステップS117A)、当該シーケンス図に示す処理を終了する。
【0058】
次に、
図4及び
図5を用いて、マイコン11とセキュアエレメント2間で送受信されるデータの一例について説明する。
図4及び
図5は、マイコン11とセキュアエレメント2間の送受信処理の流れと送受信されるデータの一例を示すシーケンス図である。なお、
図4及び
図5では、ISO7816-3で定められたT=0プロトコルに従って通信が行われる場合について説明する。また、
図4では、マイコン11がセキュアエレメント2の不揮発性メモリ23に格納されているファイル(FID「0001h」)を選択して、選択した当該ファイルの16バイトのデータ(「0102030405060708090A0B0C0D0E0F10h」を読み出す場合を例に挙げて説明する。
図5では、マイコン11がセキュアエレメント2のアプレット(アプレットID「A000000168000001h」)を選択して、選択した当該アプレットに関する12バイトのアプレット情報を取得する場合を例に挙げて説明する。
図4及び
図5においてブロックMはマスターモードであることを示す。
【0059】
まず、マイコン11のCPU111は、SELECTコマンドのコマンドヘッダ(5バイト)をセキュアエレメント2に送信する(ステップS201)。INS部の「A4h」はファイル選択(SELECT FILE)を示す値である。P3部は、次に送信するデータ(選択するファイルを識別するFID)が2バイトであることを示している。
【0060】
これに対してセキュアエレメント2のCPU21は、INS部を解釈し、次いでFIDを送信してもらうべく、INS部に格納された値と同じ値である「A4h」をプロシージャバイトとして返信する(ステップS202)。
【0061】
次に、マイコン11のCPU111は、選択するファイルを識別するFID(2バイト)をセキュアエレメント2に送信する(ステップS203)。
【0062】
これに対してセキュアエレメント2のCPU21は、受信したFIDに基づいてファイルを選択する処理を実行し、処理が正常終了したことを示すSW「9000h」をマイコン11に返信する。このとき、CPU21は、SW1に相当するプロシージャバイト「90h」を送信し(ステップS204)、次いで、SW2「00h」を送信する(ステップS205)。
【0063】
次に、マイコン11のCPU111は、READコマンドのコマンドヘッダ(5バイト)をセキュアエレメント2に送信する(ステップS206)。INS部の「B0h」はバイナリデータ読み出し(READ BINARY)を示す値である。また、P3部は読み出すデータのサイズ(バイト数)を示しており「00h」は読み出すデータのサイズとして256バイトを指定していることを意味する。
【0064】
これに対してセキュアエレメント2のCPU21は、INS部を解釈する。ここで、P3部に読み出すデータサイズとして「00h」となっているが、実際に読み出すデータのサイズは16バイトである。そこで、CPU21は、P3部に「10h」を格納したコマンドヘッダを再送する要求を意味するSW「6C10h」をマイコン11に返信する。このとき、CPU21は、SW1に相当するプロシージャバイト「6Ch」を送信し(ステップS207)、次いで、SW2「10h」を送信する(ステップS208)。
【0065】
次に、マイコン11のCPU111は、READコマンドのコマンドヘッダ(5バイト)をセキュアエレメント2に再送する(ステップS209)。ここでは、P3部に「10h」を格納したコマンドヘッダを再送する。
【0066】
これに対してセキュアエレメント2のCPU21は、INS部を解釈し、P3部に「10h」が格納されていることを確認すると、INS部と同じ値「B0h」を返信し(ステップS210)、次いで、先に選択したファイル(FID「0001h」で識別されるファイル)の16バイトのデータを返信する(ステップS211)。更に、CPU21は、処理が正常終了したことを示すSW「9000h」をマイコン11に返信する。このとき、CPU21は、SW1に相当するプロシージャバイト「90h」を送信し(ステップS212)、次いで、SW2「00h」を送信する(ステップS213)。
【0067】
次に、
図5の例について説明する。まず、マイコン11のCPU111は、SELECTコマンドのコマンドヘッダ(5バイト)をセキュアエレメント2に送信する(ステップS251)。INS部の「A4h」はファイル(アプレットを含む)選択(SELECT FILE)を示す値である。P3部は、次に送信するデータ(選択するアプレットを識別するID)が8バイトであることを示している。
【0068】
これに対してセキュアエレメント2のCPU21は、INS部を解釈し、次いでアプレットIDを送信してもらうべく、INS部に格納された値と同じ値である「A4h」をプロシージャバイトとして返信する(ステップS252)。
【0069】
次に、マイコン11のCPU111は、選択するアプレットを識別するアプレットID(8バイト)をセキュアエレメント2に送信する(ステップS253)。
【0070】
これに対してセキュアエレメント2のCPU21は、受信したアプレットIDに基づいてアプレットを選択する処理を実行し、SW1「61h」と、SW2「0Ch」をマイコン11に返信する(ステップS254、ステップS255)。SW2「0Ch」は、選択したアプレットに関するアプレット情報が12バイトであることを示している。
【0071】
次に、マイコン11のCPU111は、GET RESPONSEコマンドのコマンドヘッダ(5バイト)をセキュアエレメント2に送信する(ステップS256)。INS部の「C0h」はGET RESPONSEコマンドであることを示す値である。また、P3部は取得するアプレット情報のサイズ(バイト数)を示しており、ステップS255の処理で受信した「0Ch」が格納される。
【0072】
これに対してセキュアエレメント2のCPU21は、INS部を解釈し、INS部と同じ値「C0h」を返信し(ステップS257)、次いで、先に選択したアプレットに関する12バイトのアプレット情報を返信する(ステップS258)。更に、CPU21は、処理が正常終了したことを示すSW「9000h」をマイコン11に返信する。このとき、CPU21は、SW1に相当するプロシージャバイト「90h」を送信し(ステップS259)、次いで、SW2「00h」を送信する(ステップS260)。
【0073】
[3.マイコン11とセキュアエレメント2間の送受信処理(T=1)]
次に、
図6を用いて、マイコン11とセキュアエレメント2間の送受信処理の流れについて説明する。なお、
図6は、マイコン11とセキュアエレメント2間の送受信処理の流れの一例を示すシーケンス図である。なお、当該シーケンス図に示す処理の開始前における、マイコン11とセキュアエレメント2のそれぞれのモード情報はスレーブモードを示しているものとする。また、
図6は、ISO7816-3で定められたT=1プロトコルに従って通信を行う場合の例である。
【0074】
まず、マイコン11のCPU111は、自らのモードをスレーブモードからマスターモードに移行する(ステップS301A)。
【0075】
次いで、マイコン11のCPU111は、コマンド(CLA部、INS部、P1部、P2部、Lc部、Data部、Le部)を含むブロックをセキュアエレメント2に送信する(ステップS302A)。ブロックの基本構成は、NAD部、PCB部、LEN部、コマンド、LRC(又はCRC)部を有する。NAD部はブロックの送信先を示す値が格納され、PCB部はLEC部に続くデータの意味を示す値が格納され、LRC(又はCRC)部には誤り検出に使用される値(符号)が格納される。
【0076】
次いで、マイコン11のCPU111は、自らのモードをマスターモードからスレーブモードに移行する(ステップS303A)。
【0077】
一方、セキュアエレメント2のCPU21は、マイコン11からブロックを受信すると(ステップS301B)、自らのモードをスレーブモードからマスターモードに移行する(ステップS302B)。
【0078】
次に、CPU21は、コマンドに応じた処理(INS部を解釈する処理、解釈した内容に応じた処理)を開始する(ステップS303B)。次いで、CPU21は、その処理を終了したか否かを判定する(ステップS304B)。CPU21は、処理を終了していないと判定した場合には(ステップS304B:NO)、ステップS304Bを繰り返す。
【0079】
一方、CPU21は、処理を終了したと判定した場合には(ステップS304B:YES)、処理結果に応じたブロックをマイコン11に送信する(ステップS305B)。なお、セキュアエレメント2からマイコン11に送信するブロックの基本構成は、NAD部、PCB部、LEN部、Data部、SW部(2バイト)、LRC(又はCRC)部を有する。NAD部、PCB部には、マイコン11から直前に受信したブロックのNAD部、PCB部と同じ値が格納される。Data部には、マイコン11から直前に受信したブロックに含まれるコマンドに対応する処理の結果により得られたデータが格納される。但し、データが得られない処理を行った場合には、Data部は省かれる。SW部には、マイコン11から直前に受信したブロックに含まれるコマンドに対応する処理の結果に応じたSW(SW1+SW2)が格納される。
【0080】
次に、CPU21は、自らのモードをマスターモードからスレーブモードに移行し(ステップS306B)、当該シーケンス図に示す処理を終了する。
【0081】
これに対して、マイコン11のCPU111は、ステップS303Aの処理後、セキュアエレメント2からブロックを受信し(ステップS304A)、当該シーケンス図に示す処理を終了する。
【0082】
次に、
図7を用いて、マイコン11とセキュアエレメント2間で送受信されるデータの一例について説明する。
図7は、マイコン11とセキュアエレメント2間の送受信処理の流れと送受信されるデータの一例を示すシーケンス図である。なお、
図7では、ISO7816-3で定められたT=1プロトコルに従って通信が行われる場合について説明する。またここでは、マイコン11がセキュアエレメント2の不揮発性メモリ23に格納されているファイル(FID「0001h」)を選択して、選択した当該ファイルの16バイトのデータ(「0102030405060708090A0B0C0D0E0F10h」を読み出す場合を例に挙げて説明する。
図7においてブロックMはマスターモードであることを示す。
【0083】
まず、マイコン11のCPU111は、SELECTコマンドを含むブロックをセキュアエレメント2に送信する(ステップS401)。INS部の「A4h」はファイル選択(SELECT FILE)を示す値である。D1部、D2部の2バイトに、選択するファイルのFIDが格納される。
【0084】
これに対してセキュアエレメント2のCPU21は、INS部に基づいてSELECTコマンドであることを解釈し、D1部、D2部に格納されたFIDにより識別されるファイルを選択する処理を実行し、処理が正常終了したことを示すSW「9000h」を含むブロックをマイコン11に返信する(ステップS402)。このとき、CPU21は、NAD部及びPCB部には、ステップS401の処理で受信したブロックのNAD部及びPCB部と同じ値を格納する。
【0085】
次に、マイコン11のCPU111は、READコマンドを含むブロックをセキュアエレメント2に送信する(ステップS403)。INS部の「B0h」はバイナリデータ読み出し(READ BINARY)を示す値である。
【0086】
これに対してセキュアエレメント2のCPU21は、INS部に基づいてREADコマンドであることを解釈し、直前に選択したファイルのデータを読み出す処理を実行し、処理が正常終了したことを示すSW「9000h」を含むブロックをマイコン11に返信する(ステップS404)。このとき、CPU21は、NAD部及びPCB部には、ステップS403の処理で受信したブロックのNAD部及びPCB部と同じ値を格納する。また、LEN部に続くD1部~D16部に読み出したデータを格納する。更にD16部に続くSW1部、SW2部にSWを格納する。
【0087】
以上のように、本実施形態のセキュアエレメント2は、マイコン11(「外部機器」の一例)との間でマスターモードとスレーブモードを夫々切り替えながら通信を行うものであって、不揮発性メモリ23(「モード記憶手段」の一例)は、セキュアエレメント2がマスターモードとスレーブモードの何れのモードであるかを示すモード情報を記憶し、CPU21(「受信手段」、「更新手段」、「送信手段」の一例)が、モード情報がスレーブモードであることを示している場合に、マスターモードであるマイコン11が出力するクロック信号に同期して、マイコン11が送信するデータを受信し、当該データを受信した場合に、モード情報をスレーブモードであることを示す情報からマスターモードであることを示す情報に更新し、モード情報がマスターモードであることを示している場合に、スレーブモードであるマイコン11にクロック信号を出力するとともに、当該クロック信号に同期させて、マイコン11にデータを送信する。
【0088】
したがって、本実施形態のセキュアエレメント2によれば、マイコン11とマスターモードとスレーブモードを夫々切り替えながら、スレーブモードである場合にマスターモードであるマイコン11からデータを受信し、当該データを受信した場合にスレーブモードからマスターモードに更新し、マスターモードである場合にスレーブモードであるマイコン11にデータを送信する。すなわち、マイコン11とセキュアエレメント2のそれぞれがマスターとスレーブとなって通信を行う場合において、セキュアエレメント2はマスターとして動作することにより任意のタイミングでデータを送信することができ、セキュアエレメント2側の通信に関する制約を減らし、通信の自由度を向上させることができる。
【0089】
また、CPU21(「設定手段」の一例)は、セキュアエレメント2がマイコン11に出力するクロック信号のクロック周波数を設定し、当該設定されたクロック周波数によりマイコン11にクロック信号を出力する。これにより、セキュアエレメント2は自ら通信速度を設定することができ、通信の自由度が向上する。
【0090】
更に、セキュアエレメント2におけるI/O回路24のClock端子(「クロック線端子」の一例)は、マイコン11が出力するクロック信号を受信するクロック線であって、且つ、セキュアエレメント2が出力するクロック信号を送信するクロック線が接続され、I/O回路24のMOSI端子(「信号線端子」の一例)は、マイコン11が送信するデータを受信する信号線であって、且つ、セキュアエレメント2が送信するデータを送信する信号線が接続される。すなわち、マイコン11とセキュアエレメント2は、SPI通信のクロック線とMOSI線を用いて通信を行うことができる。
【0091】
更にまた、セキュアエレメント2におけるI/O回路24のシフトレジスタは、セキュアエレメント2がマイコン11に送信するデータを記憶し、CPU21は、シフトレジスタに記憶されたデータを、クロック信号に同期させて、1ビットずつシフトさせながら送信する。これにより、シリアル通信によりセキュアエレメント2はマイコン11にデータを送信することができる。
【0092】
更にまた、マイコン11がセキュアエレメント2に送信するデータは、ISO7816-3に準拠したコマンドであり、セキュアエレメント2がマイコン11に送信するデータは、ISO7816-3に準拠したレスポンスである。これにより、SPI通信のスレーブ側の制約を受けることなくセキュアエレメント2は通信を行うことができる。
【0093】
[4.スタートビット及びパリティビットの追加]
従来、SPI通信では機器間で通信される通信データにスタートビットやパリティビットを付加せずに送信する。そのため、データを受信するスレーブ側では、そのデータがマスター側の意図したデータに間違いないか確認することができなかった。
【0094】
そこで、マイコン11とセキュアエレメント2間でのデータ通信では、通信データにスタートビットやパリティビットを付加して送信することとしてもよい。以下、
図8を用いて、通信データにスタートビットやパリティビットを付加する方法について説明する。なおここでは、
図8(A)に示すように、通信データである「A5h(10100101b)」に、スタートビット(1ビット)、パリティビット(1ビット)及び補足ビット(6ビット)を付加して2バイトの通信データとして送信する場合について説明する。
【0095】
まず、「A5h(10100101b)」が格納される領域に1バイト(8ビット)の領域を追加する(
図8(B)参照)。
【0096】
次に、追加した8ビットのうち2ビットをスタートビット用の1ビットと、パリティビット用の1ビットとして、「A5h(10100101b)」が格納される領域の前後に配置する(
図8(C)参照)。このとき、「10100101b」は1ビットシフトすることとなる。
【0097】
次に、スタートビット用の1ビットを「0b」とし、パリティビット用の1ビットを「0b」とする(
図8(D)参照)。なお、ここでは偶数パリティ方式を採用することとするが、奇数パリティ方式としてもよい。
【0098】
次に、追加した8ビットの残り6ビット(補足ビット)をすべて「1b」とする(
図8(E)参照)。すなわち、送信データは「FD4Ah」となる。
【0099】
これにより、データの送信時には、
図8(F)に示すようにMOSI線の電圧が推移することとなる。なお、「H」ighが「1b」に対応し、「L」owが「0b」に対応する。
【0100】
このように、マイコン11とセキュアエレメント2の間で通信される通信データにスタートビットを付加することにより、スレーブ側は通信データが例えば「FFh」のためにMOSI線の電圧がHighとなっている場合と、通信データがないためにMOSI線の電圧がHighとなっている場合とを判別することができる。
【0101】
また、マイコン11とセキュアエレメント2の間で通信される通信データにパリティビットを付加することにより、通信データを受信したスレーブ(受信)側はパリティビットに基づいて、通信データがマスター(送信)側の意図したデータであるかを確認することができる。
【0102】
なお、ここでは、マイコン11とセキュアエレメント2の間で通信される通信データにスタートビット及びパリティビットを付加することとしたが、マイコン11からセキュアエレメント2に送信されるデータ、又は、セキュアエレメント2からマイコン11に送信されるデータの少なくとも何れか一方に、スタートビット又はパリティビットの少なくとも何れか一方を付加することとしてもよい。
【符号の説明】
【0103】
1 IoT端末
11 マイコン
111 CPU
112 RAM
113 ROM
114 I/O回路
115 不揮発性メモリ
116 発振器
12 通信部
13 入力部
14 出力部
2 セキュアエレメント
21 CPU
22 RAM
23 不揮発性メモリ
24 I/O回路
25 発振器
S サーバ
N ネットワーク