特許第6241340号(P6241340)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 大日本印刷株式会社の特許一覧

特許6241340情報処理装置、情報処理方法、及び情報処理プログラム
<>
  • 特許6241340-情報処理装置、情報処理方法、及び情報処理プログラム 図000002
  • 特許6241340-情報処理装置、情報処理方法、及び情報処理プログラム 図000003
  • 特許6241340-情報処理装置、情報処理方法、及び情報処理プログラム 図000004
  • 特許6241340-情報処理装置、情報処理方法、及び情報処理プログラム 図000005
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6241340
(24)【登録日】2017年11月17日
(45)【発行日】2017年12月6日
(54)【発明の名称】情報処理装置、情報処理方法、及び情報処理プログラム
(51)【国際特許分類】
   G06K 19/07 20060101AFI20171127BHJP
   G06K 7/00 20060101ALI20171127BHJP
   G06F 3/06 20060101ALI20171127BHJP
   G06F 3/08 20060101ALI20171127BHJP
   G06F 13/42 20060101ALI20171127BHJP
【FI】
   G06K19/07
   G06K7/00
   G06F3/06 301N
   G06F3/08 H
   G06F13/42 310
【請求項の数】15
【全頁数】16
(21)【出願番号】特願2014-57623(P2014-57623)
(22)【出願日】2014年3月20日
(65)【公開番号】特開2015-184692(P2015-184692A)
(43)【公開日】2015年10月22日
【審査請求日】2017年1月24日
(73)【特許権者】
【識別番号】000002897
【氏名又は名称】大日本印刷株式会社
(74)【代理人】
【識別番号】110000958
【氏名又は名称】特許業務法人 インテクト国際特許事務所
(74)【代理人】
【識別番号】100083839
【弁理士】
【氏名又は名称】石川 泰男
(74)【代理人】
【識別番号】100120189
【弁理士】
【氏名又は名称】奥 和幸
(72)【発明者】
【氏名】吉川 雅起
【審査官】 甲斐 哲雄
(56)【参考文献】
【文献】 国際公開第2007/004525(WO,A1)
【文献】 特開2004−078685(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06K 19/07
G06K 7/00
G06F 3/06
G06F 3/08
G06F 13/42
(57)【特許請求の範囲】
【請求項1】
1ブロックで送信可能な予め定められた最大サイズを超えるデータを送信する場合に当該最大サイズを拡張する拡張機能を使用するか否かを示す拡張情報を含む先頭フィールドと、伝送対象となる前記データを含む情報フィールドとを含んで構成されるブロックを受信する情報処理装置であって、
送信側の情報処理装置から送信された前記ブロックを受信する受信手段と、
前記受信手段により受信された前記ブロックの前記先頭フィールドに含まれる前記拡張情報が前記拡張機能の使用を示す場合、当該ブロックから前記最大サイズを超える前記データを前記ブロックから取得する取得手段と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記先頭フィールドは、1ブロックで送信可能な予め定められた最大サイズを超えるデータを送信する場合に当該データを複数のブロックに分割して送信するブロック連鎖機能を使用するか否かを示すブロック連鎖情報を更に含み、
前記受信手段により受信された前記ブロックの前記先頭フィールドに含まれる前記ブロック連鎖情報が前記ブロック連鎖機能の使用を示す場合、当該ブロックの次の前記ブロックを前記送信側の情報処理装置に要求する要求手段を更に備えることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記ブロック連鎖情報が前記ブロック連鎖機能の使用を示し、且つ、前記拡張情報が前記拡張機能の使用を示す場合、前記要求手段は、前記最大サイズを超える前記データの全部又は一部を含む次の前記ブロックを前記送信側の情報処理装置に要求することを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記ブロック連鎖情報と前記拡張情報とは、それぞれ、前記先頭フィールドにおいて、データの伝送制御に必要な情報を示すバイト中の所定のビットの値で示されることを特徴とする請求項2または3に記載の情報処理装置。
【請求項5】
前記取得手段は、前記バイト中の所定のビットの値に対応付けられるバイト数を特定し、当該特定したバイト数分のバイトの値を前記データのサイズとして、当該データを取得することを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記拡張情報は、前記先頭フィールドにおいて、前記情報フィールドに含まれる前記データのサイズを示すバイトの値で示され、
前記取得手段は、所定の値を示す前記バイトに後続するバイトの値に基づいて前記データのサイズを特定し、当該特定したサイズの前記データを取得する請求項2または3に記載の情報処理装置。
【請求項7】
前記受信手段は、前記ブロックを受信する前に、送信側の情報処理装置から送信されたリセットまたはコマンドを受信し、
前記情報処理装置は、前記受信手段により受信されたリセットまたはコマンドに対する応答情報であって、前記拡張機能を使用可能であることを示す情報を含む前記応答情報を、前記送信側の情報処理装置へ返信する返信手段を備えることを特徴とする請求項1乃至6の何れか一項に記載の情報処理装置。
【請求項8】
請求項1乃至7の何れか一項に記載の受信側の前記情報処理装置へ前記ブロックを送信する前記送信側の情報処理装置であって、
前記ブロックを前記受信側の情報処理装置へ送信する第1送信手段と、
前記第1送信手段により送信された前記ブロックの次の前記ブロックの要求に応じて、当該次のブロックを前記受信側の情報処理装置へ送信する第2送信手段と、
を備えることを特徴とする情報処理装置。
【請求項9】
前記第1送信手段は、前記拡張機能の使用を示す前記拡張情報を前記先頭フィールドに含む前記ブロックを前記受信側の情報処理装置へ送信し、
前記受信側の情報処理装置から、前記拡張機能の使用を示す前記拡張情報を前記先頭フィールドに含む前記ブロックが受信された場合、前記拡張機能による前記ブロックの通信を継続することを特徴とする請求項8に記載の情報処理装置。
【請求項10】
前記ブロックを送信する前に、前記受信側の情報処理装置へリセットまたはコマンドを送信する第3送信手段を備え、
前記第1送信手段は、前記リセットまたはコマンドに対する応答情報中に前記拡張機能を使用可能であることを示す情報が含まれている場合に限り、前記拡張機能の使用を示す前記拡張情報を前記先頭フィールドに含む前記ブロックを前記受信側の情報処理装置へ送信することを特徴とする請求項8に記載の情報処理装置。
【請求項11】
請求項1乃至10の何れか一項に記載の情報処理装置は、ICチップであることを特徴とする情報処理装置。
【請求項12】
1ブロックで送信可能な予め定められた最大サイズを超えるデータを送信する場合に当該最大サイズを拡張する拡張機能を使用するか否かを示す拡張情報を含む先頭フィールドと、伝送対象となる前記データを含む情報フィールドとを含んで構成されるブロックを受信するコンピュータにより実行される情報処理方法であって、
送信側の情報処理装置から送信された前記ブロックを受信するステップと、
前記受信された前記ブロックの前記先頭フィールドに含まれる前記拡張情報が前記拡張機能の使用を示す場合、当該ブロックから前記最大サイズを超える前記データを前記ブロックから取得するステップと、
を含むことを特徴とする情報処理方法。
【請求項13】
前記先頭フィールドは、1ブロックで送信可能な予め定められた最大サイズを超えるデータを送信する場合に当該データを複数のブロックに分割して送信するブロック連鎖機能を使用するか否かを示すブロック連鎖情報を更に含み、
前記受信されたブロックの前記先頭フィールドに含まれる前記ブロック連鎖情報が前記ブロック連鎖機能の使用を示す場合、当該ブロックの次の前記ブロックを前記送信側の情報処理装置に要求するステップを更に含むことを特徴とする請求項12に記載の情報処理方法。
【請求項14】
1ブロックで送信可能な予め定められた最大サイズを超えるデータを送信する場合に当該最大サイズを拡張する拡張機能を使用するか否かを示す拡張情報を含む先頭フィールドと、伝送対象となる前記データを含む情報フィールドとを含んで構成されるブロックを受信するコンピュータに、
送信側の情報処理装置から送信された前記ブロックを受信するステップと、
前記受信された前記ブロックの前記先頭フィールドに含まれる前記拡張情報が前記拡張機能の使用を示す場合、当該ブロックから前記最大サイズを超える前記データを前記ブロックから取得するステップと、
を実行させることを特徴とする情報処理プログラム。
【請求項15】
前記先頭フィールドは、1ブロックで送信可能な予め定められた最大サイズを超えるデータを送信する場合に当該データを複数のブロックに分割して送信するブロック連鎖機能を使用するか否かを示すブロック連鎖情報を更に含み、
前記受信されたブロックの前記先頭フィールドに含まれる前記ブロック連鎖情報が前記ブロック連鎖機能の使用を示す場合、当該ブロックの次の前記ブロックを前記送信側の情報処理装置に要求するステップを更に含むことを特徴とする請求項14に記載の情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、外部端末との間で接触または非接触で通信を行うICカード等の技術に関する。
【背景技術】
【0002】
ICカードの通信仕様は、接触ICカードの国際規格であるISO/IEC 7816-3や、非接触ICカードの国際規格であるISO/IEC 14443-3と14443-4で規定されており、市場では既に様々なICカードシステムが構築されている。一方、近年では、コンピュータの高性能化などにより暗号解析技術が進歩することで、ICカードが扱う暗号化データに対するセキュリティ上の脅威が問題になってきた。このような問題に対して、電子証明書や認証コードなど、ICカードが扱うデータのサイズを増大させる対策がとられている。
【0003】
ところで、接触ICカード規格が規定する通信規約の一つであるT=1プロトコル(ブロック伝送方式)では、従来、1ブロックの最大サイズ(最大データ長)が254バイトとなっている。ISO/IEC 7816-3の規格においては、最大サイズを超えるデータを送信する場合、当該データを複数のブロックに分割して送信するブロック連鎖機能を用いるようになっている(例えば特許文献1参照)。一方、ISO/IEC 14443-4の規格が規定する半二重ブロック転送プロトコルでの最大サイズは256バイトとなっている。非接触ICカード規格においても、最大サイズを超えるデータを送信する場合、ブロック連鎖機能を用いるようになっている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−78685号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、ブロック連鎖機能による処理には、余計なデータ通信が生じる。そのため、データのサイズが最大サイズを超えた場合に、外部端末とICカード間の通信パフォーマンスが著しく低下し、セキュリティ向上のためには利便性を犠牲にしなければならないという問題があった。
【0006】
そこで、本発明は、上記問題に鑑みてなされたものであり、ブロック連鎖機能による処理を低減し、余計なデータ通信を低減することが可能な情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するために、請求項1に記載の発明は、1ブロックで送信可能な予め定められた最大サイズを超えるデータを送信する場合に当該最大サイズを拡張する拡張機能を使用するか否かを示す拡張情報を含む先頭フィールドと、伝送対象となる前記データを含む情報フィールドとを含んで構成されるブロックを受信する情報処理装置であって、送信側の情報処理装置から送信された前記ブロックを受信する受信手段と、前記受信手段により受信された前記ブロックの前記先頭フィールドに含まれる前記拡張情報が前記拡張機能の使用を示す場合、当該ブロックから前記最大サイズを超える前記データを前記ブロックから取得する取得手段と、を備えることを特徴とする。
【0008】
請求項2に記載の発明は、請求項1に記載の情報処理装置において、前記先頭フィールドは、1ブロックで送信可能な予め定められた最大サイズを超えるデータを送信する場合に当該データを複数のブロックに分割して送信するブロック連鎖機能を使用するか否かを示すブロック連鎖情報を更に含み、前記受信手段により受信された前記ブロックの前記先頭フィールドに含まれる前記ブロック連鎖情報が前記ブロック連鎖機能の使用を示す場合、当該ブロックの次の前記ブロックを前記送信側の情報処理装置に要求する要求手段を更に備えることを特徴とする。
【0009】
請求項3に記載の発明は、請求項2に記載の情報処理装置において、前記ブロック連鎖情報が前記ブロック連鎖機能の使用を示し、且つ、前記拡張情報が前記拡張機能の使用を示す場合、前記要求手段は、前記最大サイズを超える前記データの全部又は一部を含む次の前記ブロックを前記送信側の情報処理装置に要求することを特徴とする。
【0010】
請求項4に記載の発明は、請求項2または3に記載の情報処理装置において、前記ブロック連鎖情報と前記拡張情報とは、それぞれ、前記先頭フィールドにおいて、データの伝送制御に必要な情報を示すバイト中の所定のビットの値で示されることを特徴とする。
【0011】
請求項5に記載の発明は、請求項4に記載の情報処理装置において、前記取得手段は、前記バイト中の所定のビットの値に対応付けられるバイト数を特定し、当該特定したバイト数分のバイトの値を前記データのサイズとして、当該データを取得することを特徴とする。
【0012】
請求項6に記載の発明は、請求項2または3に記載の情報処理装置において、前記拡張情報は、前記先頭フィールドにおいて、前記情報フィールドに含まれる前記データのサイズを示すバイトの値で示され、前記取得手段は、所定の値を示す前記バイトに後続するバイトの値に基づいて前記データのサイズを特定し、当該特定したサイズの前記データを取得することを特徴とする。
【0013】
請求項7に記載の発明は、請求項1乃至6の何れか一項に記載の情報処理装置において、前記受信手段は、前記ブロックを受信する前に、送信側の情報処理装置から送信されたリセットまたはコマンドを受信し、前記情報処理装置は、前記受信手段により受信されたリセットまたはコマンドに対する応答情報であって、前記拡張機能を使用可能であることを示す情報を含む前記応答情報を、前記送信側の情報処理装置へ返信する返信手段を備えることを特徴とする。
【0014】
請求項8に記載の発明は、請求項1乃至7の何れか一項に記載の受信側の前記情報処理装置へ前記ブロックを送信する前記送信側の情報処理装置であって、前記ブロックを前記受信側の情報処理装置へ送信する第1送信手段と、前記第1送信手段により送信された前記ブロックの次の前記ブロックの要求に応じて、当該次のブロックを前記受信側の情報処理装置へ送信する第2送信手段と、を備えることを特徴とする。
【0015】
請求項9に記載の発明は、請求項8に記載の情報処理装置において、前記第1送信手段は、前記拡張機能の使用を示す前記拡張情報を前記先頭フィールドに含む前記ブロックを前記受信側の情報処理装置へ送信し、前記受信側の情報処理装置から、前記拡張機能の使用を示す前記拡張情報を前記先頭フィールドに含む前記ブロックが受信された場合、前記拡張機能による前記ブロックの通信を継続することを特徴とする。
【0016】
請求項10に記載の発明は、請求項8に記載の情報処理装置において、前記ブロックを送信する前に、前記受信側の情報処理装置へリセットまたはコマンドを送信する第3送信手段を備え、前記第1送信手段は、前記リセットまたはコマンドに対する応答情報中に前記拡張機能を使用可能であることを示す情報が含まれている場合に限り、前記拡張機能の使用を示す前記拡張情報を前記先頭フィールドに含む前記ブロックを前記受信側の情報処理装置へ送信することを特徴とする。
【0017】
請求項11に記載の発明は、請求項1乃至10の何れか一項に記載の情報処理装置は、ICチップであることを特徴とする。
【0018】
請求項12に記載の発明は、1ブロックで送信可能な予め定められた最大サイズを超えるデータを送信する場合に当該最大サイズを拡張する拡張機能を使用するか否かを示す拡張情報とを含む先頭フィールドと、伝送対象となる前記データを含む情報フィールドを含んで構成されるブロックを受信するコンピュータにより実行される情報処理方法であって、送信側の情報処理装置から送信された前記ブロックを受信するステップと、前記受信された前記ブロックの前記先頭フィールドに含まれる前記拡張情報が前記拡張機能の使用を示す場合、当該ブロックから前記最大サイズを超える前記データを前記ブロックから取得するステップと、を含むことを特徴とする。
【0019】
請求項13に記載の発明は、請求項12に記載の情報処理方法において、前記先頭フィールドは、1ブロックで送信可能な予め定められた最大サイズを超えるデータを送信する場合に当該データを複数のブロックに分割して送信するブロック連鎖機能を使用するか否かを示すブロック連鎖情報を更に含み、前記受信された前記ブロックの前記先頭フィールドに含まれる前記ブロック連鎖情報が前記ブロック連鎖機能の使用を示す場合、当該ブロックの次の前記ブロックを前記送信側の情報処理装置に要求するステップを含むことを特徴とする。
【0020】
請求項14に記載の発明は、1ブロックで送信可能な予め定められた最大サイズを超えるデータを送信する場合に当該最大サイズを拡張する拡張機能を使用するか否かを示す拡張情報とを含む先頭フィールドと、伝送対象となる前記データを含む情報フィールドを含んで構成されるブロックを受信するコンピュータに、送信側の情報処理装置から送信された前記ブロックを受信するステップと、前記受信された前記ブロックの前記先頭フィールドに含まれる前記拡張情報が前記拡張機能の使用を示す場合、当該ブロックから前記最大サイズを超える前記データを前記ブロックから取得するステップと、を実行させることを特徴とする。
【0021】
請求項15に記載の発明は、請求項14に記載の情報処理プログラムにおいて、前記先頭フィールドは、1ブロックで送信可能な予め定められた最大サイズを超えるデータを送信する場合に当該データを複数のブロックに分割して送信するブロック連鎖機能を使用するか否かを示すブロック連鎖情報を更に含み、前記受信された前記ブロックの前記先頭フィールドに含まれる前記ブロック連鎖情報が前記ブロック連鎖機能の使用を示す場合、当該ブロックの次の前記ブロックを前記送信側の情報処理装置に要求するステップを更に実行させることを特徴とする。
【発明の効果】
【0022】
本発明によれば、ブロック連鎖機能による処理を低減し、余計なデータ通信を低減することができる。
【図面の簡単な説明】
【0023】
図1】ICカード1の概要構成例を示す図である。
図2】(A)は、T=1プロトコルで送受信されるブロックのフレーム構成例を示す図である。(B)は、半二重ブロックプロトコルで送受信されるブロックのフレーム構成例を示す図である。
図3】LENに後続するバイトによりINF長を表現する例を示す図である。
図4】(A)は、外部端末2における処理の一例を示すフローチャートである。(B)は、ICチップ1aにおける処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0024】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【0025】
先ず、図1を参照して、本実施形態に係るICカード1の構成及び機能概要について説明する。図1は、ICカード1の概要構成例を示す図である。なお、ICカード1は、キャッシュカード、クレジットカード、社員カード等として使用される。或いは、ICカード1は、スマートフォンや携帯電話機等の通信機器に組み込まれる。ICチップ1aは通信機器の回路基板上に直接組み込んで構成するようにしてもよい。ICチップ1aは、本発明における受信側の情報処理装置の一例である。
【0026】
ICカード1には、図1に示すように、ICチップ1aが搭載されている。ICチップ1aは、コンピュータとしてのCPU(Central Processing Unit)10、RAM(Random Access Memory)11、ROM(Read Only Memory)12、不揮発性メモリ13、及びインターフェイス部14等を備えて構成される。
【0027】
インターフェイス部14は、外部端末2(接続装置)とのインターフェイスを担う。外部端末2は、本発明における送信側の情報処理装置の一例であり、本発明における第1送信手段〜第2送信手段を備える。外部端末2の例としては、ICカード発行装置、ATM、改札機、認証用ゲート等が挙げられる。或いは、ICカード1が通信機器に組み込まれる場合、外部端末2には通信機器の機能を担うコントローラが該当する。ICカード発行装置は、ICカード1の発行処理を行う装置である。なお、「発行」とは、ICカードが製品として顧客(例えば、クレジットカード会社等)に提供されるにあたって、例えばICカード発行会社がICカードのICチップに所定の情報(プログラムやデータなど)を書き込むことを意味する。
【0028】
また、ICカード1には、接触ICカードと、非接触ICカードとがある。接触ICカードであるICカード1には、図示しないが、C1〜C8の8個の端子が備えられ、これらの端子は、インターフェイス部14に接続されている。例えば、C1端子は電源端子、C2端子はリセット端子、C3端子はクロック端子、C5端子はグランド端子、C7端子は外部端末2との間で通信を行うための端子である。なお、接触ICカードであるICカード1の通信仕様は、ISO/IEC 7816-3の規格に基づく。
【0029】
一方、非接触ICカードであるICカード1には、図示しないが、アンテナ、及び変復調回路が備えられ、変復調回路は、インターフェイス部14に接続されている。アンテナは、外部端末2との間で電磁波による信号(データ)の送受を担う。変復調回路は、アンテナからの信号を復調してインターフェイス部14へ送り、インターフェイス部14からの信号を変調しアンテナへ送る。なお、非接触ICカードであるICカード1の通信仕様は、ISO/IEC 14443-3と14443-4の規格に基づく。
【0030】
CPU10は、ROM12または不揮発性メモリ13に記憶されるプログラムを実行する演算装置である。CPU10は、本発明における受信手段、要求手段、取得手段、及び返信手段として機能する。ROM12は、ICチップ1aに設けられない場合もある。不揮発性メモリ13には、例えばフラッシュメモリが適用される。なお、不揮発性メモリ13は、「Electrically Erasable Programmable Read-Only Memory」であっても構わない。不揮発性メモリ13には、OS(Operating System)及びアプリケーションプラグラムが記憶される。
【0031】
ICカード1が接触ICカードである場合、接触ICカードのCPU10は、外部端末2から送信されたリセット(リセット信号)をインターフェイス部14を介して受信すると、当該リセットに対する応答情報を外部端末2へ返信する。この場合、応答情報は、ATR(Answer To Reset)である。ATRは、最初のキャラクタであるTSと、その後に続く最大32文字のキャラクタ(例えば、T0キャラクタ、TA3キャラクタ、TB3キャラクタ、TC3キャラクタ等)で構成される。ATRには、通信速度設定用のパラメータ、ブロック待ち時間(BWI)、及びキャラクタの待ち時間(CWI)等が設定される。外部端末2は、ATRの最後のキャラクタを受信し、通信に係るパラメータの調整を必要に応じて行う。その後、外部端末2とICチップ1aとの間で通信が開始される。この通信は、例えば、ISO/IEC 7816-3の規格が規定するT=1プロトコル(調歩式半二重ブロック式通信プロトコル)にしたがってブロックの単位で行われる。
【0032】
一方、ICカード1が非接触ICカードである場合、非接触ICカードのCPU10は、外部端末2から送信された検出コマンド(例えば、REQB(Request command Type B)、またはWUPB(Wake UP command Type B))をインターフェイス部14を介して受信すると、当該検出コマンドに対する応答情報を外部端末2へ返信する。この検出コマンドは、ISO/IEC 14443の規格で定められたタイプB(通信方式)の非接触ICカードが外部端末2との動作可能範囲に存在するか否かを検出するためのコマンドである。また、この場合、応答情報は、ATQB(Answer To Request Type B)である。ATQBには、通信速度設定用のパラメータのほか、1ブロックで送信可能な最大サイズ(256バイト)が設定される。最大サイズは、最大長、または最大フレームサイズともいう。非接触ICカードのCPU10は、ATQBを外部端末2へ返信すると、次のコマンドの待機状態となる。その後、外部端末2とICチップ1aとの間で通信が開始される。この通信は、例えば、ISO/IEC 14443の規格が規定する半二重ブロックプロトコルにしたがってブロックの単位で行われる。
【0033】
ここで、図2を参照して、上記プロトコルで送受信されるブロックの構成について説明する。図2(A)は、T=1プロトコルで送受信されるブロックのフレーム構成例を示す図である。図2(B)は、半二重ブロックプロトコルで送受信されるブロックのフレーム構成例を示す図である。ここで、フレームは、データビット列と任意選択の誤り検出ビット列から構成され、フレームの開始と終了の識別子で囲まれる。また、ブロックとは、有効なプロトコルデータ形式を含む特別な形のフレームをいう。有効なプロトコルデータ形式には、I(information)ブロック、R(receive ready)ブロック、及びS(supervisory block)ブロックがある。Iブロックとは、データ伝送を行うために使用されるブロックである。伝送対象となるデータには、各種命令を示すコマンド(例えば、APDU)、及び不揮発性メモリ13に書き込まれるデータが該当する。Rブロックとは、肯定または否定の応答を伝えるためなどに使用されるブロックである。Sブロックとは、外部端末2とICカード1との間で制御情報を交換するために使用されるブロックである。以下の説明では、例えば、Iブロックを対象とする。
【0034】
先ず、T=1プロトコルで送受信されるブロックは、図2(A)に示すように、先頭フィールドF11、情報フィールド(INF)F12、及び最終フィールドF13により構成される。先頭フィールドF11は、NAD(ノードアドレス)、PCB(プロトコル制御バイト)、及びLEN(長さ)を含む。情報フィールドF12は、伝送対象となるデータを含む。最終フィールドF13は、誤り検出符号であるLRC(1バイト)またはCRC(2バイト)を含む。
【0035】
先頭フィールドF11におけるNADには、送信元ノードアドレス及び宛先ノードアドレスが設定される。先頭フィールドF11におけるPCBは、データの伝送制御に必要な情報を示すバイトであり、ブロック連鎖情報等を含む。なお、図2(A)の例では、IブロックのPCBを示している。ブロック連鎖情報とは、1ブロックで送信可能な最大サイズを超えるデータを送信する場合に当該データを複数のブロックに分割して送信するブロック連鎖機能を使用するか否かを示す。ブロック連鎖機能を使用する場合、継続ブロック有無ビットb6に「1」が設定される。つまり、ブロック連鎖情報は、PCBの所定のビットの値「1」または「0」で示される。1ブロックで送信可能な最大サイズは、上記規格により予め定められており、1バイトのLENで表される。1バイトで表される最大長は255であるが、255(H’FF)はRFU(Reserved for future use) になっているため、1ブロックで送信可能な最大サイズは、254(H’FE)である(Hは16進数であることを示す)。また、IブロックのPCBにおいて、ビットb8は、「0」に設定され、ビットb7は、Iブロックが送出される度に「1」と「0」とが交互に設定される。ビットb5〜ビットb1は、RFUになっている。つまり、ビットb5〜ビットb1の値は、RFU値であり、通常、「00000」に設定される。先頭フィールドF11におけるLENには、情報フィールドF12に含まれるデータのサイズ(以下、「INF長」という)が、0〜254(H’FE)で設定される(つまり、1ブロックで送信可能なデータの最大サイズは、254バイトである)。なお、LENは、情報フィールドF12に含まれるデータのサイズ(INF長)を示すバイト(LENバイト)であり、このバイトの値である255(H’FF)はRFUになっている。つまり、255(H’FF)は、RFU値である。
【0036】
次に、半二重ブロックプロトコルで送受信されるブロックは、図2(B)に示すように、先頭フィールドF21、情報フィールドF22、及び最終フィールドF23により構成される。先頭フィールドF21は、PCB(プロトコル制御バイト)、CID(カード識別子)、及びNAD(ノードアドレス)を含む。情報フィールドF22は、伝送対象となるデータを含む。最終フィールドF23は、誤り検出符号であるCRCを含む。
【0037】
先頭フィールドF21におけるPCBも、データの伝送制御に必要な情報を示すバイトであり、ブロック連鎖情報等を含む。なお、図2(B)の例でも、IブロックのPCBを示している。ブロック連鎖機能を使用する場合、継続ブロック有無ビットb5に「1」が設定される。また、IブロックのPCBにおいて、ビットb8及びb7は、それぞれ「0」に設定される。ビットb6は、RFUになっている。つまり、ビットb6の値は、RFU値であり、通常、「0」に設定される。CIDが続く場合、ビットb4は「1」に設定される。NADが続く場合、ビットb3は「1」に設定される。ビットb2は常に「1」に設定される。ビットb1はブロック番号を示す。先頭フィールドF21におけるNADには、送信元ノードアドレス、及び宛先ノードアドレスが設定される。
【0038】
以上の構成において、ブロックの受信側のICチップ1aのCPU10は、ブロックの送信側の外部端末2から送信されたブロックを受信すると、受信されたブロックに含まれるブロック連鎖情報を参照して当該ブロック連鎖情報がブロック連鎖機能の使用を示す場合、当該ブロック(つまり、連鎖ありブロック)の次のブロックを外部端末2に要求する。外部端末2は、次のブロックの要求に応じて、当該次のブロックをICチップ1aへ送信する。ICチップ1aのCPU10は、外部端末2が「連鎖なしブロック」を送信するまで繰り返し、当該CPU10は受信したブロックをすべて連結する。このような通信は、ブロックの送信側がICチップ1aであり、且つブロックの受信側が外部端末2である場合も同様である。これにより、ICチップ1aと外部端末2とは、最大サイズを超えるデータを送受信することができる。
【0039】
本実施形態では、このようなブロック連鎖機能による処理を低減し、余計なデータ通信を低減するため、上述したブロックにおける先頭フィールドF11,F21に、ブロックで送信可能な上記最大サイズを超えるデータを送信する場合に当該最大サイズを拡張(言い換えれば、LENを拡張)する拡張機能を使用するか否かを示す拡張情報を含むように構成する。これには、例えば、(1)PCBのRFU値を利用する方法と、(2)LENのRFU値を利用する方法とがある。
【0040】
(1)PCBのRFU値を利用する方法
この方法では、先頭フィールドF11におけるPCBの場合、当該PCBのビットb5〜ビットb1に拡張情報を意味付ける。例えば、ビットb5〜ビットb1の値が、「00000」以外に設定される場合、上記拡張機能を使用することを示す。さらに、この場合、ビットb5〜ビットb1の値に、拡張したLENのバイト数を対応付けるように構成するとよい。例えば、ビットb5〜ビットb1の5ビットを全て使用する場合、「00001」に2バイトを対応付け、「00010」に3バイトを対応付け、・・・「11111」に32バイトを対応付けるように構成する。拡張機能が不使用の場合、LENは1バイトであるが、ビットb5〜ビットb1が「00001」の場合、LENは2バイトある。LENが2バイトであれば、INF長を、「0」〜「65535」で表すことができる。そのため、1ブロックで送信可能な最大サイズを「254」から「65535」に拡張することができる。なお、ビットb5〜ビットb1の5ビットの中の一部のビットに、拡張したLENのバイト数を対応付けるように構成してもよい。例えば、「01」に2バイトを対応付け、「10」に10バイトを対応付け、「11」に20バイトを対応付けるように構成する。
【0041】
一方、先頭フィールドF21におけるPCBの場合、当該PCBのビットb6に拡張情報を意味付ける。例えば、ビットb6の値が、「1」に設定される場合、上記拡張機能を使用することを示す。先頭フィールドF21には、先頭フィールドF11とは異なり、LENが含まれていないので、ビットb6の値が「1」に設定される場合、例えば2バイトで示すことができる最大値である「65535」が最大サイズとなる。そのため、1ブロックで送信可能な最大サイズを「256」から「65535」に拡張することができる。
【0042】
(2)LENのRFU値を利用する方法
この方法では、先頭フィールドF11におけるLEN=255(H’FF)に、拡張情報を意味付ける。つまり、LENが255(H’FF)に設定される場合、上記拡張機能を使用することを示す。さらに、この場合、LENに後続するバイトによりINF長を表現するように構成するとよい。図3は、LENに後続するバイトによりINF長を表現する例を示す図である。図3(A)に示す方法では、LENに後続する1バイト(図3(A)の下線部)の値に「H’100」を足した値をINF長とする。図3(A)に示す方法の場合、INF長を、「256」〜「511」(つまり、「H’100」〜「H’1FF」)で表すことができる。一方、図3(B)に示す方法では、LENに後続する2バイト(なお、3バイト以上であってもよい)をINF長とする。図3(B)に示す方法の場合、INF長を、「0」〜「65535」(つまり、「H’0000」〜「H’FFFF」)(図3(B)の下線部)で表すことができる。一方、図3(C)に示す方法では、LENに後続する1バイトで、さらに後続する実LEN部のサイズ(この例では、3バイト)を示し、この実LEN部でINF長を表す。図3(C)に示す方法の場合、INF長を、「0」〜「16777215」(つまり、「H’000000」〜「H’FFFFFF」)(図3(C)の下線部)で表すことができる。なお、図3(B)及び(C)に示す方法の場合、伝送対象となるデータが、1ブロックで送信可能なデータの最大サイズを超えるかどうかに関わらず、LENを255(H’FF)に設定することができる。
【0043】
なお、T=1プロトコルでは、ブロックの終わりをCWTタイムアウトで決定することができる。つまり、受信側は、キャラクタを待ち続け、キャラクタの待ち時間(CWT)だけ待っても送信側からキャラクタが送られてこなかった時に受信を打ち切り、それまでに受信したデータをブロックとする。よって、LENがINF長を正しく示していない場合でも、伝送対象となるデータを特定することができる。また、先頭フィールドにおけるNADのRFUのビットに上述した拡張情報を意味付けるように構成してもよい。
【0044】
そして、ブロックの受信側のICチップ1aのCPU10は、ブロックの送信側の外部端末2から送信されたブロックを受信すると、受信されたブロックに含まれる拡張情報を参照して当該拡張情報が拡張機能の使用を示す場合、当該ブロックから、上述した最大サイズを超えるデータを特定して取得する。これにより、ブロック連鎖機能による処理を低減し、余計なデータ通信を低減することができる。このことは、ブロックの送信側がICチップ1aであり、且つブロックの受信側が外部端末2である場合も同様である。
【0045】
また、受信されたブロックに含まれるブロック連鎖情報がブロック連鎖機能の使用を示し、且つ、当該受信されたブロックに含まれる拡張情報が拡張機能の使用を示す場合、ブロックの受信側のICチップ1aのCPU10は、上述した最大サイズを超えるデータの全部又は一部を含む次のブロックを外部端末2に要求する。外部端末2は、次のブロックの要求に応じて、当該次のブロックをICチップ1aへ送信する。ICチップ1aのCPU10は、外部端末2が「連鎖なしブロック」を送信するまで繰り返し、当該CPU10は受信したブロックをすべて連結する。このように、本実施形態によれば、ブロック連鎖機能と拡張機能とを併用することができ、余計なデータ通信を低減することができる。このような通信は、ブロックの送信側がICチップ1aであり、且つブロックの受信側が外部端末2である場合も同様である。
【0046】
ここで、拡張情報を含むブロックから最大サイズを超えるデータを取得する方法について、(1)PCBのRFU値を利用する方法と、(2)LENのRFU値を利用する方法とのそれぞれにおいて説明する。
【0047】
(1)PCBのRFU値を利用する方法におけるデータの取得
T=1プロトコルで送受信されるブロックの場合、例えばICチップ1aのCPU10は、先頭フィールドF11におけるPCB中の所定のビット(例えば、ビットb5〜ビットb1)の値(例えば、「00001」)に対応付けられたバイト数(例えば、2バイト)を特定し、当該特定したバイト数分のLENバイト(例えば、「H’0000」〜「H’FFFF」)の値をINF長として上記データを取得する。つまり、この場合、拡張機能が不使用である場合のLEN(1バイト)に加えて当該LENに後続する1バイトも、LENとして特定される。このような構成によれば、拡張されたLENを正確に取得することが可能となる。
【0048】
一方、半二重ブロックプロトコルで送受信されるブロックの場合、例えばICチップ1aのCPU10は、先頭フィールドF21におけるPCB中の所定のビット(例えば、ビットb6)の値(例えば、「1」)に対応付けられたバイト数(例えば、2バイト)を特定し、当該特定したバイト数分のLENバイト(例えば、「H’0000」〜「H’FFFF」)の値をINF長として上記データを取得する。なお、この場合も、PCB中の所定のビットの値とバイト数とを対応付けたテーブルが、例えば、不揮発性メモリ13に予め記憶される。
【0049】
(2)LENのRFU値を利用する方法におけるデータの取得
例えばICチップ1aのCPU10は、所定の値(例えば、255(H’FF))を示すLENバイトに後続するバイトの値に基づいてINF長を特定し、当該特定したINF長の上記データを取得する。例えば、所定の値(例えば、255(H’FF))を示すLENバイトに後続する1バイト(例えば、「H’00」〜「H’FF」)の値に基づいて、当該バイトの値に「H’100」を足した値がINF長として特定される。或いは、例えば、所定の値(例えば、255(H’FF))を示すLENバイトに後続する2バイト(例えば、「H’0000」〜「H’FFFF」)の値がINF長として特定される。或いは、例えば、所定の値(例えば、255(H’FF))を示すLENバイトに後続する1バイトの値で示される実LEN部の値がINF長として特定される。
【0050】
なお、上述したようにデータを取得するアルゴリズムを規定するプログラム(情報処理プログラム)は、例えばROM12または不揮発性メモリ13に予め記憶され、CPU10により実行される。また、このプログラムの実行中に参照されるテーブル(例えば、PCB中の所定のビットの値とバイト数とを対応付けたテーブル)は、例えば不揮発性メモリ13に予め記憶される。
【0051】
また、上述した拡張機能による通信を実施するには、送信側と受信側の双方が拡張機能に対応していることに加え、相手側が拡張機能に対応していることを少なくとも、送信側と受信側のどちらか一方が判断し、拡張機能による通信を開始することになる。例えば、外部端末2は、拡張機能の使用を示す拡張情報を含むブロックを一度送信し、ICチップ1aから正しいブロックが返ってきた場合(つまり、拡張機能の使用を示す拡張情報を先頭フィールドに含むブロックが受信された場合)、相手も拡張機能に対応していると判断し、拡張機能によるブロックの通信を継続する。なお、ICチップ1aから正しいブロックが返ってこない場合、ブロック連鎖機能による通信が行われる。
【0052】
或いは、例えば、外部端末2は、上記ブロックを送信する前に、ICチップ1aへリセットまたは検出コマンドを送信する。これにより、ICチップ1aは、上記ブロックを受信する前に、外部端末2から送信されたリセットまたは検出コマンドを受信する。そして、ICチップ1aは、受信されたリセットまたは検出コマンドに対する応答情報(ATRまたはATQB)であって、拡張機能を使用可能であることを示す情報を含む応答情報を、外部端末2へ返信する。なお、ATRの場合、拡張機能を使用可能であることを示す情報は、ATR中のRFUのビットに設定(例えば、ATRのTC3キャラクタのバイトにおけるビットb2に「1」が設定)される。一方、ATQBの場合、拡張機能を使用可能であることを示す情報は、ATQB中のRFUのビットに設定(例えば、ATQB中で最大フレームサイズを規定するバイトにおけるRFUのビットに「1」が設定)される。そして、外部端末2は、リセットまたは検出コマンドに対する応答情報中に拡張機能を使用可能であることを示す情報が含まれている場合に限り、拡張機能の使用を示す拡張情報を含むブロックをICチップ1aへ送信する。これにより、拡張機能によるブロックの通信が行われる。
【0053】
次に、図4を参照して、外部端末2とICチップ1aとの通信における動作例について説明する。図4(A)は、外部端末2における処理の一例を示すフローチャートである。図4(B)は、ICチップ1aにおける処理の一例を示すフローチャートである。なお、以下に説明する動作例では、T=1プロトコルで送受信されるブロックを例にとり、上述したLENのRFU値を利用する方法を例にとるものとする。また、以下に説明する動作例では、伝送対象となるデータの長さ(サイズ)に比べ、拡張機能により1ブロックで送信可能なデータ長が十分に長く、拡張機能を用いた場合はブロック連鎖が発生しないケースを想定している(なお、拡張機能の使用時にブロック連鎖をしても構わない)。
【0054】
図4(A)に示すように、外部端末2は、ICチップ1aへリセットを送信する(ステップS1)。図4(B)に示すように、ICチップ1aのCPU10は、外部端末2から送信されたリセットを受信すると(ステップS21)、TC3キャラクタにおけるビットb2が「1」になっているATR(つまり、拡張機能を使用可能であることを示す情報を含むATR)を外部端末2へ返信する(ステップS22)。なお、従来のICチップの場合、TC3キャラクタにおけるビットb2が「0」(RFU)になっているATRを外部端末2へ返信することになる。
【0055】
外部端末2は、ICチップ1aから返信されたATRを受信すると(ステップS2)、受信されたATRのTC3キャラクタにおけるビットb2が「1」であるか否かを判定する(ステップS3)。そして、ATRのTC3キャラクタにおけるビットb2が「1」であると判定された場合(ステップS3:YES)、ステップS4へ進む。一方、ATRのTC3キャラクタにおけるビットb2が「1」でないと判定された場合(ステップS3:NO)、ステップS8へ進む。
【0056】
ステップS4では、外部端末2は、送信するべきブロックの先頭フィールドF11におけるLEN(LENバイト)に「H’FF」をセットする。次いで、外部端末2は、送信するべきブロックの情報フィールドF12のデータ(未送信のデータ)のINF長を表す例えば2バイトを、上記セットされた「H’FF」の後ろに追加する(つまり、後続させる)(ステップS5)。こうして、上記拡張機能を使用することを示す拡張情報を含むブロック(連鎖なしブロック)が生成される。次いで、外部端末2は、上記拡張機能を使用することを示す拡張情報を含むブロック(連鎖なしブロック)を、ICチップ1aへ送信する(ステップS6)。次いで、外部端末2は、ブロックの受信処理へ移行する(ステップS7)。なお、ブロックの受信処理は、後述するステップS23以降の処理(ICチップ1aの処理)と同様に行われる。
【0057】
一方、ステップS8では、外部端末2は、未送信のデータのサイズは最大サイズ(例えば、254バイト)以下であるか否かを判定する。未送信のデータのサイズは最大サイズ以下であると判定された場合(ステップS8:YES)、ステップS9へ進む。未送信のデータのサイズは最大サイズ以下でないと判定された場合(ステップS8:NO)、ステップS10へ進む。
【0058】
ステップS9では、外部端末2は、送信するべきブロックの情報フィールドF12のデータ(未送信のデータ)のINF長を、当該ブロックの先頭フィールドF11におけるLEN(LENバイト)にセットし、ステップS6へ移行する。
【0059】
一方、ステップS10では、外部端末2は、送信するべきブロックの先頭フィールドF11におけるPCBの継続ブロック有無ビットb6に「1」をセットし、当該先頭フィールドF11におけるLEN(LENバイト)に「H’FE」をセットする。次いで、外部端末2は、継続ブロック有無ビットb6に「1」が、LENに「H’FE」がそれぞれセットされたブロック(連鎖ありブロック)を、ICチップ1aへ送信する(ステップS11)。そして、外部端末2は、送信したブロックの次のブロックの要求をICチップ1aから受信すると(ステップS12)、ステップS8へ移行する。
【0060】
一方、ICチップ1aは、外部端末2から送信されたブロックを受信すると(ステップS23)、受信されたブロックの先頭フィールドF11におけるLEN(LENバイト)は「H’FF」であるか否かを判定する(ステップS24)。LENは「H’FF」であると判定された場合(ステップS24:YES)、ステップS25へ進む。一方、LENは「H’FF」でないと判定された場合(ステップS24:NO)、ステップS27へ進む。
【0061】
ステップS25では、ICチップ1aは、ステップS24で判定されたLENに後続する2バイトの値に基づいて、受信されたブロックの情報フィールドF12におけるデータのINF長を特定し、当該特定したINF長のデータを当該ブロックから取得する。つまり、ICチップ1aは、LENに後続する2バイトの値を当該データのINF長として当該データを取得する。次いで、外部端末2は、ブロックの送信処理aへ移行する(ステップS26)。なお、このブロックの送信処理aは、上述したステップS4以降の処理(外部端末2の処理)と同様に行われる。
【0062】
一方、ステップS27では、ICチップ1aは、ステップS24で判定されたLENの値を、受信されたブロックの情報フィールドF12におけるデータのINF長として、当該INF長のデータを当該ブロックから取得する。次いで、ICチップ1aは、受信されたブロックの先頭フィールドF11におけるPCBの継続ブロック有無ビットb6を参照して、受信されたブロックが、連鎖ありブロックであるか否かを判定する(ステップS28)。受信されたブロックが、連鎖ありブロックでないと判定された場合(ステップS28:NO)、外部端末2は、ブロックの送信処理bへ移行する(ステップS29)。なお、このブロックの送信処理bは、上述したステップS8以降の処理(外部端末2の処理)と同様に行われる。一方、受信されたブロックが、連鎖ありブロックであると判定された場合(ステップS28:YES)、ステップS30へ進む。ステップS30では、ICチップ1aは、受信されたブロックの次のブロックの要求を、外部端末2へ送信する。そして、ICチップ1aは、外部端末2から送信された次のブロックを受信すると(ステップS31)、ステップS27へ移行する。
【0063】
以上説明したように、上記実施形態によれば、1ブロックで送信可能な最大サイズを超えるデータを送信する場合に当該最大サイズを拡張する拡張機能を使用するか否かを示す拡張情報を先頭フィールドに含むブロックを、外部端末2とICチップ1aとの間で送受信し、当該ブロックの先頭フィールドに含まれる拡張情報が拡張機能の使用を示す場合、当該ブロックから最大サイズを超えるデータを当該ブロックから取得するように構成したので、ブロック連鎖機能による処理を低減し、余計なデータ通信を低減することができ、通信時間を短縮することができる。
【0064】
なお、上記実施形態では、情報処理装置がブロック連鎖機能及び拡張機能を持つケースについて説明したが、情報処理装置が拡張機能を持つがブロック連鎖機能を持たないケースについても本発明は適用可能である。
【符号の説明】
【0065】
1 ICカード
2 外部端末
1a ICチップ
10 CPU
11 RAM
12 ROM
13 不揮発性メモリ
14 インターフェイス部
図1
図2
図3
図4