説明

記憶媒体のプロトコルカスタマイズシステム、記憶媒体、パラメータ生成装置、記憶媒体のプロトコルカスタマイズ方法およびプログラム

【課題】暗号アルゴリズムの脆弱性の発見や、サービスの要件の変化に伴う、ICカードで利用する認証や鍵変換等のプロトコルの大規模な変更を短時間で安全に実現する方法はなかった。
【解決手段】パラメータ生成装置50において、ICカード10に格納するプロトコルを定義したパラメータを生成し、そのパラメータをICカード10内で、新規用パラメータか更新用パラメータかを判別し、新規用パラメータの場合には受信した全パラメータをパラメータ格納部106に格納し、更新用パラメータの場合には受信したパラメータに対応する部分のみをパラメータ格納部106に格納する。プロトコル実行時には、プロトコル実行に必要となるパラメータをパラメータ格納部106から逐次取得し、プロトコルの処理を実施する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、IC(Integrated Circuit)カード等の個人情報の記憶媒体のプロトコルをカスタマイズする技術に関し、さらに詳しくは、ICカード等において、サービス提供時に利用する認証や鍵交換等のプロトコルを短時間で容易に更新する技術に関する。
【背景技術】
【0002】
ICカードを用いて交通乗車券やクレジット決済や銀行キャッシュカード等のサービスを提供する際には、不正な端末や不正なICカードによる不正なサービス享受を防ぐため、端末とICカード間で機器認証を実施している(例えば、非特許文献1参照)。
【0003】
従来は、ICカード発行時に機器認証プロトコル(以降、プロトコルと記す)をICカード内に設定し、ICカード発行後は発行時に設定したプロトコルに従って機器認証を実施していた。プロトコルに何らかの不具合があった場合や、プロトコルで使用している暗号アルゴリズムや鍵の脆弱性が発見された場合や、ICカードで利用するサービスの要件が変化した場合には、ICカードを一度回収し、再度ICカード内のプロトコルコードを書きかえることにより、プロトコルの更新を実現していた。回収作業は、サービス提供者およびユーザに対して多大な時間と手間を必要とし、ICカードのプロトコルの更新は容易には実現できなかった。
【0004】
そこで、ICカード内のアプリケーションの一部を部分的に書き換え可能な技術が知られている。この技術により、従来のようにICカード内のコードやデータを全部書き変えずにプロトコルの更新が実現できるため、更新に必要な時間を短縮し、また、プロトコルで使用する鍵データ等の引継ぎが容易になる(例えば、特許文献1参照)。
【0005】
また、ICカード内にパラメータ読出部とパラメータ管理部とプログラム実行部を搭載しておき、パラメータを変更することによりICカードで実行するプログラムの動作を変更する技術が知られている。この技術により、プログラムの変更が容易になる(例えば、特許文献2参照)。
【0006】
また、ICカード内のアプリケーションに端末からデータを送信する際のデータ送受信回数を減らすためにデータを効率的に結合する技術が知られている。この技術により、プロトコル更新に伴う処理時間を短縮させることが可能となる(例えば、特許文献3参照)。
【非特許文献1】GlobalPlatform Inc., "Card Specification Version 2.2", [online], 2006年3月, GlobalPlatform Inc., p.105, [2008年7月1日検索], インターネット<URL: http://www.globalplatform.org/specificationscard.asp>
【特許文献1】特開2006−293706号公報
【特許文献2】特開2000−348146号公報
【特許文献3】米国特許出願公開第2004/0245331A1号明細書
【発明の開示】
【発明が解決しようとする課題】
【0007】
従来技術では、ICカードのプロトコル変更をアプリケーションの一部書き換えにより実現することが可能であったが、書き換え後も安定してアプリケーションを動作させるためには既に書き込まれているコードとの整合性を細かく管理する必要があった。
また、パラメータを用いることにより、ICカードのプロトコルで使用する鍵の種類や鍵の長さといった小規模なプロトコルの動作変更は可能であったが、アルゴリズムやフローの変更など大規模なプロトコルの動作変更は困難であった。
また、送信するデータを効率的に結合することにより、ICカードのプロトコル変更に必要となる時間を短縮することは可能であったが、送信するデータ量が増加するにつれ、処理時間が増大してしまうという問題があった。
【0008】
本発明は、前記事情に鑑みてなされたものであり、ICカード等の記憶媒体で利用するプロトコルの大規模な更新を短時間で安全に実現することを目的とする。
【課題を解決するための手段】
【0009】
前記目的を達成するため、本発明では、ICカードに搭載するプロトコルを定義したパラメータを専用のサーバ(パラメータ生成装置)で生成し、そのパラメータをICカードに送信する。
【0010】
具体的には、ICカード内に、プロトコル実行を行う機能部(以下、プロトコル実行部という)と、プロトコルを定義したパラメータを格納する機能部(以下、パラメータ格納部という)と、パラメータの種類を解釈する機能部(以下、パラメータ解釈部という)を搭載し、パラメータ生成装置で生成したパラメータをICカードに送信する。パラメータ解釈部は受信したパラメータが新規パラメータか更新パラメータかを判別し、新規の場合には受信した全パラメータを上書き格納し、更新の場合には受信したパラメータを部分的に格納する。プロトコル実行時には、プロトコル実行に必要となるパラメータをパラメータ格納部より取得し、プロトコルを実行する。
【0011】
より具体的には、サービス提供者装置とICカード間のプロトコルを更新したい場合に、パラメータ生成装置においてプロトコルを定義したパラメータを生成し、ICカードに送信する。パラメータ解釈部において受信したパラメータの種類(新規、更新)を判断し、新規の場合には、パラメータ格納部に格納されているパラメータを全て上書きし、更新の場合には、対応するパラメータを検索し、その部分のみ更新する。プロトコル実行時には、プロトコル実行部において、サービス提供者装置から受信したコマンドを判別し、そのコマンドに応じてパラメータ格納部からプロトコル実行に必要となるパラメータ(以下、実行パラメータという)を取得し、実行パラメータを逐次解釈し、実行してゆくことにより、プロトコルを実現する。プロトコルが複数フローに亘る場合であっても同様の処理を繰り返すことにより、複数フローのプロトコルが実現可能となる。
【0012】
このようにプロトコルを実現すれば、従来のように、ICカードのプロトコル変更において、アプリケーションの一部を書き換える必要がないので、既に書き込まれているコードとの整合性を細かく管理する必要もなく、簡易化される。
また、詳細は後記するが、実行パラメータには、そのデータ構造において、使用されるアルゴリズムを定める要素やフローを定める要素が含まれているので、それらの要素を変更、追加または削除するだけでよく、従来では困難であったアルゴリズムやフローの変更など大規模なプロトコルの動作変更(更新等)は簡易化される。
また、従来のように、送信するデータ量が増加しても、前記した実行パラメータの要素のうち変更、追加または削除する要素は変わらないので、プロトコル更新の処理時間は送信するデータ量に影響されない。
【発明の効果】
【0013】
本発明によれば、ICカード等の記憶媒体で利用するプロトコルの大規模な更新を短時間で安全に実現することが可能となる。
【発明を実施するための最良の形態】
【0014】
≪構成≫
本発明の一実施形態について説明する。なお、これにより本発明が限定されるものではない。説明の際には、適宜図面を参照する。
【0015】
図1は、本発明の一実施形態が適用されたICカードのプロトコルカスタマイズシステムの構成図である。
本実施形態のICカードのプロトコルカスタマイズシステムは、図1に例示するように、ICカード10と、ICカードにアクセスする端末20と、ネットワーク30と、ICカード10を用いてサービス提供を行う、サービス提供者装置40〜40(以降、40と示すこともある)と、ICカードに設定するプロトコルを定義したパラメータを生成するパラメータ生成装置50とが互いに接続されて構成されている。
【0016】
ICカード10は、外部からコマンドを受信し、受信したコマンドの内容により処理を行い、処理結果を返信する。該ICカード10は、コマンドを受信し、処理結果を送信するデータ送受信部101と、コマンドを解析するコマンド解析部102と、コマンドに従い処理(サービス)を実行するサービスアプリケーション部103〜103(以降、103と示すこともある)と、該サービスアプリケーション部103〜103で利用するデータを保管しておくデータ保管部104〜104(以降、104と示すこともある)と、前記パラメータ生成装置50で生成されたパラメータを解釈するパラメータ解釈部105と、該パラメータ解釈部105で解釈したパラメータを格納するパラメータ格納部106と、該パラメータ格納部106に格納されているパラメータに従って、プロトコルを実行するプロトコル実行部107と、該プロトコル実行部107で利用する鍵データを保管しておく鍵保管部108と、を含む。
【0017】
なお、本実施形態において、サービスアプリケーション部103およびデータ保管部104の個数は、サービス提供者装置40の個数と一致するものとする。つまり、ICカード10の利用者に提供されるサービスの種類に応じて、サービスアプリケーション部103、データ保管部104およびサービス提供者装置40が複数存在しているものとする。
【0018】
端末20は、前記ICカード10とコマンドの送受信を行うICカードアクセス部201と、前記ネットワーク30とデータ送受信を行うデータ送受信部202と、前記ICカード10に対して送信するコマンドを生成するコマンド生成部203と、を含む。
【0019】
サービス提供者装置40は、前記ネットワーク30とデータ送受信を行う通信部401と、前記ICカード10に対し送信するコマンドを生成するコマンド生成部402と、該コマンドを生成する際に利用する鍵データを保管する鍵保管部403と、前記ICカード10に対しサービスを提供するサービス提供部404と、を含む。
【0020】
パラメータ生成装置50は、前記ネットワーク30とデータ送受信を行う通信部501と、前記ICカード10に対し送信するコマンドを生成するコマンド生成部502と、該コマンドを生成する際に利用する鍵データを保管する鍵保管部503と、前記ICカード10で実行するプロトコルを記述したパラメータを生成するパラメータ生成部504と、を含む。
【0021】
なお、特に説明がない限り、前記したように単に「コマンド」と称する場合は、端末20から送信されるコマンド、サービス提供者装置40から送信されるコマンドおよびパラメータ生成装置50から送信されるコマンドを総称しているものとする。
【0022】
図2はICカード10のハードウェア構成を例示する図である。ICカード10は、入出力装置11と、CPU(Central Processing Unit)12と、耐タンパ記憶装置13と、耐タンパメモリ14と、がバスなどの内部信号線15で接続されて構成されているコンピュータである。ここで、ICカードの形状はテレホンカードのようなカード形状に限定するものではなく、前記の構成要素を含むハードウェアであれば、たとえば、MMC(Multi Media Card)やSD(Secure Digital)カードのようなメモリーカードの形状であってもよい。
【0023】
図3は端末20のハードウェア構成を例示する図である。端末20は、通信装置21と、入出力装置22と、ICカード10を挿入することができ、データを送受信するICカード入出力装置23と、記憶装置24と、CPU25と、メモリ26と、記憶媒体28からデータを読み取る読取装置27と、がバスなどの内部信号線29で連結され、構成されているコンピュータである。
【0024】
図4はサービス提供者装置40のハードウェア構成を例示する図である。サービス提供者装置40は、通信装置41と、入出力装置42と、記憶装置43と、CPU44と、メモリ45と、記憶媒体47からデータを読み取る読取装置46と、がバスなどの内部信号線48で連結され、構成されているコンピュータである。なお、図4に示すハードウェア構成は、パラメータ生成装置50においても同様である。
【0025】
≪処理≫
本実施形態のICカードのプロトコルカスタマイズシステムにおける処理フローについて説明する。以下に述べる処理フローは、各装置の記憶装置(耐タンパ記憶装置も含む。)に格納されたプログラムがメモリ(耐タンパメモリも含む。)にロードされ、各CPU(制御部)により実行されることにより、ICカードのプロトコルカスタマイズシステムを構成する各装置、ICカード上に具現化される各処理部により実行されるものである。また、各プログラムは予め記憶装置に格納されても良いし、他の記憶媒体または通信媒体(ネットワークまたはネットワークを伝搬する搬送波)を介して、必要なときに導入されても良い。
【0026】
図5は、パラメータ生成装置50と端末20とICカード10とサービス提供者装置40との間で実行されるフローの全体を簡易的に示した図である。
【0027】
まず、パラメータ生成装置50と端末20とICカード10の間で、プロトコルの仕様を設定するプロトコルカスタマイズを実施する(S501(S501と表現する。以下同様))。次に、ICカード10と端末20とサービス提供者40との間で、カスタマイズしたプロトコルを実行する(S502)。ここで実行するプロトコルはICカード10とサービス提供者装置40との間の機器認証や鍵交換等を想定している。次に、ICカード10と端末20とサービス提供者装置40との間で、サービスを実行する(S503)。
【0028】
これらの手順を踏むことにより、パラメータ生成装置50とICカード10との間で実施するプロトコルのカスタマイズと、ICカード10とサービス提供者装置40との間で実施するカスタマイズしたプロトコルを用いた認証処理や鍵交換処理等と、サービス提供者装置40によるサービスの実行が可能となる。以下では、ICカード10とパラメータ生成装置50との間で実施するプロトコルをカスタマイズするフローおよび、ICカード10とサービス提供者装置40との間で、そのプロトコルを実行するフローに関して詳細に記載する。なお、ICカード10と端末20との間で実施するプロトコルのカスタマイズや実行に関しても同様に実現が可能である。
以上で、図5のフローに関する説明を終了する。
【0029】
図6は、図5のS501、つまり、パラメータ生成装置50で生成したICカード10に設定するプロトコルを定義したパラメータをICカード10に送信し、ICカード10で使用するプロトコルをカスタマイズする部分を記載したフロー図である。
【0030】
まず、パラメータ生成装置50は、ICカード10に設定するプロトコルを定義したパラメータを生成する(S601)。ここで、パラメータには更新フラグやプロトコルを実行する上で必要な情報(実行パラメータ)が含まれているが、更新を行う場合には、プロトコルを実行する上で必要な情報の一部分のみが含まれている場合もある。パラメータの詳細な構造については図8に記述する。次に、生成したパラメータ(A601)を、端末20に送信する。
【0031】
次に、端末20は、受信したパラメータ(A601)をICカード10内のパラメータ解釈部105に送信する。
【0032】
次に、パラメータ解釈部105は、受信したパラメータ(A601)を解釈する(S602)。パラメータを解釈するときには、主に、受信したパラメータがパラメータ格納部106に格納されているパラメータの一部を更新する更新用パラメータであるか、パラメータ格納部106には格納されてない新規用パラメータであるかが判断される。ここで、受信したパラメータが更新用パラメータであると判断された場合には(S602で「更新用」)、次に、ICカード10内のパラメータ格納部106に対し、実行パラメータを取得するように指示する実行パラメータ取得コマンド(A602)を送信する。
【0033】
次に、パラメータ格納部106は、受信した実行パラメータ取得コマンド(A602)により、格納されていた実行パラメータを取得する(S603)。ここで、実行パラメータには、データや関数等のプロトコルを実行する上で必要な情報が含まれている。実行パラメータの詳細な構造については図9に記述する。次に、取得した実行パラメータ(A603)をパラメータ解釈部105に送信する。
【0034】
次に、パラメータ解釈部105は、実行パラメータ(A603)を更新する(S604)。ここで、実行パラメータの更新は以下の手順で行う。まず、パラメータ格納部106から受信した実行パラメータ(A603)の中で、端末20から受信したパラメータ(A601)の中に記載されているブロック(図9参照)とID(Identification)に該当する領域を検索する。次に、検索した領域のサイズを取得する。取得したサイズとパラメータ(A601)に設定されている実行パラメータのサイズを比較し、パラメータ(A601)に設定されているサイズが実行パラメータ(A603)で定義されているサイズよりも小さい場合には、パラメータ(A601)で指定されたブロックとIDの領域に上書きする。パラメータ(A601)に設定されているサイズが実行パラメータ(A603)から取得したサイズよりも大きい場合には、新たな領域にパラメータを書き込み、実行パラメータ(A603)に存在していた領域のIDを削除する。この手順により、プロトコルの更新時に実行パラメータの構造を破壊することを防止することが可能となる。次に、S604により、更新された実行パラメータ(A604)をパラメータ格納部106に送信する。
【0035】
次に、パラメータ格納部106は、受信した更新された実行パラメータ(A604)を格納する(S605)。次に、更新された実行パラメータ(A604)の格納処理が完了した旨を示すレスポンス(A605)をパラメータ解釈部105に送信する。
【0036】
一方、S602において、受信したパラメータが更新用パラメータではなく、新規用パラメータであると判断された場合には(S602で「新規用」)、次に、ICカード10内のパラメータ格納部106に対し、パラメータ(A601)に含まれている実行パラメータ(A606)をパラメータ格納部106に送信する。
【0037】
次に、パラメータ格納部106は、受信した実行パラメータ(A606)を格納する(S606)。ここで、実行パラメータの格納は、パラメータ格納部106に既に格納されている実行パラメータを上書きすることにより実現する。次に、実行パラメータ(A606)の格納処理が完了した旨を示すレスポンス(A607)をパラメータ解釈部105に送信する。
【0038】
次に、パラメータ解釈部105は、受信したレスポンス(A605、A607)を、端末20を経由してパラメータ生成装置50に送信する。
【0039】
本フローでは、パラメータ生成装置50と端末20の間、端末20とICカード10の間で特に認証処理、署名検証処理、データ暗号処理などの処理を記載していないが、より安全にするために、鍵保管部503や鍵保管部204や鍵保管部108に格納されている鍵データを用いて、前述の処理を実施しても良い。これらの処理は、周知の方法で達成できる。
以上で、図6のフローに関する説明を終了する。
【0040】
図7は、図5のS502、つまり、サービス提供者装置40とICカード10との間でカスタマイズしたプロトコルを実行する部分を記載したフロー図である。
【0041】
まず、サービス提供者装置40は、複数あるうちの一つのプロトコルを実行するように指示するプロトコルコマンド1を生成する(S701)。ここで、より安全におこなうため、鍵保管部403に格納されている鍵データを使用してもよい。次に、プロトコルコマンド1(A701)を端末20に送信する。
【0042】
次に、端末20は、受信したプロトコルコマンド1(A701)をICカード10内のサービスアプリケーション部103に送信する。
【0043】
次に、サービスアプリケーション部103は、受信したプロトコルコマンド1(A701)をプロトコル実行部107に送信する。
【0044】
次に、プロトコル実行部107は、受信したプロトコルコマンド1(A701)に対し、プロトコルを処理するために必要となる実行パラメータ読込コマンド1(A70211)をパラメータ格納部106に送信する。
【0045】
次に、パラメータ格納部106は、受信した実行パラメータ読込コマンド1(A70211)を用いて、実行パラメータ1を取得する(S70211)。次に、取得した実行パラメータ1(A70311)をプロトコル実行部107に送信する。
【0046】
次に、プロトコル実行部107は、受信した実行パラメータ1(A70311)を解析し、実行パラメータ1で参照されている更なる実行パラメータを取得するために、実行パラメータ読込コマンド2(A70212)をパラメータ格納部106に送信する。
【0047】
次に、パラメータ格納部106は、受信した実行パラメータ読込コマンド2を用いて、実行パラメータ2を取得する(S70212)。次に、取得した実行パラメータ2(A70312)をプロトコル実行部107に送信する。
【0048】
上記の手順を繰り返し、プロトコル実行部107においてプロトコルコマンド1を処理するために必要な実行パラメータ(A70311〜A7031n)を全て取得する。
【0049】
次に、プロトコル実行部107は、受信した実行パラメータ(A70311〜A7031n)を用いてプロトコル1を実行する(S703)。ここで、より安全におこなうため、鍵保管部108に格納されている鍵データを使用してもよい。次に、実行した結果を示すプロトコルレスポンス1(A704)をサービスアプリケーション部103に送信する。
【0050】
次に、サービスアプリケーション部103は、受信したプロトコルレスポンス1(A704)を、端末20を経由してサービス提供者装置40に送信する。
【0051】
上記のフローは、サービス提供者装置40とICカード10との間で1回のプロトコルフローを実施する場合のフローである。複数のプロトコルフローを実行する場合には、上記フローを繰り返し実行する(プロトコルコマンド1〜n(S701〜S701)に対応するプロトコル1〜nの実行(S703〜S703)をする)ことにより実現することが可能である。この繰り返しのプロトコルの実行は、同期処理でも非同期処理でも良い。
以上で、図7のフローに関する説明を終了する。
【0052】
≪データ構造≫
図8は、図6のS601で生成するパラメータの構造を示す図である。
このパラメータ(A801:図6のパラメータ(A601))は、以降に続く実行パラメータが更新対象か否か(つまり、新規対象)を示す更新フラグ(A802)と、プロトコルの動作順序や使用アルゴリズムを記述した実行パラメータ(A803)の組合せで構成される。パラメータ解釈部105による解釈では、主に、更新フラグ(A802)の値が参照される。ここで、パラメータ(A801)の要素の種類、順序はこれに限定されるものではなく、上記構成要素を含むものであればよい。
【0053】
図9は、図8の実行パラメータ(A803)の構造を詳細に示す図である。
この実行パラメータ(A901:図8の実行パラメータ(A803))は、プロトコルで取り扱うデータを定義したデータブロック(A902)と、プロトコルで実行する関数のインスタンス(実体)を定義した関数インスタンスブロック(A903)と、プロトコルで実行する関数を定義した関数ブロック(A904)と、プロトコルで実行するコマンドを定義したコマンドブロック(A905)から構成される。実行パラメータには上記全ての要素が含まれていてもよいし、ある一つの要素だけが含まれていてもよい。また、実行パラメータ(A901)の要素の種類、順序はこれに限定されるものではなく、上記構成要素を含むものであればよい。
【0054】
なお、データブロック(A902)で定義されるデータは、主に、当該プロトコルを実行することにより提供されるサービスを実行するときに利用されるデータを定める。また、関数ブロック(A904)で定義される関数および関数インスタンスブロック(A903)で定義されるインスタンス(関数インスタンス)は、主に、当該プロトコルを実行することにより提供されるサービスを実行するときに使用されるアルゴリズムを定める。また、コマンドブロック(A905)で定義されるコマンドは、主に、当該プロトコルを実行することにより提供されるサービスを当該コマンドに従って実行するときの手順、つまりフローを定める。
【0055】
図10は、図9のデータブロック(A902)の構造を詳細に示す図である。
このデータブロック(A1001:図9のデータブロック(A902))は、データを識別するために利用するID(A1002)と、データのサイズ(A1003)と、データの種類(A1004)と、データが含まれるグループを識別するグループ識別子(A1005)と、データの初期値(A1006)と、データの取得元(A1007)と、データの格納先(A1008)から構成される。ここで、データの種類(A1004)とは、例えば、プロトコル実行中に使用する鍵データやエンティティを識別するIDやカウンタ等の種類を示す情報である。グループ識別子(A1005)とは、例えば、公開鍵暗号方式のような複数のデータを一つの鍵として取り扱う場合にそのデータを管理するために使用する識別子である。また、データブロック(A1001)の要素の種類、順序はこれに限定されるものではなく、上記構成要素を含むものであればよい。さらに、データブロックは、上記構成を複数含んでも構わない。その場合、A1002〜A1008の構成が複数配置され(A1002〜A1008等)、一つのデータブロックを形成する。
【0056】
図11は、図9の関数インスタンスブロック(A903)の構造を詳細に示す図である。
この関数インスタンスブロック(A1101:図9の関数インスタンスブロック(A903))は、関数インスタンスを識別するために利用するID(A1102)と、関数インスタンスの出力サイズ(A1103)と、呼び出す関数を識別する関数ID(A1104)から構成される。ここで、関数インスタンスブロック(A1101)の要素の種類、順序はこれに限定されるものではなく、上記構成要素を含むものであればよい。また、関数インスタンスブロック(A1101)は、上記構成を複数含んでも構わない。その場合、A1102〜A1104の構成が複数配置され(A1102〜A1104等)、一つの関数インスタンスブロックを形成する。
【0057】
図12は、図9の関数ブロック(A904)の構造を詳細に示す図である。
この関数ブロック(A1201:図9の関数ブロック(A904))は、関数を識別するために利用するID(A1202)と、関数の種類(A1203)と、関数で利用するデータを識別するデータID(A120411)〜データID(A12041n)と、関数内で呼び出す関数インスタンスを識別する関数インスタンスID(A120511)〜関数インスタンスID(A12051n)から構成される。ここで、関数の種類(A1203)とは、例えば、サービスを実行するときに使用されるアルゴリズムをいう。また、データIDと関数インスタンスIDは両方含まれる必要はなく、プロトコルによってはどちらかのみで成り立つ場合もある。関数ブロック(A1201)の要素の種類、順序はこれに限定されるものではなく、上記構成要素を含むものであれば順序は問わない。また、関数ブロック(A1201)は、上記構成要素を複数含んでも構わない。その場合、A1202〜A12051nの構成が複数配置され(A1202〜A1205nn等)、一つの関数ブロックを形成する。
プロトコルのカスタマイズに伴い、使用されるアルゴリズムを変更することになったときは、変更対象となる関数の種類(A1203)(k=1、2、・・・n)を変更したり、関数ブロックの1レコード(A1201〜A1205kn)を追加または削除をするだけでよく、他の変更は必要としない。
【0058】
図13は、図9のコマンドブロック(A905)の構造を詳細に示す図である。
このコマンドブロック(A1301:図9のコマンドブロック(A905))は、プロトコルで実行するコマンドを識別するために利用するID(A1302)と、サービス提供者装置40から受信され、当該プロトコルを実行するように指示するプロトコルコマンドを識別する受信コマンドID(A1303)と、プロトコルで処理する順番を示すコマンド順(A1304)と、コマンドで処理するデータ群(処理データ〜処理データ(A130511〜A13051n))から構成される。処理データの詳細な構成については以降の図14に示す。ここで、コマンドブロック(A1301)の要素の種類、順序はこれに限定されるものではなく、上記構成要素を含むものであれば順序は問わない。また、コマンドブロック(A1301)は、上記構成要素を複数含んでも構わない。その場合、処理データ〜処理データ(A1302〜A13051n)の構成が複数配置され(処理データ〜処理データ(A1305〜A1305nn))、一つのコマンドブロックを形成する。
プロトコルのカスタマイズに伴い、サービスを実行するときのフローを変更することになったときは、変更対象となるコマンド順(A1304)(k=1、2、・・・n)を変更したり、コマンドブロックの1レコード(A1301〜A1305kn)の追加または削除をするだけでよく、他の変更は必要としない。
【0059】
図14は、図13の処理データ(A130511〜A1305nn)の構造を詳細に示す図である。
この処理データ(A1401:図13の処理データ〜処理データ(A130511〜A1305nn))は、処理するデータの構造を示す送受信データ構造(1402)と、コマンドで実行する関数インスタンスを識別するID群(関数インスタンスID〜関数インスタンスID(A1403〜A1403))から構成される。ここで、送受信データ構造には、データID群〜データID群(A1404〜A1404)が記述されており、送信データや受信データの構造を把握するために利用する。処理データ(A1401)の中には、データの送受信を行わない関数も記述され、その場合、処理データ(A1401)内に送受信データ構造は存在しない。また、処理データの要素の種類、順序はこれに限定されるものではなく、上記構成要素を含むものであれば順序は問わない。
【0060】
図15は、図7のS701で生成するプロトコルコマンドの構造を示す図である。
このプロトコルコマンド(A1501:図7のプロトコルコマンド(A701))は、プロトコル実行部107で実行するプロトコルを識別するために、当該プロトコルを実行するように指示するプロトコルコマンドを識別する受信コマンドID(A1502)と、プロトコル実行に必要となるデータ(A1503)から構成される。ここで、プロトコルコマンドの要素の種類、順序はこれに限定されるものではなく、上記構成要素を含むものであれば順序は問わない。
【0061】
≪まとめ≫
本実施形態によれば、これらの手順を踏んだり、前記データ構造を備えることにより、ICカードで利用するプロトコルの大規模な更新を短時間で安全に(サービスの実行に支障をきたすことなく)実現することが可能となる。
従来は、プロトコルのカスタマイズはサービスを実行するアプリケーション(本実施形態のサービスアプリケーション部40)が行っていたため、プロトコルのカスタマイズだけでなく、所定の整合性をとるためにアプリケーションの変更も必要とし、煩雑であった。しかし、本発明のように、プロトコルの実行に関する専用の機能部(パラメータ解釈部105、パラメータ格納部106、プロトコル実行部107)を備えたことにより、プロトコルのカスタマイズに伴い、既に示した実行パラメータ(必要に応じてプロトコルコマンド)の要素のうち、変更の必要な要素のみを変更するだけで済み、他の変更を必要とせずに済む。
【0062】
この発明は、その簡易さのため、銀行のキャッシュカード等といった、プロトコルのカスタマイズを行う機会の少ない個人情報の記憶媒体に対して特に有効である。例えば、利用者が銀行のATM(端末)から金銭をいくらか引き出すため、あるプロトコルが実現されているキャッシュカードをそのATMのカード挿し込み口に入れたとき、利用者は特に意識することなく、かつ、あまり待たせることなく短時間でプロトコルのカスタマイズを、出金と同時に実行することができる。
【0063】
≪その他≫
なお、本発明は、上記の実施形態に限定されるものではなく、その要旨の範囲内で様々な変形が可能である。
【0064】
たとえば、ICカード10に端末20の機能が含まれ、ICカード単体でネットワーク30と接続が可能な場合や、サービス提供者装置40の代わりに端末20がICカード10とプロトコルを実行する場合などである。
該実施形態の場合においてもICカード10において行う処理に変化はない。
【0065】
その他、ハードウェア、ソフトウェア、各フローチャートなどの具体的な構成について、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【0066】
【図1】本発明の一実施形態が適用されたICカードのプロトコルカスタマイズシステムの構成を説明するための図である。
【図2】図1に示すICカードのハードウェア構成を示す図である。
【図3】図1に示す端末のハードウェア構成を示す図である。
【図4】図1に示すサービス提供者装置のハードウェア構成を示す図である。
【図5】本実施形態の前提である、パラメータ生成装置50と端末20とICカード10とサービス提供者装置40との間で実行されるフローの全体を簡易的に示した図である。
【図6】本実施形態が適用されたICカードのプロトコルカスタマイズ時に実施するフローを例示する図である。
【図7】本の実施形態が適用されたICカードのプロトコルカスタマイズ後に実施するフローのうち、プロトコルの実行処理に関するフローを例示する図である。
【図8】本実施形態で利用するパラメータの構造を例示する図である。
【図9】本実施形態で利用する実行パラメータの構造を例示する図である。
【図10】本実施形態で利用する実行パラメータ内のデータブロックの構造を例示する図である。
【図11】本実施形態で利用する実行パラメータ内の関数インスタンスブロックの構造を例示する図である。
【図12】本実施形態で利用する実行パラメータ内の関数ブロックの構造を例示する図である。
【図13】本実施形態で利用する実行パラメータ内のコマンドブロックの構造を例示する図である。
【図14】本実施形態で利用する実行パラメータ内のコマンドブロックに含まれる処理データの構造を例示する図である。
【図15】本実施形態で利用するプロトコルコマンドの構造を例示する図である。
【符号の説明】
【0067】
10:ICカード(記憶媒体)
11:入出力装置
12:CPU
13:耐タンパ記憶装置
14:耐タンパメモリ
15:内部通信線
20:端末
21:通信装置
22:入出力装置
23:ICカード入出力装置
24:記憶装置
25:CPU
26:メモリ
27:読取装置
28:記憶媒体
29:内部信号線
30:ネットワーク
40〜40:サービス提供者装置
41:通信装置
42:入出力装置
43:記憶装置
44:CPU
45:メモリ
46:読取装置
47:記憶媒体
48:内部信号線
101:データ送受信部(記憶媒体用データ送受信部)
102:コマンド解析部
103〜103:サービスアプリケーション部
104〜104:データ保管部
105:パラメータ解釈部
106:パラメータ格納部
107:プロトコル実行部
108:鍵保管部(記憶媒体用鍵保管部)
201:ICカードアクセス部(記憶媒体アクセス部)
202:データ送受信部(端末用データ送受信部)
203:コマンド生成部(端末用コマンド生成部)
401:通信部(サービス提供者装置用通信部)
402:コマンド生成部(サービス提供者装置用コマンド生成部)
403:鍵保管部(サービス提供者装置用鍵保管部)
404:サービス提供部
501:通信部(パラメータ生成装置用通信部)
502:コマンド生成部(パラメータ生成装置用コマンド生成部)
503:鍵保管部(パラメータ生成装置用鍵保管部)
504:パラメータ生成部
A601:パラメータ
A602:実行パラメータ取得コマンド
A603:実行パラメータ
A604:更新された実行パラメータ
A605:レスポンス
A606:実行パラメータ
A607:レスポンス
A701〜A701:プロトコルコマンド1〜プロトコルコマンドn
A70211〜A702nn:実行パラメータ読込コマンド1〜実行パラメータ読込コマンドn
A70311〜A703nn:実行パラメータ1〜実行パラメータn
A704〜A704:プロトコルレスポンス1〜プロトコルレスポンスn
A801:パラメータ
A802:更新フラグ
A803:実行パラメータ
A901:実行パラメータ
A902:データブロック
A903:関数インスタンスブロック
A904:関数ブロック
A905:コマンドブロック
A1001:データブロック
A1002〜A1002:ID
A1003〜A1003:サイズ
A1004〜A1004:種類
A1005〜A1005:グループ識別子
A1006〜A1006:初期値
A1007〜A1007:取得元
A1008〜A1008:格納先
A1101:関数インスタンスブロック
A1102〜A1102:ID
A1103〜A1103:出力サイズ
A1104〜A1104:関数ID
A1201:関数ブロック
A1202〜A1202:ID
A1203〜A1203:種類
A120411〜A1204nn:データID〜データID
A120511〜A1205nn:関数インスタンスID〜関数インスタンスID
A1301:コマンドブロック
A1302〜A1302:ID
A1303〜A1303:受信コマンドID
A1304〜A1304:コマンド順
A130511〜A1305nn:処理データ〜処理データ
A1401:処理データ
A1402:送受信データ構造
A1403〜A1403:関数インスタンスID〜関数インスタンスID
A1404〜A1404:データID〜データID
A1501:プロトコルコマンド
A1502:受信コマンドID
A1503:データ


【特許請求の範囲】
【請求項1】
記憶媒体のプロトコルカスタマイズシステムであって、
前記記憶媒体と、該記憶媒体を挿入して利用する端末と、該端末が接続するネットワークと接続し、サービスを提供するサービス提供者装置と、前記ネットワークと接続し、前記記憶媒体に格納するプロトコルを定義したパラメータを生成するパラメータ生成装置とを備え、
前記記憶媒体は、
コマンドを送受信する記憶媒体用データ送受信部と、コマンドを解析するコマンド解析部と、コマンドに従い処理を実行するサービスアプリケーション部と、該サービスアプリケーション部で利用するデータを保管するデータ保管部と、前記パラメータ生成装置から受信したパラメータを解釈するパラメータ解釈部と、前記パラメータを格納するパラメータ格納部と、該パラメータ格納部に格納されているパラメータに従って、前記サービス提供者装置と前記記憶媒体間で行うプロトコルを実行するプロトコル実行部と、該プロトコル実行部で利用する鍵データを保管する記憶媒体用鍵保管部と、
を備え、
前記端末は、
前記記憶媒体とアクセスする記憶媒体アクセス部と、前記ネットワークに対しデータを送受信する端末用データ送受信部と、前記記憶媒体に対して送信するコマンドを生成する端末用コマンド生成部と、
を備え、
前記サービス提供者装置は、
データを送受信するサービス提供者装置用通信部と、前記記憶媒体に対して送信するコマンドを生成するサービス提供者装置用コマンド生成部と、前記コマンドを生成するために使用する鍵データを保管するサービス提供者装置用鍵保管部と、サービスを提供するサービス提供部と、
を備え、
前記パラメータ生成装置は、
データを送受信するパラメータ生成装置用通信部と、前記記憶媒体に対して送信するコマンドを生成するパラメータ生成装置用コマンド生成部と、前記コマンドを生成するために使用する鍵データを保管するパラメータ生成装置用鍵保管部と、前記記憶媒体に格納するプロトコルを定義したパラメータを生成するパラメータ生成部と、
を備える
ことを特徴とする記憶媒体のプロトコルカスタマイズシステム。
【請求項2】
前記記憶媒体は、
複数の前記サービスアプリケーション部と、該複数のサービスアプリケーション部で利用するデータを保管する、複数の前記データ保管部と、
を備え、
前記サービス提供者装置は、
前記複数のサービスアプリケーション部の数に応じて複数存在する
ことを特徴とする請求項1に記載の記憶媒体のプロトコルカスタマイズシステム。
【請求項3】
前記パラメータ生成装置は、前記記憶媒体に格納するプロトコルを定義したパラメータを生成し、前記記憶媒体内のパラメータ解釈部に送信し、該パラメータ解釈部において前記パラメータの解釈を行い、
前記パラメータが更新用であると判断された場合には、前記パラメータ格納部に格納されているプロトコルを実行するために必要な実行パラメータのうち、更新対象となる実行パラメータを判別し、該実行パラメータのみを更新し、
前記パラメータが新規用であると判断された場合には、前記パラメータ格納部に格納されている実行パラメータを全て上書きする
ことを特徴とする請求項1または2に記載の記憶媒体のプロトコルカスタマイズシステム。
【請求項4】
前記実行パラメータを更新する場合に、前記パラメータ解釈部は、前記パラメータ生成装置から受信したパラメータに記載されている識別情報に該当する領域を前記パラメータ格納部から受信した実行パラメータの中から検索し、前記検索した該領域のサイズが前記パラメータのサイズよりも大きければ該領域に前記パラメータを上書きし、前記検索した該領域のサイズがパラメータのサイズよりも小さければ、新たな領域に前記パラメータを書き込み、該領域に設定されている識別情報を削除する
ことを特徴とする請求項3に記載の記憶媒体のプロトコルカスタマイズシステム。
【請求項5】
前記サービス提供者装置は、プロトコルを開始するために必要となるプロトコルコマンドを生成し、前記記憶媒体の前記プロトコル実行部に送信し、該プロトコル実行部は、前記プロトコルコマンドを基に前記パラメータ格納部から必要となる実行パラメータを取得し、該実行パラメータを用いてプロトコルを実行し、前記サービス提供者装置に処理結果を送信する
ことを特徴とする請求項1ないし3のいずれか一に記載の記憶媒体のプロトコルカスタマイズシステム。
【請求項6】
前記処理手順を複数回繰り返すことによって、フローが複数存在するプロトコルを実現する
ことを特徴とする請求項5に記載の記憶媒体のプロトコルカスタマイズシステム。
【請求項7】
前記パラメータは、新規パラメータか更新パラメータかを示す更新フラグとプロトコルを実行する上で必要となる実行パラメータから構成される
ことを特徴とする請求項3ないし6のいずれか一に記載の記憶媒体のプロトコルカスタマイズシステム。
【請求項8】
前記実行パラメータは、プロトコルで取り扱うデータを定義するデータブロックと、プロトコルで実行する関数の実体を定義する関数インスタンスブロックと、プロトコルで実行する関数を定義する関数ブロックと、プロトコルで利用するコマンドを定義するコマンドブロックから構成される
ことを特徴とする請求項3ないし7のいずれか一に記載の記憶媒体のプロトコルカスタマイズシステム。
【請求項9】
前記データブロックは、プロトコルで取り扱うデータを識別するIDと、該データのサイズと、該データの種類と、該データが含まれるグループを識別する識別子と、該データの初期値と、該データの取得元と、該データの格納先から構成される
ことを特徴とする請求項8に記載の記憶媒体のプロトコルカスタマイズシステム。
【請求項10】
前記関数インスタンスブロックは、プロトコルで実行する関数インスタンスを識別するIDと、該関数インスタンス実行後に出力されるデータのサイズと、該関数インスタンスで呼び出す関数のIDから構成される
ことを特徴とする請求項8に記載の記憶媒体のプロトコルカスタマイズシステム。
【請求項11】
前記関数ブロックは、前記関数インスタンスから参照される関数を識別するIDと、該関数の種類と、該関数で取り扱う前記データのIDと該関数内で呼び出す前記関数インスタンスのIDから構成される
ことを特徴とする請求項8に記載の記憶媒体のプロトコルカスタマイズシステム。
【請求項12】
前記関数で取り扱う前記データのIDと前記関数インスタンスのIDが複数存在する
ことを特徴とする請求項11に記載の記憶媒体のプロトコルカスタマイズシステム。
【請求項13】
前記コマンドブロックは、プロトコルで利用するコマンドを識別するIDと、前記サービス提供者装置から受信され、該プロトコルを実行するように指示する前記プロトコルコマンドを識別する受信コマンドIDと、前記コマンドの順序を示すコマンド順と、該コマンドで処理する処理データから構成される
ことを特徴とする請求項8に記載の記憶媒体のプロトコルカスタマイズシステム。
【請求項14】
前記処理データは、前記コマンドで取り扱うデータの構造を示す送受信データ構造と、前記関数インスタンスのIDから構成される
ことを特徴とする請求項13に記載の記憶媒体のプロトコルカスタマイズシステム。
【請求項15】
前記データブロックや前記関数インスタンスブロックや前記関数ブロックや前記コマンドブロックには、これらの構成要素についてその組合せが複数存在する
ことを特徴とする請求項9ないし請求項14のいずれか一に記載の記憶媒体のプロトコルカスタマイズシステム。
【請求項16】
サービスを提供するサービス提供装置と通信可能に接続される端末と接続し、前記サービスを実行するときに利用されるデータを保管し、外部から受信したコマンドに従って前記サービスを実行する記憶媒体であって、
前記サービスを実行するために前記記憶媒体に設定されるプロトコルを定義するパラメータを解釈するパラメータ解釈部と、
前記パラメータを格納するパラメータ格納部と、
前記パラメータ格納部に格納されたパラメータに従ってプロトコルを実行するプロトコル実行部と、
を備える
ことを特徴とする記憶媒体。
【請求項17】
サービスを提供するサービス提供装置、および前記サービスを実行するときに利用されるデータを保管し、外部から受信したコマンドに従って前記サービスを実行する記憶媒体と接続される端末、と通信可能に接続され、前記サービスを実行するために前記記憶媒体に設定されるプロトコルを定義するパラメータを生成するパラメータ生成装置であって、
前記パラメータは、
当該パラメータが前記記憶媒体に格納されたパラメータを更新するものであるか否かを示す更新フラグと、
前記プロトコルを実行することにより提供されるサービスに利用されるデータ、当該サービスを実行するときに使用されるアルゴリズムおよび当該サービスを当該コマンドに従って実行するときの手順を定めた実行パラメータと、
を含む
ことを特徴とするパラメータ生成装置。
【請求項18】
サービスを提供するサービス提供装置と通信可能に接続される端末と接続し、前記サービスを実行するときに利用されるデータを保管し、外部から受信したコマンドに従って前記サービスを実行する記憶媒体における記憶媒体のプロトコルカスタマイズ方法であって、
前記記憶媒体は、前記サービスを実行するために前記記憶媒体に設定されるプロトコルを定義するパラメータを格納しており、
前記記憶媒体の制御部において、
外部から受信されたパラメータが、前記格納されたパラメータを更新する更新用パラメータであるか否かを解釈するステップと、
前記更新用パラメータである場合には、前記格納されたパラメータに含まれる、当該プロトコルを実行するのに必要な情報を定めた実行パラメータにおいて更新対象となる情報を判別し、前記更新用パラメータを用いて前記情報を更新するステップと、
を実行する
ことを特徴とする記憶媒体のプロトコルカスタマイズ方法。
【請求項19】
サービスを提供するサービス提供装置と通信可能に接続される端末と接続し、前記サービスを実行するときに利用されるデータを保管し、外部から受信したコマンドに従って前記サービスを実行する記憶媒体における記憶媒体のプロトコルカスタマイズ方法を実行させるプログラムであって、
前記記憶媒体は、前記サービスを実行するために前記記憶媒体に設定されるプロトコルを定義するパラメータを格納しており、
前記記憶媒体の制御部に、
外部から受信されたパラメータが、前記格納されたパラメータを更新する更新用パラメータであるか否かを解釈する処理と、
前記更新用パラメータである場合には、前記格納されたパラメータに含まれる、当該プロトコルを実行するのに必要な情報を定めた実行パラメータにおいて更新対象となる情報を判別し、前記更新用パラメータを用いて前記情報を更新する処理と、
を実行させる
ことを特徴とするプログラム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2010−44602(P2010−44602A)
【公開日】平成22年2月25日(2010.2.25)
【国際特許分類】
【出願番号】特願2008−208360(P2008−208360)
【出願日】平成20年8月13日(2008.8.13)
【国等の委託研究の成果に係る記載事項】(出願人による申告)国等の委託研究の成果に係る特許出願(平成19年度 独立行政法人情報通信研究機構 「ユビキタスネットワークにおける環境に応じたセキュリティプロトコルの自動生成・カスタマイズ技術に関する研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】