(57)【特許請求の範囲】
【請求項１】
外部装置からデータを受信する受信手段と、
前記受信手段により受信された、電子取引の内容を示す複数種類のデータによって構成される取引データを第１のメモリ領域に格納する第１の格納手段と、
当該ＩＣカードに記憶された情報の正当性を確認するための認証処理に用いられる、電子取引の履歴を示す履歴データの生成を指示するコマンドが前記受信手段により受信されると、前記第１のメモリ領域に格納された取引データのうち、一種類又は複数種類のデータを読み出し、読み出したデータと、当該ＩＣカード内に予め格納しておいたデータとを用いて演算処理を行い、前記電子取引の履歴データを生成する演算手段と、
前記演算手段により生成された履歴データを第２のメモリ領域に格納する第２の格納手段と、
当該ＩＣカードに記憶された情報の正当性を確認するための認証データの読み出しを指示するコマンドが前記受信手段により受信されると、前記第２のメモリ領域に格納された履歴データを読み出し、当該履歴データを前記外部装置へ送信する送信手段と
を備えたことを特徴とするＩＣカード。
【請求項２】
前記第２の格納手段は、前記演算手段により生成された履歴データによって前記第２のメモリ領域が満たされている場合は、前記履歴データを前記第２のメモリ領域における先頭位置から順次上書きしていくことを特徴とする請求項１に記載のＩＣカード。
【請求項３】
前記演算手段は、当該ＩＣカードに記憶された情報の正当性を確認するための認証処理に用いられる、電子取引の履歴を示す履歴データの生成を指示するコマンドが前記受信手段により受信されると、前記第１のメモリ領域に格納された取引データのうち、一種類又は複数種類のデータを読み出し、読み出したデータと、当該ＩＣカード内に予め格納しておいたデータとを用いて、減算、圧縮、暗号化のいずれか一つ以上の演算を行い、前記電子取引の履歴データを生成することを特徴とする請求項１に記載のＩＣカード。
【請求項４】
前記送信手段は、当該ＩＣカードに記憶された情報の正当性を確認するための認証データの読み出しを指示するコマンドが前記受信手段により受信されると、最も新しく前記第２のメモリ領域に格納された履歴情報から順次読み出して前記外部装置へ送信することを特徴とする請求項１に記載のＩＣカード。
【請求項５】
前記送信手段は、当該ＩＣカードに記憶された情報の正当性を確認するための認証データの読み出しを指示するコマンドが前記受信手段により受信されると、最も古く前記第２のメモリ領域に格納された履歴情報から順次読み出して前記外部装置へ送信することを特徴とする請求項１に記載のＩＣカード。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電子現金を取り扱うシステムなどに好適なＩＣカードに関し、特に、取引の履歴を示すデータなどからなるＬＯＧデータを処理するのに好適なＩＣカードに関する。
【０００２】
【従来の技術】
従来のＩＣカードとしては、硬貨または紙幣としての機能すなわち電子現金としての機能をもつＩＣカードがある。このような電子現金システムでは、高いセキュリティ性が要求される。そこで、電子現金システムでＩＣカードを使用する場合は、取引についての正当性を確認するために、その取引の履歴データをＩＣカードに格納し、認証する。ここで、取引についての履歴データをＬＯＧデータと呼ぶ。
【０００３】
また、ＬＯＧデータをＩＣカードに格納するときは、ＩＣカードシステム本体（上位アプリケーション）でその格納するデータをＩＣカードに１レコード毎に送信する。そして、従来のＩＣカードでは、１レコード毎にそのＬＯＧデータをメモリに格納していた。なお、格納するレコード毎に認証用データを付加する場合もある。この場合は、レコード単位に認証用データであるＴＡＣ（Transaction Aurhentcation Code）を生成して、そのＴＡＣをそれぞれのレコードに付加してからメモリに格納していた。
【０００４】
【発明が解決しようとする課題】
しかしながら従来のＩＣカードにおいては、各取引の毎に、金額、コインＩＤ（コインの識別番号）、取引時間、取引場所などからなる取引データを上位アプリケーションからそのＩＣカードへ送信し、それからＩＣカード内の記憶手段に格納しているので、通信速度の制限などもあって各取引毎に多大な処理時間を要するという問題があった。ここで、通信速度の制限とは、上位アプリケーションとＩＣカード間における通信が一般にシリアル通信であることなどより、その通信速度が遅くなってしまうものである。
【０００５】
また、従来のＩＣカードにおいては、上位アプリケーションからＩＣカードに取引データを送信するので、その取引データが偽造または改竄される可能性があり、セキュリティ的にも問題があった。
【０００６】
本発明は、このような背景の下になされたものであり、各種の取引データについての処理時間が短く、セキュリティ性の高いＩＣカードを提供することを目的とする。
【０００７】
【課題を解決するための手段】
上述した課題を解決するために、請求項１記載の発明は、外部装置からデータを受信する受信手段と、前記受信手段により受信された、電子取引の内容を示す複数種類のデータによって構成される取引データを第１のメモリ領域に格納する第１の格納手段と、当該ＩＣカードに記憶された情報の正当性を確認するための認証処理に用いられる、電子取引の履歴を示す履歴データの生成を指示するコマンドが前記受信手段により受信されると、前記第１のメモリ領域に格納された取引データのうち、一種類又は複数種類のデータを読み出し、読み出したデータと、当該ＩＣカード内に予め格納しておいたデータとを用いて演算処理を行い、前記電子取引の履歴データを生成する演算手段と、前記演算手段により生成された履歴データを第２のメモリ領域に格納する第２の格納手段と、当該ＩＣカードに記憶された情報の正当性を確認するための認証データの読み出しを指示するコマンドが前記受信手段により受信されると、前記第２のメモリ領域に格納された履歴データを読み出し、当該履歴データを前記外部装置へ送信する送信手段とを備えたことを特徴とする。
【０００９】
また、請求項２記載の発明は、請求項１に記載のＩＣカードにおいて、前記第２の格納手段は、前記演算手段により生成された履歴データによって前記第２のメモリ領域が満たされている場合は、前記履歴データを前記第２のメモリ領域における先頭位置から順次上書きしていくことを特徴とする。
【００１０】
また、請求項３記載の発明は、請求項１に記載のＩＣカードにおいて、前記演算手段は、当該ＩＣカードに記憶された情報の正当性を確認するための認証処理に用いられる、電子取引の履歴を示す履歴データの生成を指示するコマンドが前記受信手段により受信されると、前記第１のメモリ領域に格納された取引データのうち、一種類又は複数種類のデータを読み出し、読み出したデータと、当該ＩＣカード内に予め格納しておいたデータとを用いて、減算、圧縮、暗号化のいずれか一つ以上の演算を行い、前記電子取引の履歴データを生成することを特徴とする。
【００１２】
また、請求項４記載の発明は、請求項１に記載のＩＣカードにおいて、前記送信手段は、当該ＩＣカードに記憶された情報の正当性を確認するための認証データの読み出しを指示するコマンドが前記受信手段により受信されると、最も新しく前記第２のメモリ領域に格納された履歴情報から順次読み出して前記外部装置へ送信することを特徴とする。
【００１３】
また、請求項５記載の発明は、請求項１に記載のＩＣカードにおいて、前記送信手段は、当該ＩＣカードに記憶された情報の正当性を確認するための認証データの読み出しを指示するコマンドが前記受信手段により受信されると、最も古く前記第２のメモリ領域に格納された履歴情報から順次読み出して前記外部装置へ送信することを特徴とする。
【００１４】
【発明の実施の形態】
以下、図面を参照して、この発明の実施形態について説明する。
Ａ：実施形態の構成
図１は、本発明の一実施形態であるＩＣカードが用いられるＩＣカードシステムの概要を示すブロック図である。
外部装置１は、本ＩＣカードシステムのいわゆるホストコンピュータである。そして、外部装置１は、ＩＣカード１０と相互にデータをやり取りすることができる。また、外部装置１には、商品名、商品価格、店舗名、取引日時、取引金額などからなる取引データ２が記憶されている。これらの取引データ２は、電子取引で生成するデータである。
【００１５】
一方、ＩＣカード１０は、電子取引時等において外部装置１から取引データ２を取り込み、そのデータを所定のメモリ領域に格納することで指定ファイル３を生成する。その後、ＩＣカードは、指定ファイル３における一部のデータを他のメモリ領域に移動させることでＬＯＧファイル４を生成する。このＬＯＧファイル４は、電子取引の履歴を示す情報となる。また、ＩＣカード１０は、外部装置１からのＬＯＧファイル読み出し命令に応じてＬＯＧファイル４の一部を外部装置１へ送出する。ここで、指定ファイル３およびＬＯＧファイル４の移動は全てＩＣカード１０の内部において実行する。
【００１６】
例えば、所定の金額を指定ファイル３に含ませておく。そして、電子取引をするときは、外部装置１からの新たな取引データを取り込み、その取引データを新たな指定ファイル３およびＬＯＧファイル４とすることで、前記所定の金額から電子取引の金額だけ減算する。
【００１７】
図２は、本発明の一実施形態であるＩＣカードの構造を示すブロック図である。同図において、ＩＣカード１０は、集積回路を内蔵したカードである。ＣＰＵ１１は、当該ＩＣカード１０の動作を制御する集積回路である。ＲＯＭ１２は、ＩＣカード１０の動作を規定するプログラムなどを格納した不揮発性メモリである。なお、ＩＣカード１０の動作を規定するプログラムは、ＥＥＰＲＯＭ１３に格納してもよい。ＥＥＰＲＯＭ１３は、データを書き換え可能に格納する不揮発性メモリである。ＲＡＭ１４は、データを一時的に格納する揮発性メモリである。
【００１８】
Ｂ：実施形態の動作
次に、上記構成からなるＩＣカードの動作を説明する。
図３は、本ＩＣカードのコマンド処理を示すフローチャートである。まず、初期状態を述べる。ＥＥＰＲＯＭ１３には、予めＥＥＰＲＯＭ１３内のトップディレクトリにカレントＬＯＧアドレスが記憶してある。ここで、カレントＬＯＧアドレスとは、ＣＰＵ１１が現在において注目しているＬＯＧデータのアドレスをいう。また、ＬＯＧデータとは、例えば、電子取引における金額、取引時間、取引場所または取引者の署名データなどを複数含むデータである。すなわち、ＬＯＧデータは、その取引の履歴を示すデータである。
【００１９】
そして、まず、リセット処理が行われる。そのリセットの直後に、ＣＰＵ１１は、ＥＥＰＲＯＭ１３内のカレントＬＯＧアドレスをＲＡＭ１４内のＬＯＧＣアドレスにセットする（Ｓ１）。これにより、カレントＬＯＧアドレスがＲＡＭ１４内のＬＯＧＣアドレスに退避する。ここで、ＥＥＰＲＯＭ１３内のファイルが階層構造である場合は、各ＤＦを選択してＬＯＧファイルに対するアクセスをする。
【００２０】
その後、ＩＣカードシステムにおける上位アプリケーションからＩＣカード１０がコマンドを受信して、そのコマンドがＬＯＧ生成コマンドであるか否かをＣＰＵ１１は判断する（Ｓ２）。ここで、ＬＯＧ生成コマンドである場合は、ＣＰＵ１１は図４に示すＬＯＧ生成処理を行う（Ｓ３）。
【００２１】
一方、ステップ２において、ＬＯＧ生成コマンドでない場合は、ＣＰＵ１１はＬＯＧ読み出しコマンドであるか否かを判断する（Ｓ４）。ここで、ＬＯＧ読み出しコマンドである場合は、ＣＰＵ１１は、図５に示すＬＯＧ読み出し処理を行う（Ｓ５）。ＬＯＧ生成コマンドではなく、かつ、ＬＯＧ読み出しコマンドでもない場合は、不当なコマンドであるので、ＣＰＵ１１はエラーステータスを上位アプリケーションに返す（Ｓ６）。
【００２２】
図４は、ＩＣカード１０におけるＬＯＧファイルの生成を示すフローチャートである。まず、ＣＰＵ１１は、ディレクトリ内にあるカレントＬＯＧアドレスがＬＯＧアドレスにおける最後のアドレス（ラストアドレス）か否かを判断する（Ｓ２１）。この処理は、すべてのＬＯＧアドレスに既にＬＯＧデータが書き込まれているか否かを見るものである。なお、ラストアドレスは、ＥＥＰＲＯＭ１３のアドレス空間において予め設定してある。
【００２３】
そして、ＣＰＵ１１は、カレントＬＯＧアドレスがラストアドレスではない場合は、そのＬＯＧデータの全レコードサイズをみる。そして、その全レコードサイズがＩＣカード１０内のバッファのサイズよりも大きいものがあるか否かを判断する（Ｓ２２）。これは、各レコードのサイズが不均一であるのに対して、バッファのサイズは予め決まっているので、そのバッファに入りきらないレコードについてはＬＯＧファイルを生成できないことによるものである。バッファサイズよりも全レコードサイズの方が小さいときは、ＣＰＵ１１はカレントＬＯＧアドレスを更新する（Ｓ２３）。すなわち、現在のカレントＬＯＧアドレスに対する次のＬＯＧアドレスを、新たなカレントＬＯＧアドレスとする。そして、その新たなカレントＬＯＧアドレスのＬＯＧファイルに、上位装置が指定したレコードであるＬＯＧデータを書き込む（Ｓ２５）。
【００２４】
一方、ステップ２１において、カレントＬＯＧアドレスがＬＯＧアドレスにおける最後のアドレスである場合は、ＬＯＧ先頭アドレスをＲＡＭ１４内のＬＯＧＣアドレスにセットする（Ｓ２６）。そして、ＬＯＧ先頭アドレスをカレントＬＯＧアドレスにセットする。（Ｓ２７）。さらに、上書きフラグをセットする（Ｓ２８）。この上書きフラグは、すべてのＬＯＧアドレスにＬＯＧデータが既にセットされていることを示すフラグである。その後、指定ＬＯＧレコードのすべてをＬＯＧファイルに書き込む（Ｓ２５）。これにより、ＬＯＧファイルが生成される。そして、「正常」を示すステータスとして９０００ｈをセットし、そのステータスを上位アプリケーションに送る。
【００２５】
ステップ２２において、ＬＯＧデータの全レコードサイズがＩＣカード１０内のバッファのサイズよりも大きい場合は、ＣＰＵ１１はエラーステータスを上位装置に返す。この処理は、ＬＯＧファイルを生成することができなかったときの処理である。
【００２６】
図５は、ＩＣカード１０におけるＬＯＧファイルの読み出し処理を示すフローチャートである。まず、ＣＰＵ１１は、ＲＡＭ１４におけるＬＯＧＣアドレスのファイルのレコードをＩＣカード１０のバッファ（例えば、ＲＡＭ１４）に読み出す（Ｓ３１）。そして、ＣＰＵ１１は、ＬＯＧＣアドレスの内容がＬＯＧファイルにおける先頭アドレスであるが否かを判断する。ここで、先頭アドレスではない場合は、そのＬＯＧＣアドレスの内容に次のＬＯＧアドレスをセットする（Ｓ３３）。
【００２７】
その後、ＣＰＵ１１は、ＬＯＧＣアドレスの内容がディレクトリ内のカレントＬＯＧアドレスであるか否かを判断する（Ｓ３４）。ここで、ＬＯＧＣアドレスの内容がカレントＬＯＧアドレスではない場合は、ＬＯＧＣアドレスの内容が最終ＬＯＧに達していない場合であるので、「正常」を示すステータスである９０００ｈをセットし、そのステータスを上位アプリケーションに送る（Ｓ３５）。これでＬＯＧファイルの読み出し処理が完了する。
【００２８】
一方、ステップ３４において、ＬＯＧＣアドレス内容がカレントＬＯＧアドレスである場合は、ファイルの終わりを示すエンドオブファイル（ＥＯＦ）をステータスとしてセットする（Ｓ３８）。
【００２９】
一方、ステップ３２において、ＬＯＧＣが先頭アドレスである場合は、上書きフラグが「１」であるか否かをＣＰＵ１１は判断する（Ｓ３６）。ここで、上書きフラグが「１」でない場合は、ディレクトリ内のカレントＬＯＧアドレスをＬＯＧＣアドレスにセットする（Ｓ３７）。そして、ステータスとしてエンドオブファイル（ＥＯＦ）をセットする（Ｓ３８）。これでＬＯＧファイルの読み出し処理が完了する。
【００３０】
一方、ステップ３６において、上書きフラグが「１」である場合は、ラストアドレスファイルをＬＯＧＣアドレスにセットする（Ｓ３９）。その後、「正常」を示すステータスである９０００ｈをセットし、そのステータスを上位アプリケーションに送る（Ｓ３５）。これでＬＯＧファイルの読み出し処理が完了する。
【００３１】
図６は、ＩＣカード１０におけるファイル構造を示す説明図である。上位ファイルのディレクトリには、ＬＯＧファイルの先頭アドレスと、ラストアドレスが格納されている。さらに、上位ディレィトリには、カレントＬＯＧのアドレスと上書きフラグが格納されている。ＬＯＧファイルのディレクトリには、エリアの先頭アドレスとエリアラストアドレスが格納されている。さらに、ＬＯＧファイルのディレクトリには、カレントレコードアドレスとレコード数が格納されている。
【００３２】
ＬＯＧファイルには、それぞれ取引についての履歴を示すデータが格納されている。例えば、１番レコードには現金、２番レコードには取引場所および時間、３番レコードには使用者の署名などが格納されている。ここで、本実施形態では、各レコードはリング状に連結されている。すなわち、１番レコードから３番レコードにＬＯＧデータを書き込んだ後は、次のＬＯＧデータを１番レコードに上書きする。
【００３３】
指定ファイルは、上位アプリケーションからＩＣカード１０に送られてきた取引データを格納している。本実施形態では、図３などに示すように、その指定ファイルにおける一部のデータをＬＯＧファイルに移動させることで、ＬＯＧファイルを生成している。
【００３４】
図７は、ＩＣカード１０についてのコマンドフォーマットを示す説明図である。ここで、ＬＯＧ生成コマンドおよびＬＯＧ読み出しコマンドは、上位アプリケーションがＩＣカード１０へ発行するコマンドである。一方、各レスポンスは、ＩＣカード１０から上位アプリケーションへの返答である。
【００３５】
Ｃ：適用例
次に、上述したＩＣカード１０の具体的適用例について説明する。例えば、本ＩＣカード１０は、電子取引の履歴を示すＬＯＧデータを取り引きの認証に使用する場合に用いることができる。まず、電子取引時において、ＩＣカード１０内のＲＡＭ１４などに格納された金額を、そのＩＣカード１０内のＥＥＰＲＯＭ１３などに予め格納しておいた金額から減算し、その結果の金額とその取引時の日付などのデータについて署名データを当該ＩＣカード１０内で生成する。その後、その署名データをＩＣカード１０内において移動させてＥＥＰＲＯＭ１３などにおける所定のアドレスに記憶する。
【００３６】
次に、さらに具体的な電子取引時の動作について説明する。まず、ＩＣカード１０内のＲＡＭ１４などに格納される金額（１０００円）を、ＥＥＰＲＯＭ１３などに予め格納しておいた金額（１００００円）から減額する。さらに、その電子取引時の日付および店名などをＲＡＭ１４などに格納する。次に、ＩＣカード１０内に保持している電子取引についてのデータをハッシュ関数（例えば、ＳＨＡ−１）によって圧縮する。ここで、その電子取引についてのデータとしては、金額  ９０００円、日付  ９６．０１．１３、店  食料品店とする。その後、その圧縮したデータについてＲＳＡ鍵によって暗号化して、ＲＳＡ署名データを生成してＥＥＰＲＯＭ１３などに格納する。最後に、上記電子取引についてのデータをＬＯＧデータとしてＥＥＰＲＯＭ１３などに格納して、ＬＯＧファイルとする。これらのデータ処理は、すべてＩＣカード１０内で行う。
【００３７】
これらにより、本ＩＣカードは、当該ＩＣカードの内蔵するＣＰＵがＥＥＰＲＯＭおよびＲＡＭなどを用いてＬＯＧファイルの生成およびＬＯＧファイルの読み出しを行っているので、そのＬＯＧファイルの生成および読み出しについてのデータの移動は全て当該ＩＣカードの内部で行われる。したがって、本ＩＣカードは、そのＬＯＧファイルの内容およびそのＬＯＧファイルを生成等するためのデータの移動内容がＩＣカードの外部からは認識することができないので、そのＬＯＧファイルの内容などの偽造および改竄などを防止することができる。
【００３８】
また、本ＩＣカードによれば、ＬＯＧファイルの生成を当該ＩＣカードの内部で行うので、上位アプリケーションがＬＯＧファイルを生成してそれをＩＣカードに送信する方法よりも、その上位アプリケーションとＩＣカード間の通信量が少なくなり、その通信時間を大幅に短縮することができる。したがって、本ＩＣカードを電子現金システムなどにおいて用いた場合でも、その取引についての処理をその時々で迅速に行うことができ、快適でかつセキュリティ性の高い取引をすることができる。
【００３９】
【発明の効果】
以上説明したように、本発明によれば、ＬＯＧファイル生成手段および読み出し手段によるＬＯＧファイルの生成およびＬＯＧファイルの読み出しについての処理を全て当該ＩＣカードの内部で実行するので、そのＬＯＧファイルの内容およびそのＬＯＧファイルの生成等に関するデータの移動内容を当該ＩＣカード内に隠蔽することができ、取引データなどからなるＬＯＧファイルの内容を第三者が偽造または改竄などすることを防止できるＩＣカードを提供することができる。
【００４０】
また、本発明によれば、ＬＯＧファイルの生成を当該ＩＣカードの内部で行うので、上位アプリケーションがＬＯＧファイルを生成してそれをＩＣカードに送信する方法よりも、その上位アプリケーションとＩＣカード間の通信量が少なくなり、その通信時間を大幅に短縮できるＩＣカードを提供することができる。
【図面の簡単な説明】
【図１】  本発明の実施形態に係るＩＣカードが適用されるＩＣカードシステムの概要を示すブロック図である。
【図２】  本発明の実施形態に係るＩＣカードの構成を示すブロック図である。
【図３】  同実施形態におけるコマンド処理を示すフローチャートである。
【図４】  同実施形態におけるＬＯＧファイルの生成を示すフローチャートである。
【図５】  同実施形態におけるＬＯＧファイルの読み出し処理を示すフローチャートである。
【図６】  同実施形態におけるＩＣカードのファイル構造を示す説明図である。
【図７】  同実施形態におけるＩＣカードのコマンドフォーマットを示す説明図である。
【符号の説明】
１  外部装置
２  取引データ
３  指定ファイル
４  ＬＯＧファイル
１０  ＩＣカード
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＥＥＰＲＯＭ
１４  ＲＡＭ
【図１】
0004397437.tif 000002
【図２】
0004397437.tif 000003
【図３】
0004397437.tif 000004
【図４】
0004397437.tif 000005
【図５】
0004397437.tif 000006
【図６】
0004397437.tif 000007
【図７】
0004397437.tif 000008