(57)【要約】【課題】本発明は、鍵共有にかかる処理時間の問題を解決した通信システムを提供する。【解決手段】通信システムは、プログラムダウンロード時おいては、アプリケーションキーをセンタ１００からカード端末２００へアプリケーションキーを転送して共有し（Ｓ３０３，Ｓ３０４）、プログラム実行時においては、カード端末２００からセンタ１００へカウンタ値を転送して共有し（Ｓ３０６）、カード端末２００及びセンタ１００それぞれがカウンタ値とアプリケーションキーとから共通鍵を生成する（Ｓ３０７、Ｓ３１０）。【選択図】　　　　　図３
2004040660.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続された管理装置、センタ装置及び通信端末からなる通信システムであって、
前記管理装置は、
前記通信端末が前記センタ装置との間で暗号通信を行うためのプログラムと第１鍵とを記憶し、前記通信端末からの要求に応じて、前記プログラム及び前記第１鍵を暗号化して前記通信端末に送信し、
前記センタ装置は、
前記第１鍵を予め記憶する記憶手段と、
前記通信端末との間で前記暗号通信を行うに際して、予め保持している第２鍵を前記通信端末へ送信するか或いは前記通信端末から第２鍵を受信することにより、第２鍵を前記通信端末との間で共有し、当該第２鍵と前記第１鍵とから共通鍵を生成するセンタ側鍵生成手段と、
当該暗号通信を行うに際して、前記共通鍵を用いた共通鍵暗号方式により、前記通信端末へ送信するデータを暗号化し又は前記通信端末から送信される暗号化データを復号するセンタ側演算手段とを備え、
前記通信端末は、
前記管理装置に前記プログラム及び前記第１鍵の送信を要求し、当該要求に応じて送信される暗号化された前記プログラム及び前記第１鍵を復号して前記プログラム及び前記第１鍵を得る取得手段と、
前記プログラムを実行する実行手段と、
前記プログラムの実行により暗号通信を行うに際して、予め保持している第２鍵を前記センタ装置へ送信するか或いは前記センタ装置より第２鍵を受信することにより、第２鍵を前記センタ装置との間で共有し、当該第２鍵と前記第１鍵とから共通鍵を生成する端末側鍵生成手段と、
当該暗号通信を行うに際して、前記共通鍵を用いた共通鍵暗号方式により、前記センタ装置へ送信するデータを暗号化し又は前記センタ装置から送信される暗号化データを復号する端末側演算手段と
を備えることを特徴とする通信システム。
【請求項２】
前記センタ側鍵生成手段と前記端末側鍵生成手段とは、同一の所定の演算を行う演算機構を有し、当該両手段は、第１鍵及び第２鍵を用いて、同一の演算を行うことにより同一の共通鍵を生成する
ことを特徴とする請求項１に記載の通信システム。
【請求項３】
前記センタ側鍵生成手段又は前記端末側鍵生成手段のそれぞれは、第２鍵の共有及び共通鍵の生成を、前記センタ側演算手段又は前記端末側演算手段による暗号化データの受信前に行う
ことを特徴とする請求項２に記載の通信システム。
【請求項４】
前記所定の処理は排他的論理和演算であり、前記センタ側鍵生成手段及び前記端末側鍵生成手段のそれぞれは、第１鍵と第２鍵との排他的論理和演算をとることによって前記共通鍵を生成する
ことを特徴とする請求項３に記載の通信システム。
【請求項５】
前記センタ側鍵生成手段及び前記端末側鍵生成手段のそれぞれが有する前記演算機構は、前記所定の演算のための演算命令列である演算プログラムと命令実行装置とからなり、
当該演算プログラムは外部からダウンロードされるものである
ことを特徴とする請求項２に記載の通信システム。
【請求項６】
前記センタ側鍵生成手段及び前記端末側鍵生成手段のいずれか一方は、第２鍵を生成して保持する第２鍵生成手段
を備えることを特徴とする請求項１から５のいずれかに記載の通信システム。
【請求項７】
前記第２鍵生成手段は、前記暗号通信により行われる接続の確立から解放までの動作を一単位とするセッション毎に値が異なる第２鍵を生成する
ことを特徴とする請求項６に記載の通信システム。
【請求項８】
前記第２鍵生成手段は、セッション毎に乱数を発生させて当該乱数を第２鍵とする
ことを特徴とする請求項７に記載の通信システム。
【請求項９】
前記第２鍵生成手段は、各セッション毎に、前回のセッションで用いた第２鍵の値に定数を加えた値を今回のセッションで用いる第２鍵とする
ことを特徴とする請求項７に記載の通信システム。
【請求項１０】
前記第２鍵生成手段は、時計を有し、セッション時に当該時計が示す時刻に応じて第２鍵を生成する
ことを特徴とする請求項７に記載の通信システム。
【請求項１１】
前記管理装置は、
前記通信端末が前記センタ装置との間で暗号通信を行うための複数のプログラムと複数の第１鍵とを、一対一で対応させ各対に識別子を付加して記憶し、前記通信端末からの要求に応じて、当該要求にかかるプログラム、当該プログラムに対応する第１鍵及び識別子を暗号化して前記通信端末に送信し、
前記センタ装置において、
前記記憶手段は、前記複数の第１鍵を前記識別子とを対応させて記憶し、
前記センタ側鍵生成手段は、前記通信端末との間で前記暗号通信を行うに際して、前記通信端末が実行するプログラムの識別子を前記通信端末から取得し、前記記憶手段に記憶される第１鍵の中から該当する第１鍵を読み出して共通鍵の生成に用い、
前記通信端末において、
前記取得手段は、要求に応じて送信される暗号化された前記プログラム、前記第１鍵及び識別子を復号して、前記プログラム、前記第１鍵及び識別子を取得し、
前記実行手段は、
前記プログラムを実行する際に対応する識別子を前記センタ装置に送信する
ことを特徴とする請求項１から１０のいずれかに記載の通信システム。
【請求項１２】
前記管理装置は、
改版されたプログラムについて、改版前のプログラムに対応する第１鍵及び識別子とは異なる第１鍵及び識別子を当該改版されたプログラムに対応させて記憶する
ことを特徴とする請求項１１に記載の通信システム。
【請求項１３】
前記管理装置による前記送信にかかる暗号化は、
公開鍵暗号方式による暗号化である
ことを特徴とする請求項１２に記載の通信システム。
【請求項１４】
前記センタ装置は、前記管理装置を含んで構成される
ことを特徴とする請求項１から１３のいずれかに記載の通信システム。
【請求項１５】
前記通信端末は、ＩＣカードを含み、当該ＩＣカードと外部装置との間でのデータの交換を行い、
当該ＩＣカードは、
管理装置から送信された、前記プログラムと第１鍵とが暗号化されたものを、ＩＣカードの外部より取得して復号することにより、当該プログラムと第１鍵とを得る取得手段と、
前記プログラムを実行する実行手段と、
前記プログラムの実行により前記暗号通信を行うに際して、第２鍵をセンタ装置と共通に持ち合うために、第２鍵を外部に出力し又は外部から取得し、当該第２鍵と前記第１鍵とから共通鍵を生成する鍵生成手段と、
当該暗号通信を行うに際して、前記共通鍵を用いて、前記センタ装置からの暗号化データを復号し、又は前記センタ装置に送信されるべきデータを暗号化する演算手段と
を備えることを特徴とする請求項１に記載の通信システム。
【請求項１６】
センタ装置との間での暗号通信用のプログラムを取得し当該プログラムを実行して暗号通信を行うに際して、当該センタ装置からの暗号化データを取得して復号し、当該センタ装置に送信されるべきデータを暗号化してＩＣカードの外部に出力するＩＣカードであって、
管理装置から送信された、前記プログラムと第１鍵とが暗号化されたものを、ＩＣカードの外部より取得して復号することにより、当該プログラムと第１鍵とを得る取得手段と、
前記プログラムを実行する実行手段と、
前記プログラムの実行により前記暗号通信を行うに際して、第２鍵をセンタ装置と共通に持ち合うために、第２鍵を外部に出力し又は外部から取得し、当該第２鍵と前記第１鍵とから共通鍵を生成する鍵生成手段と、
当該暗号通信を行うに際して、前記共通鍵を用いて、前記センタ装置からの暗号化データを復号し、又は前記センタ装置に送信されるべきデータを暗号化する演算手段と
を備えることを特徴とするＩＣカード。
【請求項１７】
前記ＩＣカードは、センタ装置及び管理装置との間で通信を行う機能を有する通信端末に装着され、当該通信端末から電源の供給を受けて稼動する
ことを特徴とする請求項１６に記載のＩＣカード。
【請求項１８】
暗号通信用のプログラムを実行してセンタ装置との間で暗号通信を行う通信端末であって、
前記プログラムと第１鍵とを保持する管理装置に対して前記プログラム及び前記第１鍵の送信を要求し、当該要求に応じて送信される暗号化された前記プログラム及び前記第１鍵を復号して前記プログラム及び前記第１鍵を得る取得手段と、
前記プログラムを実行する実行手段と、
前記プログラムの実行により暗号通信を行うに際して、予め保持している第２鍵を前記センタ装置へ送信するか或いは前記センタ装置より第２鍵を受信することにより第２鍵を前記センタ装置との間で共通に持ち合い、当該第２鍵と前記第１鍵とから共通鍵を生成する鍵生成手段と、
当該暗号通信を行うに際して、前記共通鍵を用いた共通鍵暗号方式により、前記センタ装置へ送信するデータ又は前記センタ装置から送信される暗号化データについて暗号化し又は復号化する演算手段と
を備えることを特徴とする通信端末。
【請求項１９】
暗号通信用のプログラムを実行してセンタ装置との間で暗号通信を行う通信端末に用いられる通信方法であって、
通信端末が前記プログラムと第１鍵とを保持する管理装置に対して前記プログラム及び前記第１鍵の送信を要求し、当該要求に応じて送信される暗号化された前記プログラム及び前記第１鍵を復号して前記プログラム及び前記第１鍵を得る取得ステップと、
通信端末が前記プログラムを実行する実行ステップと、
通信端末が前記プログラムの実行により暗号通信を行うに際して、予め保持している第２鍵を前記センタ装置へ送信するか或いは前記センタ装置より第２鍵を受信することにより第２鍵を前記センタ装置との間で共通に持ち合い、当該第２鍵と前記第１鍵とから共通鍵を生成する鍵生成ステップと、
通信端末が当該暗号通信を行うに際して、前記共通鍵を用いた共通鍵暗号方式により、前記センタ装置へ送信するデータ又は前記センタ装置から送信される暗号化データについて暗号化し又は復号化する演算ステップと
からなることを特徴とする通信方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、通信システムにおいて共通鍵暗号方式の暗号化に用いる共通鍵を共有する技術に関する。
【０００２】
【従来の技術】
近年、磁気カードに代わるカード状デバイスとしてＩＣカードが実用化されつつある。ＩＣカードはプラスチック等で成形された小型サイズのカードにＩＣチップを内蔵したもので、機能や用途別に様々なタイプに分類される。その中でも特に、演算機能と書込み可能な大容量のメモリとを備えるタイプのＩＣカードが注目されている。このタイプのＩＣカードは、金融決済、身分証明、入退室管理といった複数のアプリケーションプログラムを利用者の必要に応じて搭載することができ、利用者は一枚のＩＣカードを多目的に利用することができる。
【０００３】
ＩＣカードを利用した基本的な通信システムは、ＩＣカード、端末及びセンタから構成される。センタは例えば金融機関のコンピュータシステムにおける情報処理センタ等で、ＩＣカードに各種サービスを提供する。端末は、例えばＡＴＭ（Ａｕｔｏｍａｔｉｃ　Ｔｅｌｌｅｒ　Ｍａｃｈｉｎｅ）やＰＯＳ（ＰｏｉｎｔＯｆ　Ｓａｌｅ）であり、ＩＣカードへの電源供給、データ入出力、ＩＣカードとホストコンピュータとの間のデータの送受信等を行う。端末とＩＣカードは、通常、一体となって動作し、センタとデータを交換するものであるので、以下、端末とＩＣカードとをあわせてカード端末と呼ぶこととする。
【０００４】
ホストとカード端末とのデータ交換は第三者による不正利用防止のため暗号化が必須となる。暗号化の方式としては共通鍵暗号方式（ｓｅｃｒｅｔ　ｋｅｙ　ｃｒｙｐｔｏｓｙｓｔｅｍ）や公開鍵暗号方式（ｐｕｂｌｉｃ　ｋｅｙ　ｃｒｙｐｔｏｓｙｓｔｅｍ）がよく知られている。
共通鍵暗号方式は暗号化と復号化とで共通の鍵を使う方式である。この方式はアルゴリズムが単純なため暗号化及び復号化の処理が高速に行えるという利点がある。ただし送信側と受信側とで同一の鍵を第三者に秘密にして共有していなければならず、送受信の組毎に異なる鍵が必要となる。このため共通鍵暗号方式を多目的利用のタイプのＩＣカードシステムに適用することは得策ではない。なぜならＩＣカードの利用者が選択的にアプリケーションプログラムを追加する環境においては、どのＩＣカードとどのセンタとの組み合わせが通信を行うかということについて事前にはわからない。このように通信するか否かが確定していないセンタとＩＣカードとの組に、予め共通カギを共有させておくことは現実的ではないからである。
【０００５】
一方、公開鍵暗号方式は各端末が暗号化用の公開鍵と復号化用の個人鍵のペアを所有し、公開鍵を一般に公開し、個人鍵を秘密にしておく方式である。この方式では、鍵の共有に関する問題は起こらない。しかしアルゴリズムが複雑なために暗号化及び復号化の処理時間が長くなるという問題がある。
そこで両方式を組み合わせることにより両方式の欠点を補ったハイブリッド方式がある。ハイブリッド方式は、公開鍵暗号方式で通信することにより共通鍵を送信側及び受信側の双方で共有し、情報の本体部分の送受信を共通鍵暗号方式で行う方式である。ＩＣカードシステムに適用すれば、まず、センタは共通鍵暗号用の共通鍵を作成する。次にセンタは、ＩＣカードの公開鍵を取得し、先の共通鍵を公開鍵で公開鍵暗号方式により暗号化してカード端末へ送信する。カード端末は公開鍵で暗号化された共通鍵をセンタから受信して、それをＩＣカードの個人鍵で復号化し、共通鍵を得る。このようにしてセンタとカード端末とで共通鍵を共有した後、センタとカード端末とは、本体部分の情報を共通鍵で暗号化して送信し、又は暗号化された情報を受信して共通鍵で復号化する。
【０００６】
ハイブリッド方式で通信することにより、センタ及びＩＣカードは使うか否かが不確定の共通鍵を予め共有して持っている必要はなくなり、通信することが確定した場合にのみ公開鍵暗号方式で通信して共通鍵を共有すればよい。また情報の本体部分の送受信を共通鍵暗号方式で高速に行うことができる。
【０００７】
【発明が解決しようとする課題】
しかしながら上記ハイブリッド方式では、共通鍵の共有に必ず公開鍵暗号を用いることが必要となり、その分処理時間が長くかかることになる。このことは、アプリケーションプログラムをセンタからＩＣカードへとダウンロードする場合等、全体の処理時間が長く、応答時間の短さが要求されないタイプの通信では問題にならない。共通鍵の共有にかかる時間は、ダウンロード開始から終了に至るまでの時間に対して十分に短いからである。しかしアプリケーションの起動直後にセンタとＩＣカードとで取引を行う場合等で応答時間の短さが要求される場合には、共通鍵の共有にかかる処理時間の長さが問題となる。特にＩＣカードは、携帯性のために暗号処理用デバイスの能力が制限される。このため共通鍵共有に公開鍵暗号を使うことによって処理時間が長くなることは避けられず、アプリケーションプログラムの応答時間への影響は大きい。
【０００８】
上記問題に鑑みて、本発明は、鍵共有にかかる処理時間の問題を解決した通信システム及びＩＣカードを提供することを目的とする。
【０００９】
【課題を解決するための手段】
上記問題を解決するため、本発明の通信システムは、ネットワークに接続された管理装置、センタ装置及び通信端末からなる通信システムであって、前記管理装置は、前記通信端末が前記センタ装置との間で暗号通信を行うためのプログラムと第１鍵とを記憶し、前記通信端末からの要求に応じて、前記プログラム及び前記第１鍵を暗号化して前記通信端末に送信し、前記センタ装置は、前記第１鍵を予め記憶する記憶手段と、前記通信端末との間で前記暗号通信を行うに際して、予め保持している第２鍵を前記通信端末へ送信するか或いは前記通信端末から第２鍵を受信することにより、第２鍵を前記通信端末との間で共有し、当該第２鍵と前記第１鍵とから共通鍵を生成するセンタ側鍵生成手段と、当該暗号通信を行うに際して、前記共通鍵を用いた共通鍵暗号方式により、前記通信端末へ送信するデータを暗号化し又は前記通信端末から送信される暗号化データを復号するセンタ側演算手段とを備え、前記通信端末は、前記管理装置に前記プログラム及び前記第１鍵の送信を要求し、当該要求に応じて送信される暗号化された前記プログラム及び前記第１鍵を復号して前記プログラム及び前記第１鍵を得る取得手段と、前記プログラムを実行する実行手段と、前記プログラムの実行により暗号通信を行うに際して、予め保持している第２鍵を前記センタ装置へ送信するか或いは前記センタ装置より第２鍵を受信することにより、第２鍵を前記センタ装置との間で共有し、当該第２鍵と前記第１鍵とから共通鍵を生成する端末側鍵生成手段と、当該暗号通信を行うに際して、前記共通鍵を用いた共通鍵暗号方式により、前記センタ装置へ送信するデータを暗号化し又は前記センタ装置から送信される暗号化データを復号する端末側演算手段とを備える。
【００１０】
前記センタ側鍵生成手段と前記端末側鍵生成手段とは、同一の所定の演算を行う演算機構を有し、当該両手段は、第１鍵及び第２鍵を用いて、同一の演算を行うことにより同一の共通鍵を生成する。
前記センタ側鍵生成手段又は前記端末側鍵生成手段のそれぞれは、第２鍵の共有及び共通鍵の生成を、前記センタ側演算手段又は前記端末側演算手段による暗号化データの受信前に行う。
【００１１】
前記所定の処理は排他的論理和演算であり、前記センタ側鍵生成手段及び前記端末側鍵生成手段のそれぞれは、第１鍵と第２鍵との排他的論理和演算をとることによって前記共通鍵を生成する。
前記センタ側鍵生成手段及び前記端末側鍵生成手段のそれぞれが有する前記演算機構は、前記所定の演算のための演算命令列である演算プログラムと命令実行装置とからなり、当該演算プログラムは外部からダウンロードされるものであることを特徴とする。
【００１２】
前記センタ側鍵生成手段及び前記端末側鍵生成手段のいずれか一方は、第２鍵を生成して保持する第２鍵生成手段を備える。
前記第２鍵生成手段は、前記暗号通信により行われる接続の確立から解放までの動作を一単位とするセッション毎に値が異なる第２鍵を生成する。
前記第２鍵生成手段は、セッション毎に乱数を発生させて当該乱数を第２鍵とする。
【００１３】
前記第２鍵生成手段は、各セッション毎に、前回のセッションで用いた第２鍵の値に定数を加えた値を今回のセッションで用いる第２鍵とする。
前記第２鍵生成手段は、時計を有し、セッション時に当該時計が示す時刻に応じて第２鍵を生成する。
前記管理装置は、前記通信端末が前記センタ装置との間で暗号通信を行うための複数のプログラムと複数の第１鍵とを、一対一で対応させ各対に識別子を付加して記憶し、前記通信端末からの要求に応じて、当該要求にかかるプログラム、当該プログラムに対応する第１鍵及び識別子を暗号化して前記通信端末に送信し、前記センタ装置において、前記記憶手段は、前記複数の第１鍵を前記識別子とを対応させて記憶し、前記センタ側鍵生成手段は、前記通信端末との間で前記暗号通信を行うに際して、前記通信端末が実行するプログラムの識別子を前記通信端末から取得し、前記記憶手段に記憶される第１鍵の中から該当する第１鍵を読み出して共通鍵の生成に用い、前記通信端末において、前記取得手段は、要求に応じて送信される暗号化された前記プログラム、前記第１鍵及び識別子を復号して、前記プログラム、前記第１鍵及び識別子を取得し、前記実行手段は、前記プログラムを実行する際に対応する識別子を前記センタ装置に送信する。
【００１４】
前記管理装置は、改版されたプログラムについて、改版前のプログラムに対応する第１鍵及び識別子とは異なる第１鍵及び識別子を当該改版されたプログラムに対応させて記憶する。
前記管理装置による前記送信にかかる暗号化は、公開鍵暗号方式による暗号化である。
【００１５】
前記センタ装置は、前記管理装置を含んで構成される。
前記通信端末は、ＩＣカードを含み、当該ＩＣカードと外部装置との間でのデータの交換を行い、当該ＩＣカードは、管理装置から送信された、前記プログラムと第１鍵とが暗号化されたものを、ＩＣカードの外部より取得して復号することにより、当該プログラムと第１鍵とを得る取得手段と、前記プログラムを実行する実行手段と、前記プログラムの実行により前記暗号通信を行うに際して、第２鍵をセンタ装置と共通に持ち合うために、第２鍵を外部に出力し又は外部から取得し、当該第２鍵と前記第１鍵とから共通鍵を生成する鍵生成手段と、当該暗号通信を行うに際して、前記共通鍵を用いて、前記センタ装置からの暗号化データを復号し、又は前記センタ装置に送信されるべきデータを暗号化する演算手段とを備える。
【００１６】
本発明のＩＣカードは、センタ装置との間での暗号通信用のプログラムを取得し当該プログラムを実行して暗号通信を行うに際して、当該センタ装置からの暗号化データを取得して復号し、当該センタ装置に送信されるべきデータを暗号化してＩＣカードの外部に出力するＩＣカードであって、管理装置から送信された、前記プログラムと第１鍵とが暗号化されたものを、ＩＣカードの外部より取得して復号することにより、当該プログラムと第１鍵とを得る取得手段と、前記プログラムを実行する実行手段と、前記プログラムの実行により前記暗号通信を行うに際して、第２鍵をセンタ装置と共通に持ち合うために、第２鍵を外部に出力し又は外部から取得し、当該第２鍵と前記第１鍵とから共通鍵を生成する鍵生成手段と、当該暗号通信を行うに際して、前記共通鍵を用いて、前記センタ装置からの暗号化データを復号し、又は前記センタ装置に送信されるべきデータを暗号化する演算手段とを備える。
【００１７】
前記ＩＣカードは、センタ装置及び管理装置との間で通信を行う機能を有する通信端末に装着され、当該通信端末から電源の供給を受けて稼動する。
本発明の通信端末は、暗号通信用のプログラムを実行してセンタ装置との間で暗号通信を行う通信端末であって、前記プログラムと第１鍵とを保持する管理装置に対して前記プログラム及び前記第１鍵の送信を要求し、当該要求に応じて送信される暗号化された前記プログラム及び前記第１鍵を復号して前記プログラム及び前記第１鍵を得る取得手段と、前記プログラムを実行する実行手段と、前記プログラムの実行により暗号通信を行うに際して、予め保持している第２鍵を前記センタ装置へ送信するか或いは前記センタ装置より第２鍵を受信することにより第２鍵を前記センタ装置との間で共通に持ち合い、当該第２鍵と前記第１鍵とから共通鍵を生成する鍵生成手段と、当該暗号通信を行うに際して、前記共通鍵を用いた共通鍵暗号方式により、前記センタ装置へ送信するデータ又は前記センタ装置から送信される暗号化データについて暗号化し又は復号化する演算手段とを備える。
【００１８】
本発明の通信方法は、暗号通信用のプログラムを実行してセンタ装置との間で暗号通信を行う通信端末に用いられる通信方法であって、通信端末が前記プログラムと第１鍵とを保持する管理装置に対して前記プログラム及び前記第１鍵の送信を要求し、当該要求に応じて送信される暗号化された前記プログラム及び前記第１鍵を復号して前記プログラム及び前記第１鍵を得る取得ステップと、通信端末が前記プログラムを実行する実行ステップと、通信端末が前記プログラムの実行により暗号通信を行うに際して、予め保持している第２鍵を前記センタ装置へ送信するか或いは前記センタ装置より第２鍵を受信することにより第２鍵を前記センタ装置との間で共通に持ち合い、当該第２鍵と前記第１鍵とから共通鍵を生成する鍵生成ステップと、通信端末が当該暗号通信を行うに際して、前記共通鍵を用いた共通鍵暗号方式により、前記センタ装置へ送信するデータ又は前記センタ装置から送信される暗号化データについて暗号化し又は復号化する演算ステップとからなる。
【００１９】
【発明の実施の形態】
以下、本発明の実施形態について図面を用いて説明する。
＜概要＞
図１は本実施形態のＩＣカードシステムの構成例を示す。
図１の例に示すようにＩＣカードシステムは、金融機関センタ１、企業ホストコンピュータ２、ＡＴＭ４、営業店端末８、ＩＣカード５及びＩＣカード９等を含む。
【００２０】
金融機関センタ１及び企業ホストコンピュータ２は、各コンピュータシステムの中心となるコンピュータで、通信網３上の端末に接続されたＩＣカードに対して各種サービスを提供する。例えば金融機関センタ１は、銀行又はクレジット会社等の金融システムのホストコンピュータで、残高照会や振替サービス、金融決済等のサービスを提供する。また企業ホストコンピュータ２は、企業システムのホストコンピュータで、各営業店の業務管理等を行う。本実施形態では、金融機関センタ１及び企業ホストコンピュータ２を総称してセンタと呼ぶ。
【００２１】
ＡＴＭ４及び営業店端末８は、センタとの通信機能と、ＩＣカードへの電力供給及びデータ入出力機能と、ＩＣカード利用者に対するマンマシンインターフェース機能とを備える。本実施形態ではＡＴＭ４及び営業店端末８を総称して端末と呼ぶ。
ＩＣカード５及びＩＣカード９は、各種サービスに対応する複数のアプリケーションプログラムを搭載し、端末に接続した状態でアプリケーションプログラムを選択的に実行することで、センタが提供する各種サービスを享受する。本実施形態ではＩＣカードと端末とを合わせてカード端末と呼ぶこととする。
【００２２】
図２は図１から基本的な構成を抽出した基本構成図である。
図２においてＩＣカードシステムは、センタ１００、通信網３及びカード端末２００から構成され、カード端末２００は端末２０１とＩＣカード２０２を含む。
センタ１００は、各種システム、各種サービスに対応する複数のセンタ用アプリケーションプログラムを搭載し、また複数のカード用アプリケーションプログラムを保有する。センタ１００が持つ、各センタ用アプリケーションプログラムと、各カード用アプリケーションプログラムとは一対一で対応する。センタ１００は、カード端末２００からのダウンロード要求に応じて、カード用アプリケーションプログラムをカード端末２００に転送する。転送されたカード用アプリケーションプログラムは、ＩＣカード２０２のＥＥＰＲＯＭ等に書き込まれる。ＩＣカード２０２は、センタ１００が保有するカード用アプリケーションプログラムのうち、全てをダウンロードして搭載している必要はなく、カード利用者が必要とするものを搭載していればよい。また他のセンタが提供するカード用アプリケーションプログラムを搭載していることもある。センタ１００とカード端末２００は、それぞれが対応するアプリケーションプログラムを同時期に起動して実行する。各アプリケーションプログラムには、金融決済取引等の通信処理が含まれ、センタ１００とカード端末２００とは、プログラムの実行中、相互に通信を行う。
【００２３】
センタ１００とカード端末２００とが交換するデータは、金融決済等、セキュリティ保護の必要なデータである。このためセンタ１００とカード端末２００とは、双方とも暗号化演算機能を有し、データを暗号化してやり取りする。この暗号化には、共通鍵暗号が用いられる。本実施形態は、共通鍵暗号で用いる共通鍵を共有する手順に特徴があり、この特徴によって従来技術のアプリケーション起動時における共通鍵共有にかかる処理時間の問題を解決している。
【００２４】
では共通鍵共有の手順について図３（ａ）及び図３（ｂ）を用いて説明する。
共通鍵共有の手順は、ダウンロード時とアプリケーション起動時の２つの段階に分けられる。図３（ａ）は、ダウンロード時、図３（ｂ）は、アプリケーション起動時のセンタ１００とカード端末２００との間で行われる共有手順を示す。
図３（ａ）においてカード端末２００は、センタ１００にカード用アプリケーションプログラムのダウンロード要求を出す（ステップＳ３０１）。
【００２５】
するとセンタ１００はカード端末２００の公開鍵を取得する（ステップＳ３０２）。公開鍵は、ＩＣカード２０２に記録されており、センタ１００がカード端末２００に公開鍵を要求することによって、カード端末２００からセンタ１００に転送されるものである。
センタ１００はダウンロード要求にかかるカード用アプリケーションプログラムにアプリケーションキーを付加し、それらを公開鍵で暗号化して転送する（ステップＳ３０３）。アプリケーションキーは、各カード用アプリケーションプログラムに一対一対応で存在し、センタ１００はカード用アプリケーションプログラムとアプリケーションキーとを対応付けて予め記憶している。
【００２６】
カード端末２００は、暗号化されたカード用アプリケーションプログラム及びアプリケーションキーを公開鍵に対応する個人鍵で復号化し、アプリケーションプログラム及びアプリケーションキーをＥＥＰＲＯＭに記憶する（ステップＳ３０４）。個人鍵は、ＩＣカード２０２が公開鍵と対応付けて、外部には秘密にして予め記憶しているものである。
【００２７】
以上のようにして、アプリケーションプログラムをダウンロードする段階では、センタ１００からカード端末２００へ、カード用アプリケーションプログラムとともに当プログラムに対応するアプリケーションキーが暗号化されて配布される。
図３（ｂ）は、アプリケーション起動時の手順を示す。センタ１００及びカード端末２００は、カード用アプリケーションプログラムのダウンロード以降の、アプリケーションプログラムを起動する時点で、この手順を行う。
【００２８】
同図（ｂ）において、センタ１００がカード端末２００に対してアプリケーション選択の指示を出すと（ステップＳ３０５）、カード端末２００は、カウンタ値を生成してセンタ１００に送信する。ここでカード端末は、セッション毎に毎回異なる値のカウンタ値を生成する。セッション毎とは、カード端末２００とセンタ１００との通信において行われる接続の確立から解放までの動作を一単位とした場合における各単位毎のことである。セッション毎に毎回異なる値を生成する方法として例えば、カード端末２００は、所定の値を初期値として保持しており、最回は初期値をカウンタ値として出力し、２回目以降は前回使用したカウンタ値に定数（例えば１）を加えた値をカウンタ値として出力する。
【００２９】
カード端末２００は、生成したカウンタ値と、起動対象のアプリケーションプログラムのアプリケーションキーとから共通鍵を生成する（ステップＳ３０７）。この生成方法は、例えば、アプリケーションキーとカウンタ値との排他論理和等、アプリケーションキーとカウンタ値とを用いて短時間で処理できるものがよい。
【００３０】
カード端末２００はカード用アプリケーションプログラムを起動する（ステップＳ３０８）。続いてカード端末２００はカード用アプリケーションプログラムの実行により発生した取引データをステップＳ３０７で生成した共通鍵で暗号化してセンタ１００に送信する。あるいはカード端末２００は、暗号化取引データをセンタ１００から受信して、共通鍵により復号化する（ステップＳ３０９）。
【００３１】
一方、センタ１００は、カード端末２００からカウンタ値を受信すると、カウンタ値とアプリケーションキーとからステップＳ３０７で行われるのと同じ方法により共通鍵を生成する。ここでアプリケーションキーは、センタ１００がカード用アプリケーションプログラムと対応させて記憶していたもので、ステップＳ３０３でカード端末２００に転送したものと同じである。
【００３２】
続いてセンタ１００は、センタ用のアプリケーションプログラムを起動する（ステップＳ３１１）。センタ用のアプリケーションプログラムは、カード端末にダウンロードしたアプリケーションプログラムに対応するアプリケーションプログラムである。
そして、センタ１００は、カード端末２００と同様に、センタ用のアプリケーションプログラムの実行により発生した取引データをステップＳ３１０で生成した共通鍵で暗号化してカード端末２００に送信し、あるいは、暗号化取引データをカード端末２００から受信して、共通鍵により復号化する（ステップＳ３１２）。
＜構成＞
次に、センタ１００及びカード端末２００それぞれの構成を説明する。
＜センタ１００の構成＞
図４は、センタ１００の機能ブロック図を示す。
【００３３】
同図においてセンタ１００は、記憶部１１０、制御部１２０、暗号化／復号化部１３０及び通信部１４０から構成される。
制御部１２０は、ＣＰＵ、ＲＡＭ、ＲＯＭ等から成り、記憶部１１０に格納されたプログラムを読み出して実行する。
暗号化／復号化部１３０は、カード端末２００へ転送するデータを公開鍵暗号方式又は共通鍵暗号方式により暗号化し、またカード端末２００から転送される暗号化データを公開鍵暗号方式又は共通鍵暗号方式により復号化する。
【００３４】
通信部１４０は、カード端末２００と通信する機能を持つ。
記憶部１１０は、ハードディスク又は読み書き可能なメモリ等であり、センタ用ダウンロードプログラム１１１、センタ用起動プログラム１１２、鍵生成プログラム１１３、アプリケーション管理テーブル１１４、センタ用アプリケーションプログラム１１５及びカード用アプリケーションプログラム１１６を記憶する。
【００３５】
センタ用ダウンロードプログラム１１１は、図３（ａ）におけるセンタ１００の処理手順に相当するプログラムである。センタ１００は、カード端末２００よりダウンロード要求を受付けると、このセンタ用ダウンロードプログラムを実行してアプリケーションプログラムの転送を行う。
センタ用起動プログラム１１２は、図３（ｂ）におけるセンタ１００の処理手順に相当するプログラムである。
【００３６】
鍵生成プログラム１１３は、センタ用起動プログラム１１２の中で、共通鍵を生成する際に呼び出されるプログラムである。鍵生成プログラムには、共通鍵生成の処理手順が記載されている。
センタ用アプリケーションプログラム１１５は、センタ１００が実行するためのプログラムである。記憶部１１０は通常、複数のセンタ用アプリケーションプログラムを記憶する。
【００３７】
カード用アプリケーションプログラム１１６は、カード端末２００がＩＣカード２０２のメモリにダウンロードして実行するためのプログラムである。記憶部１１０は通常、複数のカード用アプリケーションプログラムを記憶する。１つのカード用アプリケーションプログラムには１つの対となるセンタ用アプリケーションプログラムが存在する。よって記憶部１１０は、対となる同数のカード用アプリケーションプログラム及びセンタ用アプリケーションプログラムを記憶する。
【００３８】
アプリケーション管理テーブル１１４は、センタ用アプリケーションプログラムとカード用アプリケーションプログラムとアプリケーションキー及びアプリケーションＩＤを対応付けたテーブルである。
図５は、アプリケーション管理テーブルの構成を示す。
同図において、アプリケーション管理テーブルは、アプリケーションＩＤ、アプリケーションキー、カード用アプリケーションアドレス及びセンタ用アプリケーションアドレスから構成される。
【００３９】
アプリケーションＩＤは、対となるカード用アプリケーションプログラム及びセンタ用アプリケーションプログラムの各対毎に割当てられる識別子である。
アプリケーションキーは、対となるカード用アプリケーションプログラム及びセンタ用アプリケーションプログラムの各対毎に割当てられる値で、共通鍵の生成に用いられる。センタ１００はアプリケーションキーを、カード用アプリケーションプログラムのダウンロード時に当プログラムとともにカード端末２００へ転送する。
【００４０】
カード用アプリケーションアドレスは、記憶部１１０における各カード用アプリケーションプログラムのアドレスを示す。
図６に記憶部１１０のカード用アプリケーションプログラム部分の構成を示す。
同図に示すように、各カード用アプリケーションアドレス「ａｄ×××１」、「ａｄ×××２」、「ａｄ×××３」を先頭として、アプリケーションＩＤ「ｉｄ×××１」、「ｉｄ×××２」、「ｉｄ×××３」の各カード用アプリケーションプログラムが記憶領域に書き込まれている。
【００４１】
センタ用アプリケーションアドレスは、記憶部１１０における各センタ用アプリケーションプログラムのアドレスを示す。
記憶部１１０のセンタ用アプリケーションプログラム部分の構成も図６と同様である。
＜カード端末２００の構成＞
カード端末２００の構成を説明する前に、まずＩＣカード２０２の構成を示しておく。
【００４２】
図７はＩＣカード２０２の構成を示す。
同図において、ＩＣカード２０２は板状のプラスチックカードにＩＣチップ２０３が埋め込まれている。ＩＣチップ２０３は、ＣＰＵ２０４、ＲＡＭ２０５、ＲＯＭ２０６、暗号演算のためのＣＯ−ＰＲＯＣＥＳＳＯＲ２０７及びカード用アプリケーションプログラムを搭載するためのＥＥＰＲＯＭ２０８から構成される。この構成によりＩＣチップ２０３は、プログラム実行機能と、プログラムの実行により発生する取引データをセンタ１００と交換するための暗号化／復号化機能等を備える。またＩＣチップ２０３は、端末２０１からの電源供給、データ入出力及びクロック供給のための端子をカード表面に持つ。端子を持つことによりＩＣカード２０２は、端末２０１と一体となって動作する。
【００４３】
図８は、ＩＣカード２０２と端末２０１とを一体化したカード端末２００の機能ブロック図である。
同図においてカード端末２００は、記憶部２１０、制御部２２０、暗号化／復号化部２３０及び通信部２４０から構成される。
制御部２２０は、ＩＣカード２０２のＣＰＵ２０４、ＲＡＭ２０５及びＲＯＭ２０６等に相当し、記憶部２１０に格納されたプログラムを読み出して実行する。
【００４４】
暗号化／復号化部２３０は、ＩＣカード２０２のＣＯ−ＰＲＯＣＥＳＳＯＲ２０７に相当し、センタ１００へ転送するデータを公開鍵暗号方式又は共通鍵暗号方式により暗号化し、またセンタ１００から転送される暗号化データを公開鍵暗号方式又は共通鍵暗号方式により復号化する。
通信部２４０は、端末２０１内に備えられ、センタ１００と通信する機能を持つ。
【００４５】
記憶部２１０は、ＥＥＰＲＯＭ２０８に相当し、カード用ダウンロードプログラム２１１、カード用起動プログラム２１２、鍵生成プログラム２１３、アプリケーション管理テーブル２１４、鍵２１５、カード用アプリケーションプログラム２１６から構成される。
カード用ダウンロードプログラム２１１は、図３（ａ）におけるカード端末２００の処理手順に相当するプログラムである。カード端末２００は、センタ１００にダウンロード要求を発したとき、このカード用ダウンロードプログラムを実行してアプリケーションプログラムのダウンロードを行う。
【００４６】
カード用起動プログラム２１２は、図３（ｂ）におけるカード端末２００の処理手順に相当するプログラムである。
鍵生成プログラム２１３は、カード用起動プログラムの中で、共通鍵を生成する際に呼び出されるプログラムである。鍵生成プログラムには、共通鍵生成の処理手順が記載されている。この鍵生成プログラムは、センタ１００の記憶部１１０に記憶される鍵生成プログラムと同じものである。つまりセンタ１００とカード端末２００とは同じ生成方法により共通鍵を生成する。
【００４７】
アプリケーション管理テーブル２１４は、カード用アプリケーションプログラムとアプリケーションキー及びアプリケーションＩＤを対応付けたテーブルである。図９にアプリケーション管理テーブルの構成を示す。同図においてアプリケーション管理テーブルは、アプリケーションＩＤ、アプリケーションキー及びカード用アプリケーションアドレスから構成される。
【００４８】
アプリケーションＩＤは、対となるカード用アプリケーションプログラム及びセンタ用アプリケーションプログラムの各対毎に割当てられる識別子である。
アプリケーションキーは、対となるカード用アプリケーションプログラム及びセンタ用アプリケーションプログラムの各対毎に割当てられる値で、共通鍵の生成に用いられる。アプリケーションキーは、カード用アプリケーションプログラムのダウンロード時にセンタ１００から等プログラムとともに転送されてくる。
【００４９】
カード用アプリケーションアドレスは、記憶部２１０における各カード用アプリケーションプログラムのアドレスを示す。図１０に記憶部２１０のカード用アプリケーションプログラム部分の記憶領域の構成を示す。同図に示すように各カード用アプリケーションアドレス「ａｄ×××１」、「ａｄ×××２」、「ａｄ×××３」を先頭として、アプリケーションＩＤ「ｉｄ×××１」、「ｉｄ×××２」、「ｉｄ×××３」の各カード用アプリケーションプログラムが記憶領域に書き込まれている。
【００５０】
鍵２１５は、公開鍵暗号通信に用いる公開鍵ＫＰＣと個人鍵ＫＳＣとから成る。公開鍵ＫＰＣと個人鍵ＫＳＣとは公開鍵暗号で用いる鍵であり、各ＩＣカードが固有に持つ。公開鍵ＫＰＣは暗号化用、個人鍵ＫＳＣは復号化用である。
カード用アプリケーションプログラム２１６は、センタ１００からダウンロードしたカード用のアプリケーションプログラムである。
＜動作＞
次に、ＩＣカードシステムの動作を説明する。説明の順番として、まずＩＣカードシステム全体の動作を概略的に説明し、次にセンタ１００及びカード端末２００それぞれの動作を説明し、最後にＩＣカードシステム全体の動作を詳細に説明する。
【００５１】
図１１〜図１４は、センタ１００とカード端末２００の鍵共有手順を図式化したものである。図１１及び図１２は、ダウンロード時の手順を図式化したもの、図１３及び図１４は、アプリケーション起動時の手順を図式化したものである。
ではまず図１１及び図１２について説明する。
図１１及び図１２は、１つの図を２つの図面に分割して示している。図１１は、１つの図における左側部分で、センタ１００側の部分を示す。図１２は、１つの図における右側部分で、カード端末２００側の部分を示す。図１１及び図１２それぞれにおいて同じ括弧付きの符号（１）、（２）及び（３）が付加された矢印線は、符号の部分で互いに連結することを示す。
【００５２】
（１）カード端末２００はセンタ１００にアプリケーションプログラムのダウンロード要求を出し、その際に記憶部２１０から公開鍵ＫＰＣを読み出してセンタ１００へ転送する。公開鍵ＫＰＣは、ＩＣカード２０２が予め所有しているもので、ＩＣカード２０２に固有のものである。
（２）センタ１００は、公開鍵ＫＰＣを受け取ると、公開鍵ＫＰＣを使って公開鍵暗号方式により共通鍵ＫＳ１を暗号化する。ここで共通鍵ＫＳ１はアプリケーションプログラムの転送の際の暗号化に用いる鍵である。センタ１００はカード端末２００からダウンロード要求を受付けた場合に、この共通鍵ＫＳ１を生成する。
【００５３】
（３）センタ１００は、暗号化された共通鍵ＫＳ１をカード端末２００に転送する。
（４）暗号化共通鍵ＫＳ１を受け取ったカード端末２００は、記憶部２１０から個人鍵ＫＳＤを読み出し、個人鍵ＫＳＤを使って公開鍵暗号方式により暗号化共通鍵ＫＳ１を復号化して、共通鍵ＫＳ１を得る。ここで個人鍵ＫＳＣは、公開鍵ＫＰＣを使って公開鍵暗号方式により暗号化されたデータを復号する専用の鍵で、ＩＣカード２０２が予め所有しており、ＩＣカード２０２に固有のものである。
【００５４】
こうして（１）〜（４）の手順により共通鍵ＫＳ１をセンタ１００とカード端末２００とで共有する。
（５）次にセンタ１００は記憶部１１０からダウンロード要求にかかるカード用アプリケーションプログラムと、当該プログラムに対応するアプリケーションキーＫＡＰとを読み出す。
【００５５】
（６）そしてセンタ１００は、アプリケーションキーＫＡＰ及びカード用アプリケーションプログラムを共通鍵ＫＳ１を使って共通鍵暗号方式により暗号化する。
（７）センタ１００は暗号化されたアプリケーションキーＫＡＰ及びカード用アプリケーションプログラムをカード端末２００へ転送する。
【００５６】
（８）カード端末２００は、暗号化されたアプリケーションキーＫＡＰ及びカード用アプリケーションプログラムを受け取ると、共通鍵ＫＳ１を使って共通鍵暗号方式により復号化する。
（９）さらにカード端末２００は、復号化したアプリケーションキーＫＡＰ及びカード用アプリケーションプログラムを記憶部２１０に格納する。
【００５７】
このようにして本実施形態のＩＣカードシステムは、アプリケーションプログラムのダウンロードを利用して、後の共通鍵生成の基となるアプリケーションキーＫＡＰを、センタ１００とカード端末２００とで共有する。アプリケーションキーＫＡＰは、カード用アプリケーションプログラムとともに暗号化して転送されるので、第三者による不正利用を防ぐことができる。
【００５８】
続いて図１３及び図１４について説明する。
図１３及び図１４も、図１１及び図１２と同様に１つの図を２つの図面に分割して示している。図１４は、１つの図における左側部分で、センタ１００側を示す。図１３は、１つの図における右側部分でカード端末２００側を示す。図１３及び図１４それぞれにおいて同じ括弧付きの符号（２）及び（８）が付加された矢印線は、符号の部分で互いに連結することを示す。
【００５９】
（１）カード端末２００は、センタ１００からのアプリケーション選択指示により起動すべきアプリケーションプログラムが決定されると、カウンタ値ＣＮＴを生成する。カウンタ値ＣＮＴは、アプリケーションキーＫＡＰとともに、共通鍵生成の基となる値である。カウンタ値ＣＮＴは、ある値を初期値としてアプリケーション起動の度に所定数ずつカウントアップしてできる値であるが、乱数にしてもよい。
【００６０】
（２）次にカード端末２００は、カウンタ値ＣＮＴをセンタ１００へ転送する。これによりカード端末２００とセンタ１００はカウンタ値ＣＮＴを共有する。
（３）センタ１００は起動すべきセンタ用アプリケーションプログラムに対応するアプリケーションキーＫＡＰを読み出す。
（４）そしてセンタ１００はカウンタ値ＣＮＴとアプリケーションキーＫＡＰとから共通鍵ＫＳ２を生成する。
【００６１】
（５）続いてセンタ１００は、センタ用アプリケーションプログラムを読み出す。ここで読み出すセンタ用アプリケーションプログラムは、カード端末２００がこれから起動するカード用アプリケーションプログラムに対応するものである。
（６）センタ１００は、センタ用アプリケーションプログラムを実行する。この実行によりカード端末２００に転送すべき取引データが発生する。
【００６２】
（７）センタ１００は、発生した取引データを共通鍵ＫＳ２により暗号化する。あるいは、カード端末２００から送信される、暗号化された取引データを共通鍵ＫＳ２により復号化する。この暗号化及び復号化は共通鍵暗号方式によるものである。
（８）センタ１００は、暗号化取引データをカード端末２００とやり取りする。
【００６３】
センタ１００が手順（３）〜（８）を行うのと同時期に、カード端末２００も手順（９）〜（１３）及び（８）を行う。
（９）カード端末は起動すべきカード用アプリケーションプログラムに対応するアプリケーションキーＫＡＰを読み出す。
（１０）そしてカード端末２００はカウンタ値ＣＮＴとアプリケーションキーＫＡＰとから共通鍵ＫＳ２を生成する。
【００６４】
（１１）続いてカード端末２００はカード用アプリケーションプログラムを読み出す。
（１２）カード端末２００はカード用アプリケーションプログラムを実行し、これによりセンタ１００に転送すべき取引データが発生する。
（１３）カード端末２００は、発生した取引データを共通鍵ＫＳ２により暗号化する。あるいはセンタ１００から送信される、暗号化された取引データを共通鍵ＫＳ２により暗号化する。この暗号化及び復号化は共通鍵暗号方式によるものである。
【００６５】
以上のようにしてセンタ１００とカード端末２００とは、起動時にカウンタ値ＣＮＴを共有し、カウンタ値ＣＮＴとダウンロード時のアプリケーションキーＫＡＰとを使って共通鍵ＫＳ２を生成し、共通鍵ＫＳ２を使った共通鍵暗号方式により取引データをやりとりする。
次にセンタ１００及びカード端末２００それぞれの動作を説明する。
【００６６】
図１５はセンタ１００のダウンロード時の動作を説明するフローチャートである。
センタ１００はカード端末２００からアプリケーションプログラムのダウンロード要求を受付けると（ステップＳ６０１）、カード端末２００にＩＣカード２０２が所有する公開鍵ＫＰＣを要求し（ステップＳ６０２）、その結果、公開鍵ＫＰＣを取得する（ステップＳ６０３）。
【００６７】
次にセンタ１００はダウンロード用の共通鍵ＫＳ１を生成し（ステップＳ６０４）、共通鍵ＫＳ１を公開鍵ＫＰＣで公開鍵暗号方式により暗号化して（ステップＳ６０５）、カード端末２００に送信する（ステップＳ６０６）。
続いてセンタ１００はダウンロード要求にかかるアプリケーションプログラムに対応するアプリケーションキーＫＡＰ及びアドレスをアプリケーション管理テーブルより読み出し、さらに当該アドレスに格納されているカード用アプリケーションプログラムを読み出す（ステップＳ６０７）。
【００６８】
最後にセンタ１００は、カード用アプリケーションプログラム及びアプリケーションキーＫＡＰを共通鍵ＫＳ１で共通鍵暗号方式により暗号化してカード端末２００に送信する（ステップＳ６０８）。
図１６はセンタ１００のアプリケーション起動時の動作を説明するフローチャートである。
【００６９】
センタ１００はアプリケーション選択コマンドをカード端末２００に送信する（ステップＳ７０１）。
するとカード端末からはカウンタ値ＣＮＴが送られてくるのでセンタ１００はカウンタ値ＣＮＴを取得する（ステップＳ７０２）。
そしてセンタ１００はアプリケーション選択コマンドにて指示したアプリケーションプログラムのアプリケーションキーＫＡＰをアプリケーション管理テーブルより読み出す（ステップＳ７０３）。
【００７０】
続いてセンタ１００は鍵生成プログラムを実行することにより、カウンタ値ＣＮＴとアプリケーションキーＫＡＰとから共通鍵ＫＳ２を生成する（ステップＳ７０４）。
最後にセンタ１００はセンタ側アプリケーションプログラムを起動し、センタ側アプリケーションプログラムの実行により発生する取引データを共通鍵ＫＳ２で共通鍵暗号方式により暗号化してカード端末２００に送信し、又は、カード端末２００から送られてくる暗号化された取引データを共通鍵ＫＳ２により復号化して取引データを得る（ステップＳ７０５）。
【００７１】
図１７は図１６のステップＳ７０４で実行する鍵生成プログラムのフローチャートを示す。センタ１００はカウンタ値ＣＮＴとアプリケーションキーＫＡＰとの排他論理和を計算し、それを共通鍵ＫＳ２とする（ステップＳ８０１）。
図１８はカード端末２００のダウンロード時の動作を示すフローチャートである。
【００７２】
カード端末２００はセンタ１００にカード用アプリケーションプログラムのダウンロードを要求する（ステップＳ１２０１）。
するとセンタ１００から公開鍵ＫＰＣが要求されるので（ステップＳ１２０２）、カード端末２００はセンタ１００にＩＣカード２０２の公開鍵ＫＰＣを送信する（ステップＳ１２０３）。
【００７３】
次にカード端末はセンタ１００から公開鍵ＫＰＣにより暗号化された共通鍵ＫＳ１を取得し（ステップＳ１２０４）、それを公開鍵ＫＰＣに対応する個人鍵ＫＳＣにより復号化し、共通鍵ＫＳ１を得る（ステップＳ１２０５）。
カード端末２００は共通鍵ＫＳ１により暗号化されたカード用アプリケーションプログラム及びアプリケーションキーＫＡＰをセンタ１００から受信し（ステップＳ１２０６）、それらを共通鍵ＫＳ１により復号化する（ステップＳ１２０７）。そしてカード端末２００はカード用アプリケーションプログラムをＥＥＰＲＯＭのプログラム領域に格納し、アプリケーションＩＤ、アプリケーションキーＫＡＰ及びカード用アプリケーションプログラムのアドレスをそれぞれ対応付けてアドレス管理テーブルに記録する（ステップＳ１２０８）。
【００７４】
図１９はカード端末２００のアプリケーションプログラム起動時の動作を示すフローチャートである。
カード端末２００はアプリケーション選択コマンドをセンタ１００から受信すると（ステップＳ１３０１）、カウンタ値ＣＮＴを生成してセンタ１００に送信する（ステップＳ１３０２）。
【００７５】
次にカード端末２００はカードアプリケーション管理テーブルより対象アプリケーションプログラムのアプリケーションキーＫＡＰを読み出す（ステップＳ１３０３）。
続いてカード端末２００は鍵生成プログラムを実行することにより、カウンタ値ＣＮＴとアプリケーションキーＫＡＰとから共通鍵ＫＳ２を生成する。この鍵生成プログラムは図１７のフローチャートと同じである。
【００７６】
最後にカード端末２００はカード側アプリケーションプログラムを起動し、プログラムの実行により発生する取引データを共通鍵ＫＳ２により暗号化してセンタ１００に送信し、又は、暗号化された取引データをセンタ１００より受信して、それを共通鍵ＫＳ２で復号化して取引データを得る。
最後に図２０〜図２２を用いてＩＣカードシステム全体の動作を詳細に説明する。
【００７７】
図２０及び図２１はセンタ１００及びカード端末２００のダウンロード時の動作を詳細に示すフローチャートである。図２０及び図２１は１つの図を２つの図面に分割して示している。図２０は１つの図の左側部分を示し、図２１は残りの右側部分を示す。図２０及び図２１それぞれにおいて同じ記号Ａ〜Ｄが付加された矢印線は、記号Ａ〜Ｄの部分で連結していることを示す。
【００７８】
カード端末２００はカード用アプリケーションプログラムのダウンロード要求をセンタ１００に送信する（ステップＳ１４０１）。
ダウンロード要求を受付けたセンタ１００はカード端末２００に公開鍵ＫＰＣを要求する（ステップＳ１４０２、ステップＳ１４０３）。
カード端末２００は公開鍵ＫＰＣの要求を受付け、公開鍵ＫＰＣをセンタ１００に送信する（ステップＳ１４０４、ステップＳ１４０５）
センタ１００は公開鍵ＫＰＣを受信すると、共通鍵ＫＳ１を生成し、共通鍵ＫＳ１を公開鍵ＫＰＣで暗号化した暗号化共通鍵ＫＳ１をカード端末２００に送信する（ステップＳ１４０６〜ステップＳ１４０９）。
【００７９】
続いてセンタ１００はダウンロード要求にかかるカード用アプリケーションプログラムに対応するアプリケーションキーＫＡＰ及びアドレスをアプリケーション管理テーブルより読み出し、さらに当該アドレスにあるカード用アプリケーションプログラムを読み出す（ステップＳ１４１０）。そしてセンタ１００は読み出したカード用アプリケーションプログラム及びアプリケーションキーＫＡＰを共通鍵ＫＳ１で暗号化してカード端末２００に送信する（ステップＳ１４１１）。
【００８０】
一方、カード端末２００は公開鍵ＫＰＣで暗号化された共通鍵ＫＳ１を受信して個人鍵ＫＳＣにより復号化し、共通鍵ＫＳ１を得る（ステップＳ１４１２、ステップＳ１４１３）。
そしてカード端末２００は共通鍵ＫＳ１で暗号化されたアプリケーションプログラム及びアプリケーションキーＫＡＰを受信し、それらを共通鍵ＫＳ１で復号化し、得られたアプリケーションプログラム及びアプリケーションキーＫＡＰを記憶部１１０に格納する（ステップＳ１４１４、ステップＳ１４１５）。
【００８１】
図２２はセンタ１００及びカード端末２００のアプリケーション起動時の動作を示すフローチャートである。
センタ１００がアプリケーション選択コマンドをカード端末２００に送信し（ステップＳ１５０１）、カード端末２００は当該コマンドを受付ける（ステップＳ１５０２）。そしてカード端末２００はカウンタ値ＣＮＴを生成してセンタ１００に送信する（ステップＳ１５０３）。
【００８２】
続いてカード端末２００はカード端末２００が持つアプリケーション管理テーブルよりアプリケーションキーＫＡＰを読み出し（ステップＳ１５０４）、カウンタ値ＣＮＴとアプリケーションキーＫＡＰとから共通鍵ＫＳ２を生成する（ステップＳ１５０５）。
さらにカード端末２００はカード側アプリケーションプログラムを起動し、その実行により発生する取引データを共通鍵ＫＳ２で暗号化してセンタ１００に送信し、又は、暗号化された取引データをセンタ１００から受信してそれを共通鍵ＫＳ２で復号化して取引データを得る（ステップＳ１５０６）。
【００８３】
一方、センタ１００はカウンタ値ＣＮＴを取得すると（ステップＳ１５０７）、アプリケーション管理テーブルから対象アプリケーションのアプリケーションキーＫＡＰを読み出し（ステップＳ１５０８）、カウンタ値ＣＮＴとアプリケーションキーＫＡＰとを入力として鍵生成プログラムを実行し、共通鍵ＫＳ２を生成する（ステップＳ１５０９）。
【００８４】
さらにセンタ１００はセンタ側アプリケーションプログラムを起動し、その実行により発生する取引データを共通鍵ＫＳ２で暗号化してカード端末２００に送信し、又は、暗号化された取引データをカード端末２００から受信してそれを共通鍵ＫＳ２で復号化して取引データを得る（ステップＳ１５１０）。
このように本実施形態のＩＣカードシステムは、アプリケーションのダウンロード時と起動時との２つの時期に分けて、センタ１００及びカード端末２００が互いにアプリケーションキー及びカウンタ値を交換し、これら２値を用いてセンタ１００とカード端末２００とが同じ生成方法により共通鍵を生成する。
【００８５】
以上の手順で共通鍵を共有することで、本実施形態のＩＣカードシステムは、以下に示す効果を有する。
（１）アプリケーション起動の直前にセンタ１００とカード端末２００とが共通鍵ＫＳ２を生成するので、共通鍵ＫＳ２そのものを片側からもう片側へと配布することが不要となる。そのため従来のハイブリッド方式の手順のように、通信の直前に公開鍵暗号を使う必要はなくなり、処理時間の遅延がなくなる。
【００８６】
（２）共通鍵生成は簡単なアルゴリズムでよいので、共通鍵生成処理に要する時間は、ハイブリッド方式における鍵共有時の公開鍵暗号処理の時間より短くすることができる。よって本実施形態においては、アプリケーション起動時の応答時間を短くすることができる。
（３）共通鍵生成の基となるカウンタ値を、アプリケーション起動毎、すなわちセッション毎に異なる値とすることで、従来のハイブリッド方式と同様、セッション毎に異なる共通鍵を生成して使用することができる。
【００８７】
（４）カウンタ値の転送のタイミングは、アプリケーション起動直前である。よって、カード端末２００もセンタ１００も、カウンタ値を前以て取得して起動時まで保管しておくことは不要である。
（５）カウンタ値はアプリケーションキー等により暗号化して転送してもよいが、カウンタ値を暗号化していなくても共通鍵の安全性は確保される。その理由は、第三者に秘密の方法で共通鍵を生成していることと、共通鍵の生成にカウンタ値だけでなく第三者に秘密のアプリケーションキーを用いることによる。第３者がカウンタ値を傍受したとしても、共通鍵の生成方法及びアプリケーションキーの両方ともが分からない限り、第３者は共通鍵を知ることはできない。
【００８８】
（６）アプリケーションキーは、アプリケーションプログラムのダウンロードに便乗して配布されるので、アプリケーションキーを配布するために別途通信手順を用意する必要はない。
（７）アプリケーションキーは、アプリケーションプログラムのダウンロード時に転送される。そしてアプリケーションプログラムのダウンロードは通常、ＩＣカード側で使用することが確定している場合に行われるものである。よってＩＣカードに転送されるアプリケーションキーは、使用される可能性の高いものが多く、使用される可能性の低いものをＩＣカード側で保管するという無駄が起こり難い。
【００８９】
（８）センタ及びカード端末は、アプリケーション毎のアプリケーションキーを管理しているだけでよく、通信毎に必要な鍵を全て管理している必要はない。
（９）アプリケーションキーは、アプリケーションプログラム毎という識別容易な単位で管理することができる。
なお本発明は上記実施形態に限られず、以下のように実施してもよい。
【００９０】
（１）本実施形態においてＩＣカード２０２は、電源供給、データ入出力機能及び通信機能を備える端末２０１に接続して動作する構成であったが、ＩＣカード自身にバッテリー、キーボードやディスプレイ等の入出力インタフェース及び通信機能等を備え、ＩＣカード単体でセンタと通信することができるよう構成してもよい。
【００９１】
（２）本実施形態においてセンタ１００及びカード端末２００は、共通鍵生成のためのプログラムとそれを実行する処理機構とを予め備え、これらの動作させることにより共通鍵を生成する。ここにおいて、センタ１００及びカード端末２００は、共通鍵生成のためのプログラムを外部より取得して、取得したプログラムを実行することにより共通鍵を生成するよう構成してもよい。そして共通鍵生成のプログラムは、実施形態の例の排他的論理和演算だけでなく、その他の演算処理により共通鍵を生成する処理手順を記述したものでもよい。
【００９２】
（３）本実施形態においてアプリケーションキーは、各アプリケーションプログラム毎に分類して異なる値のキーとしているが、他の分類方法による分類毎に異なる値としてもよい。分類方法としては例えば、各アプリケーションプログラム毎ではなく、複数のアプリケーションプログラムのグループ毎や、アプリケーションプログラムがダウンロードされるカード端末の所在地をグループ化した場合におけるグループ毎に分類するといった方法がある。
【００９３】
（４）アプリケーションキーは、アプリケーションプログラムのデータ列中の所定位置に含まれるよう構成してもよい。
（５）本実施形態においてセンタ１００は、カード端末２００へ転送するためのカード用アプリケーションプログラム及びアプリケーションキーを保有するよう構成されているが、カード用アプリケーションプログラム及びアプリケーションキーをセンタ１００以外のダウンロード専用のサーバ等が保有するよう構成してもよい。その場合サーバは、カード用アプリケーションプログラム及びアプリケーションキーを記憶し、カード端末からの要求に応じてカード用アプリケーションプログラム及びアプリケーションキーをカード端末２００の公開鍵で暗号化してカード端末２００に送信する。センタ１００はセンタ用アプリケーションプログラムとアプリケーションキーとを対応付けて保持する。
【００９４】
（６）カード端末２００は、セッション毎に乱数を発生させ、発生させた乱数をカウンタ値として出力してもよい。またカード端末２００は、時計を有し、セッション毎に時計が示す時刻に基づく値をカウンタ値として出力してもよい。より具体的には、カード端末２００は、カウンタ値を生成しようとする時、時計が示す時刻を取得し、当該時刻をカウンタ値として出力する。或いは、当該時刻に所定の演算を施したものをカウンタ値として出力してもよい。
【００９５】
（７）本実施形態では、カード端末２００がカウンタ値を生成してセンタ１００へ送信するよう構成されているが、センタ１００がカウンタ値を生成してカード端末２００へ送信するよう構成してもよい。
（８）センタ１００又はカード端末２００において、共通鍵生成のタイミングは、暗号化取引データを受信した後或いは受信と同時でも良いが、効果的には、暗号化取引データの受信前がよい。そうすれば、暗号化取引データを受信するとすぐに共通鍵を使って復号することができる。
【００９６】
（９）センタ１００及びカード端末２００のそれぞれにおける共通鍵の生成は、共通鍵生成のためのプログラムとプログラムを実行する算術演算機構とからなるが、アプリケーションキー及びカウンタ値を入力として演算を行い共通鍵を出力するハードウェアのみで構成してもよい。
（１０）センタ１００は、カード用アプリケーションプログラムがバージョン・アップされる毎に、当該カード用アプリケーションプログラムとバージョン・アップされたカード用アプリケーションに対応する新たなアプリケーションキーとセンタ用アプリケーションプログラムとを対応付けて記憶し、カード端末２００からの要求に応じて当該カード用アプリケーションプログラム及びアプリケーションキーをカード端末２００に転送するよう構成してもよい。このように構成すれば、カード端末２００がバージョンアップされたカード用アプリケーションプログラムとアプリケーションキーとをダウンロードすることによって、センタ１００とカード端末２００との間で新しいアプリケーションキーを共有するので、セキュリティーをより高めることができる。
【００９７】
（１１）上記実施形態の通信システムの各構成要素の動作手順を、汎用のコンピュータ又はプログラム実行機能を有する機器等に実行させるためのコンピュータプログラムとし、当該コンピュータプログラムを、記録媒体に記録し又は各種通信路等を介して、流通させ頒布することもできる。このような記録媒体にはＩＣカード、光ディスク、フレキシブルディスク、ＲＯＭ等がある。
【００９８】
（１２）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
（１３）本実施形態及び上記（１）〜（１２）を組み合わせて実施してもよい。
【００９９】
【発明の効果】
本発明の通信システムは、ネットワークに接続された管理装置、センタ装置及び通信端末からなる通信システムであって、前記管理装置は、前記通信端末が前記センタ装置との間で暗号通信を行うためのプログラムと第１鍵とを記憶し、前記通信端末からの要求に応じて、前記プログラム及び前記第１鍵を暗号化して前記通信端末に送信し、前記センタ装置は、前記第１鍵を予め記憶する記憶手段と、前記通信端末との間で前記暗号通信を行うに際して、予め保持している第２鍵を前記通信端末へ送信するか或いは前記通信端末から第２鍵を受信することにより、第２鍵を前記通信端末との間で共有し、当該第２鍵と前記第１鍵とから共通鍵を生成するセンタ側鍵生成手段と、当該暗号通信を行うに際して、前記共通鍵を用いた共通鍵暗号方式により、前記通信端末へ送信するデータを暗号化し又は前記通信端末から送信される暗号化データを復号するセンタ側演算手段とを備え、前記通信端末は、前記管理装置に前記プログラム及び前記第１鍵の送信を要求し、当該要求に応じて送信される暗号化された前記プログラム及び前記第１鍵を復号して前記プログラム及び前記第１鍵を得る取得手段と、前記プログラムを実行する実行手段と、前記プログラムの実行により暗号通信を行うに際して、予め保持している第２鍵を前記センタ装置へ送信するか或いは前記センタ装置より第２鍵を受信することにより、第２鍵を前記センタ装置との間で共有し、当該第２鍵と前記第１鍵とから共通鍵を生成する端末側鍵生成手段と、当該暗号通信を行うに際して、前記共通鍵を用いた共通鍵暗号方式により、前記センタ装置へ送信するデータを暗号化し又は前記センタ装置から送信される暗号化データを復号する端末側演算手段とを備える。
【０１００】
この構成によれば、通信システムは、センタ装置と通信端末とのそれぞれが共通鍵を生成することにより、センタ装置と通信端末との間で同一の共通鍵を共有する。この共通鍵の共有においては、共通鍵そのものがネットワーク上に流れることがないので共通鍵の盗用を防止できる。
また共通鍵生成に用いられる第１鍵は、暗号化された状態で管理装置から通信端末へと転送されるので、第１鍵の暗号化に使用された鍵が知られない限り第三者に第１鍵が知られることはない。第三者に第１鍵が知られなければ、第１鍵を基に生成された共通鍵も知られることはない。
【０１０１】
また第１鍵はプログラムとともに転送される。プログラムは、使用許可を与えられた利用者のみが利用し、使用許可が与えられていない者が利用することができないようにするために、ダウンロードの際には暗号化して転送される場合が多い。よってプログラムが暗号化して転送される機会に乗じてついでに第１鍵も暗号化して転送するように構成すれば、第１鍵の暗号化及び転送のための処理手順や機構を特別に設ける必要がなく、第１鍵の暗号化及び転送を効率的に行うことができる。
【０１０２】
さらにセンタ装置又は通信端末は、暗号通信の実行に際して第２鍵を受信する、すなわち暗号通信が実際に行われると確定している場合にのみ受信する。この構成によって、センタ装置又は通信端末には、暗号通信が行われるか否かが不確定である時期に第２鍵を受信して実際に使用するときまで記憶、管理しておくという無駄な動作がない。
【０１０３】
前記センタ側鍵生成手段と前記端末側鍵生成手段とは、同一の所定の演算を行う演算機構を有し、当該両手段は、第１鍵及び第２鍵を用いて、同一の演算を行うことにより同一の共通鍵を生成する。
この構成によればセンタ装置と通信端末のそれぞれは、所定の演算により共通鍵を生成する。この構成により、もし第１鍵及び第２鍵が第三者に知られたとした場合でも、所定の演算が第三者に知られない限り共通鍵が第三者に知られることを防ぐことができる。
【０１０４】
前記センタ側鍵生成手段又は前記端末側鍵生成手段のそれぞれは、第２鍵の共有及び共通鍵の生成を、前記センタ側演算手段又は前記端末側演算手段による暗号化データの受信前に行う。
この構成によればセンタ装置又は通信端末装置は、暗号化データの受信前に共通鍵を得るので、暗号化データの受信後すぐに暗号化データを復号してデータを得ることができ、データを得るまでに要する時間を短くすることができる。
【０１０５】
前記所定の処理は排他的論理和演算であり、前記センタ側鍵生成手段及び前記端末側鍵生成手段のそれぞれは、第１鍵と第２鍵との排他的論理和演算をとることによって前記共通鍵を生成する。
この構成によればセンタ装置及び通信端末は、共通鍵の生成の演算機構を簡単なプログラムと論理演算装置とにより簡単に実現することができ、処理負荷が軽いという効果がある。
【０１０６】
前記センタ側鍵生成手段及び前記端末側鍵生成手段のそれぞれが有する前記演算機構は、前記所定の演算のための演算命令列である演算プログラムと命令実行装置とからなり、当該演算プログラムは外部からダウンロードされるものであることを特徴とする。
この構成によればセンタ装置及び通信端末は、共通鍵生成のための演算プログラムをダウンロードすることによって、共通鍵生成のアルゴリズムを変更することができる。
【０１０７】
前記センタ側鍵生成手段及び前記端末側鍵生成手段のいずれか一方は、第２鍵を生成して保持する第２鍵生成手段を備える。
この構成によればセンタ装置又は通信端末は第２鍵を生成することができる。これにより第２鍵の値を通信毎に毎回同じではなく、毎回変更することもできる。
【０１０８】
前記第２鍵生成手段は、前記暗号通信により行われる接続の確立から解放までの動作を一単位とするセッション毎に値が異なる第２鍵を生成する。
この構成によればセッション毎に異なる値の第２鍵が生成されるので、第２鍵を基に生成される共通鍵の値もセッション毎に異なることになる。セッション毎に共通鍵が異なれば、第三者が暗号化データから共通鍵を解読し、解読した共通鍵を用いて別のセッションにおける暗号化データからデータを盗用するという事態を防ぐことができる。
【０１０９】
前記第２鍵生成手段は、セッション毎に乱数を発生させて当該乱数を第２鍵とする。
この構成によればセンタ装置又は通信端末は、セッション毎の各第２鍵を乱数にし、乱数によってセッション毎に異なる共通鍵を生成することができる。
前記第２鍵生成手段は、各セッション毎に、前回のセッションで用いた第２鍵の値に定数を加えた値を今回のセッションで用いる第２鍵とする。
【０１１０】
この構成によればセンタ装置又は通信端末は、セッション毎の各第２鍵を等差数列の各数にし、各数によってセッション毎に異なる共通鍵を生成することができる。
前記第２鍵生成手段は、時計を有し、セッション時に当該時計が示す時刻に応じて第２鍵を生成する。
【０１１１】
この構成によればセンタ装置又は通信端末は、セッション毎の各第２鍵を時計が示す時刻に応じた各値とし、各値によってセッション毎に異なる共通鍵を生成することができる。
前記管理装置は、前記通信端末が前記センタ装置との間で暗号通信を行うための複数のプログラムと複数の第１鍵とを、一対一で対応させ各対に識別子を付加して記憶し、前記通信端末からの要求に応じて、当該要求にかかるプログラム、当該プログラムに対応する第１鍵及び識別子を暗号化して前記通信端末に送信し、前記センタ装置において、前記記憶手段は、前記複数の第１鍵を前記識別子とを対応させて記憶し、前記センタ側鍵生成手段は、前記通信端末との間で前記暗号通信を行うに際して、前記通信端末が実行するプログラムの識別子を前記通信端末から取得し、前記記憶手段に記憶される第１鍵の中から該当する第１鍵を読み出して共通鍵の生成に用い、前記通信端末において、前記取得手段は、要求に応じて送信される暗号化された前記プログラム、前記第１鍵及び識別子を復号して、前記プログラム、前記第１鍵及び識別子を取得し、前記実行手段は、前記プログラムを実行する際に対応する識別子を前記センタ装置に送信する。
【０１１２】
この構成によれば通信端末は、複数のプログラムの中から使用する予定のプログラムをダウンロードすることができるので、使用する予定のプログラムに対応する第１鍵を記憶し管理するだけでよく、使用するか否かが不確定のプログラムに対応する第１鍵を無駄に記憶し管理する必要がない。
前記管理装置は、改版されたプログラムについて、改版前のプログラムに対応する第１鍵及び識別子とは異なる第１鍵及び識別子を当該改版されたプログラムに対応させて記憶する。
【０１１３】
この構成によればプログラムがバージョン・アップされる毎に第１鍵を変更することができ、第１鍵を基に生成される共通鍵による暗号通信をより安全にすることができる。
前記管理装置による前記送信にかかる暗号化は、公開鍵暗号方式による暗号化である。
【０１１４】
この構成によればプログラム及び第１鍵のダウンロードは、第三者による解読が現実的には不可能とされる公開鍵暗号方式により行われるので、第１鍵の転送時の安全性をより高めることができる。
前記通信端末は、ＩＣカードを含み、当該ＩＣカードと外部装置との間でのデータの交換を行い、当該ＩＣカードは、管理装置から送信された、前記プログラムと第１鍵とが暗号化されたものを、ＩＣカードの外部より取得して復号することにより、当該プログラムと第１鍵とを得る取得手段と、前記プログラムを実行する実行手段と、前記プログラムの実行により前記暗号通信を行うに際して、第２鍵をセンタ装置と共通に持ち合うために、第２鍵を外部に出力し又は外部から取得し、当該第２鍵と前記第１鍵とから共通鍵を生成する鍵生成手段と、当該暗号通信を行うに際して、前記共通鍵を用いて、前記センタ装置からの暗号化データを復号し、又は前記センタ装置に送信されるべきデータを暗号化する演算手段とを備える。
【０１１５】
この構成によればセンタ装置とＩＣカードとのそれぞれが共通鍵を生成することにより、センタ装置とＩＣカードとの間で同一の共通鍵を共有する。この共通鍵の共有においては、共通鍵そのものがネットワーク上に流れることがないので共通鍵の盗用を防止できる。
また共通鍵生成に用いられる第１鍵は、暗号化された状態で管理装置からＩＣカードへと転送されるので、第１鍵の暗号化に使用された鍵が知られない限り第三者に第１鍵が知られることはない。第三者に第１鍵が知られなければ、第１鍵を基に生成された共通鍵も知られることはない。
【０１１６】
また第１鍵はプログラムとともに転送される。プログラムは、使用許可を与えられた利用者のみが利用し、使用許可が与えられていない者が利用することができないようにするために、ダウンロードの際には暗号化して転送される場合が多い。よってプログラムが暗号化して転送される機会に乗じてついでに第１鍵も暗号化して転送するように構成すれば、第１鍵の暗号化及び転送のための処理手順や機構を特別に設ける必要がなく、第１鍵の暗号化及び転送を効率的に行うことができる。
【０１１７】
さらにセンタ装置又はＩＣカードは、暗号通信の実行に際して第２鍵を取得する、すなわち暗号通信が実際に行われると確定している場合にのみ取得する。この構成によって、センタ装置又は通信端末には、暗号通信が行われるか否かが不確定である時期に第２鍵を取得して実際に使用するときまで記憶、管理しておくという無駄な動作がない。
【０１１８】
本発明のＩＣカードは、センタ装置との間での暗号通信用のプログラムを取得し当該プログラムを実行して暗号通信を行うに際して、当該センタ装置からの暗号化データを取得して復号し、当該センタ装置に送信されるべきデータを暗号化してＩＣカードの外部に出力するＩＣカードであって、管理装置から送信された、前記プログラムと第１鍵とが暗号化されたものを、ＩＣカードの外部より取得して復号することにより、当該プログラムと第１鍵とを得る取得手段と、前記プログラムを実行する実行手段と、前記プログラムの実行により前記暗号通信を行うに際して、第２鍵をセンタ装置と共通に持ち合うために、第２鍵を外部に出力し又は外部から取得し、当該第２鍵と前記第１鍵とから共通鍵を生成する鍵生成手段と、当該暗号通信を行うに際して、前記共通鍵を用いて、前記センタ装置からの暗号化データを復号し、又は前記センタ装置に送信されるべきデータを暗号化する演算手段とを備える。
【０１１９】
この構成によればＩＣカードは上記と同様の効果がある。
前記ＩＣカードは、センタ装置及び管理装置との間で通信を行う機能を有する通信端末に装着され、当該通信端末から電源の供給を受けて稼動する。
この構成によればＩＣカードは上記と同様の効果がある。
本発明の通信端末は、暗号通信用のプログラムを実行してセンタ装置との間で暗号通信を行う通信端末であって、前記プログラムと第１鍵とを保持する管理装置に対して前記プログラム及び前記第１鍵の送信を要求し、当該要求に応じて送信される暗号化された前記プログラム及び前記第１鍵を復号して前記プログラム及び前記第１鍵を得る取得手段と、前記プログラムを実行する実行手段と、前記プログラムの実行により暗号通信を行うに際して、予め保持している第２鍵を前記センタ装置へ送信するか或いは前記センタ装置より第２鍵を受信することにより第２鍵を前記センタ装置との間で共通に持ち合い、当該第２鍵と前記第１鍵とから共通鍵を生成する鍵生成手段と、当該暗号通信を行うに際して、前記共通鍵を用いた共通鍵暗号方式により、前記センタ装置へ送信するデータ又は前記センタ装置から送信される暗号化データについて暗号化し又は復号化する演算手段とを備える。
【０１２０】
この構成によれば通信端末は上記と同様の効果がある。
本発明の通信方法は暗号通信用のプログラムを実行してセンタ装置との間で暗号通信を行う通信端末に用いられる通信方法であって、通信端末が前記プログラムと第１鍵とを保持する管理装置に対して前記プログラム及び前記第１鍵の送信を要求し、当該要求に応じて送信される暗号化された前記プログラム及び前記第１鍵を復号して前記プログラム及び前記第１鍵を得る取得ステップと、通信端末が前記プログラムを実行する実行ステップと、通信端末が前記プログラムの実行により暗号通信を行うに際して、予め保持している第２鍵を前記センタ装置へ送信するか或いは前記センタ装置より第２鍵を受信することにより第２鍵を前記センタ装置との間で共通に持ち合い、当該第２鍵と前記第１鍵とから共通鍵を生成する鍵生成ステップと、通信端末が当該暗号通信を行うに際して、前記共通鍵を用いた共通鍵暗号方式により、前記センタ装置へ送信するデータ又は前記センタ装置から送信される暗号化データについて暗号化し又は復号化する演算ステップとからなる。
【０１２１】
この構成によれば通信方法は上記と同様の効果がある。
【図面の簡単な説明】
【図１】本実施形態のＩＣカードシステムの構成例を示す。
【図２】図１から基本的な構成を抽出した基本構成図である。
【図３】（ａ）は、ダウンロード時のセンタ１００とカード端末２００との間で行われる共有手順を示す。
（ｂ）は、アプリケーション起動時のセンタ１００とカード端末２００との間で行われる共有手順を示す。
【図４】センタ１００の機能ブロック図を示す。
【図５】アプリケーション管理テーブルの構成を示す。
【図６】記憶部１１０のカード用アプリケーションプログラム部分の構成を示す。
【図７】ＩＣカード２０２の構成を示す。
【図８】ＩＣカード２０２と端末２０１とを一体化したカード端末２００の機能ブロック図である。
【図９】アプリケーション管理テーブルの構成を示す。
【図１０】記憶部２１０のカード用アプリケーションプログラム部分の記憶領域の構成を示す。
【図１１】センタ１００とカード端末２００のダウンロード時の手順を図式化したもののうちの左側部分を示す。
【図１２】センタ１００とカード端末２００のダウンロード時の手順を図式化したもののうちの右側部分を示す。
【図１３】センタ１００とカード端末２００のアプリケーション起動時の手順を図式化したもののうちの左側部分を示す。
【図１４】センタ１００とカード端末２００のアプリケーション起動時の手順を図式化したもののうちの右側部分を示す。
【図１５】センタ１００のダウンロード時の動作を説明するフローチャートである。
【図１６】センタ１００のアプリケーション起動時の動作を説明するフローチャートである。
【図１７】図１６のステップＳ７０４で実行する鍵生成プログラムのフローチャートを示す。
【図１８】カード端末２００のダウンロード時の動作を示すフローチャートである。
【図１９】カード端末２００のアプリケーションプログラム起動時の動作を示すフローチャートである。
【図２０】センタ１００及びカード端末２００のダウンロード時の動作を詳細に示すフローチャートの左側部分を示す。
【図２１】センタ１００及びカード端末２００のダウンロード時の動作を詳細に示すフローチャートの右側部分を示す。
【図２２】センタ１００及びカード端末２００のアプリケーション起動時の動作を示すフローチャートである。
【符号の説明】
１　　金融機関センタ
２　　企業ホストコンピュータ
２　　共通鍵ＫＳ
３　　通信網
４　　ＡＴＭ
５　　ＩＣカード
８　　営業店端末
９　　ＩＣカード
１００　　センタ
１１０　　記憶部
１１１　　センタ用ダウンロードプログラム
１１２　　センタ用起動プログラム
１１３　　鍵生成プログラム
１１４　　アプリケーション管理テーブル
１１５　　センタ用アプリケーションプログラム
１１６　　カード用アプリケーションプログラム
１２０　　制御部
１３０　　暗号化／復号化部
１４０　　通信部
２００　　カード端末
２０１　　端末
２０２　　ＩＣカード
２０３　　ＩＣチップ
２０４　　ＣＰＵ
２０５　　ＲＡＭ
２０６　　ＲＯＭ
２０７　　ＣＯ−ＰＲＯＣＥＳＳＯＲ
２０８　　ＥＥＰＲＯＭ
２１０　　記憶部
２１１　　カード用ダウンロードプログラム
２１２　　カード用起動プログラム
２１３　　鍵生成プログラム
２１４　　アプリケーション管理テーブル
２１５　　鍵
２１６　　カード用アプリケーションプログラム
２２０　　制御部
２３０　　暗号化／復号化部
２４０　　通信部
【図１】
2004040660.tif 000003
【図２】
2004040660.tif 000004
【図３】
2004040660.tif 000005
【図４】
2004040660.tif 000006
【図５】
2004040660.tif 000007
【図６】
2004040660.tif 000008
【図７】
2004040660.tif 000009
【図８】
2004040660.tif 000010
【図９】
2004040660.tif 000011
【図１０】
2004040660.tif 000012
【図１１】
2004040660.tif 000013
【図１２】
2004040660.tif 000014
【図１３】
2004040660.tif 000015
【図１４】
2004040660.tif 000016
【図１５】
2004040660.tif 000017
【図１６】
2004040660.tif 000018
【図１７】
2004040660.tif 000019
【図１８】
2004040660.tif 000020
【図１９】
2004040660.tif 000021
【図２０】
2004040660.tif 000022
【図２１】
2004040660.tif 000023
【図２２】
2004040660.tif 000024