(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-05
(45)【発行日】2023-12-13
(54)【発明の名称】電子情報記憶媒体、データ送信方法、及びプログラム
(51)【国際特許分類】
G06F 3/06 20060101AFI20231206BHJP
G06F 3/08 20060101ALI20231206BHJP
G06K 19/073 20060101ALI20231206BHJP
【FI】
G06F3/06 301M
G06F3/08 C
G06K19/073
(21)【出願番号】P 2019225123
(22)【出願日】2019-12-13
【審査請求日】2022-10-27
(73)【特許権者】
【識別番号】000002897
【氏名又は名称】大日本印刷株式会社
(74)【代理人】
【識別番号】110000958
【氏名又は名称】弁理士法人インテクト国際特許事務所
(74)【代理人】
【識別番号】100120189
【氏名又は名称】奥 和幸
(72)【発明者】
【氏名】福永 正剛
【審査官】北村 学
(56)【参考文献】
【文献】特開2008-033669(JP,A)
【文献】特開2015-184692(JP,A)
【文献】特開2002-101127(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 3/06 - 3/08
G06F 13/00 - 13/14
G06K 19/00 - 19/18
H04L 13/00 - 13/18
(57)【特許請求の範囲】
【請求項1】
送信されるべき送信データの長さを示すレングスデータを含む第1ブロックを外部装置から受信する第1受信手段と、
前記第1ブロックに含まれる前記レングスデータを保持する保持手段と、
前記第1ブロックに含まれる前記レングスデータにより示される前記長さの前記送信データを1度に受信可能であるか否かを判定する判定手段と、
前記判定手段により前記送信データを1度に受信可能でないと判定された場合に、前記第1ブロックに対する応答として
、前記送信データを1度に受信可能な長さを示す長さ指定データを含む第2ブロックを前記外部装置へ送信する送信手段と、
前記第2ブロックに応じて前記外部装置から送信された第3ブロックであって、前記保持された前記レングスデータにより示される前記長さの前記送信データを含む第3ブロックを外部装置から受信する第2受信手段と、
前記第3ブロックに含まれる前記送信データに基づいて処理を実行する実行手段と、
を備えることを特徴とする電子情報記憶媒体。
【請求項2】
前記第2受信手段は、前記保持された前記レングスデータにより示される前記長さの前記送信データから分割された分割送信データを含む第3ブロックを外部装置から複数回にわたって受信し、
前記実行手段は、複数回にわたって受信された前記分割送信データが連結されることにより前記レングスデータにより示される前記長さの前記送信データが得られた場合に、当該送信データに基づいて処理を実行することを特徴とする請求項
1に記載の電子情報記憶媒体。
【請求項3】
送信されるべき送信データの長さを示すレングスデータを含む第1ブロックを外部装置から受信する第1受信手段と、
前記第1ブロックに含まれる前記レングスデータを保持する保持手段と、
前記第1ブロックに対する応答として第2ブロックを前記外部装置へ送信する送信手段と、
前記第2ブロックに応じて前記外部装置から送信された第3ブロックであって、前記保持された前記レングスデータにより示される前記長さの前記送信データを含む第3ブロックを外部装置から受信する第2受信手段と、
前記第3ブロックに含まれる前記送信データに基づいて処理を実行する実行手段と、
を備え
、
前記第1ブロック及び前記第3ブロックは、それぞれ、所定のアプリケーションによりアプリケーション層で使用されるデータを格納するための情報フィールドと、前記情報フィールドの長さを指定するための所定バイトからなるLEN(Length byte)を含む先頭フィールドとを有する所定のデータフォーマットにより構成され、
前記第1ブロックの前記情報フィールドには前記LENにより指定された長さの前記レングスデータが格納され、前記第3ブロックの前記情報フィールドには前記レングスデータにより示される前記長さの前記送信データが格納され、
前記実行手段は、前記第3ブロックの前記先頭フィールドに含まれるLENを無視して前記第3ブロックに含まれる前記送信データに基づいて処理を実行することを特徴とす
る電子情報記憶媒体。
【請求項4】
電子情報記憶媒体に含まれるコンピュータにより実行されるデータ受信方法であって、
送信されるべき送信データの長さを示すレングスデータを含む第1ブロックを外部装置から受信するステップと、
前記第1ブロックに含まれる前記レングスデータを保持するステップと、
前記第1ブロックに含まれる前記レングスデータにより示される前記長さの前記送信データを1度に受信可能であるか否かを判定するステップと、
前記送信データを1度に受信可能でないと判定された場合に、前記第1ブロックに対する応答として
、前記送信データを1度に受信可能な長さを示す長さ指定データを含む第2ブロックを前記外部装置へ送信するステップと、
前記第2ブロックに応じて前記外部装置から送信された第3ブロックであって、前記保持された前記レングスデータにより示される前記長さの前記送信データを含む第3ブロックを外部装置から受信するステップと、
前記第3ブロックに含まれる前記送信データに基づいて処理を実行するステップと、
を含むことを特徴とするデータ受信方法。
【請求項5】
電子情報記憶媒体に含まれるコンピュータにより実行されるデータ受信方法であって、
送信されるべき送信データの長さを示すレングスデータを含む第1ブロックを外部装置から受信するステップと、
前記第1ブロックに含まれる前記レングスデータを保持するステップと、
前記第1ブロックに対する応答として第2ブロックを前記外部装置へ送信するステップと、
前記第2ブロックに応じて前記外部装置から送信された第3ブロックであって、前記保持された前記レングスデータにより示される前記長さの前記送信データを含む第3ブロックを外部装置から受信するステップと、
前記第3ブロックに含まれる前記送信データに基づいて処理を実行する実行ステップと、
を含み、
前記第1ブロック及び前記第3ブロックは、それぞれ、所定のアプリケーションによりアプリケーション層で使用されるデータを格納するための情報フィールドと、前記情報フィールドの長さを指定するための所定バイトからなるLEN(Length byte)を含む先頭フィールドとを有する所定のデータフォーマットにより構成され、
前記第1ブロックの前記情報フィールドには前記LENにより指定された長さの前記レングスデータが格納され、前記第3ブロックの前記情報フィールドには前記レングスデータにより示される前記長さの前記送信データが格納され、
前記実行ステップにおいては、前記第3ブロックの前記先頭フィールドに含まれるLENを無視して前記第3ブロックに含まれる前記送信データに基づいて処理を実行することを特徴とするデータ受信方法。
【請求項6】
送信されるべき送信データの長さを示すレングスデータを含む第1ブロックを外部装置から受信する第1受信手段と、
前記第1ブロックに含まれる前記レングスデータを保持する保持手段と、
前記第1ブロックに含まれる前記レングスデータにより示される前記長さの前記送信データを1度に受信可能であるか否かを判定する判定手段と、
前記判定手段により前記送信データを1度に受信可能でないと判定された場合に、前記第1ブロックに対する応答として
、前記送信データを1度に受信可能な長さを示す長さ指定データを含む第2ブロックを前記外部装置へ送信する送信手段と、
前記第2ブロックに応じて前記外部装置から送信された第3ブロックであって、前記保持された前記レングスデータにより示される前記長さの前記送信データを含む第3ブロックを外部装置から受信する第2受信手段と、
前記第3ブロックに含まれる前記送信データに基づいて処理を実行する実行手段としてコンピュータを機能させることを特徴とするプログラム。
【請求項7】
送信されるべき送信データの長さを示すレングスデータを含む第1ブロックを外部装置から受信する第1受信手段と、
前記第1ブロックに含まれる前記レングスデータを保持する保持手段と、
前記第1ブロックに対する応答として第2ブロックを前記外部装置へ送信する送信手段と、
前記第2ブロックに応じて前記外部装置から送信された第3ブロックであって、前記保持された前記レングスデータにより示される前記長さの前記送信データを含む第3ブロックを外部装置から受信する第2受信手段と、
前記第3ブロックに含まれる前記送信データに基づいて処理を実行する実行手段としてコンピュータを機能させるプログラムであって、
前記第1ブロック及び前記第3ブロックは、それぞれ、所定のアプリケーションによりアプリケーション層で使用されるデータを格納するための情報フィールドと、前記情報フィールドの長さを指定するための所定バイトからなるLEN(Length byte)を含む先頭フィールドとを有する所定のデータフォーマットにより構成され、
前記第1ブロックの前記情報フィールドには前記LENにより指定された長さの前記レングスデータが格納され、前記第3ブロックの前記情報フィールドには前記レングスデータにより示される前記長さの前記送信データが格納され、
前記実行手段は、前記第3ブロックの前記先頭フィールドに含まれるLENを無視して前記第3ブロックに含まれる前記送信データに基づいて処理を実行することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セキュアエレメント等の電子情報記憶媒体によるコマンドの送受信方法等の技術分野に関する
【背景技術】
【0002】
近年、IoT(Internet of Things)の普及に伴い、組み込み型ICモジュールにおいても、セキュリティを担保するため、セキュアエレメントが用いられている。セキュアエレメントの通信には、国際規格ISO/IECISO7816-2で定義されるインターフェースのほか、SPI(Serial Peripheral Interface)やI2C(Inter-Integrated Circuit)などのインターフェースが利用されることが多い。これらのインターフェースで送受信される例えばコマンドAPDU(Application Protocol Data Unit)の長さは、コマンドAPDUを含むブロックのヘッダ(先頭フィールド)にて指定されることが多いが、ヘッダで指定可能な長さを超える長さのコマンドAPDUを送受信するためには、ヘッダ長を拡張するか、或いはコマンドAPDUを分割して送受信することが必要である。特許文献1には、データ容量の大きい平文を暗号化する際、一つのコマンドAPDUに含めることができるブロックサイズに平文を分割し、分割した平文ごとにコマンドAPDUを生成することなく、平文のみを送受信することで処理時間を短縮することができる発明が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1の技術では、特殊なモードを備える必要があるため、国際規格等で既に決まっているデータフォーマットが変わる可能性がある。データフォーマットが既に決まっているプロトコルを利用する場合、既存製品との互換性の関係上、ヘッダ長を拡張することなどのデータフォーマットを変更することは容易ではない。
【0005】
そこで、本発明は、このような点等に鑑みてなされたものであり、既存のデータフォーマットを変更することなく、ヘッダで指定可能な長さを超えるデータ長を指定することが可能な電子情報記憶媒体、データ送信方法、及びプログラムを提供することを課題とする。
【課題を解決するための手段】
【0006】
上記課題を解決するために、請求項1に記載の発明は、送信されるべき送信データの長さを示すレングスデータを含む第1ブロックを外部装置から受信する第1受信手段と、前記第1ブロックに含まれる前記レングスデータを保持する保持手段と、前記第1ブロックに含まれる前記レングスデータにより示される前記長さの前記送信データを1度に受信可能であるか否かを判定する判定手段と、前記判定手段により前記送信データを1度に受信可能でないと判定された場合に、前記第1ブロックに対する応答として、前記送信データを1度に受信可能な長さを示す長さ指定データを含む第2ブロックを前記外部装置へ送信する送信手段と、前記第2ブロックに応じて前記外部装置から送信された第3ブロックであって、前記保持された前記レングスデータにより示される前記長さの前記送信データを含む第3ブロックを外部装置から受信する第2受信手段と、前記第3ブロックに含まれる前記送信データに基づいて処理を実行する実行手段と、を備えることを特徴とする。
【0008】
請求項2に記載の発明は、請求項1に記載の電子情報記憶媒体において、前記第2受信手段は、前記保持された前記レングスデータにより示される前記長さの前記送信データから分割された分割送信データを含む第3ブロックを外部装置から複数回にわたって受信し、前記実行手段は、複数回にわたって受信された前記分割送信データが連結されることにより前記レングスデータにより示される前記長さの前記送信データが得られた場合に、当該送信データに基づいて処理を実行することを特徴とする。
【0009】
請求項3に記載の発明は、送信されるべき送信データの長さを示すレングスデータを含む第1ブロックを外部装置から受信する第1受信手段と、前記第1ブロックに含まれる前記レングスデータを保持する保持手段と、前記第1ブロックに対する応答として第2ブロックを前記外部装置へ送信する送信手段と、前記第2ブロックに応じて前記外部装置から送信された第3ブロックであって、前記保持された前記レングスデータにより示される前記長さの前記送信データを含む第3ブロックを外部装置から受信する第2受信手段と、前記第3ブロックに含まれる前記送信データに基づいて処理を実行する実行手段と、を備え、前記第1ブロック及び前記第3ブロックは、それぞれ、所定のアプリケーションによりアプリケーション層で使用されるデータを格納するための情報フィールドと、前記情報フィールドの長さを指定するための所定バイトからなるLEN(Length byte)を含む先頭フィールドとを有する所定のデータフォーマットにより構成され、前記第1ブロックの前記情報フィールドには前記LENにより指定された長さの前記レングスデータが格納され、前記第3ブロックの前記情報フィールドには前記レングスデータにより示される前記長さの前記送信データが格納され、前記実行手段は、前記第3ブロックの前記先頭フィールドに含まれるLENを無視して前記第3ブロックに含まれる前記送信データに基づいて処理を実行することを特徴とする。
【0010】
請求項4に記載の発明は、電子情報記憶媒体に含まれるコンピュータにより実行されるデータ受信方法であって、送信されるべき送信データの長さを示すレングスデータを含む第1ブロックを外部装置から受信するステップと、前記第1ブロックに含まれる前記レングスデータを保持するステップと、前記第1ブロックに含まれる前記レングスデータにより示される前記長さの前記送信データを1度に受信可能であるか否かを判定するステップと、前記送信データを1度に受信可能でないと判定された場合に、前記第1ブロックに対する応答として、前記送信データを1度に受信可能な長さを示す長さ指定データを含む第2ブロックを前記外部装置へ送信するステップと、前記第2ブロックに応じて前記外部装置から送信された第3ブロックであって、前記保持された前記レングスデータにより示される前記長さの前記送信データを含む第3ブロックを外部装置から受信するステップと、前記第3ブロックに含まれる前記送信データに基づいて処理を実行するステップと、を含むことを特徴とする。請求項5に記載の発明は、電子情報記憶媒体に含まれるコンピュータにより実行されるデータ受信方法であって、送信されるべき送信データの長さを示すレングスデータを含む第1ブロックを外部装置から受信するステップと、前記第1ブロックに含まれる前記レングスデータを保持するステップと、前記第1ブロックに対する応答として第2ブロックを前記外部装置へ送信するステップと、前記第2ブロックに応じて前記外部装置から送信された第3ブロックであって、前記保持された前記レングスデータにより示される前記長さの前記送信データを含む第3ブロックを外部装置から受信するステップと、前記第3ブロックに含まれる前記送信データに基づいて処理を実行する実行ステップと、を含み、前記第1ブロック及び前記第3ブロックは、それぞれ、所定のアプリケーションによりアプリケーション層で使用されるデータを格納するための情報フィールドと、前記情報フィールドの長さを指定するための所定バイトからなるLEN(Length byte)を含む先頭フィールドとを有する所定のデータフォーマットにより構成され、前記第1ブロックの前記情報フィールドには前記LENにより指定された長さの前記レングスデータが格納され、前記第3ブロックの前記情報フィールドには前記レングスデータにより示される前記長さの前記送信データが格納され、前記実行ステップにおいては、前記第3ブロックの前記先頭フィールドに含まれるLENを無視して前記第3ブロックに含まれる前記送信データに基づいて処理を実行することを特徴とする。
【0011】
請求項6に記載の発明は、送信されるべき送信データの長さを示すレングスデータを含む第1ブロックを外部装置から受信する第1受信手段と、前記第1ブロックに含まれる前記レングスデータを保持する保持手段と、前記第1ブロックに含まれる前記レングスデータにより示される前記長さの前記送信データを1度に受信可能であるか否かを判定する判定手段と、前記判定手段により前記送信データを1度に受信可能でないと判定された場合に、前記第1ブロックに対する応答として、前記送信データを1度に受信可能な長さを示す長さ指定データを含む第2ブロックを前記外部装置へ送信する送信手段と、前記第2ブロックに応じて前記外部装置から送信された第3ブロックであって、前記保持された前記レングスデータにより示される前記長さの前記送信データを含む第3ブロックを外部装置から受信する第2受信手段と、前記第3ブロックに含まれる前記送信データに基づいて処理を実行する実行手段としてコンピュータを機能させることを特徴とする。請求項7に記載の発明は、送信されるべき送信データの長さを示すレングスデータを含む第1ブロックを外部装置から受信する第1受信手段と、前記第1ブロックに含まれる前記レングスデータを保持する保持手段と、前記第1ブロックに対する応答として第2ブロックを前記外部装置へ送信する送信手段と、前記第2ブロックに応じて前記外部装置から送信された第3ブロックであって、前記保持された前記レングスデータにより示される前記長さの前記送信データを含む第3ブロックを外部装置から受信する第2受信手段と、前記第3ブロックに含まれる前記送信データに基づいて処理を実行する実行手段としてコンピュータを機能させるプログラムであって、前記第1ブロック及び前記第3ブロックは、それぞれ、所定のアプリケーションによりアプリケーション層で使用されるデータを格納するための情報フィールドと、前記情報フィールドの長さを指定するための所定バイトからなるLEN(Length byte)を含む先頭フィールドとを有する所定のデータフォーマットにより構成され、前記第1ブロックの前記情報フィールドには前記LENにより指定された長さの前記レングスデータが格納され、前記第3ブロックの前記情報フィールドには前記レングスデータにより示される前記長さの前記送信データが格納され、前記実行手段は、前記第3ブロックの前記先頭フィールドに含まれるLENを無視して前記第3ブロックに含まれる前記送信データに基づいて処理を実行することを特徴とする。
【発明の効果】
【0012】
本発明によれば、既存のデータフォーマットを変更することなく、ヘッダで指定可能な長さを超えるデータ長を指定することができる。
【図面の簡単な説明】
【0013】
【
図2】SE1と外部装置2との間で送受信されるブロックBLnのデータフォーマット(構造)を示す図である。
【
図3】SE1と外部装置2との間で送受信されるブロックBLnのデータフォーマットの具体例を示す図である。
【
図4】実施例1において、外部装置2からのブロックBLnがSE1により受信されたときのCPU10の処理の一例を示すフローチャートである。
【
図5】実施例2において、外部装置2からのブロックBLnがSE1により受信されたときのCPU10の処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0014】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、セキュアエレメント(以下、「SE」という)に対して本発明を適用した場合の実施の形態である。
【0015】
[1.SE1の構成及び機能]
先ず、
図1を参照して、本実施形態に係るSE1の構成及び機能について説明する。
図1は、SE1の概要構成例を示す図である。SE1は、本発明の電子情報記憶媒体の一例である。
図1に示すように、SE1は、CPU(Central Processing Unit)10、RAM(Random Access Memory)11、ROM(Read Only Memory)12、NVM(Nonvolatile Memory)13(不揮発性メモリ)、及びI/O回路14などを備えて構成される(ROM12は備えられない場合もある)。SE1は、例えばIoT製品やスマートフォン等の端末に搭載されて使用される。なお、SE1は、着脱可能なICカードとして端末に搭載されてもよいし、eUICC(Embedded Universal Integrated Circuit Card)として端末から容易に取り外しや取り換えができないように組み込み基盤上に搭載(つまり、端末と一体的に形成)されてもよい。
【0016】
CPU10は、ROM12またはNVM13に記憶された各種プログラムを実行するプロセッサ(コンピュータ)である。CPU10は、本発明における第1受信手段、保持手段、送信手段、第2受信手段、判定手段、及び実行手段として機能する。RAM11は、作業用メモリとして利用される。NVM13には、例えばフラッシュメモリが適用される。NVM13は、「Electrically Erasable Programmable Read-Only Memory」であってもよい。NVM13には、各種プログラム(本発明のプログラムを含む)及びデータが記憶される。各種プログラムには、オペレーティングシステム(OS)及びアプリケーションなどが含まれる。なお、NVM13に記憶される各種プログラム及びデータの一部は、ROM12に記憶されてもよい。
【0017】
I/O回路14は、外部装置2との間のインターフェースを担う。外部装置2は、例えば、SE1が搭載される端末のコントローラである。ただし、外部装置2は、ネットワークに接続されたサーバや、接触(または非接触)で通信可能なリーダライタであってもよい。インターフェースの例として、SPI(Serial Peripheral Interface) 、I2C(Inter-Integrated Circuit)、及びISO/IEC7816のインターフェースなどが挙げられる。
【0018】
I/O回路14がSPIを担う場合、シフトレジスタ及び4つの信号線等がI/O回路14に備えられる。4つの信号線とは、SCLK(Serial Clock)、MOSI(Master-Out Slave-In)、MISO(Master-In Slave-Out)、及びSLS(SLave Select)である。例えばマスターとしての外部装置2がSLSをローアクティブにすることで通信が開始される。また、I/O回路14がISO/IEC7816のインターフェースを担う場合、公知のC1~C8の8個の端子がI/O回路14に備えられる。
【0019】
本実施形態において、SE1と外部装置2との通信における下層(物理層)ではSPIが用いられ、中層ではTPDU(Transmission Protocol Data Unit)プロトコル(例えば、T=1)が用いられ、上層(アプリケーション層)ではAPDU(Application Protocol Data Unit)プロトコルが用いられるものとする。ただし、これに限定されるものではない。なお、SPIは、複数のスレーブを持つことが可能であり、本実施形態では1つのSE1をスレーブとして通信が行われる場合を例にとるが、外部装置2が複数のスレーブと通信してもよい。
【0020】
APDUプロトコルは、ISO/IEC7816-3で定義されるコマンドAPDU及びレスポンスAPDUを送受信するためのプロトコルである。ここで、コマンドAPDUは、例えば、CLA、INS、P1及びP2から構成(ヘッダのみから構成)される(Case1)。CLAはコマンドクラスを示し、INSはコマンドコードを示し、P1及びP2はコマンドパラメータを示す。或いは、コマンドAPDUは、CLA、INS、P1及びP2と、Leとから構成(ヘッダーとボディから構成)される(Case2)。LeはレスポンスAPDUの最大長を示す。或いは、コマンドAPDUは、CLA、INS、P1及びP2と、Lc及びDataとから構成される(Case3)。LcはDataの長さを示す。或いは、コマンドAPDUは、CLA、INS、P1及びP2と、Lc、Data及びLeとから構成される(Case4)。一方、レスポンスAPDUは、例えば、SW1及びSW2から構成される(Case1,Case3)。SW1及びSW2は、ステータスワードであり、コマンドAPDUに基づいて実行されたコマンド処理(換言すると、コマンドAPDUに応じた処理)の結果を示す。例えば、SW1及びSW2が“0009(h)”である場合、正常終了を示し、SW1及びSW2が“6???(h)”である場合、“?”の数値に応じたエラーを示す。或いは、レスポンスAPDUは、例えば、DATA、SW1及びSW2から構成される(Case2,Case4)。
【0021】
また、TPDUプロトコルに従う通信では、I(Information)ブロック(情報ブロック)、R(Receive Ready)ブロック(受信準備完了ブロック)、またはS(Supervisory)ブロック(管理ブロック)が用いられる。ここで、Iブロックは、所定のアプリケーションによりアプリケーション層で使用されるデータ(例えば、コマンドAPDU及びレスポンスAPDU)を伝達するために用いられる。Rブロックは、例えば、肯定応答(ACK)や否定応答(NAK)を伝達するために用いられる。Sブロックは、制御情報を伝達するために用いられる。ISO/IEC7816-3には、制御情報として、WTX要求、WTX応答、IFS変更要求、IFS変更応答、ABORT要求、及びABORT応答等が規定されているが、本実施形態では、新たな制御情報として、Iブロックにより送信されるべき送信データ(例えば、コマンドAPDU及びレスポンスAPDU)の長さ(データ長)を指定するLEN要求、及びLEN要求に対するLEN応答を定義する。
【0022】
図2は、SE1と外部装置2との間でやり取りされるブロックBLnのデータフォーマット(構造)を示す図である。
図2に示すように、ブロックBLnは、先頭フィールド(Prologue field)、情報フィールド(Information field)、及び最終フィールド(Epilogue field)を有する所定のデータフォーマットにより構成される。ここで、情報フィールドは、所定のアプリケーションによりアプリケーション層で使用されるデータを格納するためのフィールドである。最終フィールドは、チェックコード(例えば、LRCまたはCRC等の誤り検出符号)を格納するためのフィールドである。
【0023】
先頭フィールドは、ブロックBLnのヘッダに相当するフィールドであり、ブロックBLnの送信先アドレス等を示すNAD(Node Address Byte)、データフォーマットの種別(つまり、ブロックBLnの種別)を示すPCB(Protocol Control Byte)、及び情報フィールドの長さを指定するためのLEN(Length Byte)を含んで構成される。NAD、PCB、及びLENは、それぞれ、例えば、1バイト(つまり、256ビット)からなる。なお、外部装置2が複数のスレーブとSPIを介して通信する場合、外部装置2からブロックBLnがブロードキャストされるが、ブロックBLnの送信先(宛先)がSE1のみである場合、ブロックBLnのNADには、SE1に固有のアドレス(例えば、識別情報)が含まれる。
【0024】
PCBは、先頭の2ビット(b8b7)によってブロックBLnがIブロック、Rブロック、またはSブロックであるかを示し、残りの6ビット(b6~b1)によって制御情報を示す。例えば、PCBにおけるb8b7=00はIブロックを示し、PCBにおけるb8b7=10はRブロックを示す。なお、PCBにおけるb8b7=00である場合(つまり、Iブロックの場合)において、b6はブロック連鎖ビット(チェイニングングビット)であり、b1=1の場合のIブロックは次のIブロックに連鎖する一方、b1=0の場合のIブロックは次のIブロックに連鎖しない。一方、PCBにおけるb8b7=11はSブロックを示し、この場合、b6~b1=000011はWTX要求を示し、b6~b1=100011はWTX応答を示し、b6~b1=0000001はIFS変更要求を示し、b6~b1=100001はIFS変更応答を示し、b6~b1=000010はABORT要求を示し、b6~b1=100010はABORT応答を示す。本実施形態では、PCBにおけるb6~b1でLEN要求、及びLEN応答を示すように新たに定義される。例えば、PCBにおけるb6~b1=000101(ISO/IEC7816-3で使用されていないビット列)にLEN要求が割り当てられ、PCBにおけるb6~b1=100101(ISO/IEC7816-3で使用されていないビット列)にLEN応答が割り当てられる。
【0025】
図3は、SE1と外部装置2との間で送受信されるブロックBLnのデータフォーマットの具体例を示す図である。
図3(A)は、外部装置2からSE1へ最初に送信されるブロックBL1(第1ブロックの一例)のデータフォーマットを示し、
図3(B)は、ブロックBL1に対する応答としてSE1から外部装置2へ送信されるブロックBL2(第2ブロックの一例)を示す。
図3(C)は、ブロックBL2に応じて外部装置2からSE1へ次に送信されるブロックBL3(第3ブロックの一例)のデータフォーマットを示し、
図3(D)は、ブロックBL3に対する応答としてSE1から外部装置2へ送信されるブロックBL4を示す。
【0026】
外部装置2からSE1へ最初に送信されるブロックBL1においては、
図3(A)に示すように、PCBがSブロック且つLEN要求を示すように設定され、当該ブロックBL1の情報フィールドには当該ブロックBL1のLENにより指定される長さのレングスデータが格納される。このレングスデータは、後から送信されるべき送信データ(例えば、コマンドAPDU)の長さを示す。なお、ブロックBL1のNADには、SE1に固有のアドレス(例えば、識別情報)が含まれる。そして、ブロックBL1に対する応答としてSE1から外部装置2へ送信されるブロックBL2においては、
図3(B)に示すように、PCBがSブロック且つLEN応答を示すように設定され、当該ブロックBL2の情報フィールドには意味のあるデータが格納されなくてもよい。なお、ブロックBL2のNADには、外部装置2に固有のアドレス(例えば、識別情報)が含まれる。
【0027】
一方、外部装置2からSE1へ次に送信されるブロックBL3においては、
図3(C)に示すように、PCBがIブロックを示すように設定され、当該ブロックBL3の情報フィールドには最初に受信されたブロックBL1の情報フィールドに格納されたレングスデータにより示される長さの送信データ(例えば、コマンドAPDU)が格納される。なお、ブロックBL3のNADには、SE1に固有のアドレス(例えば、識別情報)が含まれる。そして、ブロックBL3に対する応答としてSE1から外部装置2へ送信されるブロックBL4においては、
図3(D)に示すように、PCBがIブロックを示すように設定され、当該ブロックBL4の情報フィールドには例えばレスポンスAPDUが格納される。なお、ブロックBL4のNADには、外部装置2に固有のアドレス(例えば、識別情報)が含まれる。
【0028】
図3に示すように構成することで、例えば1バイトのLENにより指定可能な長さ(最大255バイト)を超える長さをレングスデータで指定可能となる。例えば、1バイトのLENより指定された長さ(つまり、レングスデータの長さ)が2バイト(つまり、65536ビット)である場合、当該2バイトのレングスデータにより送信データ(例えば、コマンドAPDU)の長さを指定することができる。これにより、既存のデータフォーマットを変更することなく、先頭フィールドのLENで指定可能な長さを超えるデータ長を指定することができる。なお、ブロックBBL2のLENは使用されない(SE1により無視される)ので、例えば“00(h)”または“FF(h)”に設定されてもよい。
【0029】
[2.SE1の動作]
次に、SE1の動作について実施例1と実施例2に分けて説明する。
【0030】
(実施例1)
先ず、
図4を参照して、実施例1に係るSE1の動作について説明する。
図4は、実施例1において、外部装置2からのブロックBLnがSE1により受信されたときのCPU10(例えば、OS)の処理の一例を示すフローチャートである。
【0031】
図4に示す処理が開始されると、CPU10は、受信されたブロックBLnの直前にLEN要求を含むブロックBL1が受信済であるか否かを判定する(ステップS1)。CPU10は、ブロックBL1が受信済でないと判定した場合(ステップS1:NO)、ステップS2へ進む。一方、CPU10は、ブロックBL1が受信済であると判定した場合(ステップS1:YES)、つまり、受信されたブロックBLnがブロックBL2に応じて外部装置2から送信されたブロックBL3である場合、ステップS7へ進む。
【0032】
ステップS2では、CPU10は、受信されたブロックBLnがLEN要求を含むブロックBL1であるか否かを、PCBを参照することで判定する。CPU10は、受信されたブロックBLnがLEN要求を含むブロックBL1であると判定した場合(ステップS2:YES)、ブロックBL1に含まれるレングスデータを保持する(ステップS3)。例えば、ブロックBL1の先頭フィールドに含まれるLENにより指定された長さ分のレングスデータが、ブロックBL1の情報フィールドから取得され、当該取得されたレングスデータがRAMの保持領域に記憶されることで保持される。次いで、CPU10は、ブロックBL1に対する応答として、LEN応答を含むブロックBL2を外部装置2へ送信する(ステップS4)。
【0033】
一方、ステップS2において、CPU10は、受信されたブロックBLnがLEN要求を含むブロックBL1でないと判定した場合(ステップS2:NO)、つまり、通常のブロックBL5である場合、ブロックBL5の情報フィールドに含まれる例えばコマンドAPDUに基づいて通常のコマンド処理を実行し(OSがアプリケーションにコマンドAPDUに応じた処理を実行させる)(ステップS5)、ブロックBL5に対する応答として、ブロックBL6(コマンド処理の結果を示すレスポンスAPDUを含む)を外部装置2へ送信する(ステップS6)。
【0034】
ステップS7では、CPU10は、受信されたブロックBL3に含まれる送信データ(例えば、コマンドAPDU)に基づいて処理(例えば、コマンド処理)を実行する。例えば、ステップS3で保持されたレングスデータにより示される長さ分のコマンドAPDUが、ブロックBL3の情報フィールドから取得され(ブロックBL3の先頭フィールドに含まれるLENは無視される)、当該取得されたコマンドAPDUに基づいてコマンド処理が実行される(OSがアプリケーションにコマンドAPDUに応じた処理を実行させる)。次いで、CPU10は、ブロックBL3に対する応答として、ブロックBL4(例えば、コマンド処理の結果を示すレスポンスAPDUを含む)を外部装置2へ送信する(ステップS8)。
【0035】
なお、実施例1の変形例として、CPU10は、
図4のステップS2において、受信されたブロックBLnがLEN要求を含むブロックBL1であると判定した場合(ステップS2:YES)、ステップS3へ移行する前に、ブロックBL1に含まれるレングスデータにより示される長さの送信データ(例えば、コマンドAPDU)を1度に受信可能であるか否かを判定してもよい。例えば、ブロックBL1に含まれるレングスデータにより示される長さが、送信データを一時記憶するためのバッファ領域の記憶容量以下である場合に当該送信データを1度に受信可能であると判定されて当該レングスデータを保持され(ステップS3)、ステップS4へ進む。一方、送信データを1度に受信可能でないと判定された場合、当該送信データを1度に受信可能な長さを示す長さ指定データを含むブロックBL2(例えば、長さ指定データは情報フィールドに格納される)が外部装置2へ送信される。そして、外部装置2は、送信データの長さを、ブロックBL2に含まれる長さ指定データにより示される長さ以下に変更し、当該変更された長さを示すレングスデータを含むブロックBL1が再度SE1へ送信され、
図4に示す処理が実行される。
【0036】
(実施例2)
次に、
図5を参照して、実施例2に係るSE1の動作について説明する。実施例1の変形例では、送信データの長さを変更する必要があるが当該送信データの長さを変更できない場合もある。かかる場合に鑑み、実施例2は、外部装置2により送信データが1度に受信可能な長さに分割されてSE1へ送信されるように構成される。
図5は、実施例2において、外部装置2からのブロックBLnがSE1により受信されたときのCPU10の処理の一例を示すフローチャートである。
【0037】
図5に示す処理が開始されると、CPU10は、受信されたブロックBLnの前(この場合、直前でなくともよく、過去所定時間内であってもよい)にLEN要求を含むブロックBL1が受信済であるか否かを判定する(ステップS11)。CPU10は、ブロックBL1が受信済でないと判定した場合(ステップS11:NO)、ステップS12へ進む。一方、CPU10は、ブロックBL1が受信済であると判定した場合(ステップS11:YES)、つまり、受信されたブロックBLnがブロックBL2に応じて外部装置2から送信されたブロックBL3である場合、ステップS19へ進む。
【0038】
ステップS12では、CPU10は、受信されたブロックBLnがLEN要求を含むブロックBL1であるか否かを判定する。CPU10は、受信されたブロックBLnがLEN要求を含むブロックBL1であると判定した場合(ステップS12:YES)、ブロックBL1に含まれるレングスデータを保持する(ステップS13)。次いで、CPU10は、ステップS13で保持されたレングスデータにより示される長さの送信データを1度に受信可能であるか否かを判定する(ステップS14)。
【0039】
CPU10は、送信データを1度に受信可能であると判定した場合(ステップS14:YES)、ブロックBL1に対する応答として、LEN応答を含むブロックBL2を外部装置2へ送信する(ステップS15)。一方、CPU10は、送信データを1度に受信可能でないと判定した場合(ステップS14:NO)、ブロックBL1に対する応答として、送信データを1度に受信可能な長さを示す長さ指定データを含むブロックBL2を外部装置2へ送信する(ステップS16)。
【0040】
これにより、外部装置2は、ブロックBL2に含まれる長さ指定データにより示される長さ以下になるように送信データを2以上に分割し、当該送信データから分割された分割送信データを含むブロックBL3をSE1へ順次送信することになる。例えば、送信データがn(n>2)個に分割される場合、1番目に送信される分割送信データを含むブロックBL3からn-1番目に送信される分割送信データを含むブロックBL3のそれぞれのPCBにおけるブロック連鎖ビットb6は“1”に設定される。一方、n番目に(つまり、最後に)送信される分割送信データを含むブロックBL3のPCBにおけるブロック連鎖ビットb6は“0”に設定される。
【0041】
一方、ステップS12において、CPU10は、受信されたブロックBLnがLEN要求を含むブロックBL1でないと判定した場合(ステップS12:NO)、つまり、通常のブロックBL5である場合、当該ブロックBL5の情報フィールドに含まれる例えばコマンドAPDUに基づいて通常のコマンド処理を実行し(OSがアプリケーションにコマンドAPDUに応じた処理を実行させる)(ステップS17)、当該ブロックBL5に対する応答としてブロックBL6(当該コマンド処理の結果を示すレスポンスAPDUを含む)を外部装置2へ送信する(ステップS18)。
【0042】
ステップS19では、CPU10は、ステップS13で保持されたレングスデータにより示される長さの送信データが揃った(送信データが分割されて送信される場合、全ての分割送信データが揃った)か否かを判定する。ここで、送信データが分割されてブロックBL3により送信される場合、それぞれのブロックBL3に含まれる分割送信データがバッファ領域に記憶される度に、当該バッファ領域から例えばRAM上の送信データ再生領域に分割送信データが移行されて(書き込まれて)連結される。そして、送信データ再生領域において連結された分割送信データの長さが累計され、当該累計された長さが、ステップS13で保持されたレングスデータにより示される長さと一致した場合に(つまり、複数回にわたって受信された分割送信データが連結されることによりレングスデータにより示される長さの送信データが得られた場合に)、全ての分割送信データが揃ったと判定される。
【0043】
CPU10は、ステップS13で保持されたレングスデータにより示される長さの送信データが揃っていないと判定した場合(ステップS19:NO)、ブロックBL3に対する応答として、ブロックBL4(例えば、次の分割送信データの要求を含む)を外部装置2へ送信する(ステップS20)。一方、CPU10は、ステップS13で保持されたレングスデータにより示される長さの送信データが揃ったと判定した場合(ステップS19:YES)、当該送信データ(例えば、コマンドAPDU)に基づいて処理(例えば、コマンド処理)を実行し(OSがアプリケーションにコマンドAPDUに応じた処理を実行させる)(ステップS21)、ブロックBL3に対する応答として、ブロックBL4(例えば、当該コマンド処理の結果を示すレスポンスAPDUを含む)を外部装置2へ送信する(ステップS22)。
【0044】
以上説明したように、上記実施形態によれば、SE1は、送信されるべき送信データの長さを示すレングスデータを含むブロックBL1を外部装置2から受信すると、ブロックBL1に含まれるレングスデータを保持し、ブロックBL1に対する応答としてブロックBL2を外部装置2へ送信し、ブロックBL2に応じて上記レングスデータにより示される長さの送信データを含むブロックBL3を外部装置2から受信した場合に、ブロックBL3に含まれる送信データに基づいて処理を実行するように構成したので、既存のデータフォーマットを変更することなく、ヘッダで指定可能な長さを超えるデータ長を指定することができる。
【符号の説明】
【0045】
1 SE
2 外部装置
10 CPU
11 RAM
12 ROM
13 NVM
14 I/O回路