(57)【要約】【課題】変造または偽造などの不正を防止できるＩＣカードおよびＩＣカード処理システムを提供することにある。【解決手段】ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードが、前記ＩＣカード処理装置からの第１のキーデータに応じて、前記記憶手段に記憶された数値データを減算処理する減算処理手段と；前記ＩＣカード処理装置からの第２のキーデータに応じて、前記記憶手段に記憶された数値データを加算処理する加算処理手段とを備え、前記ＩＣカード処理装置に必要なキーデータを与えることにより、このＩＣカード処理装置によるＩＣカード処理機能を限定可能とする。【選択図】      図４
2004171596.tif 000002
【特許請求の範囲】
【請求項１】
外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、
前記記憶手段に分散されて記憶されているこのＩＣカードの取引に必要な各種データを読み出し、
前記読み出されたデータをこのＩＣカードの初期応答に乗せて出力する、
ことを特徴とするデータ出力方法。
【請求項２】
外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、
前記記憶手段に分散されて記憶されているこのＩＣカードの取引に必要な各種データを読み出し、
前記読み出されたデータをこのＩＣカードの初期応答に乗せて出力する、
ことを特徴とするデータ出力システム。
【請求項３】
外部装置とデータの送受信を行う送受信手段と、
データを記憶する記憶手段と、
前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とを備え、
前記記憶手段に分散されて記憶されているこのＩＣカードの取引に必要な各種データを読み出し、
前記読み出されたデータを初期応答に乗せて出力する、
ことを特徴とするＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば不揮発性のデータメモリおよびＣＰＵ（セントラル・プロセッシング・ユニット）などの制御素子を有するＩＣ（集積回路）チップを内蔵したＩＣカードおよびこのＩＣカードを処理するＩＣカード処理システムに関する。
【背景技術】
【０００２】
近年、不揮発性のデータメモリおよびＣＰＵなどの制御素子を有するＩＣチップを内蔵したＩＣカードが開発され、クレジットカードや医療カードなどの個人情報蓄積媒体として利用されている。また、この種のＩＣカードをプリペイドカードとして使用する動きが見られる。
【０００３】
ここで、ＩＣカードをプリペイドカードとして使用する場合のカード処理の流れを図１のフローチャートを参照して説明する。
【０００４】
まず、ＩＣカードとＩＣカード処理を行う端末機器によって、このＩＣカードおよびこの端末機器の両者の正当性が確認される（ＳＴ１０）。正当性は、後に説明する乱数、秘密鍵などを使用した相互認証という方法により行われる。両者の正当性が確認されると、有効期限が読み出され（ＳＴ１２）、有効期限内のカードであるかどうかチェックされる。有効期限内であると判断されたときには（ＳＴ１４、ＹＥＳ）、カードに記録されている残高が読み出される（ＳＴ１６）。残高が存在するときに限り（ＳＴ１８、ＹＥＳ）、残高から利用金額が差し引かれ、新残高が算出される（ＳＴ２０）。このとき、新残高が０以上（新残高≧０）になることを条件として（ＳＴ２２、ＹＥＳ）、カード新残高が書き込まれる（ＳＴ２４）。
【０００５】
上記説明したカード処理の流れにおける個々の処理について、以下詳細に説明する。
【０００６】
（１）金額書き換えコマンド
ΙＣカードをプリペイドカードとして使用する場合、カード内には金額情報として金額が数値として書き込まれている。このため、ＩＣカードカードを処理するカード端末機器によるカード内の金額の書き換え手順は、「カード内の現在残高読み出し→端末機器内で減算→減算結果を新残高としてカードヘ書き込み」となる。このため、自動販売機またはカード電話機などの単純な「減算」機能だけが必要な端末機器（＝減算機）においても、内部処理としてはカード内残高を増すのと同じ数値の「書き換えコマンド」により減額のための書き込みが行われる。
【０００７】
（２）減算許可条件
前記「金額書き換えコマンド」の様に、カード内残高を増すのと同じ数値の「書き換えコマンド」により減額のための書き込みを行なっている減算機は、金額を増額するに足るアクセス権を保有している。
【０００８】
（３）乱数
カードがカード自身および端末機器の認証のために出力する乱数は、外部から与えられるある乱数生成のための情報に対して一対一の値となる。乱数の使い方のー例として、相互認証の手順を図２に示す。この図２を参照して相互認証について説明する。
【０００９】
＊０．端末機器側で乱数Ｒ１が生成される。
【００１０】
＊１．端末機器からカードへ、端末機器側指定秘密鍵番号Ｍ（１〜５）とともに乱数Ｒ１が送信される。
【００１１】
＊２．カード側で、乱数エリアに格納されている値（カード固有番号など）と乱数Ｒ１により乱数Ｒ２が生成される。
【００１２】
＊３．カードから端末機器へ、カード指定秘密番号鍵Ｎ（１〜５）とともに乱数Ｒ２が送信される。
【００１３】
＊４．端末機器側で、カード側指定秘密鍵ＮＮＮＮにより乱数Ｒ２が暗号化されＣ２が生成される。
【００１４】
＊５．端末機器からカードへＣ２が送信される。
【００１５】
＊６．カード側で、カード側指定秘密鍵ＮＮＮＮにより乱数Ｒ２が暗号化されＣ２Ｘが生成される。
【００１６】
＊７．カード側で、端末機器から受け取られたＣ２と＊６で生成されたＣ２Ｘとが比較される。Ｃ２とＣ２Ｘとが一致すればカードにより端末機器の正当性が確認される。
【００１７】
＊８．カード側で、端末機器側指定秘密鍵ＭＭＭＭにより乱数Ｒ１が暗号化されＣ１が生成される。
【００１８】
＊９．カードから端末機器へ、Ｃ２とＣ２Ｘとの比較結果および生成されたＣ１が送信される。
【００１９】
＊１０．端末機器側で、端末機器側指定秘密鍵ＭＭＭＭにより乱数Ｒ１が暗号化されＣ１Ｘが生成される。
【００２０】
＊１１．端末機器側で、カードから受け取られたＣ１と＊１０で生成されたＣ１Ｘが比較される。Ｃ１とＣ１Ｘとが一致すれば端末機器によりカードの正当性が確認される。
【００２１】
以上説明したようにして相互認証が行われ、カードおよび端末機器の正当性が確認される。
【００２２】
（４）秘密鍵
カード自身と端末機器の相互認証および後述の正当性確認情報生成などに使用され、カードと端末機器が相互に持ち合う秘密鍵は、一種類の固定値か、複数持つ場合は外部（＝端末機器側）から指定される。
【００２３】
（５）必要情報出力機能
カードの有効期限および残高などの、いずれもプリペイド取引に必要ではあるが、同一エリアに格納するのが適当でない複数の情報を機器側に読み出すには、「リードコマンド」が複数回使用されて各エリアに対して個別にアクセスされる。この概要を示す図１４について説明する。
【００２４】
まず、端末機器側からカード側に対して、発行日格納エリアの選択が要求される。カード側ではこの要求を受けてエリア選択が行われ、カード側から端末機器側に対してレスポンスが返される。次に、端末機器側からカード側に対して、発行日格納エリアアクセスキーの照合が要求される。カード側ではこの要求を受けてキー照合が行われ、カード側から端末機器側に対してレスポンスが返される。次に、端末機器側からカードに対して、発行日（有効期限）の読み出しが要求される。カード側ではこの要求を受けて発行日を読み出し、カード側から端末機器側に対して発行日が送出される。次に、端末機器側からカード側に対して、残高格納エリアの選択が要求される。カード側ではこの要求を受けてエリア選択が行われ、カード側から端末機器側に対してレスポンスが返される。次に、端末機器側からカード側に対して、残高格納エリアのアクセスキーの照合が要求される。カード側ではこの要求を受けてキー照合が行われ、カード側から端末機器に対してレスポンスが返される。次に、端末機器側からカードに対して、残高の読み出しが要求される。カード側ではこの要求を受けて残高を読み出し、カード側から端末機器側に対して残高が送出される。次に、端末機器側からカード側に対して、秘密鍵番号のアクセスキーの照合が要求される。カード側ではこの要求を受けてキー照合が行われ、カード側から端末機器側に対してレスポンスが返される。次に、端末機器側からカード側に対して、秘密鍵番号の読み出しが要求される。カード側ではこの要求を受けて秘密鍵番号を読み出し、カード側から端末機器に対して秘密鍵番号が返される。以下、このようにして処理が継続される。
【００２５】
（６）電文正当性確認
カードと端末機器間で交わされるコマンド（リクエスト）とレスポンス（ステータス）の各電文は、通信制御としてのキャラクタ単位のパリティ、電文単位のＢＣＣ（ブロックチェックコード）などのエラーがないこと、電文の形式が相互に規定されたものであることといった一般的伝送のエラーの他、認証関係のコマンドにおけるキーや乱数の値といったアプリケーション的データの不備がなければ全ての電文は相互に処理される。
【発明の開示】
【発明が解決しようとする課題】
【００２６】
しかし、上記説明した（１）〜（６）には夫々問題点があり、その問題点を（１）〜（６）に対応させて以下に記載する。
【００２７】
（１）金額書き換えコマンド
自動販売機などの減算機においても、内部処理としてはカード内残高を増すのと同じ数値の「書き換えコマンド」により減額のための書き込み処理が行われている。そのため、このような減算機を不正に細工することで「減算」ではなく「加算＝増額」が可能となる。通常、カード内の金額を増すための書き込みをする「カード入金機」は、その機能から厳重に管理され不正使用できない策が講じられるが、本来「減算」が主機能である自動販売機やカード電話機といった減算機は、入金機に不正改造することを目的とした入手が容易であり、カード変造を目論む者にとって格好のツールとなる。また、金額の書き換えには、キー照合コマンドによるアクセスを除いて、一旦現在値を読み出して、機器側で減算した値を新規値として書き込むというカードに対する２回のアクセスが必要である。この処理の手順を図３を参照して説明する。
【００２８】
まず、端末機器（減算機）側からカード側へ、キー照合コマンドとともにキーが送信される。カード側において、端末機器側から送信されるキーが受信され照合される。次に、カード側から端末機器へ、キー照合結果が送られる。このとき、送られるキー照合結果が、ＮＧの場合には処理が中断される。次に、端末機器側からカードへ、読み出しコマンドが送信される。カード側において、端末機器側から送信される読み出しコマンドが受信されると、カードに記録されている現在値（残高）が端末機器へ送られる。端末機器において、読み出された現在値から利用額が差し引かれる。このとき、差引額がマイナス（差引額＜０）となってしまったときは、カード側からエラーが返され処理は中断される。差引額が０以上（差引額≧０）であることを条件として、次に、端末機器側からカード側へ、書き込みコマンドとともに差引額である新規値が送信される。カード側において書き込みコマンドと新規値が受信されると、受信された新規値が書き込まれる。そして、カード側から端末機器側へ、新規値書き込み結果が送信され、この書き込み結果が端末機器側において確認される。
【００２９】
（２）減算許可条件
金額を増額するに足るアクセス権を保有している減算機は、「（１）金額書き換えコマンド」の例と同様に、これを不正に細工することで「減算」ではなく「加算＝増額」が可能となり、カード変造を目論む者にとって格好のツールとされる。
【００３０】
（３）乱数
外部からカードヘ種々の値を与え、その都度出力される乱数の値を解析することで、カード内の暗号化キー値と暗号化論理が解析でき、カード偽造の手がかりとされる。
【００３１】
（４）秘密鍵
カードによりデータを暗号化する際、外部からカードヘ固定の暗号化すべきデータを与え、その都度出力される暗号化された値を解析することで、カード内のキー値が解析され、カード偽造の手がかりとされる。キーを複数持つ場合は、外部から番号を指定して同様に解析される。
【００３２】
（５）必要情報出力機能
プリペイド取引に必要な情報としては、カード発行日（利用開始日）または有効期限、カード内プリペイド残高、前回利用日、電文正当性確認情報生成用秘密鍵番号、および乱数などがある。これらはアクセス権の異なる場合、アクセス権ごとにそれぞれ別個の領域に格納されるため、機器がカードアクセスしてプリペイド取引を実施しようとする場合別々に読み出す必要があり、余分な処理時間がかかる。
【００３３】
（６）電文正当性確認
金額書き換えの条件が整えば、偽造された端末機器からの金額書き換えのコマンド電文により正当なカード内の記録金額を書き換える（増額）ことができてしまう。また、正当な自販機等の端末機器からの金額減算コマンドに対して、あたかも正常にカード内金額を減算したレスポンスを返す機能を有する不正なカードにより物品購入ができてしまう。
【００３４】
この発明の目的は、上記したような事情に鑑み成されたものであって、変造または偽造などの不正を防止できるＩＣカードおよびＩＣカード処理システムを提供することにある。
【課題を解決するための手段】
【００３５】
この発明は、上記問題点に基づきなされたもので、
この発明は、外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記処理手段が、前記記憶手段に記憶された数値データを減算処理する減算処理手段と；前記記憶手段に記憶された数値データを加算処理する加算処理手段とを備えている。
【００３６】
この発明は、外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記処理手段が、前記外部装置からの第１のキーデータに応じて、前記記憶手段に記憶された数値データを減算処理する減算処理コマンドと；前記外部装置からの第２のキーデータに応じて、前記記憶手段に記憶された数値データを加算処理する加算処理コマンドと；前記減算処理コマンドによる減算処理において、前記数値データがマイナス値をとるときには、減算処理を中止し前記外部装置に対してエラーを送信するマイナス値取扱手段とを備えている。
【００３７】
この発明は、ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードが、前記ＩＣカード処理装置からの第１のキーデータに応じて、前記記憶手段に記憶された数値データを減算処理する減算処理手段と；前記ＩＣカード処理装置からの第２のキーデータに応じて、前記記憶手段に記憶された数値データを加算処理する加算処理手段とを備え、前記ＩＣカード処理装置に必要なキーデータを与えることにより、このＩＣカード処理装置によるＩＣカード処理機能を限定可能とする。
【００３８】
この発明は、ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードが、前記ＩＣカード処理装置からの第１のキーデータに応じて、前記記憶手段に記憶された数値データを減算処理する減算処理コマンドと；前記ＩＣカード処理装置からの第２のキーデータに応じて、前記記憶手段に記憶された数値データを加算処理する加算コマンドとを備え、前記ＩＣカード処理装置に前記第１および第２のキーデータのうちのどちらか一方を与えることにより、このＩＣカード処理装置によるＩＣカード処理機能を減算処理および加算処理のうちどちらか一方に限定可能とする。
【００３９】
この発明は、外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段が、第１の状態および第２の状態のどちらか一方の状態のビットで構成されるビットデータを有し、前記ビットデータに対するアクセスを、前記第１の状態のビットから前記第２の状態のビットへの変換、および前記第２の状態のビットから前記第１の状態のビットへの変換のどちらか一方とする。
【００４０】
この発明は、外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段が、第１の状態および第２の状態のどちらか一方の状態のビットで構成され数値データを示すビットデータの組を複数有し、前記数値データを変更するための前記ビットデータに対するアクセスを、前記第１の状態のビットから前記第の２状態のビットへの変換、および前記第２の状態のビットから前記第１の状態のビットへの変換のどちらか一方だけとすることにより、前記数値データの変更を増加および減少のどちらか一方だけに制限する。
【００４１】
この発明は、外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段が、第１の状態および第２の状態のどちらか一方の状態のビットで構成され数値データを示すビットデータを有し、前記数値データを変更するための前記ビットデータに対するアクセスを、前記第１の状態のビットから前記第２状態のビットへの変換、および前記第２の状態のビットから前記第１の状態のビットへの変換のどちらか一方とし、ビットデータにおけるビット状態の変換順序を一定の規則に従ってスクランブルする。
【００４２】
この発明は、外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段が、所定数のレコードの書き込み可能なエリアを有し、前記エリアに対するアクセスを、前記レコードの追記に限定する。
【００４３】
この発明は、外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段が、所定数のレコードの書き込み可能なエリアを有し、前記エリアにおけるレコード未書き込みエリアにより残り数値データを示し、この数値データの変更のための前記エリアに対するアクセスを前記レコードの追記だけとすることにより、前記数値データの変更を減少だけに制限する。
【００４４】
この発明は、外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段が、所定数のレコードの書き込み可能なエリアを有し、前記エリアにおけるレコード未書き込みエリアにより残り数値データを示し、この数値データの変更のための前記エリアに対するアクセスを前記レコードの消去だけとすることにより、前記数値データの変更を増加だけに制限する。
【００４５】
この発明は、外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段が、所定数のレコードの書き込み可能な複数のエリアを有し、前記複数のエリアそれぞれにおけるレコード未書き込みエリアにより残り数値データを示し、この数値データの変更のための前記複数のエリアに対するアクセスを、エリア別に前記レコードの追記または消去のどちらか一方だけとし、これら追記と消去とにそれぞれ異なるアクセス権を設定することにより、それぞれの前記複数のエリアにおける前記数値データの変更を増加および減少のどちらか一方に制限する。
【００４６】
この発明は、外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段が、所定数のレコードの書き込み可能なエリアを有し、前記エリアにおけるレコード未書き込みエリアにより残り数値データを示し、この数値データの変更のための前記エリアに対するアクセスを前記レコードの追記に限定するとともに、前記レコードに所定のデータを書き込むことにより、前記数値データの変更を減少方向だけに制限し、前記レコードの読み出し時にこのレコードの内容を確認する。
【００４７】
この発明は、外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段に記憶されているビットデータを変更するとき、先に書き込まれているビットデータと新たに書き込むビットデータとの論理和となるビットデータへの変更のみ可能とする。
【００４８】
この発明は、ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカード処理装置のうち、前記ＩＣカードに記憶されている数値データに対して減算処理を実行するものには減算処理キーデータを与え；前記ＩＣカードに記憶されている数値データを書き換えるとき、先に書き込まれている元数値データと、前記ＩＣカード処理装置から送られる新たに書き込む新数値データとを比較し；前記比較の結果、前記新数値データが前記元数値データより小さいときには、この新数値データの送信元である前記ＩＣカード処理装置の減算処理キーデータを確認した上で前記新数値データの書き込みを行う。
【００４９】
この発明は、ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカード処理装置のうち、前記ＩＣカードに記憶されている数値データに対して加算処理を実行するものには加算処理キーデータを与え；前記ＩＣカードに記憶されている数値データを書き換えるとき、先に書き込まれている元数値データと、前記ＩＣカード処理装置から送られる新たに書き込む新数値データとを比較し；前記比較の結果、前記新数値データが前記元数値データより大きいときには、この新数値データの送信元である前記ＩＣカード処理装置の加算処理キーデータを確認した上で前記新数値データの書き込みを行う。
【００５０】
この発明は、ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカード処理装置のうち、前記ＩＣカードに記憶されている数値データに対して減算処理を実行するものには減算処理キーデータを与え；前記ＩＣカード処理装置のうち、前記ＩＣカードに記憶されている数値データに対して加算処理を実行するものには加算処理キーデータを与え；前記ＩＣカードに記憶されている数値データを書き換えるとき、先に書き込まれている元数値データと、前記ＩＣカード処理装置から送られる新たに書き込む新数値データとを比較し；前記比較の結果、前記新数値データが前記元数値データより小さいときには、この新数値データの送信元である前記ＩＣカード処理装置の減算処理キーデータを確認した上で前記新数値データの書き込みを行い；前記比較の結果、前記新数値データが前記元数値データより大きいときには、この新数値データの送信元である前記ＩＣカード処理装置の加算処理キーデータを確認した上で前記新数値データの書き込みを行い；前記比較の結果、前記新数値データと前記元数値データとが等しいときには、この新数値データの書き込みを中止する。
【００５１】
この発明は、外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、このＩＣカード自身およびこのＩＣカードを処理するＩＣカード処理装置を認証するために生成される乱数を、生成する毎に記憶し、この記憶された乱数を基にして次の乱数を生成する。
【００５２】
この発明は、ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードおよび前記ＩＣカード処理装置各々に対して、共通の複数の秘密鍵を格納し；外部から与えられるデータの特徴に応じて、前記ＩＣカードおよび前記ＩＣカード処理装置各々が、前記複数の秘密鍵のうちのどの秘密鍵を使用するかを決定する。
【００５３】
この発明は、ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードおよび前記ＩＣカード処理装置各々に対して、共通の複数の秘密鍵を格納し；前記ＩＣカードにおいて生成される乱数の特徴に応じて、前記ＩＣカードおよび前記ＩＣカード処理装置各々が、前記複数の秘密鍵のうちのどの秘密鍵を使用するかを決定する。
【００５４】
この発明は、ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードおよび前記ＩＣカード処理装置各々に対して、共通の複数の秘密鍵を格納し；所定処理が実行される日時データの特徴に応じて、前記ＩＣカードおよび前記ＩＣカード処理装置各々が、前記複数の秘密鍵のうちのどの秘密鍵を使用するかを決定する。
【００５５】
この発明は、ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードおよび前記ＩＣカード処理装置各々に対して、共通の複数の秘密鍵を格納し；前記ＩＣカードにおいて生成される乱数の特徴および所定処理が実行される日時データの特徴に応じて、前記ＩＣカードおよび前記ＩＣカード処理装置各々が、前記複数の秘密鍵のうちのどの秘密鍵を使用するかを決定する。
【００５６】
この発明は、外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段に分散されて記憶されているこのＩＣカードの取引に必要な各種データを読み出し；前記読み出されたデータを分散されている個数より少ない電文数で出力する。
【００５７】
この発明は、外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段に分散されて記憶されているこのＩＣカードの取引に必要な各種データを読み出し；前記読み出されたデータを一電文で出力する。
【００５８】
この発明は、外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段に分散されて記憶されているこのＩＣカードの取引に必要な各種データを読み出し；前記読み出されたデータをこのＩＣカードの初期応答に乗せて出力する。
【００５９】
この発明は、ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードおよび前記ＩＣカード処理装置各々に対して、共通の複数の秘密鍵および共通の所定データを格納し；前記ＩＣカードから前記ＩＣカード処理装置に対して電文を送信するとき、または前記ＩＣカード処理装置から前記ＩＣカードに対して電文を送信するとき、電文を送信する側において、前記所定のデータを前記複数の秘密鍵のうちの特定の秘密鍵で暗号化し、この暗号化された暗号化所定データを電文の一部として相手に送信し；電文を受信する側において、受信した電文に含まれる前記暗号化所定データを解読することにより電文送り元の正当性を確認し、正当性が確認されたときにのみ受信された電文が示す動作を実行する。
【００６０】
この発明は、ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードおよび前記ＩＣカード処理装置各々に対して、共通の複数の秘密鍵を格納し；前記ＩＣカードから前記ＩＣカード処理装置に対して、このＩＣカードが保持する第１のデータを送信し；前記ＩＣカード処理装置において、前記送信された第１のデータを受信し、この受信された第１のデータをこのＩＣカード処理装置が保持する前記複数の秘密鍵の中の特定の秘密鍵で暗号化し第２のデータとし；前記ＩＣカード処理装置から前記ＩＣカードに対して、前記第２のデータを含めた電文を送信し；前記ＩＣカードにおいて、前記送信された電文を受信し、この電文に含まれる前記第２のデータをこのＩＣカードが保持する前記複数の秘密鍵の中の特定の秘密鍵で複合化し、この複合化された第３のデータと前記第１のデータとを比較することにより、この電文送信元の前記ＩＣカード処理装置の正当性を確認し、正当性が確認されたときにのみ受信された電文が示す動作を実行する。
【００６１】
この発明は、ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードおよび前記ＩＣカード処理装置各々に対して、共通の複数の秘密鍵を格納し；前記ＩＣカード処理装置から前記ＩＣカードに対して、このＩＣカード処理装置が保持する第１のデータを送信し；前記ＩＣカードにおいて、前記送信された第１のデータを受信し、この受信された第１のデータをこのＩＣカードが保持する前記複数の秘密鍵の中の特定の秘密鍵で暗号化し第２のデータとし；前記ＩＣカード処理装置から前記ＩＣカードに対して、前記第２のデータを含めた電文を送信し；前記ＩＣカード処理装置において、前記送信された電文を受信し、この電文に含まれる前記第２のデータをこのＩＣカード処理装置が保持する前記複数の秘密鍵の中の特定の秘密鍵で複合化し、この複合化された第３のデータと前記第１のデータとを比較することにより、この電文送信元の前記ＩＣカードの正当性を確認し、正当性が確認されたときにのみ受信された電文が示す動作を実行する。
【発明の効果】
【００６２】
この発明によれば下記のＩＣカードおよびＩＣカード処理システムが提供できる。
【００６３】
（１）ＩＣカードにおいて減算コマンドと加算コマンドとを区別し、夫々のコマンドに対するアクセス権を異なるものとし、減算機には減算コマンドに対するアクセス権を、加算機には加算コマンドに対するアクセス権を付与することにより、減算機を用いて加算処理（または加算機を用いて減算処理）が行われるのを防止できる。つまり、減算機または加算機などのＩＣカード処理装置による不正を防止できる。
【００６４】
（２）ＩＣカードにおいて生成される乱数を、乱数の生成毎に記憶し、この記憶された乱数を基にして次の乱数を生成することにより、ＩＣカードにおける暗号化理論の解析を防止できるので、ＩＣカードの変造または偽造を防止できる。
【００６５】
（３）ＩＣカードおよびＩＣカード処理装置において保持されている複数の秘密鍵の中から特定の秘密鍵を選択するとき、外部から与えられるデータの特徴に応じて秘密鍵を選択することにより、秘密鍵がその都度不定となり、ＩＣカードの変造または偽造を防止できる。
【００６６】
（４）ＩＣカードに分散して格納されているＩＣカード取引に必要な情報を一電文または分散されている数より少ない電文数で出力することにより、迅速なカード処理ができる。また、ＩＣカード取引に必要な情報をカードの初期応答に乗せて出力することにより、迅速なカード処理ができる。
【００６７】
（５）複数の秘密鍵をＩＣカードとカード処理装置双方で持ち合い、相互に共有する何らかのデータをカードが出力した正当性確認情報生成用秘密鍵番号で指定される秘密鍵で暗号化されたデータを正当性確認情報として電文の一部として含め、その電文が正当な相手から送られてきたものであることを正当性確認情報の内容により、ＩＣカードとＩＣカード処理装置双方が確認することにより、不正なＩＣカードまたは不正なＩＣカード処理装置による取引を防止できる。
【発明を実施するための最良の形態】
【００６８】
以下、この発明の実施の形態について図面を参照して説明する。
【００６９】
図１８は、この発明の一実施の形態に係るＩＣカードに内蔵されるＩＣチップの構造を概略的に示す図である。
【００７０】
図１８に示すように、ＩＣカードは、データの各種処理などを行うＣＰＵからなる制御部１０と、ＩＣカードの取引上必要な金額情報などのデータを記憶するデータメモリ１２と、記憶内容が書き換え不可能なプログラムメモリ１４と、このＩＣカードを取り扱う端末機器とのデータの送受信を行う送受信部１６などで構成されている。制御部１０は、データメモリ１２に記憶されている数値データの加算処理または減算処理を必要に応じて行う。また、減算処理において数値データがマイナス値をとるときには、減算処理を中止する制御も行う。
【００７１】
図１９は、上記説明したＩＣカードを取り扱うＩＣカード処理装置、即ち端末機器の構成を概略的に示す図である。
【００７２】
図１９に示すように、端末機器は、データの各種処理などを行うＣＰＵからなる制御部２０と、各種データを記憶する記憶部２２と、オペレータからの各種操作を受け付ける操作部２４と、カードから読み出されたデータなどを表示するＣＲＴディスプレイ２６と、ＩＣカードとのデータの送受信を行う送受信部２８などで構成されている。
【００７３】
以下、問題点（１）〜（６）に対応させて、実施の形態について説明する。
【００７４】
（１）金額書き換えコマンド
ａ．専用カードの場合その１（加算／減算−別コマンド化）
「加算」するコマンドと「減算」するコマンドとをそれぞれ異なるコマンドとして持つ専用カードとして、減算機には減算コマンドのみを搭載する。カードメモリ上の金額情報はその金額を示す数値で表される。また、上記した減算コマンドを使用すれば、減算の際は現在値を読み出さずにいきなり減算したい値をカードに送り込めば、カード内で減算処理して応答するという手順が可能となる。
【００７５】
この手順の例を図４を参照して説明する。
【００７６】
まず、端末機器（減算機）側からカード側へ、キー照合コマンドとともにキーが送信される。カード側において、端末機器側から送信されるキーが受信され照合される。次に、カード側から端末機器へ、キー照合結果が送られる。このとき送られるキー照合結果が、ＮＧの場合には処理が中断される。次に、端末機器側からカードへ、減算コマンドとともに利用額が送信される。カード側において、端末機器から送信される減算コマンドおよび利用額が受信されると、カードに記録されている現在値（残高）から利用額が差し引かれる（減算コマンドにより減算処理）。
【００７７】
このとき、差引額がマイナス（差引額＜０）となってしまったときは、カード側から端末機器側へエラーが返され、処理は中断される。差引額が０以上（差引額≧０）であることを条件として差引額である新規値がカードに書き込まれる。そして、カード側から端末機器側へ、新規値書き込み結果（減算）が送信され、この書き込み結果が端末機器側において確認される。
【００７８】
上記説明したカード処理では、カード内データを金額情報として取り扱い、差引額がマイナスとなるときには処理が中断されるとしたが、マイナス値を取り扱えるようにしてもよい。
【００７９】
このように、減算コマンドと加算コマンドとを異なるコマンドとすることにより、減算機には減算コマンドのみがセットされる。よって、減算機を不正改造して入金機とすることは困難となるため、各種不正を防止できる。また、図４の説明から分かるように、金額の書き換え時に、キー照合コマンドによるアクセスを除き、減算コマンドによる一度のアクセスで済む。
【００８０】
ｂ．専用カードの場合その２（最大金額から減額のみ可能化）
金額を変更するコマンドは機能的に「減額」のみとする。つまり、第１の状態（０）または第２の状態（１）からなるビットによるビットデータで数値データ（金額情報）を示す。そして、このビットデータによる数値データの変更に関するアクセスを、第１の状態のビットを第２の状態のビットにするか、または第２の状態のビットを第１の状態のビットにするかどちから一方だけとする。
【００８１】
すなわち、金額情報はデータビットのうちの何ビットが立っているかで表し、カード内での金額情報変更に関するアクセスは、これらのビットを倒す（減らす、落とす、０化する）機能だけとする。初回の価値付けでは、予め用意された最大金額を示すビット情報のうち所定数のビットを有効にする（最大ビット数から初回の価値付け設定額へ減額する）。この場合、一枚のカードは初期の価値付けをされ利用者の手に渡り、金額が０となった後は廃棄されることが前提となる。この処理の概要を図５および図６に示す。
【００８２】
まず、図５について説明する。
【００８３】
メーカによるカード製造時には、カードに対してカード製造日付が書き込まれる。この時点では、金額書き込み日付は書き込まれていない（ブランク）。また、金額データとしては、最大金額（例えば１００００円）を示すビットが立てられている。なお、ここでは１ビットは５００円を示すものとする。
【００８４】
このようにして製造されたカードは、次のようにして初回金額（残高）が設定され発行される。例えば、カードの初回金額を５０００円に設定して発行する場合には、１０ビットが０化（１０ビットが有効化）される。このとき、金額書き込み日付が書き込まれることにより、初回金額５０００円が有効とされる。
【００８５】
このようにして発行されたカードに書き込まれている残高は、次のようにして差し引かれる。例えば、カードの残高から１０００円分差し引く場合には、２ビットが０化され、金額書き込み日付が更新される。このようにして、使用され、残高がなくなるとこのカードは廃棄される。
【００８６】
続いて、図６について説明する。
【００８７】
メーカによるカード製造時には、カードに対してカード製造日付が書き込まれる。この時点では、金額書き込み日付は書き込まれていない（ブランク）。また、金額データとしては、最大金額（例えば１００００円）を示すビットが立てられている。なお、ここでは１ビットは５００円を示すものとする。
【００８８】
このようにして製造されたカードは、次のようにして初回金額が設定され発行される。例えば、カードの初回金額を１００００円に設定して発行する場合には、全ビットが有効化される。このとき、金額書き込み日付が記録され、初回金額１００００円が有効とされる。
【００８９】
このようにして発行されたカードに書き込まれている残高は、次のようにして差し引かれる。例えば、カードの残高から１０００円分差し引く場合には、２ビットが０化され、金額書き込み日付が更新される。このようにして、使用され、残高がなくなるとこのカードは廃棄される。
【００９０】
また、次の様なカードとすることで一定回数の繰り返し使用も可能となる。「何ビットが立っているかで表わされる金額情報」の組を複数持ち、一組の全ビットが全て０となった後は価値付けの権限を持つ発行者により回収され、厳重な管理の元、次の組の最大金額を示すビット情報を設定額へと減額することにより（設定額相当のビットを有効にする）、新たな価値付けをする。すなわちカード内に予め用意された金額情報の組の個数分だけ繰り返し使用が可能となる。この処理の概要を図７に示す。
【００９１】
ここで、図７について説明する。
【００９２】
メーカによるカード製造時には、カードに金額情報の組が複数設けられ、カードに対してカード製造日付が書き込まれる。この時点では、金額書き込み日付は書き込まれていない（ブランク）。また、金額データとしては、最大金額（例えば１００００円）を示すビットが全ての組に立てられている。なお、ここでは１ビットは５００円を示すものとする。
【００９３】
このようにして製造されたカードは、次のようにして初回金額が設定され発行される。例えば、カードの初回金額を５０００円に設定して発行する場合には、一組目の２０ビットの内の１０ビットが０化（１０ビットが有効化）される。このとき、この一組目に対する金額書き込み日付が書き込まれ、初回金額１００００円が有効とされる。ちなみに、他の組には金額書き込み日付は書き込まれない（ブランク）。
【００９４】
このようにして発行されたカードに書き込まれている残高は、次のようにして差し引かれる。例えば、カードの残高から１５００円分差し引く場合には、一組目の１０ビットの内の３ビットが０化され、金額書き込み日付が更新される。さらに、カードの残高から３５００円分差し引く場合には、一組目の残り７ビット全てのビットが０化（残高０）され、金額書き込み日付が更新される。
【００９５】
このようにして、使用され残高がなくなった場合でも、然るべき価値付けの権限を持つ発行者により二組目の欄に初回金額を設定して使用できる。例えば、初回金額を１００００円に設定して発行する場合には、二組目の２０ビット全てのビットが有効化される。このとき、この二組目に対する金額書き込み日付が書き込まれ、初回金額１００００円が有効とされる。ちなみに、他の組には金額書き込み日付は書き込まれない（ブランク）。
【００９６】
次に、図５、図６、および図７で説明した処理の変形例について説明する。
【００９７】
「減額する際に落としていくビット」の位置順序は図５、図６、および図７では左側から順番として示しているが、カードの正当性確認の一手法としてこの順序をスクランブルし減算の際、端末機器がその状態を確認するようにしてもよい。このビット消去順序のスクランブル例を図８に示す。図８では、Ｎ回目のビット消去（０化）は直前に０にしたビットからＮ個の１を右向きに越えた次の１ビットとした例が示されている。
【００９８】
このように、金額情報の変更は予め立てられたビットを落とすだけとすることにより、不正に金額情報が増額されるのを防止できる。
【００９９】
ｃ．現行カード流用の場合その１（金額データはＡＮＤ書き換えのみ可能）
現行カード、即ち、現在使用されているＩＣカードを利用する場合、金額情報を論理的に「ｂ．専用カードの場合その２」と同様にデータビットのうち何ビットが立っているかで扱い、減算機ではＡＮＤ（論理積）書き換えコマンドとそのアクセス権（キー）だけを持たせることで先に書き込まれている値以上に増額することを阻止する。入金機には完全上書きのコマンドとそのアクセス権を持たせ、入金（増額）を可能にする。金額データのＡＮＤ書き換えの例を図９および図１０に示す。
【０１００】
図９では、カード製造時において、最大金額、例えば１００００円を示すビットが立てられている。なお、ここでは１ビットは５００円を示すものとする。このようなカードの初回金額を５０００円に設定して発行する場合には、カード製造時金額（11111111111111111111）と初回金額（00000000001111111111）とのＡＮＤ（000000000011111111111）が書き込まれる。図１０では、図９において初回金額５０００円に設定されたカードから、例えば１０００分差し引く場合には、初回金額（00000000001111111111）と利用額（00000000000011111111）とのＡＮＤ（00000000000011111111）が書き込まれる。
【０１０１】
このようにしてＡＮＤ書き込みを利用することにより、先に書き込まれている値以上に増額書き込みされるのを防止できる。
【０１０２】
ｄ．現行カード流用の場合その２（１レコード＝１（使用済）金額（ユニット）とし追記のみ可能化）
「ｂ．専用カードの場合その２」で示した「何ビットが立っているかで表わされる金額情報」の「１ビット情報」を「ある１文字、ある文字列、またはある条件に則った関連性のあるー連のデータが書き込まれた１レコード」とし、そのエリアに対するアクセスは追記系のみ可能とすることで、読み出された文字数（＝レコード数）＝使用済み金額とし、金額変更を「減額」方向のみに制限することが可能となる。
【０１０３】
この場合、金額の書き込み（設定）はエリア創成となり、繰り返し使用する場合は、カード内に次々に新しいエリアを作っていくことになる。このとき、そのエリア創成時に設定されるエリアサイズにより規定される追記できるレコード数の最大値が、そのエリア自体が示すプリペイド金額となる。また、各レコードの記録内容を、何らかの規則性や暗号化論理等に従って記録し、読み出し時判定することで金額情報の正当性判定にも使用できる。この処埋の概要を図１１に示す。
【０１０４】
ここで、図１１について説明する。
【０１０５】
例えば、１００００円まで価値付け可能なカードを製造する場合には、１レコードを５００円として２０レコードのエリアが創成される。このようにして製造されたカードの初回金額（入金額）を例えば５０００円（１０レコード）にして発行する場合には、生成されたエリアに対して１０レコード書き込まれる。これにより、１０レコード分減額されたことになり、残り１０レコードが残高となる。このようにして発行されたカードから１０００円（２レコード）分差し引く場合には、残り１０レコードに対して２レコードが書き込まれる。これにより、２レコード分減額されたことになり、残り８レコードが残高となる。また、図８の各数値位置に当たるスクランブルデータなどをレコードとすることにより、金額情報をより安全なものとすることができる。
【０１０６】
このようにして、所定のエリアを設けこのエリアに対するアクセスを追記系のみとすることにより、先に書き込まれているデータが消されない。よって、先に書き込まれている利用金額が減額されるのを防止できる。
【０１０７】
（２）減算許可条件
ａ．専用カードの場合その１（加算／減算−異アクセス権の別コマンド化）
「（１）金額書き換えコマンド」の「ａ．専用カードの場合その１」と同様に、加算と減算それぞれ異なるコマンドを持つカードとした上で、各コマンドの実行可能条件（単純にはキー）を異ならせ、減算機には減算コマンドのアクセス権（減算コマンドを実行可能とするキー）のみを搭載する。カードメモリ上の金額情報はその金額を示す数値で表される。
【０１０８】
ｂ．専用カードの場合その２（書き換え前後数値比較機能＋加／減異アクセス権化）
金額書き換えのコマンドを特に加算と減算には分けない代わりに、新たに書き込む数値と先に書かれていた数値の比較機能を持たせ、加算と減算に異なるアクセス権（それぞれ異なるキー値）を設定し、減算機には減算のアクセス権（減算を実行可能とするキー）のみを搭載する。この処理の概要を図１２に示す。
【０１０９】
ここで、図１２について説明する。
【０１１０】
カード内処理において、端末機器（加算機または減算機）から書き換えコマンドおよび新規値が受信されると（ＳＴ３０）、受信された新規値と現在値とが比較される（ＳＴ３２）。このとき、新規値と現在地とが等しければ現在値変更不要応答がなされる（ＳＴ３４）。
【０１１１】
比較された結果、現在値より新規値が大きいとき、つまり加算処理のときには、加算機キーの照合が行われる（ＳＴ３６）。加算機キーの照合がＯＫのとき、つまり加算機が確認されると、新規値の書き込みが行われる（ＳＴ４０）。加算機キーの照合がＮＧのとき、つまり加算機の確認ができないと、新規値の書き込みは行われずに、エラー応答がなされる（ＳＴ４２）。
【０１１２】
比較された結果、現在値より新規値が小さいとき、つまり減算処理のときには、減算機キーの照合が行われる（ＳＴ３８）。減算機キーの照合がＯＫのとき、つまり減算機が確認されると、新規値の書き込みが行われる（ＳＴ４０）。減算機キーの照合がＮＧのとき、つまり減算機の確認ができないと、新規値の書き込みは行われずに、エラー応答がなされる（ＳＴ４４）。
【０１１３】
なお、カードメモリ上の金額情報はその金額を示す数値で表される。また、数値データで表されるデータ内容を特に「金額」に限定しない、汎用のカードを想定することもできる。すなわち、カード内メモリへのエリア創成時、そのエリアへのデータ書き込みについては、書き換え前後の値を比較しアクセス権に従って実行可否を判定するエリアとしての定義ができるようにする。金額データ記録以外の用途としては、たとえば施設利用回数を建物へ入る際に記録していったり、そのカードを差し込まないと操作できないゲームや機器においてエラーおよび操作ミスの回数を記録していく等、何らかの累積データを蓄積していくこともできる。この場合、金額情報とは反対に、減算のアクセス権を加算のアクセス権より厳しい設定とする。上記説明したようなエリアを１枚のカードに複数設定し、複数の金額データ、およびその他の複数の累積データを同一のカードに記録することも可能である。
【０１１４】
ｂ．現行カード流用の場合（１レコード＝１金額（ユニット）とし追記・消去個別にアクセス権設定）
「（１）金額書き換えコマンド」の「現行カードを流用する場合」と同様に、「何ビットが立っているかで表わされる金額情報」の「１ビット情報」を「ある１文字が書き込まれた１レコード」とした上で、そのエリアに対するアクセスを追記系（金額データなど）と消去系（累積データなど）のみ可能としそれぞれに異なるアクセス権を設定し、減算機にはいずれかー方のアクセス権だけを設定する。
【０１１５】
この方式では、減算機に追記系か消去系のどちらを設定するかによって、読み出された文字数（＝レコード数）が使用済み金額と未使用金額のどちらを表すことになるかが決定される。すなわち、減算機に追記系を設定した場合、「（１）金額書き換えコマンド」の「現行カードを流用する場合」と同様に、読み出された文字数（＝レコード数）＝使用済み金額であり、減算機に消去系を設定した場合、読み出された文字数（＝レコード数）＝未使用金額となる。この場合、減算機には設定されない方のコマンドが、より厳しい秘匿管理のもと、カードに価値付けをする入金機等に設定される。この処理は図１１の発展形となる。
【０１１６】
（３）乱数
乱数生成・出力の都度、出力した値をカード内に記録しておき、次の乱数生成に使用することで、外部から同一の値を与えられた場合でもカードが出力する乱数を都度異なる値とする。カード内に乱数エリアを用意しこのエリアの内容を都度更新しながら乱数を生成・出力する処理を図１３に示す。
【０１１７】
ここで、図１３について説明する。
【０１１８】
カード製造時において、カード毎に異なる値、例えばカード製造番号が初期値として乱数エリアに書き込まれる。
【０１１９】
外部からの値を受け、この外部からの値と乱数エリアの値とで初回乱数が生成され（ＳＴ５０）、生成された乱数が出力される。このとき、乱数エリアにはＳＴ５０で生成された乱数が新規値として書き込まれる。
【０１２０】
次に、外部からの値を受けると、この外部からの値と前回（ＳＴ５０）乱数エリアに書き込まれた値とで乱数が生成され（ＳＴ５２）、生成された乱数が出力される。このとき、乱数エリアにはＳＴ５２で生成された乱数が新規値として書き込まれる。
【０１２１】
次に、外部からの値を受けると、この外部からの値と前回（ＳＴ５２）乱数エリアに書き込まれた値とで乱数が生成され（ＳＴ５４）、生成された乱数が出力される。このとき、乱数エリアにはＳＴ５４で生成された乱数が新規値として書き込まれる。
【０１２２】
次に、外部からの値を受けると、この外部からの値と前回（ＳＴ５４）乱数エリアに書き込まれた値とで乱数が生成され（ＳＴ５６）、生成された乱数が出力される。このとき、乱数エリアにはＳＴ５６で生成された乱数が新規値として書き込まれる。
【０１２３】
このように、乱数エリアの内容を更新しながら乱数を生成、出力することにより、出力される乱数の値を手がかりとしてカード内の暗号化キー値および暗号化理論の解析を防止できる。
【０１２４】
（４）秘密鍵
基本的に複数の秘密鍵をカードと機器で持ち合い、以下の様にどの秘密鍵を使うかが都度不定となる方法をとる。
【０１２５】
ａ．暗号化対象データの特長による秘密鍵番号自動選択
外部から与えられる暗号化すべきデータの特長によっていずれかのキーを選択し暗号化に使用する。機器側でも外部から読み出せない形で秘密鍵のセットとキー選択の論理を持っており独自に同じキーを選択する。暗号化すべきデータの特長分類法を秘密とすることで、秘密鍵の解析を困難にできる。
【０１２６】
暗号化対象データの特長とは、例えば、ある数で割ったときの余り（この場合ある数＝内蔵する乱数の数＋１など）、全桁のＥＸ−ＯＲ（排他的論理和）値、偶数の個数の下一桁等である。
【０１２７】
ｂ．乱数データの特長による秘密鍵番号自動選択
「（３）乱数」のようにカードに格納されている乱数データか、先に何らかの乱数をカードが出力していた場合、その乱数データの特徴によっていずれかのキーを選択し暗号化に使用する。機器側でも外部から読み出せない形で秘密鍵のセットとキー選択の論理を持っており独自に同じキーを選択する。
【０１２８】
乱数データの特長とは、たとえばある数で割ったときの余り（この場合ある数＝内蔵する乱数の数＋１など）、全桁のＥＸ−ＯＲ値、偶数の個数の下一桁等が考えられる。
【０１２９】
また、カードに格納されている乱数を外部に出力せずに使用した場合、外部ではその値を知る術がないため、何らかの方法でカードはその値か使用した秘密鍵番号を外部に通知しなくてはならないが、格納乱数値や秘密鍵番号そのものを出力することはそれぞれの使用方法に鑑み不適当であり、その値自体を暗号化する必要がある。
【０１３０】
ｃ．日付・時刻データによる秘密鍵番号自動選択
外部からカードヘ与えられるその処理が行なわれる瞬間の日付・時刻データの特長によっていずれかのキーを選択し暗号化に使用する。機器側でも外部から読み出せない形で秘密鍵のセットとキー選択の論理を持っており独自に同じキーを選択する。
【０１３１】
日付・時刻データの特長とは、たとえば日付時刻データを並べてたり単純分換算、秒換算等して数値化してある数で割ったときの余り（この場合ある数＝内蔵する乱数の数＋１など）、全桁のＥＸ−ＯＲ値、偶数の個数の下一桁等が考えられる。
【０１３２】
ｄ．暗号化対象データと乱数データと日付・時刻データによる秘密鍵番号自動選択
前記の各種データを関連づけて特長を拾い、いずれかのキーを選択し暗号化に使用する。機器側でも外部から読み出せない形で秘密鍵のセットとキー選択の論理を持っており独自に同じキーを選択する。また、カードごとに付与される「カード番号」や「カード発行日」等カード個別の値を選択するためのデータとして関連づけることも考えられる。
【０１３３】
関連づけとは、数値として足し合わせたり、数値として掛け合わせたり、全桁を一連のデータとして並べたり、２進数化して論理演算する等が考えられる。また、各データ別個に特長を拾った上でこの様に関連づけする手順も考えられる。
【０１３４】
ここで拾うデータの特長とは、たとえばある数で割ったときの余り（この場合ある数＝内蔵する乱数の数＋１など）、全桁のＥＸ−０Ｒ値、偶数の個数の下一桁等が考えられる。
【０１３５】
（５）必要情報出力機能
カード内に分散して格納されているプリペイド取引に必要な各種の情報をカードが選択して取り出し、ひとまとめに（一電文で）出力するカードとする。どの情報を選択するかは都度外部から通知する方法、予め外部から通知設定しておく方法、プリペイド用として始めから規定してしまった上でカードを作る方法等がある。図１５に概要を示す。
【０１３６】
ここで図１５について説明する。まず、端末機器側からカード側に対して、プリペイド情報のアクセス用キーの照合が要求される。カード側ではこの要求を受けてキー照合が行われ、カード側から端末機器側に対してレスポンスが返される。次に、端末機器側からカード側に対して、プリペイド関連情報の読み出しが要求される。カード側ではこの要求を受けて各エリアから必要情報を読み出し、カード側から端末機器側に対して読み出された必要情報、即ち、発行日、残高、鍵番号などの情報が送出される。
【０１３７】
また、カードの初期応答（アンサ・トウ・リセット）にこれらの情報を乗せて出力するようにしてもよい。この初期応答を使用した場合の例を図１６に示す。ここで図１６について説明する。まず、ＩＣカードの活性化が行われる。即ち、端末機器側からカード側に対して電源および各種信号が送られる。カード側ではこれら信号を受けて初期応答を返す。この初期応答に上記したプリペイド取引に必要な情報を乗せる。その後、実際のプリペイド取引が行われる。
【０１３８】
以上のようにすることで、プリペイド取引処理を高速に行うことができる。
【０１３９】
（６）電文正当性確認
秘密鍵をカードと端末機器で持ち合い、相互に共有する何らかのデータをこの秘密鍵で暗号化し、この暗号化されたデータを正当性確認情報として電文の一部として含め、その電文が正当な相手から送られてきたものであることを正当性確認情報の内容で、カードと端末機器双方が確認する。
【０１４０】
端末機器から送られる電文を基にしたカード側での端末機器の確認は、主として偽造された端末機器による正当なカードに対する金額の書込（増額）を防止する。カードから送られる電文を基にした端末機器側でのカードの確認は、主として偽造されたカードによる正当な機器での買い物（購入）を防止する。また、端末機器側がカードを不正と判定した場合、そのままカードを保持し警報を発したり、端末機器内部に回収することもできる。
【０１４１】
以下にカードと機器双方における正当性確認手順の例を示す。また、これらを複合して各々で電文の正当性を確認するやりとりの例を図１７に示す。この処理の使われ方としては、カード側での機器からのコマンド電文の正当性確認は、偽造カードによる商品等の購入を防止する効果が狙いとなるため、図１７に示すように相互に正当性確認が行われるケースは少ない。即ち、偽造カードに正規の入金機で現金を支払って入金することも、商品販売に使用される減算機を偽造することも、いずれも（不正な）利益は生み出さないためであるが、使用者が偽造カードと知らない場合等に不正カードを回収し、出所を探るには有効である。
【０１４２】
なお、金額書き換えコマンドの使用に至る前に、カードと端末機器相互に正当な相手であることの確認のため「相互認証」を実行する運用も考えられ、本案と併用することも可能である。
【０１４３】
ａ．カード側での正当性確認
次の手順（図１７参照）で端末機器からの金額書き換えコマンド自体の正当性を確認し、正当と判定されたときのみカードは金額書き換えを実行する。
【０１４４】
＊２０．金額書き換えに先立ち、端末機器がカードに対して乱数出力を要求し、カードがこれに応え乱数を出力する。
【０１４５】
＊２１．端末機器側では取得した乱数、およびこれから書き込もうとする処理時刻、書き込み金額などを秘密鍵で暗号化する。秘密鍵で暗号化された乱数が正当性確認情報となる。
【０１４６】
＊２２．端末機器からカードへ＊２１で生成したデータを金額書き換えコマンド電文の一部として送信する。
【０１４７】
＊２３．金額書き換えコマンド電文を受けたカードは、先に送出した乱数を秘密鍵で暗号化し正当性確認情報を生成する。この生成された正当性確認情報と受け取られた電文内の正当性確認情報とを比較することにより機器からの電文の正当性を確認する。正当性が確認された場合のみカードは金額書き換えを実行する。
【０１４８】
ｂ．端末機器側での正当性確認
前記カード側での正当性確認の＊２３で、カード側で電文を正当と判定し金額書き換えが実行されると、処理結果の如何に関わらずカードは端末機器に対して実行結果通知レスポンス電文を返すが、このとき次の手順によりカードからの結果通知電文自体が正当なものであるかどうかを確認し、正当と判定されその内容が金額書き換え処理が正常終了を示すときのみ端末機器はカードによる処理を実行する。
【０１４９】
＊２４．金額書き換えが実行されたカードは、金額書き換えコマンド電文の一部として機器から受け取った処理時刻、書き込み金額等を秘密鍵で暗号化する。この暗号化されたデータが正当性確認情報となる。
【０１５０】
＊２５．カードから端末機器へ＊２４で生成したデータを、書き込みコマンド電文の実行結果通知（応答）電文の一部として送信する。
【０１５１】
＊２６実行結果通知（応答）電文を受けた端末機器は、内部で同様に正当性確認情報を生成し受け取った電文内の正当性確認情報と比較することで、カードからの電文の正当性を確認し、照合ＯＫのときにのみ機器はそのカードを使用して所望される動作の最終段階、例えばプリペイド自販機による商品購入時の商品の送出を実行する。
【０１５２】
このようにすることで、端末機器とカードとが相互に正当性を確認することができ、不正な端末機器またはカードによる取引を防止できる。
【図面の簡単な説明】
【０１５３】
【図１】プリペイドカードとして使用されるＩＣカード処理の従来例を説明するフローチャート。
【図２】相互認証手順の従来例を説明する図。
【図３】金額書き換えコマンド使用時におけるカード処理の従来例を説明する図。
【図４】減算コマンド使用時におけるカード処理の一例を説明する図。
【図５】最大金額から減額のみ可能化する処理の概要の一例を示す図その１。
【図６】最大金額から減額のみ可能化する処理の概要の一例を示す図その２。
【図７】最大金額から減額のみ可能化する処理を複数回可能としたときの概要の一例を示す図。
【図８】ビット消去順序のスクランブルの一例を示す図。
【図９】金額データのＡＮＤ書き換えの一例を示す図その１
【図１０】金額データのＡＮＤ書き換えの一例を示す図その２
【図１１】何らかの規則性または暗号化理論などに従った記録内容の１レコードを１使用済金額（ユニット）とし、追記のみ可能化した場合の処理概要の一例を示す図。
【図１２】書き換え前後のデータ比較処理の一例を説明するフローチャート。
【図１３】乱数エリアの内容を更新しながら乱数を生成し出力する処理のイメージを表す図。
【図１４】従来のプリペイド処理におけるＩＣカードからの必要情報の読み出し方法を説明する図。
【図１５】ＩＣカードからプリペイド処理に必要な情報をひとまとめに読み出す方法を説明する図。
【図１６】ＩＣカードからプリペイド処理に必要な情報をＩＣカードの初期応答に乗せて読み出す方法を説明する図。
【図１７】ＩＣカードと端末機器との双方で電文正当性確認を行う処理の一例を説明する図。
【図１８】この発明の一実施の形態に係るＩＣカードに内蔵されるＩＣチップの構造を概略的に示す図。
【図１９】ＩＣカードを取り扱うＩＣカード処理装置（端末機器）の構成を概略的に示す図。
【符号の説明】
【０１５４】
１０…制御部（処理手段）
１２…データメモリ（記憶手段）
１４…プログラムメモリ（処理手段）
１６…送受信部（送受信手段）
２０…制御部（処理手段）
２２…記憶部（記憶手段）
２４…操作部
２６…ＣＲＴディスプレイ
２８…送受信部（送受信手段）
【図１】
2004171596.tif 000003
【図２】
2004171596.tif 000004
【図３】
2004171596.tif 000005
【図４】
2004171596.tif 000006
【図５】
2004171596.tif 000007
【図６】
2004171596.tif 000008
【図７】
2004171596.tif 000009
【図８】
2004171596.tif 000010
【図９】
2004171596.tif 000011
【図１０】
2004171596.tif 000012
【図１１】
2004171596.tif 000013
【図１２】
2004171596.tif 000014
【図１３】
2004171596.tif 000015
【図１４】
2004171596.tif 000016
【図１５】
2004171596.tif 000017
【図１６】
2004171596.tif 000018
【図１７】
2004171596.tif 000019
【図１８】
2004171596.tif 000020
【図１９】
2004171596.tif 000021
【手続補正書】
【提出日】平成16年3月3日(2004.3.3)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば不揮発性のデータメモリおよびＣＰＵ（セントラル・プロセッシング・ユニット）などの制御素子を有するＩＣ（集積回路）チップを内蔵したＩＣカード、このＩＣカードにおけるデータ出力方法、およびデータ出力システムに関する。
【背景技術】
【０００２】
近年、不揮発性のデータメモリおよびＣＰＵなどの制御素子を有するＩＣチップを内蔵したＩＣカードが開発され、クレジットカードや医療カードなどの個人情報蓄積媒体として利用されている。また、この種のＩＣカードをプリペイドカードとして使用する動きが見られる。
【０００３】
ここで、ＩＣカードをプリペイドカードとして使用する場合のカード処理の流れを図１のフローチャートを参照して説明する。
【０００４】
まず、ＩＣカードとＩＣカード処理を行う端末機器によって、このＩＣカードおよびこの端末機器の両者の正当性が確認される（ＳＴ１０）。正当性は、後に説明する乱数、秘密鍵などを使用した相互認証という方法により行われる。両者の正当性が確認されると、有効期限が読み出され（ＳＴ１２）、有効期限内のカードであるかどうかチェックされる。有効期限内であると判断されたときには（ＳＴ１４、ＹＥＳ）、カードに記録されている残高が読み出される（ＳＴ１６）。残高が存在するときに限り（ＳＴ１８、ＹＥＳ）、残高から利用金額が差し引かれ、新残高が算出される（ＳＴ２０）。このとき、新残高が０以上（新残高≧０）になることを条件として（ＳＴ２２、ＹＥＳ）、カード新残高が書き込まれる（ＳＴ２４）。
【０００５】
上記説明したカード処理の流れにおける個々の処理について、以下詳細に説明する。
【０００６】
（１）金額書き換えコマンド
ΙＣカードをプリペイドカードとして使用する場合、カード内には金額情報として金額が数値として書き込まれている。このため、ＩＣカードカードを処理するカード端末機器によるカード内の金額の書き換え手順は、「カード内の現在残高読み出し→端末機器内で減算→減算結果を新残高としてカードヘ書き込み」となる。このため、自動販売機またはカード電話機などの単純な「減算」機能だけが必要な端末機器（＝減算機）においても、内部処理としてはカード内残高を増すのと同じ数値の「書き換えコマンド」により減額のための書き込みが行われる。
【０００７】
（２）減算許可条件
前記「金額書き換えコマンド」の様に、カード内残高を増すのと同じ数値の「書き換えコマンド」により減額のための書き込みを行なっている減算機は、金額を増額するに足るアクセス権を保有している。
【０００８】
（３）乱数
カードがカード自身および端末機器の認証のために出力する乱数は、外部から与えられるある乱数生成のための情報に対して一対一の値となる。乱数の使い方のー例として、相互認証の手順を図２に示す。この図２を参照して相互認証について説明する。
【０００９】
＊０．端末機器側で乱数Ｒ１が生成される。
【００１０】
＊１．端末機器からカードへ、端末機器側指定秘密鍵番号Ｍ（１〜５）とともに乱数Ｒ１が送信される。
【００１１】
＊２．カード側で、乱数エリアに格納されている値（カード固有番号など）と乱数Ｒ１により乱数Ｒ２が生成される。
【００１２】
＊３．カードから端末機器へ、カード指定秘密番号鍵Ｎ（１〜５）とともに乱数Ｒ２が送信される。
【００１３】
＊４．端末機器側で、カード側指定秘密鍵ＮＮＮＮにより乱数Ｒ２が暗号化されＣ２が生成される。
【００１４】
＊５．端末機器からカードへＣ２が送信される。
【００１５】
＊６．カード側で、カード側指定秘密鍵ＮＮＮＮにより乱数Ｒ２が暗号化されＣ２Ｘが生成される。
【００１６】
＊７．カード側で、端末機器から受け取られたＣ２と＊６で生成されたＣ２Ｘとが比較される。Ｃ２とＣ２Ｘとが一致すればカードにより端末機器の正当性が確認される。
【００１７】
＊８．カード側で、端末機器側指定秘密鍵ＭＭＭＭにより乱数Ｒ１が暗号化されＣ１が生成される。
【００１８】
＊９．カードから端末機器へ、Ｃ２とＣ２Ｘとの比較結果および生成されたＣ１が送信される。
【００１９】
＊１０．端末機器側で、端末機器側指定秘密鍵ＭＭＭＭにより乱数Ｒ１が暗号化されＣ１Ｘが生成される。
【００２０】
＊１１．端末機器側で、カードから受け取られたＣ１と＊１０で生成されたＣ１Ｘが比較される。Ｃ１とＣ１Ｘとが一致すれば端末機器によりカードの正当性が確認される。
【００２１】
以上説明したようにして相互認証が行われ、カードおよび端末機器の正当性が確認される。
【００２２】
（４）秘密鍵
カード自身と端末機器の相互認証および後述の正当性確認情報生成などに使用され、カードと端末機器が相互に持ち合う秘密鍵は、一種類の固定値か、複数持つ場合は外部（＝端末機器側）から指定される。
【００２３】
（５）必要情報出力機能
カードの有効期限および残高などの、いずれもプリペイド取引に必要ではあるが、同一エリアに格納するのが適当でない複数の情報を機器側に読み出すには、「リードコマンド」が複数回使用されて各エリアに対して個別にアクセスされる。この概要を示す図１４について説明する。
【００２４】
まず、端末機器側からカード側に対して、発行日格納エリアの選択が要求される。カード側ではこの要求を受けてエリア選択が行われ、カード側から端末機器側に対してレスポンスが返される。次に、端末機器側からカード側に対して、発行日格納エリアアクセスキーの照合が要求される。カード側ではこの要求を受けてキー照合が行われ、カード側から端末機器側に対してレスポンスが返される。次に、端末機器側からカードに対して、発行日（有効期限）の読み出しが要求される。カード側ではこの要求を受けて発行日を読み出し、カード側から端末機器側に対して発行日が送出される。次に、端末機器側からカード側に対して、残高格納エリアの選択が要求される。カード側ではこの要求を受けてエリア選択が行われ、カード側から端末機器側に対してレスポンスが返される。次に、端末機器側からカード側に対して、残高格納エリアのアクセスキーの照合が要求される。カード側ではこの要求を受けてキー照合が行われ、カード側から端末機器に対してレスポンスが返される。次に、端末機器側からカードに対して、残高の読み出しが要求される。カード側ではこの要求を受けて残高を読み出し、カード側から端末機器側に対して残高が送出される。次に、端末機器側からカード側に対して、秘密鍵番号のアクセスキーの照合が要求される。カード側ではこの要求を受けてキー照合が行われ、カード側から端末機器側に対してレスポンスが返される。次に、端末機器側からカード側に対して、秘密鍵番号の読み出しが要求される。カード側ではこの要求を受けて秘密鍵番号を読み出し、カード側から端末機器に対して秘密鍵番号が返される。以下、このようにして処理が継続される。
【００２５】
（６）電文正当性確認
カードと端末機器間で交わされるコマンド（リクエスト）とレスポンス（ステータス）の各電文は、通信制御としてのキャラクタ単位のパリティ、電文単位のＢＣＣ（ブロックチェックコード）などのエラーがないこと、電文の形式が相互に規定されたものであることといった一般的伝送のエラーの他、認証関係のコマンドにおけるキーや乱数の値といったアプリケーション的データの不備がなければ全ての電文は相互に処理される。
【発明の開示】
【発明が解決しようとする課題】
【００２６】
しかし、上記説明した（１）〜（６）には夫々問題点があり、その問題点を（１）〜（６）に対応させて以下に記載する。
【００２７】
（１）金額書き換えコマンド
自動販売機などの減算機においても、内部処理としてはカード内残高を増すのと同じ数値の「書き換えコマンド」により減額のための書き込み処理が行われている。そのため、このような減算機を不正に細工することで「減算」ではなく「加算＝増額」が可能となる。通常、カード内の金額を増すための書き込みをする「カード入金機」は、その機能から厳重に管理され不正使用できない策が講じられるが、本来「減算」が主機能である自動販売機やカード電話機といった減算機は、入金機に不正改造することを目的とした入手が容易であり、カード変造を目論む者にとって格好のツールとなる。また、金額の書き換えには、キー照合コマンドによるアクセスを除いて、一旦現在値を読み出して、機器側で減算した値を新規値として書き込むというカードに対する２回のアクセスが必要である。この処理の手順を図３を参照して説明する。
【００２８】
まず、端末機器（減算機）側からカード側へ、キー照合コマンドとともにキーが送信される。カード側において、端末機器側から送信されるキーが受信され照合される。次に、カード側から端末機器へ、キー照合結果が送られる。このとき、送られるキー照合結果が、ＮＧの場合には処理が中断される。次に、端末機器側からカードへ、読み出しコマンドが送信される。カード側において、端末機器側から送信される読み出しコマンドが受信されると、カードに記録されている現在値（残高）が端末機器へ送られる。端末機器において、読み出された現在値から利用額が差し引かれる。このとき、差引額がマイナス（差引額＜０）となってしまったときは、カード側からエラーが返され処理は中断される。差引額が０以上（差引額≧０）であることを条件として、次に、端末機器側からカード側へ、書き込みコマンドとともに差引額である新規値が送信される。カード側において書き込みコマンドと新規値が受信されると、受信された新規値が書き込まれる。そして、カード側から端末機器側へ、新規値書き込み結果が送信され、この書き込み結果が端末機器側において確認される。
【００２９】
（２）減算許可条件
金額を増額するに足るアクセス権を保有している減算機は、「（１）金額書き換えコマンド」の例と同様に、これを不正に細工することで「減算」ではなく「加算＝増額」が可能となり、カード変造を目論む者にとって格好のツールとされる。
【００３０】
（３）乱数
外部からカードヘ種々の値を与え、その都度出力される乱数の値を解析することで、カード内の暗号化キー値と暗号化論理が解析でき、カード偽造の手がかりとされる。
【００３１】
（４）秘密鍵
カードによりデータを暗号化する際、外部からカードヘ固定の暗号化すべきデータを与え、その都度出力される暗号化された値を解析することで、カード内のキー値が解析され、カード偽造の手がかりとされる。キーを複数持つ場合は、外部から番号を指定して同様に解析される。
【００３２】
（５）必要情報出力機能
プリペイド取引に必要な情報としては、カード発行日（利用開始日）または有効期限、カード内プリペイド残高、前回利用日、電文正当性確認情報生成用秘密鍵番号、および乱数などがある。これらはアクセス権の異なる場合、アクセス権ごとにそれぞれ別個の領域に格納されるため、機器がカードアクセスしてプリペイド取引を実施しようとする場合別々に読み出す必要があり、余分な処理時間がかかる。
【００３３】
（６）電文正当性確認
金額書き換えの条件が整えば、偽造された端末機器からの金額書き換えのコマンド電文により正当なカード内の記録金額を書き換える（増額）ことができてしまう。また、正当な自販機等の端末機器からの金額減算コマンドに対して、あたかも正常にカード内金額を減算したレスポンスを返す機能を有する不正なカードにより物品購入ができてしまう。
【００３４】
この発明の目的は、上記したような事情の少なくとも１つに鑑み成されたものであって、変造または偽造などの不正を防止できるＩＣカード、データ出力方法、およびデータ出力システムを提供することにある。
【課題を解決するための手段】
【００３５】
この発明は、外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段に分散されて記憶されているこのＩＣカードの取引に必要な各種データを読み出し；前記読み出されたデータをこのＩＣカードの初期応答に乗せて出力する。
【発明の効果】
【００３６】
変造または偽造などの不正を防止できるＩＣカード、データ出力方法、およびデータ出力システムを提供できる。
【発明を実施するための最良の形態】
【００３７】
以下、この発明の実施の形態について図面を参照して説明する。
【００３８】
図１８は、この発明の一実施の形態に係るＩＣカードに内蔵されるＩＣチップの構造を概略的に示す図である。
【００３９】
図１８に示すように、ＩＣカードは、データの各種処理などを行うＣＰＵからなる制御部１０と、ＩＣカードの取引上必要な金額情報などのデータを記憶するデータメモリ１２と、記憶内容が書き換え不可能なプログラムメモリ１４と、このＩＣカードを取り扱う端末機器とのデータの送受信を行う送受信部１６などで構成されている。制御部１０は、データメモリ１２に記憶されている数値データの加算処理または減算処理を必要に応じて行う。また、減算処理において数値データがマイナス値をとるときには、減算処理を中止する制御も行う。
【００４０】
図１９は、上記説明したＩＣカードを取り扱うＩＣカード処理装置、即ち端末機器の構成を概略的に示す図である。
【００４１】
図１９に示すように、端末機器は、データの各種処理などを行うＣＰＵからなる制御部２０と、各種データを記憶する記憶部２２と、オペレータからの各種操作を受け付ける操作部２４と、カードから読み出されたデータなどを表示するＣＲＴディスプレイ２６と、ＩＣカードとのデータの送受信を行う送受信部２８などで構成されている。
【００４２】
以下、問題点（１）〜（６）に対応させて、実施の形態について説明する。
【００４３】
（１）金額書き換えコマンド
ａ．専用カードの場合その１（加算／減算−別コマンド化）
「加算」するコマンドと「減算」するコマンドとをそれぞれ異なるコマンドとして持つ専用カードとして、減算機には減算コマンドのみを搭載する。カードメモリ上の金額情報はその金額を示す数値で表される。また、上記した減算コマンドを使用すれば、減算の際は現在値を読み出さずにいきなり減算したい値をカードに送り込めば、カード内で減算処理して応答するという手順が可能となる。
【００４４】
この手順の例を図４を参照して説明する。
【００４５】
まず、端末機器（減算機）側からカード側へ、キー照合コマンドとともにキーが送信される。カード側において、端末機器側から送信されるキーが受信され照合される。次に、カード側から端末機器へ、キー照合結果が送られる。このとき送られるキー照合結果が、ＮＧの場合には処理が中断される。次に、端末機器側からカードへ、減算コマンドとともに利用額が送信される。カード側において、端末機器から送信される減算コマンドおよび利用額が受信されると、カードに記録されている現在値（残高）から利用額が差し引かれる（減算コマンドにより減算処理）。
【００４６】
このとき、差引額がマイナス（差引額＜０）となってしまったときは、カード側から端末機器側へエラーが返され、処理は中断される。差引額が０以上（差引額≧０）であることを条件として差引額である新規値がカードに書き込まれる。そして、カード側から端末機器側へ、新規値書き込み結果（減算）が送信され、この書き込み結果が端末機器側において確認される。
【００４７】
上記説明したカード処理では、カード内データを金額情報として取り扱い、差引額がマイナスとなるときには処理が中断されるとしたが、マイナス値を取り扱えるようにしてもよい。
【００４８】
このように、減算コマンドと加算コマンドとを異なるコマンドとすることにより、減算機には減算コマンドのみがセットされる。よって、減算機を不正改造して入金機とすることは困難となるため、各種不正を防止できる。また、図４の説明から分かるように、金額の書き換え時に、キー照合コマンドによるアクセスを除き、減算コマンドによる一度のアクセスで済む。
【００４９】
ｂ．専用カードの場合その２（最大金額から減額のみ可能化）
金額を変更するコマンドは機能的に「減額」のみとする。つまり、第１の状態（０）または第２の状態（１）からなるビットによるビットデータで数値データ（金額情報）を示す。そして、このビットデータによる数値データの変更に関するアクセスを、第１の状態のビットを第２の状態のビットにするか、または第２の状態のビットを第１の状態のビットにするかどちから一方だけとする。
【００５０】
すなわち、金額情報はデータビットのうちの何ビットが立っているかで表し、カード内での金額情報変更に関するアクセスは、これらのビットを倒す（減らす、落とす、０化する）機能だけとする。初回の価値付けでは、予め用意された最大金額を示すビット情報のうち所定数のビットを有効にする（最大ビット数から初回の価値付け設定額へ減額する）。この場合、一枚のカードは初期の価値付けをされ利用者の手に渡り、金額が０となった後は廃棄されることが前提となる。この処理の概要を図５および図６に示す。
【００５１】
まず、図５について説明する。
【００５２】
メーカによるカード製造時には、カードに対してカード製造日付が書き込まれる。この時点では、金額書き込み日付は書き込まれていない（ブランク）。また、金額データとしては、最大金額（例えば１００００円）を示すビットが立てられている。なお、ここでは１ビットは５００円を示すものとする。
【００５３】
このようにして製造されたカードは、次のようにして初回金額（残高）が設定され発行される。例えば、カードの初回金額を５０００円に設定して発行する場合には、１０ビットが０化（１０ビットが有効化）される。このとき、金額書き込み日付が書き込まれることにより、初回金額５０００円が有効とされる。
【００５４】
このようにして発行されたカードに書き込まれている残高は、次のようにして差し引かれる。例えば、カードの残高から１０００円分差し引く場合には、２ビットが０化され、金額書き込み日付が更新される。このようにして、使用され、残高がなくなるとこのカードは廃棄される。
【００５５】
続いて、図６について説明する。
【００５６】
メーカによるカード製造時には、カードに対してカード製造日付が書き込まれる。この時点では、金額書き込み日付は書き込まれていない（ブランク）。また、金額データとしては、最大金額（例えば１００００円）を示すビットが立てられている。なお、ここでは１ビットは５００円を示すものとする。
【００５７】
このようにして製造されたカードは、次のようにして初回金額が設定され発行される。例えば、カードの初回金額を１００００円に設定して発行する場合には、全ビットが有効化される。このとき、金額書き込み日付が記録され、初回金額１００００円が有効とされる。
【００５８】
このようにして発行されたカードに書き込まれている残高は、次のようにして差し引かれる。例えば、カードの残高から１０００円分差し引く場合には、２ビットが０化され、金額書き込み日付が更新される。このようにして、使用され、残高がなくなるとこのカードは廃棄される。
【００５９】
また、次の様なカードとすることで一定回数の繰り返し使用も可能となる。「何ビットが立っているかで表わされる金額情報」の組を複数持ち、一組の全ビットが全て０となった後は価値付けの権限を持つ発行者により回収され、厳重な管理の元、次の組の最大金額を示すビット情報を設定額へと減額することにより（設定額相当のビットを有効にする）、新たな価値付けをする。すなわちカード内に予め用意された金額情報の組の個数分だけ繰り返し使用が可能となる。この処理の概要を図７に示す。
【００６０】
ここで、図７について説明する。
【００６１】
メーカによるカード製造時には、カードに金額情報の組が複数設けられ、カードに対してカード製造日付が書き込まれる。この時点では、金額書き込み日付は書き込まれていない（ブランク）。また、金額データとしては、最大金額（例えば１００００円）を示すビットが全ての組に立てられている。なお、ここでは１ビットは５００円を示すものとする。
【００６２】
このようにして製造されたカードは、次のようにして初回金額が設定され発行される。例えば、カードの初回金額を５０００円に設定して発行する場合には、一組目の２０ビットの内の１０ビットが０化（１０ビットが有効化）される。このとき、この一組目に対する金額書き込み日付が書き込まれ、初回金額１００００円が有効とされる。ちなみに、他の組には金額書き込み日付は書き込まれない（ブランク）。
【００６３】
このようにして発行されたカードに書き込まれている残高は、次のようにして差し引かれる。例えば、カードの残高から１５００円分差し引く場合には、一組目の１０ビットの内の３ビットが０化され、金額書き込み日付が更新される。さらに、カードの残高から３５００円分差し引く場合には、一組目の残り７ビット全てのビットが０化（残高０）され、金額書き込み日付が更新される。
【００６４】
このようにして、使用され残高がなくなった場合でも、然るべき価値付けの権限を持つ発行者により二組目の欄に初回金額を設定して使用できる。例えば、初回金額を１００００円に設定して発行する場合には、二組目の２０ビット全てのビットが有効化される。このとき、この二組目に対する金額書き込み日付が書き込まれ、初回金額１００００円が有効とされる。ちなみに、他の組には金額書き込み日付は書き込まれない（ブランク）。
【００６５】
次に、図５、図６、および図７で説明した処理の変形例について説明する。
【００６６】
「減額する際に落としていくビット」の位置順序は図５、図６、および図７では左側から順番として示しているが、カードの正当性確認の一手法としてこの順序をスクランブルし減算の際、端末機器がその状態を確認するようにしてもよい。このビット消去順序のスクランブル例を図８に示す。図８では、Ｎ回目のビット消去（０化）は直前に０にしたビットからＮ個の１を右向きに越えた次の１ビットとした例が示されている。
【００６７】
このように、金額情報の変更は予め立てられたビットを落とすだけとすることにより、不正に金額情報が増額されるのを防止できる。
【００６８】
ｃ．現行カード流用の場合その１（金額データはＡＮＤ書き換えのみ可能）
現行カード、即ち、現在使用されているＩＣカードを利用する場合、金額情報を論理的に「ｂ．専用カードの場合その２」と同様にデータビットのうち何ビットが立っているかで扱い、減算機ではＡＮＤ（論理積）書き換えコマンドとそのアクセス権（キー）だけを持たせることで先に書き込まれている値以上に増額することを阻止する。入金機には完全上書きのコマンドとそのアクセス権を持たせ、入金（増額）を可能にする。金額データのＡＮＤ書き換えの例を図９および図１０に示す。
【００６９】
図９では、カード製造時において、最大金額、例えば１００００円を示すビットが立てられている。なお、ここでは１ビットは５００円を示すものとする。このようなカードの初回金額を５０００円に設定して発行する場合には、カード製造時金額（11111111111111111111）と初回金額（00000000001111111111）とのＡＮＤ（000000000011111111111）が書き込まれる。図１０では、図９において初回金額５０００円に設定されたカードから、例えば１０００分差し引く場合には、初回金額（00000000001111111111）と利用額（00000000000011111111）とのＡＮＤ（00000000000011111111）が書き込まれる。
【００７０】
このようにしてＡＮＤ書き込みを利用することにより、先に書き込まれている値以上に増額書き込みされるのを防止できる。
【００７１】
ｄ．現行カード流用の場合その２（１レコード＝１（使用済）金額（ユニット）とし追記のみ可能化）
「ｂ．専用カードの場合その２」で示した「何ビットが立っているかで表わされる金額情報」の「１ビット情報」を「ある１文字、ある文字列、またはある条件に則った関連性のあるー連のデータが書き込まれた１レコード」とし、そのエリアに対するアクセスは追記系のみ可能とすることで、読み出された文字数（＝レコード数）＝使用済み金額とし、金額変更を「減額」方向のみに制限することが可能となる。
【００７２】
この場合、金額の書き込み（設定）はエリア創成となり、繰り返し使用する場合は、カード内に次々に新しいエリアを作っていくことになる。このとき、そのエリア創成時に設定されるエリアサイズにより規定される追記できるレコード数の最大値が、そのエリア自体が示すプリペイド金額となる。また、各レコードの記録内容を、何らかの規則性や暗号化論理等に従って記録し、読み出し時判定することで金額情報の正当性判定にも使用できる。この処埋の概要を図１１に示す。
【００７３】
ここで、図１１について説明する。
【００７４】
例えば、１００００円まで価値付け可能なカードを製造する場合には、１レコードを５００円として２０レコードのエリアが創成される。このようにして製造されたカードの初回金額（入金額）を例えば５０００円（１０レコード）にして発行する場合には、生成されたエリアに対して１０レコード書き込まれる。これにより、１０レコード分減額されたことになり、残り１０レコードが残高となる。このようにして発行されたカードから１０００円（２レコード）分差し引く場合には、残り１０レコードに対して２レコードが書き込まれる。これにより、２レコード分減額されたことになり、残り８レコードが残高となる。また、図８の各数値位置に当たるスクランブルデータなどをレコードとすることにより、金額情報をより安全なものとすることができる。
【００７５】
このようにして、所定のエリアを設けこのエリアに対するアクセスを追記系のみとすることにより、先に書き込まれているデータが消されない。よって、先に書き込まれている利用金額が減額されるのを防止できる。
【００７６】
（２）減算許可条件
ａ．専用カードの場合その１（加算／減算−異アクセス権の別コマンド化）
「（１）金額書き換えコマンド」の「ａ．専用カードの場合その１」と同様に、加算と減算それぞれ異なるコマンドを持つカードとした上で、各コマンドの実行可能条件（単純にはキー）を異ならせ、減算機には減算コマンドのアクセス権（減算コマンドを実行可能とするキー）のみを搭載する。カードメモリ上の金額情報はその金額を示す数値で表される。
【００７７】
ｂ．専用カードの場合その２（書き換え前後数値比較機能＋加／減異アクセス権化）
金額書き換えのコマンドを特に加算と減算には分けない代わりに、新たに書き込む数値と先に書かれていた数値の比較機能を持たせ、加算と減算に異なるアクセス権（それぞれ異なるキー値）を設定し、減算機には減算のアクセス権（減算を実行可能とするキー）のみを搭載する。この処理の概要を図１２に示す。
【００７８】
ここで、図１２について説明する。
【００７９】
カード内処理において、端末機器（加算機または減算機）から書き換えコマンドおよび新規値が受信されると（ＳＴ３０）、受信された新規値と現在値とが比較される（ＳＴ３２）。このとき、新規値と現在地とが等しければ現在値変更不要応答がなされる（ＳＴ３４）。
【００８０】
比較された結果、現在値より新規値が大きいとき、つまり加算処理のときには、加算機キーの照合が行われる（ＳＴ３６）。加算機キーの照合がＯＫのとき、つまり加算機が確認されると、新規値の書き込みが行われる（ＳＴ４０）。加算機キーの照合がＮＧのとき、つまり加算機の確認ができないと、新規値の書き込みは行われずに、エラー応答がなされる（ＳＴ４２）。
【００８１】
比較された結果、現在値より新規値が小さいとき、つまり減算処理のときには、減算機キーの照合が行われる（ＳＴ３８）。減算機キーの照合がＯＫのとき、つまり減算機が確認されると、新規値の書き込みが行われる（ＳＴ４０）。減算機キーの照合がＮＧのとき、つまり減算機の確認ができないと、新規値の書き込みは行われずに、エラー応答がなされる（ＳＴ４４）。
【００８２】
なお、カードメモリ上の金額情報はその金額を示す数値で表される。また、数値データで表されるデータ内容を特に「金額」に限定しない、汎用のカードを想定することもできる。すなわち、カード内メモリへのエリア創成時、そのエリアへのデータ書き込みについては、書き換え前後の値を比較しアクセス権に従って実行可否を判定するエリアとしての定義ができるようにする。金額データ記録以外の用途としては、たとえば施設利用回数を建物へ入る際に記録していったり、そのカードを差し込まないと操作できないゲームや機器においてエラーおよび操作ミスの回数を記録していく等、何らかの累積データを蓄積していくこともできる。この場合、金額情報とは反対に、減算のアクセス権を加算のアクセス権より厳しい設定とする。上記説明したようなエリアを１枚のカードに複数設定し、複数の金額データ、およびその他の複数の累積データを同一のカードに記録することも可能である。
【００８３】
ｂ．現行カード流用の場合（１レコード＝１金額（ユニット）とし追記・消去個別にアクセス権設定）
「（１）金額書き換えコマンド」の「現行カードを流用する場合」と同様に、「何ビットが立っているかで表わされる金額情報」の「１ビット情報」を「ある１文字が書き込まれた１レコード」とした上で、そのエリアに対するアクセスを追記系（金額データなど）と消去系（累積データなど）のみ可能としそれぞれに異なるアクセス権を設定し、減算機にはいずれかー方のアクセス権だけを設定する。
【００８４】
この方式では、減算機に追記系か消去系のどちらを設定するかによって、読み出された文字数（＝レコード数）が使用済み金額と未使用金額のどちらを表すことになるかが決定される。すなわち、減算機に追記系を設定した場合、「（１）金額書き換えコマンド」の「現行カードを流用する場合」と同様に、読み出された文字数（＝レコード数）＝使用済み金額であり、減算機に消去系を設定した場合、読み出された文字数（＝レコード数）＝未使用金額となる。この場合、減算機には設定されない方のコマンドが、より厳しい秘匿管理のもと、カードに価値付けをする入金機等に設定される。この処理は図１１の発展形となる。
【００８５】
（３）乱数
乱数生成・出力の都度、出力した値をカード内に記録しておき、次の乱数生成に使用することで、外部から同一の値を与えられた場合でもカードが出力する乱数を都度異なる値とする。カード内に乱数エリアを用意しこのエリアの内容を都度更新しながら乱数を生成・出力する処理を図１３に示す。
【００８６】
ここで、図１３について説明する。
【００８７】
カード製造時において、カード毎に異なる値、例えばカード製造番号が初期値として乱数エリアに書き込まれる。
【００８８】
外部からの値を受け、この外部からの値と乱数エリアの値とで初回乱数が生成され（ＳＴ５０）、生成された乱数が出力される。このとき、乱数エリアにはＳＴ５０で生成された乱数が新規値として書き込まれる。
【００８９】
次に、外部からの値を受けると、この外部からの値と前回（ＳＴ５０）乱数エリアに書き込まれた値とで乱数が生成され（ＳＴ５２）、生成された乱数が出力される。このとき、乱数エリアにはＳＴ５２で生成された乱数が新規値として書き込まれる。
【００９０】
次に、外部からの値を受けると、この外部からの値と前回（ＳＴ５２）乱数エリアに書き込まれた値とで乱数が生成され（ＳＴ５４）、生成された乱数が出力される。このとき、乱数エリアにはＳＴ５４で生成された乱数が新規値として書き込まれる。
【００９１】
次に、外部からの値を受けると、この外部からの値と前回（ＳＴ５４）乱数エリアに書き込まれた値とで乱数が生成され（ＳＴ５６）、生成された乱数が出力される。このとき、乱数エリアにはＳＴ５６で生成された乱数が新規値として書き込まれる。
【００９２】
このように、乱数エリアの内容を更新しながら乱数を生成、出力することにより、出力される乱数の値を手がかりとしてカード内の暗号化キー値および暗号化理論の解析を防止できる。
【００９３】
（４）秘密鍵
基本的に複数の秘密鍵をカードと機器で持ち合い、以下の様にどの秘密鍵を使うかが都度不定となる方法をとる。
【００９４】
ａ．暗号化対象データの特長による秘密鍵番号自動選択
外部から与えられる暗号化すべきデータの特長によっていずれかのキーを選択し暗号化に使用する。機器側でも外部から読み出せない形で秘密鍵のセットとキー選択の論理を持っており独自に同じキーを選択する。暗号化すべきデータの特長分類法を秘密とすることで、秘密鍵の解析を困難にできる。
【００９５】
暗号化対象データの特長とは、例えば、ある数で割ったときの余り（この場合ある数＝内蔵する乱数の数＋１など）、全桁のＥＸ−ＯＲ（排他的論理和）値、偶数の個数の下一桁等である。
【００９６】
ｂ．乱数データの特長による秘密鍵番号自動選択
「（３）乱数」のようにカードに格納されている乱数データか、先に何らかの乱数をカードが出力していた場合、その乱数データの特徴によっていずれかのキーを選択し暗号化に使用する。機器側でも外部から読み出せない形で秘密鍵のセットとキー選択の論理を持っており独自に同じキーを選択する。
【００９７】
乱数データの特長とは、たとえばある数で割ったときの余り（この場合ある数＝内蔵する乱数の数＋１など）、全桁のＥＸ−ＯＲ値、偶数の個数の下一桁等が考えられる。
【００９８】
また、カードに格納されている乱数を外部に出力せずに使用した場合、外部ではその値を知る術がないため、何らかの方法でカードはその値か使用した秘密鍵番号を外部に通知しなくてはならないが、格納乱数値や秘密鍵番号そのものを出力することはそれぞれの使用方法に鑑み不適当であり、その値自体を暗号化する必要がある。
【００９９】
ｃ．日付・時刻データによる秘密鍵番号自動選択
外部からカードヘ与えられるその処理が行なわれる瞬間の日付・時刻データの特長によっていずれかのキーを選択し暗号化に使用する。機器側でも外部から読み出せない形で秘密鍵のセットとキー選択の論理を持っており独自に同じキーを選択する。
【０１００】
日付・時刻データの特長とは、たとえば日付時刻データを並べてたり単純分換算、秒換算等して数値化してある数で割ったときの余り（この場合ある数＝内蔵する乱数の数＋１など）、全桁のＥＸ−ＯＲ値、偶数の個数の下一桁等が考えられる。
【０１０１】
ｄ．暗号化対象データと乱数データと日付・時刻データによる秘密鍵番号自動選択
前記の各種データを関連づけて特長を拾い、いずれかのキーを選択し暗号化に使用する。機器側でも外部から読み出せない形で秘密鍵のセットとキー選択の論理を持っており独自に同じキーを選択する。また、カードごとに付与される「カード番号」や「カード発行日」等カード個別の値を選択するためのデータとして関連づけることも考えられる。
【０１０２】
関連づけとは、数値として足し合わせたり、数値として掛け合わせたり、全桁を一連のデータとして並べたり、２進数化して論理演算する等が考えられる。また、各データ別個に特長を拾った上でこの様に関連づけする手順も考えられる。
【０１０３】
ここで拾うデータの特長とは、たとえばある数で割ったときの余り（この場合ある数＝内蔵する乱数の数＋１など）、全桁のＥＸ−０Ｒ値、偶数の個数の下一桁等が考えられる。
【０１０４】
（５）必要情報出力機能
カード内に分散して格納されているプリペイド取引に必要な各種の情報をカードが選択して取り出し、ひとまとめに（一電文で）出力するカードとする。どの情報を選択するかは都度外部から通知する方法、予め外部から通知設定しておく方法、プリペイド用として始めから規定してしまった上でカードを作る方法等がある。図１５に概要を示す。
【０１０５】
ここで図１５について説明する。まず、端末機器側からカード側に対して、プリペイド情報のアクセス用キーの照合が要求される。カード側ではこの要求を受けてキー照合が行われ、カード側から端末機器側に対してレスポンスが返される。次に、端末機器側からカード側に対して、プリペイド関連情報の読み出しが要求される。カード側ではこの要求を受けて各エリアから必要情報を読み出し、カード側から端末機器側に対して読み出された必要情報、即ち、発行日、残高、鍵番号などの情報が送出される。
【０１０６】
また、カードの初期応答（アンサ・トウ・リセット）にこれらの情報を乗せて出力するようにしてもよい。この初期応答を使用した場合の例を図１６に示す。ここで図１６について説明する。まず、ＩＣカードの活性化が行われる。即ち、端末機器側からカード側に対して電源および各種信号が送られる。カード側ではこれら信号を受けて初期応答を返す。この初期応答に上記したプリペイド取引に必要な情報を乗せる。その後、実際のプリペイド取引が行われる。
【０１０７】
以上のようにすることで、プリペイド取引処理を高速に行うことができる。
【０１０８】
（６）電文正当性確認
秘密鍵をカードと端末機器で持ち合い、相互に共有する何らかのデータをこの秘密鍵で暗号化し、この暗号化されたデータを正当性確認情報として電文の一部として含め、その電文が正当な相手から送られてきたものであることを正当性確認情報の内容で、カードと端末機器双方が確認する。
【０１０９】
端末機器から送られる電文を基にしたカード側での端末機器の確認は、主として偽造された端末機器による正当なカードに対する金額の書込（増額）を防止する。カードから送られる電文を基にした端末機器側でのカードの確認は、主として偽造されたカードによる正当な機器での買い物（購入）を防止する。また、端末機器側がカードを不正と判定した場合、そのままカードを保持し警報を発したり、端末機器内部に回収することもできる。
【０１１０】
以下にカードと機器双方における正当性確認手順の例を示す。また、これらを複合して各々で電文の正当性を確認するやりとりの例を図１７に示す。この処理の使われ方としては、カード側での機器からのコマンド電文の正当性確認は、偽造カードによる商品等の購入を防止する効果が狙いとなるため、図１７に示すように相互に正当性確認が行われるケースは少ない。即ち、偽造カードに正規の入金機で現金を支払って入金することも、商品販売に使用される減算機を偽造することも、いずれも（不正な）利益は生み出さないためであるが、使用者が偽造カードと知らない場合等に不正カードを回収し、出所を探るには有効である。
【０１１１】
なお、金額書き換えコマンドの使用に至る前に、カードと端末機器相互に正当な相手であることの確認のため「相互認証」を実行する運用も考えられ、本案と併用することも可能である。
【０１１２】
ａ．カード側での正当性確認
次の手順（図１７参照）で端末機器からの金額書き換えコマンド自体の正当性を確認し、正当と判定されたときのみカードは金額書き換えを実行する。
【０１１３】
＊２０．金額書き換えに先立ち、端末機器がカードに対して乱数出力を要求し、カードがこれに応え乱数を出力する。
【０１１４】
＊２１．端末機器側では取得した乱数、およびこれから書き込もうとする処理時刻、書き込み金額などを秘密鍵で暗号化する。秘密鍵で暗号化された乱数が正当性確認情報となる。
【０１１５】
＊２２．端末機器からカードへ＊２１で生成したデータを金額書き換えコマンド電文の一部として送信する。
【０１１６】
＊２３．金額書き換えコマンド電文を受けたカードは、先に送出した乱数を秘密鍵で暗号化し正当性確認情報を生成する。この生成された正当性確認情報と受け取られた電文内の正当性確認情報とを比較することにより機器からの電文の正当性を確認する。正当性が確認された場合のみカードは金額書き換えを実行する。
【０１１７】
ｂ．端末機器側での正当性確認
前記カード側での正当性確認の＊２３で、カード側で電文を正当と判定し金額書き換えが実行されると、処理結果の如何に関わらずカードは端末機器に対して実行結果通知レスポンス電文を返すが、このとき次の手順によりカードからの結果通知電文自体が正当なものであるかどうかを確認し、正当と判定されその内容が金額書き換え処理が正常終了を示すときのみ端末機器はカードによる処理を実行する。
【０１１８】
＊２４．金額書き換えが実行されたカードは、金額書き換えコマンド電文の一部として機器から受け取った処理時刻、書き込み金額等を秘密鍵で暗号化する。この暗号化されたデータが正当性確認情報となる。
【０１１９】
＊２５．カードから端末機器へ＊２４で生成したデータを、書き込みコマンド電文の実行結果通知（応答）電文の一部として送信する。
【０１２０】
＊２６実行結果通知（応答）電文を受けた端末機器は、内部で同様に正当性確認情報を生成し受け取った電文内の正当性確認情報と比較することで、カードからの電文の正当性を確認し、照合ＯＫのときにのみ機器はそのカードを使用して所望される動作の最終段階、例えばプリペイド自販機による商品購入時の商品の送出を実行する。
【０１２１】
このようにすることで、端末機器とカードとが相互に正当性を確認することができ、不正な端末機器またはカードによる取引を防止できる。
【０１２２】
以下に、特許請求の範囲に記載された発明に関連する事項を述べる。
【０１２３】
即ち、外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記処理手段が、前記記憶手段に記憶された数値データを減算処理する減算処理手段と；前記記憶手段に記憶された数値データを加算処理する加算処理手段とを備えるＩＣカードが提供される。
【０１２４】
外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記処理手段が、前記外部装置からの第１のキーデータに応じて、前記記憶手段に記憶された数値データを減算処理する減算処理コマンドと；前記外部装置からの第２のキーデータに応じて、前記記憶手段に記憶された数値データを加算処理する加算処理コマンドと；前記減算処理コマンドによる減算処理において、前記数値データがマイナス値をとるときには、減算処理を中止し前記外部装置に対してエラーを送信するマイナス値取扱手段とを備えるＩＣカードが提供される。
【０１２５】
ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードが、前記ＩＣカード処理装置からの第１のキーデータに応じて、前記記憶手段に記憶された数値データを減算処理する減算処理手段と；前記ＩＣカード処理装置からの第２のキーデータに応じて、前記記憶手段に記憶された数値データを加算処理する加算処理手段とを備え、前記ＩＣカード処理装置に必要なキーデータを与えることにより、このＩＣカード処理装置によるＩＣカード処理機能を限定可能とするＩＣカード処理システムが提供される。
【０１２６】
ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードが、前記ＩＣカード処理装置からの第１のキーデータに応じて、前記記憶手段に記憶された数値データを減算処理する減算処理コマンドと；前記ＩＣカード処理装置からの第２のキーデータに応じて、前記記憶手段に記憶された数値データを加算処理する加算コマンドとを備え、前記ＩＣカード処理装置に前記第１および第２のキーデータのうちのどちらか一方を与えることにより、このＩＣカード処理装置によるＩＣカード処理機能を減算処理および加算処理のうちどちらか一方に限定可能とするＩＣカード処理システムが提供される。
【０１２７】
外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段が、第１の状態および第２の状態のどちらか一方の状態のビットで構成されるビットデータを有し、前記ビットデータに対するアクセスを、前記第１の状態のビットから前記第２の状態のビットへの変換、および前記第２の状態のビットから前記第１の状態のビットへの変換のどちらか一方とするＩＣカードが提供される。
【０１２８】
外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段が、第１の状態および第２の状態のどちらか一方の状態のビットで構成され数値データを示すビットデータの組を複数有し、前記数値データを変更するための前記ビットデータに対するアクセスを、前記第１の状態のビットから前記第の２状態のビットへの変換、および前記第２の状態のビットから前記第１の状態のビットへの変換のどちらか一方だけとすることにより、前記数値データの変更を増加および減少のどちらか一方だけに制限するＩＣカードが提供される。
【０１２９】
外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段が、第１の状態および第２の状態のどちらか一方の状態のビットで構成され数値データを示すビットデータを有し、前記数値データを変更するための前記ビットデータに対するアクセスを、前記第１の状態のビットから前記第２状態のビットへの変換、および前記第２の状態のビットから前記第１の状態のビットへの変換のどちらか一方とし、ビットデータにおけるビット状態の変換順序を一定の規則に従ってスクランブルするＩＣカードが提供される。
【０１３０】
外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段が、所定数のレコードの書き込み可能なエリアを有し、前記エリアに対するアクセスを、前記レコードの追記に限定するＩＣカードが提供される。
【０１３１】
外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段が、所定数のレコードの書き込み可能なエリアを有し、前記エリアにおけるレコード未書き込みエリアにより残り数値データを示し、この数値データの変更のための前記エリアに対するアクセスを前記レコードの追記だけとすることにより、前記数値データの変更を減少だけに制限するＩＣカードが提供される。
【０１３２】
外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段が、所定数のレコードの書き込み可能なエリアを有し、前記エリアにおけるレコード未書き込みエリアにより残り数値データを示し、この数値データの変更のための前記エリアに対するアクセスを前記レコードの消去だけとすることにより、前記数値データの変更を増加だけに制限するＩＣカードが提供される。
【０１３３】
外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段が、所定数のレコードの書き込み可能な複数のエリアを有し、前記複数のエリアそれぞれにおけるレコード未書き込みエリアにより残り数値データを示し、この数値データの変更のための前記複数のエリアに対するアクセスを、エリア別に前記レコードの追記または消去のどちらか一方だけとし、これら追記と消去とにそれぞれ異なるアクセス権を設定することにより、それぞれの前記複数のエリアにおける前記数値データの変更を増加および減少のどちらか一方に制限するＩＣカードが提供される。
【０１３４】
外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段が、所定数のレコードの書き込み可能なエリアを有し、前記エリアにおけるレコード未書き込みエリアにより残り数値データを示し、この数値データの変更のための前記エリアに対するアクセスを前記レコードの追記に限定するとともに、前記レコードに所定のデータを書き込むことにより、前記数値データの変更を減少方向だけに制限し、前記レコードの読み出し時にこのレコードの内容を確認するＩＣカードが提供される。
【０１３５】
外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段に記憶されているビットデータを変更するとき、先に書き込まれているビットデータと新たに書き込むビットデータとの論理積となるビットデータへの変更のみ可能とするＩＣカードが提供される。
【０１３６】
ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカード処理装置のうち、前記ＩＣカードに記憶されている数値データに対して減算処理を実行するものには減算処理キーデータを与え；前記ＩＣカードに記憶されている数値データを書き換えるとき、先に書き込まれている元数値データと、前記ＩＣカード処理装置から送られる新たに書き込む新数値データとを比較し；前記比較の結果、前記新数値データが前記元数値データより小さいときには、この新数値データの送信元である前記ＩＣカード処理装置の減算処理キーデータを確認した上で前記新数値データの書き込みを行うＩＣカード処理方法が提供される。
【０１３７】
ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカード処理装置のうち、前記ＩＣカードに記憶されている数値データに対して加算処理を実行するものには加算処理キーデータを与え；前記ＩＣカードに記憶されている数値データを書き換えるとき、先に書き込まれている元数値データと、前記ＩＣカード処理装置から送られる新たに書き込む新数値データとを比較し；前記比較の結果、前記新数値データが前記元数値データより大きいときには、この新数値データの送信元である前記ＩＣカード処理装置の加算処理キーデータを確認した上で前記新数値データの書き込みを行うＩＣカード処理方法が提供される。
【０１３８】
ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカード処理装置のうち、前記ＩＣカードに記憶されている数値データに対して減算処理を実行するものには減算処理キーデータを与え；前記ＩＣカード処理装置のうち、前記ＩＣカードに記憶されている数値データに対して加算処理を実行するものには加算処理キーデータを与え；前記ＩＣカードに記憶されている数値データを書き換えるとき、先に書き込まれている元数値データと、前記ＩＣカード処理装置から送られる新たに書き込む新数値データとを比較し；前記比較の結果、前記新数値データが前記元数値データより小さいときには、この新数値データの送信元である前記ＩＣカード処理装置の減算処理キーデータを確認した上で前記新数値データの書き込みを行い；前記比較の結果、前記新数値データが前記元数値データより大きいときには、この新数値データの送信元である前記ＩＣカード処理装置の加算処理キーデータを確認した上で前記新数値データの書き込みを行い；前記比較の結果、前記新数値データと前記元数値データとが等しいときには、この新数値データの書き込みを中止するＩＣカード処理方法。
【０１３９】
外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、このＩＣカード自身およびこのＩＣカードを処理するＩＣカード処理装置を認証するために生成される乱数を、生成する毎に記憶し、この記憶された乱数を基にして次の乱数を生成するＩＣカードが提供される。
【０１４０】
ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードおよび前記ＩＣカード処理装置各々に対して、共通の複数の秘密鍵を格納し；外部から与えられるデータの特徴に応じて、前記ＩＣカードおよび前記ＩＣカード処理装置各々が、前記複数の秘密鍵のうちのどの秘密鍵を使用するかを決定するＩＣカード処理システム運用方法が提供される。
【０１４１】
ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードおよび前記ＩＣカード処理装置各々に対して、共通の複数の秘密鍵を格納し；前記ＩＣカードにおいて生成される乱数の特徴に応じて、前記ＩＣカードおよび前記ＩＣカード処理装置各々が、前記複数の秘密鍵のうちのどの秘密鍵を使用するかを決定するＩＣカード処理システム運用方法が提供される。
【０１４２】
ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードおよび前記ＩＣカード処理装置各々に対して、共通の複数の秘密鍵を格納し；所定処理が実行される日時データの特徴に応じて、前記ＩＣカードおよび前記ＩＣカード処理装置各々が、前記複数の秘密鍵のうちのどの秘密鍵を使用するかを決定するＩＣカード処理システム運用方法が提供される。
【０１４３】
ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードおよび前記ＩＣカード処理装置各々に対して、共通の複数の秘密鍵を格納し；前記ＩＣカードにおいて生成される乱数の特徴および所定処理が実行される日時データの特徴に応じて、前記ＩＣカードおよび前記ＩＣカード処理装置各々が、前記複数の秘密鍵のうちのどの秘密鍵を使用するかを決定するＩＣカード処理システム運用方法が提供される。
【０１４４】
外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段に分散されて記憶されているこのＩＣカードの取引に必要な各種データを読み出し；前記読み出されたデータを分散されている個数より少ない電文数で出力するデータ出力方法が提供される。
【０１４５】
外部装置とデータの送受信を行う送受信手段と、データを記憶する記憶手段と、前記送受信手段により受信されたデータを基にしてこれに対応する処理を実行する処理手段とからなるＩＣカードにおいて、前記記憶手段に分散されて記憶されているこのＩＣカードの取引に必要な各種データを読み出し；前記読み出されたデータを一電文で出力するデータ出力方法が提供される。
【０１４６】
ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードおよび前記ＩＣカード処理装置各々に対して、共通の複数の秘密鍵および共通の所定データを格納し；前記ＩＣカードから前記ＩＣカード処理装置に対して電文を送信するとき、または前記ＩＣカード処理装置から前記ＩＣカードに対して電文を送信するとき、電文を送信する側において、前記所定のデータを前記複数の秘密鍵のうちの特定の秘密鍵で暗号化し、この暗号化された暗号化所定データを電文の一部として相手に送信し；電文を受信する側において、受信した電文に含まれる前記暗号化所定データを解読することにより電文送り元の正当性を確認し、正当性が確認されたときにのみ受信された電文が示す動作を実行するＩＣカード処理システム運用方法が提供される。
【０１４７】
ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードおよび前記ＩＣカード処理装置各々に対して、共通の複数の秘密鍵を格納し；前記ＩＣカードから前記ＩＣカード処理装置に対して、このＩＣカードが保持する第１のデータを送信し；前記ＩＣカード処理装置において、前記送信された第１のデータを受信し、この受信された第１のデータをこのＩＣカード処理装置が保持する前記複数の秘密鍵の中の特定の秘密鍵で暗号化し第２のデータとし；前記ＩＣカード処理装置から前記ＩＣカードに対して、前記第２のデータを含めた電文を送信し；前記ＩＣカードにおいて、前記送信された電文を受信し、この電文に含まれる前記第２のデータをこのＩＣカードが保持する前記複数の秘密鍵の中の特定の秘密鍵で複合化し、この複合化された第３のデータと前記第１のデータとを比較することにより、この電文送信元の前記ＩＣカード処理装置の正当性を確認し、正当性が確認されたときにのみ受信された電文が示す動作を実行するＩＣカード処理システム運用方法が提供される。
【０１４８】
ＩＣカードと、このＩＣカードに対して各種処理を施すＩＣカード処理装置とで構成されるＩＣカード処理システムにおいて、前記ＩＣカードおよび前記ＩＣカード処理装置各々に対して、共通の複数の秘密鍵を格納し；前記ＩＣカード処理装置から前記ＩＣカードに対して、このＩＣカード処理装置が保持する第１のデータを送信し；前記ＩＣカードにおいて、前記送信された第１のデータを受信し、この受信された第１のデータをこのＩＣカードが保持する前記複数の秘密鍵の中の特定の秘密鍵で暗号化し第２のデータとし；前記ＩＣカード処理装置から前記ＩＣカードに対して、前記第２のデータを含めた電文を送信し；前記ＩＣカード処理装置において、前記送信された電文を受信し、この電文に含まれる前記第２のデータをこのＩＣカード処理装置が保持する前記複数の秘密鍵の中の特定の秘密鍵で複合化し、この複合化された第３のデータと前記第１のデータとを比較することにより、この電文送信元の前記ＩＣカードの正当性を確認し、正当性が確認されたときにのみ受信された電文が示す動作を実行するＩＣカード処理システム運用方法が提供される。
【０１４９】
特許請求の範囲に記載された発明に関連する事項によれば、下記のＩＣカード、ＩＣカード処理システム、およびＩＣカード処理システム運用方法が提供できる。
【０１５０】
（１）ＩＣカードにおいて減算コマンドと加算コマンドとを区別し、夫々のコマンドに対するアクセス権を異なるものとし、減算機には減算コマンドに対するアクセス権を、加算機には加算コマンドに対するアクセス権を付与することにより、減算機を用いて加算処理（または加算機を用いて減算処理）が行われるのを防止できる。つまり、減算機または加算機などのＩＣカード処理装置による不正を防止できる。
【０１５１】
（２）ＩＣカードにおいて生成される乱数を、乱数の生成毎に記憶し、この記憶された乱数を基にして次の乱数を生成することにより、ＩＣカードにおける暗号化理論の解析を防止できるので、ＩＣカードの変造または偽造を防止できる。
【０１５２】
（３）ＩＣカードおよびＩＣカード処理装置において保持されている複数の秘密鍵の中から特定の秘密鍵を選択するとき、外部から与えられるデータの特徴に応じて秘密鍵を選択することにより、秘密鍵がその都度不定となり、ＩＣカードの変造または偽造を防止できる。
【０１５３】
（４）ＩＣカードに分散して格納されているＩＣカード取引に必要な情報を一電文または分散されている数より少ない電文数で出力することにより、迅速なカード処理ができる。また、ＩＣカード取引に必要な情報をカードの初期応答に乗せて出力することにより、迅速なカード処理ができる。
【０１５４】
（５）複数の秘密鍵をＩＣカードとカード処理装置双方で持ち合い、相互に共有する何らかのデータをカードが出力した正当性確認情報生成用秘密鍵番号で指定される秘密鍵で暗号化されたデータを正当性確認情報として電文の一部として含め、その電文が正当な相手から送られてきたものであることを正当性確認情報の内容により、ＩＣカードとＩＣカード処理装置双方が確認することにより、不正なＩＣカードまたは不正なＩＣカード処理装置による取引を防止できる。
【図面の簡単な説明】
【０１５５】
【図１】プリペイドカードとして使用されるＩＣカード処理の従来例を説明するフローチャート。
【図２】相互認証手順の従来例を説明する図。
【図３】金額書き換えコマンド使用時におけるカード処理の従来例を説明する図。
【図４】減算コマンド使用時におけるカード処理の一例を説明する図。
【図５】最大金額から減額のみ可能化する処理の概要の一例を示す図その１。
【図６】最大金額から減額のみ可能化する処理の概要の一例を示す図その２。
【図７】最大金額から減額のみ可能化する処理を複数回可能としたときの概要の一例を示す図。
【図８】ビット消去順序のスクランブルの一例を示す図。
【図９】金額データのＡＮＤ書き換えの一例を示す図その１
【図１０】金額データのＡＮＤ書き換えの一例を示す図その２
【図１１】何らかの規則性または暗号化理論などに従った記録内容の１レコードを１使用済金額（ユニット）とし、追記のみ可能化した場合の処理概要の一例を示す図。
【図１２】書き換え前後のデータ比較処理の一例を説明するフローチャート。
【図１３】乱数エリアの内容を更新しながら乱数を生成し出力する処理のイメージを表す図。
【図１４】従来のプリペイド処理におけるＩＣカードからの必要情報の読み出し方法を説明する図。
【図１５】ＩＣカードからプリペイド処理に必要な情報をひとまとめに読み出す方法を説明する図。
【図１６】ＩＣカードからプリペイド処理に必要な情報をＩＣカードの初期応答に乗せて読み出す方法を説明する図。
【図１７】ＩＣカードと端末機器との双方で電文正当性確認を行う処理の一例を説明する図。
【図１８】この発明の一実施の形態に係るＩＣカードに内蔵されるＩＣチップの構造を概略的に示す図。
【図１９】ＩＣカードを取り扱うＩＣカード処理装置（端末機器）の構成を概略的に示す図。
【符号の説明】
【０１５６】
１０…制御部（処理手段）
１２…データメモリ（記憶手段）
１４…プログラムメモリ（処理手段）
１６…送受信部（送受信手段）
２０…制御部（処理手段）
２２…記憶部（記憶手段）
２４…操作部
２６…ＣＲＴディスプレイ
２８…送受信部（送受信手段）