(57)【特許請求の範囲】
【請求項１】
ＩＣカードにより端末を介してホストコンピュータと通信を行うようにしたネットワークシステムにおいて、
ＩＣカードとホストコンピュータとが共通の認証用キー、乱数更新用キー、暗号化キー、復号化キーをそれぞれ有し、
ホストコンピュータは、ＩＣカードで発生させた乱数を取得してコマンドを送る毎に前記乱数更新用キーで乱数を更新し、更新した乱数を用いて前記認証用キーで暗号化して認証コードを生成するとともに、前記更新した乱数及び暗号化キーを用いてコマンドを暗号化し、生成した認証コードと暗号化したコマンドを格納したコマンドからなるコマンド列を端末へ一括送信し、
ＩＣカードは、端末からコマンドを受ける毎に、前記発生させた乱数を前記乱数更新用キーで更新し、更新した乱数を用いて各コマンドの認証と復号化キーによる復号化を行い、コマンドの解釈・実行を行うことを特徴とするネットワークシステムにおけるＩＣカード処理方法。
【請求項２】
請求項１記載の方法において、ＩＣカードにおける各コマンドの認証は、コマンドを受ける毎に更新した乱数を用いて認証用キーで暗号化して認証コードを生成し、端末から受信した各コマンドに格納された認証コードと比較することにより行うことを特徴とするネットワークシステムにおけるＩＣカード処理方法。
【請求項３】
請求項１記載の方法において、ＩＣカードは、コマンドを受ける毎に更新した乱数及び前記暗号化キーを用いて各コマンドに対するレスポンスを暗号化して端末へ送信し、端末は各レスポンスを一括してホストコンピュータへ送信することを特徴とするネットワークシステムにおけるＩＣカード処理方法。
【請求項４】
請求項１記載の方法において、ＩＣカードから端末へ返すレスポンスデータ部の一部に、コマンドの実行結果の成否を示す平文の実行ステータスを付加したことを特徴とするＩＣカード処理方法。
【請求項５】
請求項４記載の方法において、端末は実行ステータスをチェックし、結果がエラーであるとき、以降のコマンド列をＩＣカードへ送信せず、ホストコンピュータに対してエラーを通知することを特徴とするＩＣカード処理方法。
【請求項６】
請求項４記載の方法において、さらにレスポンスデータ部の一部に、更新した乱数を用いて認証用キーで暗号化して生成した認証コードを付加することを特徴とするＩＣカード処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はネットワークに接続された端末を介してホストコンピュータとＩＣカード間で通信を行う際、相互のセキュリティを向上させることができるネットワークシステムにおけるＩＣカード処理方法に関する。
【０００２】
【従来の技術及び発明が解決しようとする課題】
近年、インターネット上に多くのホームページが開設され、誰でも各自の端末（パソコン）を通して自由にデータを取得できる状況にあり、インターネット上でのショッピング、バンキング、信用取引等が盛んになると考えられている。このように各個人の端末がインターネット回線に接続され、秘密を保持すべきデータのやり取りが行われる状況になったとき、ホストコンピュータの認証を各個人の端末のハードディスクで行っていると、そこに格納されているデータの安全性が問題になってくる。この対策としてＩＣカードを用い、ＩＣカード−端末−ネットワークというシステムにして、ネットワークから第３者が直接個人のデータにアクセスすることができないようにすることが考えられる。
【０００３】
一方、このようなシステムとした場合には、ＩＣカードを持つ本人のデータのセキュリティは向上するものの、その使用状況をネットワークに接続されたホストコンピュータ側では把握できないため、不正な使用が行われて銀行等のホストコンピュータ側で被害を受ける可能性がある。
【０００４】
そこで、ＩＣカード側、ホストコンピュータ側の安全性を保証するために、従来、相互認証することが行われている。この方法は、識別番号と乱数を使用して暗号化したキーを生成し、ＩＣカード側、ホストコンピュータ側でそれぞれ比較して相互に認証を行うものであるが、認証を行うための専用のコマンドを使用する必要があり、また、一旦相互の認証がすむと、その後のコマンドは何の制約も受けずに受入れられてしまい、相互認証後の不正を防止することはできない。
【０００５】
これに対して、各コマンド毎にＩＣカードから乱数を受け取ってホストコンピュータ側で認証コードを生成し、各コマンドの中に生成した認証コードを入れてコマンドを発行し、コマンド毎に認証することにより不正の発生を防止することが考えられるが、通信回数が増えて途中での中断事故の確立が大きくなるとともに、通信料が高くなってしまうという問題がある。
【０００６】
本発明は上記課題を解決するためのもので、個人データのセキュリティを向上させるためにＩＣカードを用いたネットワークシステムにおいて、通信回数、通信時間を減らすと共に、ＩＣカードの不正使用を防止することを目的とする。
【０００７】
【課題を解決するための手段】
本発明は、ＩＣカードにより端末を介してホストコンピュータと通信を行うようにしたネットワークシステムにおいて、
ＩＣカードとホストコンピュータとが共通の認証用キー、乱数更新用キー、暗号化キー、復号化キーをそれぞれ有し、
ホストコンピュータは、ＩＣカードで発生させた乱数を取得してコマンド毎に前記乱数更新用キーで乱数を更新し、更新した乱数を用いて前記認証用キーで暗号化して認証コードを生成するとともに、前記更新した乱数及び暗号化キーを用いてコマンドを暗号化し、生成した認証コードと暗号化したコマンドを格納したコマンドからなるコマンド列を端末へ一括送信し、
ＩＣカードは、端末からコマンドを受ける毎に、前記発生させた乱数を前記乱数更新用キーで更新し、更新した乱数を用いて各コマンドの認証と復号化キーによると復号化を行い、コマンドの解釈・実行を行うことを特徴とする。
また、本発明は、ＩＣカードにおける各コマンドの認証は、コマンドを受ける毎に更新した乱数を用いて認証用キーで暗号化して認証コードを生成し、端末から受信した各コマンドに格納された認証コードと比較することにより行うことを特徴とする。
また、本発明は、ＩＣカードがコマンドを受ける毎に更新した乱数、および前記暗号化キーを用いて各コマンドに対するレスポンスを暗号化して端末へ送信し、端末は各レスポンスを一括してホストコンピュータへ送信することを特徴とする。
また、本発明は、ＩＣカードから端末へ返すレスポンスデータ部の一部に、コマンドの実行結果の成否を示す平文の実行ステータスを付加したことを特徴とする。
また、本発明は、端末は実行ステータスをチェックし、結果がエラーであるとき、以降のコマンド列をＩＣカードへ送信せず、ホストコンピュータに対してエラーを通知することを特徴とする。
また、本発明は、さらにレスポンスデータ部の一部に、更新した乱数を用いて認証用キーで暗号化して生成した認証コードを付加することを特徴とする。
【０００８】
【発明の実施の形態】
以下、本発明の実施の形態について説明する。
図１は本発明のシステム構成を示す図、図２はホストコンピュータにおけるエンベロープコマンドの生成プロセスを説明する図である。
図１において、公的機関、銀行、証券会社、輸送関係会社、各種製造／販売会社等に設置されているホストコンピュータ１と、各家庭、会社等に設置された端末２はネットワークに接続され、端末２にセットされるＩＣカード（以下、ＩＣＣ）３によりホストコンピュータ１と通信できるようになっている。ホストコンピュータ１とＩＣＣ３は、共通の認証用キー、乱数更新用キー、送信用の暗号化キー、受信用の復号化キーをそれぞれ有している。この場合、ホストコンピュータの送信用の暗号化キーはＩＣＣの受信用の復号化キーと同じものであり、ホストコンピュータの受信用の復号化キーは、ＩＣＣの送信用の暗号化キーと同じものである。そして、ホストコンピュータ１はＩＣＣから取得した乱数をコマンド毎に更新しながら認証コードと暗号化したコマンドを生成し、このようなコマンドのセットを一括してから端末２へ送り、端末２からＩＣＣ３へ順次コマンドを送って、コマンドの認証と実行を行い、また、ＩＣＣ３から端末２へ順次レスポンスを送り、端末２からホストコンピュータ１へレスポンスを一括して送るようになっている。
【０００９】
ネットワーク上で端末２とホストコンピュータ１とが接続されると、まず、端末２からＩＣＣ３に対して、乱数取得コマンドが発行され、ＩＣＣ３に対して乱数を生成して返すことを命令する。ＩＣＣ３は、乱数取得コマンドを受け取ると、内蔵している乱数発生手段により乱数ＲＮＢを発生して端末２へ送信し、端末２は受け取った乱数をホストコンピュータ１へ送信する。また、ＩＣＣは自動乱数更新機能を有しており、例えば、関数ｇで与えられる乱数更新キーを用い、発生させた乱数をＲＮＢ（０）とすると、ＲＮＢ（１）＝ｇ（ＲＮＢ（０））、ＲＮＢ（２）＝ｇ（ＲＮＢ（１））、…ＲＮＢ（ｎ）＝ｇ（ＲＮＢ（ｎ−１））のようにコマンド毎に乱数を更新する。
【００１０】
図２において、ホストコンピュータ１は、乱数ＲＮＢを受け取ると、認証用キーを用いて認証コードを生成する（ステップ１）。これは、例えば、図３に示すように、認証用キーを関数ｆとし、受け取った乱数ＲＮＢを変数として、関数ｆにより認証用コードｆ（ＲＮＢ）を生成するものである。
次いで、乱数更新キーを用いて乱数を更新する（ステップ２）。乱数の更新は、ＩＣＣの場合と同様であり、乱数更新キーｇにより、コマンド毎に順次ＲＮＢ（１）＝ｇ（ＲＮＢ（０））、ＲＮＢ（２）＝ｇ（ＲＮＢ（１））、…ＲＮＢ（ｎ）＝ｇ（ＲＮＢ（ｎ−１））のように更新する。次いで、更新した乱数を用いてコマンド列を暗号化し（ステップ３）、暗号化したコマンド列はエンベロープコマンドに格納する（ステップ４）。
【００１１】
コマンド列の暗号化を図４、図５により説明する。
コマンドが、例えば、図４に示すように８バイトのブロック▲１▼、▲２▼……▲６▼からなっているものとすると、図５に示すように、まず、乱数を乱数更新キーｇで更新し、これを初期値（ＩＶ：ＲＮＢ（１））として、ブロック▲１▼のデータとの排他的論理和（ＥＸＯＲ）をとり、これを送信用暗号化キーｈで暗号化し、暗号化したｈ（ＲＮＢ，▲１▼）をＤ（▲１▼）とする。次いで、ブロック▲２▼のデータとＤ（▲１▼）との排他的論理和をとり、これをブロック▲２▼のデータＤ（▲２▼）とする。こうして順次、各ブロックのデータを暗号化し、Ｄ（▲１▼）・Ｄ（▲２▼）……Ｄ（▲６▼）として第１のコマンドを暗号化する。
次いで、第２のコマンドに対して、乱数を更新し、これをＩＶとして第１のコマンドの場合と同様な手順で暗号化し、以後、コマンド毎に乱数を更新して暗号化を行う。
【００１２】
こうして各コマンド毎に乱数を更新して生成された認証用コード（チェックコード）、暗号化した各コマンドは、図６に示すようなエンベロープコマンド（親展コマンド）に格納する。エンベロープコマンドは、ＩＳＯのコマンドか否かを示す大分類（ＣＬＡ）、コマンドコード（ＩＮＳ）、アクセスするファイルを指示するパラメータＰ１、Ｐ２、チェックコード（認証用コード）およびそれ以降の長さを示すＬＣ、暗号化されたコマンドであることを示すＴａｇ、暗号化されたコマンドおよびその長さを示すＬｅｎ、カードからのレスポンスの長さを規定するＬＥからなっており、このエンベロープコマンドに、チェックコード、暗号化したコマンド列を格納する。
こうして順次エンベロープコマンドに格納して暗号化したコマンドのセット（コマンド列）は、一括してホストコンピュータ１から端末２に送信される。
【００１３】
次いで、ホストコンピュータから一括してコマンドを受け取った端末側の処理について図７により説明する。
一括してコマンドを受け取った端末２は、まず、コマンド１をＩＣＣ３に対して発行する。コマンド１を受け取ったＩＣＣは、コマンド１のチェックコードを見て認証する。これは、自身が生成した乱数ＲＮＢ（０）を、ホストコンピュータと共通に有している認証用キーｆにより生成した認証コードｆ（ＲＮＢ（０））とコマンドのチェックコードとを比較することにより行う。比較の結果、両者が不一致ならばコマンドを解釈せず以後の手順に移らない。認証ＯＫであれば、乱数を更新し、図５の暗号化の手順と逆の手順により復号化を行う。
【００１４】
図８は復号化の手順を説明する図で、まずホストコンピュータと共通の乱数更新用キーｇで乱数を更新する。更新された乱数はＲＮＢ（１）である。次いで、ホストコンピュータの送信用暗号化キーと同じ受信用暗号化キーｈを用いてｈ-1（ｈ（ＲＮＢ，▲１▼））を計算し、これとＩＶ（初期値：ＲＮＢ１）との排他的論理和をとってブロック▲１▼のデータに復元する。Ｄ（▲２▼）についても、受信用暗号化キーｈを用いてｈ-1（ｈ（ＲＮＢ，▲２▼））を求め、これとＤ（▲１▼）との排他的論理和をとってブロック▲２▼のデータに復元する。同様に、▲３▼……▲６▼のブロックのデータも復元する。こうしてコマンド１が復号化され、これを実行する。
【００１５】
次いで、ＩＣＣはコマンドを実行した結果（レスポンス）を、図５で説明したホストコンピュータにおけるコマンドの暗号化と全く同じ手順で暗号化して端末へ送信する。この場合、更新した乱数のＩＶ（初期値）はＲＮＢ１であり、暗号化キーは、送信用暗号化キーであり、ホストコンピュータ側で持つ受信用復号化キーと同じものである。レスポンスデータには、図９に示すように、コマンドを実行したときの結果がＯＫかＮＧかを示す平文のＩＣＣ実行ステータス、エンベロープコマンド自体の理解ができたか否かを示すステータスバイトが付加されており、これを受け取った端末は、ＩＣＣの実行ステータス、ステータスバイトをチェックして、何れかがエラーであればそれ以降のコマンド列はＩＣＣに送らないで、ホストコンピュータへエラーを通知する。なお、図９において、さらにレスポンスデータにエンベロープコマンドの場合と同様に認証コードを付加し、ホストコンピュータ側でＩＣＣの認証を行えるようにしてもよい。
【００１６】
次いで、コマンド１のレスポンスデータのチェックでエラーがなければコマンド２が端末からＩＣＣに送られ、ＩＣＣでは、ホストコンピュータと同じように乱数を更新し（ＲＮＢ１→ＲＮＢ２）、認証、復号、コマンド実行、レスポンス暗号化、認証コードとレスポンスの送信を行い、以降同じ手順で最後のコマンドまで同様の処理を繰り返す。
【００１７】
各コマンドに対して返されたレスポンスを受信した端末は、レスポンスのセットとして一括してホストコンピュータへ送信する。レスポンスを受け取ったホストコンピュータでは、ＩＣＣでの復号化と全く同じ手順で復号化する。このとき使用する受信用の復号化キーは、ＩＣＣの送信用の暗号化キーと同じである。
【００１８】
【発明の効果】
以上のように本発明によれば、ネットワークに接続されたホストコンピュータと端末側のＩＣＣが共通の認証用キー、乱数更新用キー、暗号化キー、復号化キーをもち、コマンド毎に乱数を更新して認証、暗号化、復号化を行うようにしたのでコマンド発行者の正当性が確保されるとともに、コマンドの発行順序を変えたり、コマンドを追加したりすると、ＩＣＣ内部で自動的に乱数が更新されているため、認証、あるいは復号化がうまくいかず、ＩＣＣの不正使用を防止することができる。また、コマンド、レスポンスの送信は一括して行うため、コマンド毎に認証を行ってもネッワークでの通信回数、通信時間が増えることはない。
【図面の簡単な説明】
【図１】  本発明のシステム構成を示す図である。
【図２】  ホストコンピュータにおけるエンベロープコマンドの生成プロセスを説明する図である。
【図３】  認証コードの生成を説明する図である。
【図４】  コマンドを説明する図である。
【図５】  コマンドの暗号化を説明する図である。
【図６】  エンベロープコマンドを説明する図である。
【図７】  端末、ＩＣＣ側での処理を説明する図である。
【図８】  コマンドの復号化を説明する図である。
【図９】  ＩＣＣから端末へ返すレスポンスデータを説明する図である。
【符号の説明】
１…ホストコンピュータ、２…端末、３…ＩＣカード。
【図１】
0003925975.tif 000002
【図２】
0003925975.tif 000003
【図３】
0003925975.tif 000004
【図４】
0003925975.tif 000005
【図５】
0003925975.tif 000006
【図６】
0003925975.tif 000007
【図７】
0003925975.tif 000008
【図８】
0003925975.tif 000009
【図９】
0003925975.tif 000010