(57)【特許請求の範囲】
【請求項１】
署名検証装置に対して電子署名によって署名を行うための情報を送受信する通信手段を有する署名生成装置において、
前記署名を行うための情報となる公開鍵情報及び秘密鍵情報を記憶する記憶手段と、
前記記憶手段に記憶される秘密鍵情報と前記通信手段によって前記署名検証装置から受信する電子署名を行う文書の内容に関する情報となるメッセージとを用いた仮署名と、前記仮署名を署名に変換するための情報である変換データを演算する演算手段とを有し、
前記通信手段によって、前記公開鍵情報及び前記仮署名を前記署名検証装置に送信した後に、該署名検証装置において前記仮署名を電子署名に変換する前記変換データを前記署名検証装置に送信することを特徴とする署名生成装置。
【請求項２】
署名検証装置に対して電子署名によって署名を行うための情報を送受信する通信手段を有する署名生成装置において、
前記署名を行うための情報となる公開鍵情報及び秘密鍵情報を記憶する記憶手段と、
乱数を発生する乱数生成部と、
前記署名検証装置から受信する電子署名を行う文書の内容に関する情報となるメッセージと秘密鍵情報とから署名情報を生成し、該署名情報と前記乱数とから仮署名を生成し、前記公開鍵情報と前記乱数とから乱数データを演算する演算手段と、
前記通信手段によって、前記公開鍵情報を前記署名検証装置に送信し、前記乱数データを前記署名検証装置に送信した後に、該署名検証装置から送信される「０」または「１」のデータに対応して、予め対応付けられた前記乱数または前記仮署名を、「０」または「１」が入力される毎に送信することを特徴とする署名生成装置。
【請求項３】
署名生成装置に対して電子署名によって署名を行うための情報を送受信する通信手段を有する署名検証装置において、
前記電子署名によって署名を行う文書の内容に関する情報となるメッセージを生成するメッセージ生成手段と、
前記署名生成装置に記憶される秘密鍵情報と前記メッセージとを用いた仮署名が演算されたか否かを、前記秘密鍵情報に対応する公開鍵情報と前記メッセージとを用いて検出する検証手段と、
前記検証手段によって、前記仮署名が演算されたことが検出された場合に、前記メッセージに対する前記仮署名を設定する制御手段と、
前記制御手段によって前記仮署名が設定された後に、前記署名生成装置から前記署名生成装置において生成された変換データの送信があった場合に、当該変換データに基づいて、前記仮署名から署名情報を演算する署名生成手段と、
を有し、
前記署名生成手段が前記署名情報と、メッセージ及び公開鍵から比較署名情報とを生成し、前記検証手段が前記署名情報と前記比較署名情報とを比較して署名の検証を行うことを特徴とする署名検証装置。
【請求項４】
署名生成装置に対して電子署名によって署名を行うための情報を送受信する通信手段を有する署名検証装置において、
前記電子署名によって署名を行う文書の内容に関する情報となるメッセージを生成するメッセージ生成手段と、
前記署名生成装置に記憶される秘密鍵情報と前記メッセージとを用いて仮署名が演算されたか否かを、前記秘密鍵情報に対応する公開鍵情報と前記メッセージとを用いて検出する検証手段と、
前記検証手段によって、前記仮署名が演算されたことが検出された場合に、前記メッセージに対する前記仮署名を設定する制御手段と、
前記制御手段によって前記仮署名が設定された後に、前記署名生成装置から前記署名生成装置において生成された乱数の送信があった場合に、当該乱数に基づいて、前記仮署名から署名情報を演算する署名生成手段と、
前記仮署名から署名情報を生成する情報である乱数から生成した乱数データを前記署名生成装置から受信した後、該署名生成装置に対して「０」または「１」のデータをランダムに複数回送信する指示部と
を有し、
前記検証手段が、前記指示部の送信する「０」または「１」に対応して入力される前記乱数または前記仮署名を、指定された「０」または「１」に対応して受信されているか否かを検証し、署名生成手段が仮署名及び乱数から署名情報と、メッセージ及び公開鍵から比較署名情報とを生成し、前記検証手段が前記署名情報と比較署名情報とを比較して署名の検証を行うことを特徴とする署名検証装置。
【請求項５】
署名検証装置に通信手段によって接続されるとともに、前記署名検証装置と通信を行う署名生成装置に通信手段によって接続され、前記署名検証装置と前記署名生成装置とに対して、電子署名によって署名を行うため情報を送受信する署名生成補助装置において、
前記署名を行うための情報となる秘密鍵情報が部分秘密鍵情報として２分割され、分割された一方の部分秘密鍵情報を記憶する記憶手段と、
前記記憶手段に記憶される部分秘密鍵情報と前記署名検証装置から送信される前記電子署名によって署名を行う文書の内容に関する情報となるメッセージとを用いた仮署名と、前記仮署名を署名に変換するための情報である変換データを演算する演算手段とを有し、
前記通信手段によって仮署名を前記署名検証装置に送信した後に、該署名検証装置において前記仮署名を電子署名に変換する前記変換データを前記署名検証装置に送信することを特徴とする署名生成補助装置。
【請求項６】
署名生成補助装置に通信手段によって接続されるとともに、前記署名生成補助装置と通信を行う署名生成装置に通信手段によって接続され、前記署名生成補助装置と前記署名生成装置とに対して、電子署名によって署名を行うため情報を送受信する署名検証装置において、
前記電子署名によって署名を行う文書の内容に関する情報となるメッセージを生成するメッセージ生成手段と、
前記メッセージを前記署名生成装置に送信した後、前記署名生成装置から送信される部分署名情報を記憶する記憶手段と、
前記メッセージを前記署名生成補助装置に送信した後、前記署名生成補助装置に記憶される部分秘密鍵情報と前記メッセージとに基づいた仮署名が演算されたか否かを、前記分割された秘密鍵情報に対応する公開鍵情報と前記メッセージと前記部分署名情報とを用いて検出する検証手段と、
前記検証手段によって、前記仮署名が演算されたことが検出された場合に、前記メッセージに対する前記仮署名を設定する制御手段と、
前記制御手段によって前記仮署名が設定された後に、前記署名生成補助装置から前記署名生成補助装置において生成された変換データの送信があった場合に、当該変換データにに基づいて、前記仮署名から署名情報を演算する署名生成手段と、
を有し、
前記署名生成手段が前記署名情報と、メッセージ及び公開鍵から比較署名情報とを生成し、前記検証手段が前記署名情報と前記比較署名情報とを比較して署名の検証を行うことを特徴とする署名検証装置。
【請求項７】
署名検証装置に対して電子署名によって署名を行うための情報を送受信する通信手段を有する署名生成装置における電子署名生成プログラムを記憶した記録媒体において、
前記記録媒体は、前記署名を行うための情報となる秘密鍵情報を記憶する記憶ステップと、
前記記憶ステップによって記憶される秘密鍵情報と前記通信手段によって前記署名検証装置から受信する電子署名を行う文書の内容に関する情報となるメッセージとを用いて仮署名と前記仮署名を署名に変換するための情報である変換データを演算する演算ステップとを有し、
前記通信手段によって仮署名を前記署名検証装置に送信した後に、該署名検証装置において前記仮署名を電子署名に変換させる前記変換データを前記署名検証装置に送信する送信ステップと、をコンピュータに行わせることを特徴とする署名生成プログラムを記憶した記録媒体。
【請求項８】
署名生成装置に対して電子署名によって署名を行うための情報を送受信する通信手段を有する署名検証装置における署名検証プログラムを記憶した記録媒体において、
前記記録媒体は、前記電子署名によって署名を行う文書の内容に関する情報となるメッセージを生成するメッセージ生成ステップと、
前記署名生成装置に記憶される秘密鍵情報と前記メッセージとに基づいて仮署名が演算されたか否かを、前記秘密鍵情報に対応する公開鍵情報と前記メッセージとを用いて検出する検証ステップと、
前記検証ステップによって、前記仮署名が演算されたことが検出された場合に、前記メッセージに対する前記仮署名を設定する制御ステップと、
前記制御ステップによって前記仮署名が設定された後に、前記署名生成装置から前記署名生成装置において生成された変換データの送信があった場合に、当該変換データに基づいて、前記仮署名から署名情報を演算する署名生成ステップと、
を有し、
前記署名生成手段が仮署名及び乱数から署名情報と、メッセージ及び公開鍵から比較署名情報とを生成し、前記検証手段が前記署名情報と比較署名情報とを比較して署名の検証を行うコンピュータに行わせることを特徴とする署名検証プログラムを記憶した記録媒体。
【請求項９】
署名検証装置に通信手段によって接続されるとともに、前記署名検証装置と通信を行う署名生成装置に通信手段によって接続され、前記署名検証装置と前記署名生成装置とに対して、電子署名によって署名を行うため情報を送受信する署名生成補助装置における署名生成プログラムを記憶した記録媒体において、
前記記録媒体は、前記署名を行うための情報となる秘密鍵情報が部分秘密鍵情報として２分割され、分割された一方の部分秘密鍵情報を記憶する記憶ステップと、
前記記憶ステップによって記憶される部分秘密鍵情報と前記署名検証装置から送信される前記電子署名によって署名を行う文書の内容に関する情報となるメッセージとに基づいて仮署名と前記仮署名を署名に変換するための情報である変換データを演算する演算ステップと、
前記通信手段によって仮署名を前記署名検証装置に送信した後に、該署名検証装置において前記仮署名を電子署名に変換する前記変換データを前記署名検証装置に送信する送信ステップと、
をコンピュータに行わせることを特徴とする署名生成プログラムを記憶した記録媒体。
【請求項１０】
署名生成補助装置に通信手段によって接続されるとともに、前記署名生成補助装置と通信を行う署名生成装置に通信手段によって接続され、前記署名生成補助装置と前記署名生成装置とに対して、電子署名によって署名を行うため情報を送受信する署名検証装置における署名検証プログラムを記録した記録媒体において、
前記記録媒体は、前記電子署名によって署名を行う文書の内容に関する情報となるメッセージを生成するメッセージ生成ステップと、
前記メッセージを前記署名生成装置に送信した後、前記署名生成装置から送信される部分署名情報を記憶する記憶ステップと、
前記メッセージを前記署名生成補助装置に送信した後、前記署名生成補助装置に記憶される部分秘密鍵情報と前記メッセージとに基づいて仮署名が演算されたか否かを、前記分割された秘密鍵情報に対応する公開鍵情報と前記メッセージと前記部分署名情報とを用いて検出する検証ステップと、
前記検証ステップによって、前記仮署名が演算されたことが検出された場合に、前記メッセージに対する前記仮署名を設定する制御ステップと、
前記制御ステップによって前記仮署名が設定された後に、前記署名生成補助装置から前記署名生成補助装置において生成された変換データの送信があった場合に、当該変換データに基づいて、前記仮署名から署名情報を演算する署名生成ステップと、
をコンピュータに行わせることを特徴とする署名検証プログラムを記憶した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、電子署名を生成するための秘密鍵の安全な使用方法、署名生成装置および署名検証装置、署名生成補助装置に関するものである。
【０００２】
【従来の技術】
従来、電子署名を行うための署名用秘密鍵をＩＣカードのような耐タンパー性のある特殊な装置に保管、使用する場合には、ＰＩＮ（個人識別番号）による持ち主の認証、認証局の管理するＣＲＬによる紛失・盗難時の不正対策が行われていた。
【０００３】
【発明が解決しようとする課題】
しかしながら、従来のＩＣカードには、通常、表示機能がないため、利用者が店頭で契約書などに署名する場合には、契約書の文書内容を店舗のディスプレイで確認したとしても、実際にＩＣカードが署名する契約書の文書とディスプレイに表示されている文書が同一である保証はない。従って、利用者は、何に署名をしているのかを確認できないという問題があった。
この問題点を解決するために、ディスプレイ付のＩＣカードが提案されているが、ＩＣカードの製造コストの増加や、ＩＣカードと他の端末機器との互換性が悪いという問題点があった。また、ＩＣカードに設けられたディスプレイでは、画面が小さすぎ、文書を確認することが困難であった。
【０００４】
また、契約書の内容を確認するために、利用者が契約書に関する情報を記録媒体に記録して自宅に持ち帰り、自宅のコンピュータによって確認した後、署名をすれば安全であるが、その場（店頭など）において契約せずに自宅に戻ってから署名を送信するのでは、その間に他の顧客が先に予約を行ってしまうことによって損をする可能性があり、利用者としては、安全性を選択するか契約を急ぐかを選択しなければならないという問題があった。
さらに、ＩＣカードに秘密鍵を格納して持ち歩く場合、ＩＣカードの紛失、盗難、あるいは利用者が気づかない間に秘密鍵の情報が盗まれる可能性があり、秘密鍵を安全に管理する必要性がある。
【０００５】
本発明はこのような事情に鑑みてなされたもので、その目的は、店頭でタイムリーに仮署名を行い、署名する契約内容を確認した後に正式な電子署名を行うことができるＩＣカード、店舗端末を提供することにある。
【０００６】
【課題を解決するための手段】
上記目的を達成するために、本発明は、署名検証装置に対して電子署名によって署名を行うための情報を送受信する通信手段を有する署名生成装置において、前記署名を行うための情報となる秘密鍵情報を記憶する記憶手段と、前記記憶手段に記憶される秘密鍵情報と前記通信手段によって前記署名検証装置から受信する電子署名を行う文書の内容に関する情報となるメッセージとを用いて前記メッセージに仮署名を行うための情報である仮署名情報と前記仮署名を署名に変換するための情報である変換データを演算する演算手段とを有し、前記通信手段によって仮署名情報を前記署名検証装置に送信した後に、前記変換データを前記署名検証装置に送信して電子署名によって署名を行うことを特徴とする。
【０００７】
また、本発明は、署名生成装置に対して電子署名によって署名を行うための情報を送受信する通信手段を有する署名検証装置において、前記電子署名によって署名を行う文書の内容に関する情報となるメッセージを生成するメッセージ生成手段と、前記署名生成装置に記憶される秘密鍵情報と前記メッセージとに基づいて、前記メッセージに仮署名を行うための情報である仮署名情報が演算されたか否かを、前記秘密鍵情報に対応する公開鍵情報と前記メッセージとを用いて検出する検証手段と、前記検証手段によって、前記仮署名情報が演算されたことが検出された場合に、前記メッセージに対する仮契約として設定する制御手段と、前記制御手段によって仮契約が設定された後に、前記署名生成装置から送信される変換データに基づいて、前記仮署名情報から署名情報を演算する署名生成手段と、を有することを特徴とする。
【０００８】
また、本発明は、署名検証装置に通信手段によって接続されるとともに、前記署名検証装置と通信を行う署名生成装置に通信手段によって接続され、前記署名検証装置と前記署名生成装置とに対して、電子署名によって署名を行うため情報を送受信する署名生成補助装置において、前記署名を行うための情報となる秘密鍵情報が部分秘密鍵情報として２分割され、分割された一方の部分秘密鍵情報を記憶する記憶手段と、前記記憶手段に記憶される部分秘密鍵情報と前記署名検証装置から送信される前記電子署名によって署名を行う文書の内容に関する情報となるメッセージとに基づいて、前記メッセージに仮署名を行うための情報である仮署名情報と前記仮署名を署名に変換するための情報である変換データを演算する演算手段とを有し、前記通信手段によって仮署名情報を前記署名検証装置に送信した後に、前記変換データを前記署名検証装置に送信して電子署名によって署名を行うことを特徴とする。
【０００９】
また、本発明は、署名生成補助装置に通信手段によって接続されるとともに、前記署名生成補助装置と通信を行う署名生成装置に通信手段によって接続され、前記署名生成補助装置と前記署名生成装置とに対して、電子署名によって署名を行うため情報を送受信する署名検証装置において、前記電子署名によって署名を行う文書の内容に関する情報となるメッセージを生成するメッセージ生成手段と、前記メッセージを前記署名生成装置に送信した後、前記署名生成装置から送信される部分署名情報を記憶する記憶手段と、前記メッセージを前記署名生成補助装置に送信した後、前記署名生成補助装置に記憶される部分秘密鍵情報と前記メッセージとに基づいて、前記メッセージに仮署名を行うための情報である仮署名情報が演算されたか否かを、前記分割された秘密鍵情報に対応する公開鍵情報と前記メッセージと前記部分署名情報とを用いて検出する検証手段と、前記検証手段によって、前記仮署名情報が演算されたことが検出された場合に、前記メッセージに対する仮契約として設定する制御手段と、前記制御手段によって仮契約が設定された後に、前記署名生成補助装置から送信される変換データに基づいて、前記仮署名情報から署名情報を演算する署名生成手段とを有することを特徴とする。
【００１０】
また、本発明は、署名検証装置に対して電子署名によって署名を行うための情報を送受信する通信手段を有する署名生成装置における電子署名生成プログラムを記憶した記録媒体において、前記記録媒体は、前記署名を行うための情報となる秘密鍵情報を記憶する記憶ステップと、前記記憶ステップによって記憶される秘密鍵情報と前記通信手段によって前記署名検証装置から受信する電子署名を行う文書の内容に関する情報となるメッセージとを用いて前記メッセージに仮署名を行うための情報である仮署名情報と前記仮署名を署名に変換するための情報である変換データを演算する演算ステップとを有し、前記通信手段によって仮署名情報を前記署名検証装置に送信した後に、前記変換データを前記署名検証装置に送信して電子署名によって署名を行う送信ステップとをコンピュータに行わせることを特徴とする。
【００１１】
また、本発明は、署名生成装置に対して電子署名によって署名を行うための情報を送受信する通信手段を有する署名検証装置における署名生成プログラムを記憶した記録媒体において、前記記録媒体は、前記電子署名によって署名を行う文書の内容に関する情報となるメッセージを生成するメッセージ生成ステップと前記署名生成装置に記憶される秘密鍵情報と前記メッセージとに基づいて、前記メッセージに仮署名を行うための情報である仮署名情報が演算されたか否かを、前記秘密鍵情報に対応する公開鍵情報と前記メッセージとを用いて検出する検証ステップと、前記検証ステップによって、前記仮署名情報が演算されたことが検出された場合に、前記メッセージに対する仮契約として設定する制御ステップと、前記制御ステップによって仮契約が設定された後に、前記署名生成装置から送信される変換データに基づいて、前記仮署名情報から署名情報を演算する署名生成ステップとをコンピュータに行わせることを特徴とする。
【００１２】
また、本発明は、署名検証装置に通信手段によって接続されるとともに、前記署名検証装置と通信を行う署名生成装置に通信手段によって接続され、前記署名検証装置と前記署名生成装置とに対して、電子署名によって署名を行うため情報を送受信する署名生成補助装置における署名生成プログラムを記憶した記録媒体において、前記記録媒体は、前記署名を行うための情報となる秘密鍵情報が部分秘密鍵情報として２分割され、分割された一方の部分秘密鍵情報を記憶する記憶ステップと、前記記憶ステップによって記憶される部分秘密鍵情報と前記署名検証装置から送信される前記電子署名によって署名を行う文書の内容に関する情報となるメッセージとに基づいて、前記メッセージに仮署名を行うための情報である仮署名情報と前記仮署名を署名に変換するための情報である変換データを演算する演算ステップと、前記通信手段によって仮署名情報を前記署名検証装置に送信した後に、前記変換データを前記署名検証装置に送信して電子署名によって署名を行う送信ステップとをコンピュータに行わせることを特徴とする。
【００１３】
また、本発明は、署名生成補助装置に通信手段によって接続されるとともに、前記署名生成補助装置と通信を行う署名生成装置に通信手段によって接続され、前記署名生成補助装置と前記署名生成装置とに対して、電子署名によって署名を行うため情報を送受信する署名検証装置における署名生成プログラムを記録した記録媒体において、前記記録媒体は、前記電子署名によって署名を行う文書の内容に関する情報となるメッセージを生成するメッセージ生成ステップと、前記メッセージを前記署名生成装置に送信した後、前記署名生成装置から送信される部分署名情報を記憶する記憶ステップと、前記メッセージを前記署名生成補助装置に送信した後、前記署名生成補助装置に記憶される部分秘密鍵情報と前記メッセージとに基づいて、前記メッセージに仮署名を行うための情報である仮署名情報が演算されたか否かを、前記分割された秘密鍵情報に対応する公開鍵情報と前記メッセージと前記部分署名情報とを用いて検出する検証ステップと、前記検証ステップによって、前記仮署名情報が演算されたことが検出された場合に、前記メッセージに対する仮契約として設定する制御ステップと、前記制御ステップによって仮契約が設定された後に、前記署名生成補助装置から送信される変換データに基づいて、前記仮署名情報から署名情報を演算する署名生成ステップとをコンピュータに行わせることを特徴とする。
【００１４】
【発明の実施の形態】
以下、本発明の一実施形態によるＩＣカードおよび店舗端末を図面を参照して説明する。ここでは、ＩＣカードを所有する利用者が、店舗に出向き、電子署名によって取引の契約を行う場合を例として説明する。図１は、この発明の一実施形態による電子署名システムの構成を示す概略ブロック図である。この図において、電子署名システムは、利用者端末１００と、店舗端末３００と、ネットワーク４００と、ＩＣカード５００とによって構成される。
【００１５】
利用者端末１００は、記憶部１１０と、入力部１２０と、通信部１５０とがバス１６０によって接続され、装置各部間で各種データが制御部１３０の制御に基づいてバス１６０を介して転送される。この利用者端末１００は、例えば、利用者の自宅に設けられる。
記憶部１１０は、電子署名を生成するための鍵情報となる秘密鍵ＳＫと、秘密鍵ＳＫに対応する鍵情報である公開鍵（ｅ，ｎ）と、認証局（ＣＡ）が発行する公開鍵（ｅ，ｎ）の所持者を証明するデータとなる公開鍵証明書情報Ｃｅｒｔとを記憶する。また、記憶部１１０は、各種データを記憶する。
通信部１５０は、ネットワーク４００を介して店舗端末３００と通信を行う。入力部１２０は、利用者端末１００を使用する利用者からの入力に応じた信号を出力する。
【００１６】
さらに、利用者端末１００の外部には、ＩＣカード５００とバス１６０の間のデータの送受信を行う入出力装置（以下、「Ｒ／Ｗ」と称す）１７０が接続される。さらに、利用者端末１００は、周辺機器として表示装置（図示せず）が接続されるものとする。ここで、表示装置とはＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）や液晶表示装置等のことをいう。
【００１７】
店舗端末３００は、制御部３１０と、記憶部３２０と、ＭＳＧ生成部３３０と、指示部３４０と、署名生成部３５０と、検証部３６０と、通信部３７０と、バス３８０とによって構成される。店舗端末３００の各部は、バス３８０によって接続され、制御部３１０によってデータの転送が制御される。この店舗端末３００は、例えば、商品の販売店や、金融機関などの店舗に設けられる。
【００１８】
記憶部３２０は、公開鍵（ｅ，ｎ）、部分秘密鍵ＳＫｂｉを記憶する。また、記憶部３２０は、各種データを記憶する。ＭＳＧ生成部３３０は、契約者となる利用者と契約を結ぶための契約書となるメッセージ（以下、「ＭＳＧ」と称す）を生成する。指示部３４０は、バス３８０とＲ／Ｗ３９０を介してＩＣカード５００に「０」または「１」の指示を行う。この「０」または「１」の指示は、ランダムに決定される。
【００１９】
検証部３６０は、ＩＣカード５００から送信される乱数ｒiと乱数データＲiに基づいて、以下に示すフォーマット関数を用いた（１）式が成立するか否かを検出する。
Ｆ（ｒi）e＝Ｒiｍｏｄ（ｎ）……（１）
ただし、Ｆ（ｒi）は、フォーマット関数であり、識別情報ＩＤなど、固定値や、日付、０と１の連続あるいは繰り返しパターンなどからなるテンプレートに入力データを設定し、冗長性を持たせたものである。このフォーマット関数に、さらに、チェックサムや、ＣＲＣ等のコードを追加したものであってもよい。
【００２０】
また、検証部３６０は、ＩＣカード５００から送信される仮署名ｙｉとＭＳＧ生成部３３０によって生成されるＭＳＧと、公開鍵ｅに基づいて、以下に示す（２）式が成立するか否かを検出する。
ｙｉｅ＝Ｒｉｈ（ＭＳＧ）ｍｏｄ（ｎ）……（２）
ここで、この実施形態において用いられるハッシュ関数は、一方向性ハッシュ関数が使用される。このハッシュ関数のほか、パディング処理などの処理をあわせて行ってもよい。
【００２１】
署名生成部３５０は、ＩＣカード５００から送信される仮署名ｙｉと乱数ｒｉに基づいて、以下に示す（３）式によって署名Ｓを生成する。
Ｓ＝ｙｉ／Ｆ（ｒｉ）ｍｏｄ（ｎ）……（３）
また、署名生成部３５０は、生成した署名ＳをＭＳＧと公開鍵ｅに基づいて、以下に示す（４）式が成立するか否かを検出し、署名Ｓの検証を行う。
Ｓｅ＝ｈ（ＭＳＧ）ｍｏｄ（ｎ） ……（４）
【００２２】
通信部３７０は、ネットワーク４００を介して利用者端末１００と通信を行う。さらに、店舗端末３００の外部には、バス３８０とＩＣカード５００との間のデータの送受信を行うＲ／Ｗ３９０が接続される。
また、店舗端末３００は、周辺機器として入力装置、表示装置等（いずれも図示せず）が接続されるものとする。ここで、入力装置とはキーボード、マウス等の入力デバイスのことをいう。表示装置とはＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）や液晶表示装置等のことをいう。
【００２３】
ＩＣカード５００は、通信部５１０と、制御部５２０と、記憶部５３０と、演算部５４０と、乱数生成部５５０、バス５６０とによって構成される。通信部５１０は、Ｒ／Ｗ１７０を介して利用者端末１００と通信を行う。また、通信部５１０は、Ｒ／Ｗ３９０を介して店舗端末３００と通信を行う。記憶部５３０は、利用者端末１００から送信される秘密鍵ＳＫを記憶する。また、記憶部５３０は、乱数ｒｉが乱数生成部５５０によって生成される毎に記憶する。演算部５４０は、店舗端末３００から送信されるＭＳＧと記憶部５３０に記憶される秘密鍵ＳＫとに基づいて、以下に示す（５）式によって署名Ｓを演算する。
Ｓ＝ｈ（ＭＳＧ）ＳＫｍｏｄ（ｎ）……（５）
【００２４】
また、演算部５４０は、署名Ｓと乱数生成部５５０によって生成される乱数ｒiとに基づいて、以下に示す（６）式によって仮署名ｙiを演算する。
ｙi＝Ｆ（ｒi）Ｓ×ｍｏｄ（ｎ）……（６）
【００２５】
また、演算部５４０は、乱数生成部５５０によって生成される乱数ｒiと公開鍵ｅとに基づいて、以下に示す（７）式によって乱数データＲiを演算する。
Ｒi＝Ｆ（ｒi）eｍｏｄ（ｎ）……（７）
乱数生成部５５０は、乱数ｒiを生成する。
【００２６】
制御部５２０は、ＩＣカード５００内の各部の間のデータをバス５６０を介して転送する制御を行う。また、制御部５２０は、店舗端末３００に乱数データＲｉを送信した後に、店舗端末３００から「０」が指示された場合に、乱数ｒｉを店舗端末３００に送信する制御を行うとともに、店舗端末３００から「１」が指示された場合に、演算部５４０によって生成されて仮署名ｙｉを店舗端末３００に送信する制御を行う。
【００２７】
次に、図１の構成における電子署名システムの動作について図２のフローチャートを用いて説明する。まず、利用者は、ＩＣカード５００をＲ／Ｗ１７０に挿入した後に記憶部１１０に記憶されている公開鍵（ｅ，ｎ）、秘密鍵ＳＫ、公開鍵証明書情報Ｃｅｒｔとを転送してＩＣカード５００の記憶部５３０に記憶する。そして、利用者は、ＩＣカード５００を携帯して店舗端末３００が設置された店舗に出向き、店舗の従業員と取引を行い、契約を行う場合に、契約を行う内容の情報となるメッセージの送信を従業員に依頼する。
【００２８】
次に、従業員は、契約を行う内容の情報となるＭＳＧを生成する指示を店舗端末３００に入力する。店舗端末３００のＭＳＧ生成部３３０は、ＭＳＧの生成指示をうけて、ＭＳＧを生成し、生成したＭＳＧを記憶部５３０に記憶する。制御部３１０は、ＭＳＧ生成部３３０によって生成されたＭＳＧを表示装置に表示する制御を行う。
【００２９】
次に、利用者によって表示装置に表示されたＭＳＧを確認した後、ＩＣカード５００をＲ／Ｗ３９０に挿入する。ＩＣカード５００がＲ／Ｗ３９０に挿入されると、制御部３１０は、ＩＣカード５００の記憶部５３０に記憶されている公開鍵（ｅ，ｎ）と公開鍵証明書情報Ｃｅｒｔとを読み出す（ステップＳ１）。そして、店舗端末３００は、読み出した公開鍵（ｅ，ｎ）と公開鍵証明書情報Ｃｅｒｔとを記憶部３２０に記憶した後、表示装置に表示する。従業員は、表示装置に表示された公開鍵（ｅ，ｎ）と公開鍵証明書情報Ｃｅｒｔとによって公開鍵（ｅ，ｎ）を確認した後（ステップＳ２）、入力装置からＭＳＧを送信する指示を入力する。ＭＳＧの送信指示が入力されると、制御部３１０は、記憶部３２０に記憶されたＭＳＧを読み出し、ＩＣカード５００へ転送する（ステップＳ３）。
【００３０】
ＩＣカード５００に転送されたＭＳＧは、記憶部５３０に記憶される。ＭＳＧが記憶されると、演算部５４０は、ＭＳＧと記憶部５３０に記憶される秘密鍵ＳＫとに基づいて、（５）式によって署名Ｓを生成する（ステップＳ４）。次に、演算部５４０は、乱数生成部５５０に乱数ｒiの生成を指示する。乱数生成部５５０は、演算部５４０からの指示に応じて乱数ｒiを生成し（ステップＳ５）、演算部５４０に出力するとともに、生成された回数との乱数ｒiを記憶部５３０に記憶する。
【００３１】
演算部５４０は、乱数生成部５５０から乱数ｒiが出力されると、この乱数ｒiと署名Ｓとに基づいて、（６）式によって仮署名ｙiを生成するとともに（ステップＳ６）、公開鍵ｅと乱数ｒiとに基づいて、（７）式によって乱数データＲiを生成し（ステップＳ７）、生成した仮署名ｙiと乱数データＲiとを一時保持する。そして、演算部５４０は、生成した乱数データＲiを通信部５１０によって店舗端末３００に送信する（ステップＳ８）。
【００３２】
店舗端末３００は、ＩＣカード５００から送信される乱数データＲiを受信し、記憶部３２０に記憶する。乱数データＲiが記憶された後、指示部３４０は、「０」または「１」をＩＣカード５００に指示する。
指示部３４０から「０」が指示された場合、ＩＣカード５００の制御部５２０は、記憶部３２０に記憶されている乱数ｒiを読み出して通信部５１０によって店舗端末３００に出力する制御を行う。通信部５１０は、制御部５２０からの指示に応じて、乱数ｒiを店舗端末３００に送信する（ステップＳ１０）。
【００３３】
店舗端末３００は、乱数ｒiを受信すると、検証部３６０によって、乱数ｒiと記憶部３２０に記憶されている乱数データＲiに基づいて、上述の（１）式が成立するか否かを検出する（ステップＳ１１）。検証部３６０は、（１）が成立する場合に、ＩＣカード５００が正しい秘密鍵ＳＫを用いて演算したことを検出する。
【００３４】
一方、指示部３４０から「１」が指示された場合、ＩＣカード５００の制御部５２０は、演算部５４０に保持されている仮署名ｙiを読み出して通信部５１０によって店舗端末３００に出力する制御を行う。通信部５１０は、制御部５２０からの指示に応じて、仮署名ｙiを店舗端末３００に送信する（ステップＳ１２）。
【００３５】
店舗端末３００は、仮署名ｙiを受信すると、記憶部３２０に記憶したのち、検証部３６０によって、仮署名ｙiと記憶部３２０に記憶されている公開鍵ｅとＭＳＧと乱数データＲiに基づいて、上述の（２）式が成立するか否かを検出する（ステップＳ１２）。検証部３６０は、（２）が成立する場合に、ＩＣカード５００が正しい秘密鍵ＳＫを用いて演算したことを検出する（ステップＳ１３）。
【００３６】
そして、制御部３１０は、正しい秘密鍵ＳＫを用いて演算されたことが検証部３６０によって検出されると、さらに、ステップＳ５からステップＳ１３までの処理動作をｋ回繰り返す制御を行う。ｋ回繰り返した後、常に正しい秘密鍵ＳＫを用いて演算されたことが検出された場合、制御部３１０は、ｉ回（１≦ｉ≦ｋ）に送信された仮署名ｙiを署名Ｓを生成するための情報として記憶部３２０から抽出し、公開鍵（ｅ，ｎ）、公開鍵証明書情報Ｃｅｒｔ、ＭＳＧを関連づけて記憶部３２０に記憶する（ステップＳ１５）。そして、制御部３１０は、抽出された仮署名ｙiに対応する回数を示す回数情報ｉをＩＣカード５００に出力する（ステップＳ１６）。
【００３７】
ＩＣカード５００は、店舗端末３００から出力された回数情報ｉを記憶部５３０に記憶する（ステップＳ１７）。
そして、回数情報が記憶された後、利用者は、ＩＣカード５００をＲ／Ｗ３９０から取り出し、自宅へ戻った後、利用者端末１００によってＩＣカード５００に記憶されているＭＳＧを表示装置に表示させ、ＭＳＧの内容を再度確認する（ステップＳ１８）。そして、利用者によってＭＳＧの内容が確認された後、利用者からの送信指示に応じて、通信部１５０は、ネットワーク４００を介してＩＣカード５００の記憶部５３０に記憶されている、回数情報ｉに対応する回数の乱数ｒiを変換データとして店舗端末３００に送信する（ステップＳ１９）。
【００３８】
ＩＣカード５００から送信される乱数ｒｉを受信すると、店舗端末３００は、署名生成部３５０によって、ＩＣカード５００から送信される仮署名ｙｉと乱数ｒｉに基づいて、上述の（３）式によって署名Ｓを生成する。次いで、署名生成部３５０は、生成した署名ＳをＭＳＧと公開鍵ｅに基づいて、上述の（４）式を用いて署名Ｓの検証を行う。
【００３９】
上述したように、検証部３６０が上述の（１）式と（２）式とが成立するか否かを検出することによって、店舗端末３００は、ＩＣカード５００から署名Ｓそのものを受信することなく、利用者が秘密鍵ＳＫを持っていることの確認と、利用者がＭＳＧに対して仮署名のデータを生成していることの確認を行うことができる。これらの確認を行うことによって、仮署名を行い、利用者がＭＳＧを確認した後に、乱数ｒiを送信して、仮署名ｙiを署名Ｓに変換することができる。
【００４０】
なお、ここで生成される仮署名ｙiは、第三者にとって正当なものであるか否かを判断できないので、正式な電子署名として成立しないので、利用者のリスクを利用者および店舗側に限定できる。
【００４１】
ここで、図３を用いて、仮署名ｙiについて説明する。従来のＲＳＡ署名の方法を用いると、Ｓe＝ｈ（ＭＳＧ）となるが、上記の方法によれば、仮署名ｙiは、ｙie＝Ｒi×ｈ（ＭＳＧ）となる。従って、仮署名ｙiを乱数を用いて生成した場合、Ｒi＝ｈ（ＭＳＧ）／ｙieとして乱数データＲiを演算すると、秘密鍵ＳＫを有していない第三者が仮署名ｙiを生成することが可能となるり、第三者が利用者になりすますことが可能となってしまう。
【００４２】
一方、ＩＣカード５００は、店舗端末３００から指定される「０」または「１」を予測することができない。もし、店舗端末３００から「１」が指示されることが予測できるのであれば、上記のように、予め仮署名ｙiを乱数を用いて生成して乱数データＲiを演算し、そして乱数データＲiを送信し、店舗端末３００から「１」が指示された後に乱数を用いて生成した仮署名ｙiを送信することによって、店舗端末３００における検証が成立する（符号６００）。
【００４３】
しかし、店舗端末３００から「０」が指示された場合、乱数データＲiに対応する乱数ｒiを送信しなければ、店舗端末３００の検証が成立しない。この場合、Ｆ（ｒi）e＝Ｒiを満たす乱数ｒiを計算することになるが、この乱数ｒiを求めるには、ｒi＝Ｆ´（ＲiSK）という演算を行う必要があり、秘密鍵ＳＫがないと、乱数ｒiを演算できない。従って、ＩＣカード５００において「１」が指示されることを予測して乱数ｒiと乱数データＲiを生成していた場合、秘密鍵ＳＫがないと乱数ｒiを演算できないので、検証部３６０の検証によって、なりすましを検出することが可能である（符号６０１）。（ただし、Ｆ´（）は、、Ｆ（）の逆関数）
【００４４】
他方、店舗端末３００から「０」が指示されることを予測して乱数ｒiを生成して乱数データＲiをＲi＝Ｆ（ｒi）eによって生成しておき、乱数データＲiを店舗端末３００に送信した後に、予測どおり店舗端末３００から「０」が指示された場合、乱数ｒiを送信すれば、検証部３６０における検証が成立し、秘密鍵ＳＫを有していない第三者が成りすますことが可能である（符号６０２）。
【００４５】
しかし、この場合、店舗端末３００から「１」が指示されると、仮署名ｙiを送信しなければならないが、このとき、仮署名ｙiを生成するには、秘密鍵ＳＫか必要となり、秘密鍵ＳＫを有していない第３者は、検証を成立させるための仮署名ｙiを生成することができない（符号６０３）。従って、検証部３６０によって、秘密鍵ＳＫを有していない第３者の成りすましを検出することが可能である。
【００４６】
このように、店舗端末３００は、乱数データＲiを受信した後に「０」または「１」を指示することによって、秘密鍵ＳＫを有する利用者であるか否かを検出することができる。このとき、上述した「０」または「１」の指示を行って、送信されるデータを検証することによって、１回あたり１／２の確率で秘密鍵ＳＫを有していない第３者の成りすましを検出することが可能であるので、「０」または「１」の指示を行う処理をｋ回繰り返して行うことによって、（１／２）kの確率で秘密鍵ＳＫを有していない第３者の成りすましを検出することが可能であるので、店舗端末３００は、圧倒的な確率で仮署名ｙiが正しいことを確認することが可能である。従って、店舗端末３００は、署名ＳそのものをＩＣカード５００から送信されなくても、秘密鍵ＳＫを有する利用者であることが確認できる。
【００４７】
店舗端末３００における店舗が不正をして仮署名ｙiを偽造した場合、利用者は、仮署名の検証処理を行うことによって仮署名ｙiが偽造されたものであるか否かを検証することが可能である。この検証処理は、例えば、ＭＳＧと検証する仮署名ｙiとを入力として、Ｔ＝ｙi÷ｈ（ＭＳＧ）SKｍｏｄ（ｎ）なる式によって、仮署名ｙiがＦ（）のフォーマット関数に適合するか否かを検証を行う。このフォーマット関数には冗長性があるので、仮署名ｙiが偽造されている場合、圧倒的に高い確率でフォーマットに適合せず、仮署名ｙiの検証を行うことが可能である。ただし、この検証処理を行う場合、ＴからＭＳＧに対する署名Ｓを演算できるため、店舗端末３００に直接Ｔを渡すのではなく、信頼できる第三者がＴを確認するようにすることが望ましい。
【００４８】
次に、第２の実施形態について説明する。図４は、第２の実施形態における電子署名システムの構成を示す概略ブロック図である。この図において、図１の各部に対応する部分には同一の符号を付け、その説明を省略する。
利用者端末１００の分散部１４０は、秘密鍵ＳＫを部分秘密鍵ＳＫ１と部分秘密鍵ＳＫ２とに分割する。乱数生成部１８０は、乱数ｒiを生成する。演算部１９０は、図１の演算部５４０と同様に演算を行い、部分署名Ｓ１、乱数データＲi、仮署名ｙiを算出する。
【００４９】
ＩＣカード５００の演算部５４１は、店舗端末３００から送信されるＭＳＧと記憶部５３０に記憶される秘密鍵ＳＫ２とに基づいて、以下に示す（８）式によって部分署名Ｓ２を演算する。
Ｓ２＝ｈ（ＭＳＧ）ＳＫ２ｍｏｄ（ｎ）……（８）
ここで、部分署名とは、部分署名Ｓｎを２つすなわち部分署名Ｓ１と部分署名Ｓ２とを集めた場合に、署名Ｓが生成されるものである。
【００５０】
次に、図４の構成における装置の動作について、図５のフローチャートを用いて説明する。まず、利用者は、ＩＣカード５００をＲ／Ｗ１７０に挿入した後に記憶部１１０に記憶されている公開鍵（ｅ，ｎ）、公開鍵証明書情報Ｃｅｒｔとを転送してＩＣカード５００の記憶部５３０に記憶する（ステップＳ４８）。次いで、利用者は、入力部１２０から秘密鍵ＳＫを分割する指示を入力する。分散部１４０は、入力部１２０から入力される指示に応じて、記憶部１１０から秘密鍵ＳＫを読み出し、秘密鍵ＳＫ１と秘密鍵ＳＫ２とに分割し（ステップＳ４９）、分割した秘密鍵ＳＫ１と秘密鍵ＳＫ２とを記憶部１１０に記憶する。分散部１４０によって秘密鍵ＳＫが分割されると、分割された秘密鍵ＳＫ２をＩＣカード５００の記憶部５３０に記憶する（ステップＳ５０）。
【００５１】
そして、利用者は、ＩＣカード５００を携帯して店舗端末３００が設置された店舗に出向き、店舗の従業員と取引を行い、契約を行う場合に、契約を行う内容の情報となるメッセージの送信を従業員に依頼する。
そして、図２におけるステップＳ１〜ステップＳ３と同様に、ＩＣカード５００から公開鍵（ｅ，ｎ）と公開鍵証明書情報Ｃｅｒｔとが店舗端末３００に送信され（ステップＳ５１）、店舗端末３００において公開鍵（ｅ，ｎ）の確認がなされた後（ステップＳ５２）、ＭＳＧが生成され、ＩＣカード５００に送信される（ステップＳ５３）。
【００５２】
演算部５４０は、店舗端末３００から送信されるＭＳＧと記憶部５３０に記憶される秘密鍵ＳＫ２とに基づいて、Ｓ２＝ｈ（ＭＳＧ）ＳＫ２ｍｏｄ（ｎ）なる式によって部分署名Ｓ２を演算し、記憶部５３０に記憶する。記憶部５３０に記憶された後、制御部５２０は、通信部５１０によって部分署名Ｓ２を店舗端末３００送信する（ステップＳ５４）。店舗端末３００は、ＩＣカード５００から送信される部分署名Ｓ２を記憶部５３０に記憶する。
【００５３】
部分署名Ｓ２が記憶された後、店舗端末３００は、ＭＳＧを利用者端末１００に送信する（ステップＳ５５）。利用者端末１００は、演算部１９０によって部分署名Ｓ１をＳ１＝ｈ（ＭＳＧ）ＳＫ１ｍｏｄ（ｎ）なる式によって生成し（ステップＳ５６）、記憶部１１０に記憶する。次いで、利用者端末１００は、乱数生成部１８０によって乱数ｒiを発生させた後、記憶部１１０に記憶するとともに、演算部１９０によって仮署名ｙiと乱数データＲiと生成して記憶部５３０に記憶した後、乱数データＲiを店舗端末３００に送信する（ステップＳ５７）。
【００５４】
店舗端末３００は、乱数データＲiを受信して記憶部３２０に記憶した後、指示部３４０によって「０」または「１」を利用者端末１００に指示する（ステップＳ５８）。利用者端末１００は、店舗端末３００から「０」が指示された場合に乱数ｒiを店舗端末３００に送信し、「１」が指示された場合に仮署名ｙiを店舗端末３００に送信する（ステップＳ５９）。
【００５５】
店舗端末３００は、検証部３６０によって利用者端末１００から送信されるデータに応じて、乱数ｒiまたは仮署名ｙiを検証する（ステップＳ６０）。そして、上述のステップＳ５７からステップＳ６０までの処理をｋ回繰り返す（ステップＳ６１）。このとき、店舗端末３００は、仮署名ｙiと公開鍵（ｅ，ｎ）と公開鍵証明書情報ＣｅｒｔとＭＳＧと部分署名Ｓ２とを繰り返した回数ｉ（１≦ｉ≦ｋ）に関連づけて記憶部３２０に記憶する（ステップＳ６１）。そして、店舗端末３００は、回数ｉを回数情報ｉとして利用者端末１００に送信する（ステップＳ６２）。利用者端末１００は、店舗端末３００から回数情報ｉを受信すると、回数情報ｉを記憶部１１０に記憶する（ステップＳ６３）。
【００５６】
そして、利用者は、ＩＣカード５００を自宅に持ち帰った後、利用者端末１００の表示装置にＭＳＧの内容を表示させ、ＭＳＧの内容を確認した後、ＭＳＧに問題がなければ、回数情報ｉに対応する乱数ｒiを変換データとして店舗端末３００に送信する（ステップＳ６４）。店舗端末３００は、署名生成部３５０によって利用者端末１００から送信された乱数ｒiを用いてＳ＝（ｙi×Ｓ２）÷Ｆ（ｒi）ｍｏｄ（ｎ）なる式によって署名Ｓを生成し、この署名Ｓを検証部３６０によって検証する（ステップＳ６５）。
【００５７】
なお、上記実施形態において、仮署名の生成と乱数ｒiとの送信において、ＩＣカード５００にＰＩＮを設定してもよく、また、このＰＩＮをそれぞれ別のデータを設定するようにしてもよい。また、仮署名生成時においてはＰＩＮを設定せず、乱数ｒiの送信時においてＰＩＮを入力するように設定してもよい。このように、ＩＣカード５００のアクセス制御機能を利用して、異なったレベルの制限を設定し、仮署名時に店舗端末３００によって乱数ｒiを密か取り出されることを防止することが好ましい。
【００５８】
なお、上記実施形態において、利用者が乱数ｒiを所定の期間内に送信しなかった場合、店舗端末３００は、仮署名ｙiによる仮契約を取り消すようにしてもよい。
また、上記実施形態において、「０」または「１」を指示して検証部３６０によって検証を行う処理をｋ回繰り返すようにしたが、一度にｋ個のデータを送受信するようにしてもよい。
【００５９】
また、上記実施形態において、乱数ｒiを生成する場合に、まず乱数ｒ0を生成し、ｒi＝ｈ（ｒ0‖ｉ）として生成するようにしてもよい。これにより、１つの乱数ｒ0と回数情報ｉを記憶しておくことによって、乱数ｒiを算出することが可能であるので、乱数ｒiを生成する毎に記憶する必要がなくなる。これにより、必要な記憶領域の増加を抑えることが可能である。
【００６０】
さらに、上述した実施形態によれば、従来のＲＳＡ署名による方法とほぼ同じ処理を実装すればよいので、ＩＣカードにおける処理を増加させることがなく、これにより、従来のＩＣカードに本発明を適用することができる。
【００６１】
また、乱数ｒiをｒi´＝ｈ（ｒi）なる式に代入し、算出される乱数ｒi´を新たな乱数ｒiとして、再度上記の式を用いてさらにｒi´を算出するようにしてもよい。また、乱数ｒiの生成は、上述の方法以外によって生成するようにしてもよい。
【００６２】
なお、上述の第２の実施形態において、秘密鍵ＳＫを２つに分割したが、シークレットシェアを用いて分割するようにしてもよい。ここでいうシークレットシェアは、秘密鍵ＳＫを、しきい値ｋでｎ個の部分秘密鍵ＳＫ１〜ＳＫｎに分散し、分散された部分秘密鍵ＳＫ１〜ＳＫｎとＭＳＧとに基づいて、部分署名Ｓ１〜Ｓｎが生成する。そして、部分署名Ｓ１〜Ｓｎのうち、任意の部分署名Ｓｎがｋ個集まった場合に、署名Ｓが生成されるものである。
【００６３】
さらに、上述の第２の実施形態において、秘密鍵ＳＫを２つに分割し、ＩＣカード５００と利用者端末１００とに記憶するようにしたので、ＩＣカード５００に紛失、盗難される等の場合が発生しても、利用者端末１００によって秘密鍵ＳＫから新たな秘密鍵ＳＫ１´と秘密鍵ＳＫ２´を生成し、利用者端末１００に秘密鍵ＳＫ１´を設定すれば、第三者が紛失したＩＣカード５００を悪用しようとしても、使用できなくなる効果が得られる。
【００６４】
さらに、上述の第２の実施形態において、秘密鍵ＳＫを２つに分割した場合を一例として説明したが、秘密鍵ＳＫを秘密鍵ＳＫ１と秘密鍵ＳＫ２と秘密鍵ＳＫ３に分割し、秘密鍵ＳＫ１を利用者端末１００、秘密鍵ＳＫ２をＩＣカード５００、秘密鍵ＳＫ３を店舗端末３００に記憶させ、これら３つの秘密鍵が集まったときに署名Ｓを生成できるようにしてもよい。
【００６５】
さらに、上述の第２の実施形態において、秘密鍵ＳＫ２が利用者が気づかないうちに第三者にコピーされたとしても、利用者端末１００から乱数ｒiを送信しない限り、契約が成立しないので、悪意ある第三者の悪用を防ぐことが可能である。
【００６６】
また、図１における各部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより電子署名生成管理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フロッピーディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、この発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【００６７】
【発明の効果】
以上説明したように、この発明によれば、仮署名情報によって仮契約を行った後に仮署名情報を署名情報に変換する変換データを送信するようにしたので、仮署名を行うことによって秘密鍵が利用者の公開鍵に対応するものであることが確認でき、これにより、契約時に、利用者が実際に契約する本人であることの証明と、仮に契約を結ぶ仮契約を行うことができる効果が得られる。そして、利用者から店舗に変換データを送信することによって仮署名情報を電子署名に変換して契約を行うことができる、店頭でタイムリーに仮署名を行い、署名する契約内容を確認した後に正式な電子署名を行うことができる効果が得られる。
【００６８】
また、この発明によれば、仮署名した後に電子署名を行うようにしたので、ＩＣカードにディスプレイ等を設けることなくメッセージを確認することができるので、ＩＣカードの製造コストの増加を抑えることができる。
また、この発明によれば、仮署名した後に電子署名を行うようにした。従って、電子署名を生成した後は、従来の電子署名情報と同様に扱うことができるので、ＩＣカードと他の端末機器との互換性を低下させることがなく電子署名を行うことができる効果が得られる。
【００６９】
また、この発明によれば、秘密鍵情報を２つに分割し、ＩＣカードと利用者端末とに記憶するようにしたので、ＩＣカード５００に紛失、盗難等が発生した場合に、ＩＣカードの部分秘密鍵が利用者が気づかないうちに第三者にコピーされたとしても、利用者端末から変換データを送信しない限り、契約が成立しないので、秘密鍵情報の機密性を向上させることができる効果が得られる。
【図面の簡単な説明】
【図１】  この発明の一実施形態による電子署名システムの構成を示す概略ブロック図である。
【図２】  図１の構成における電子署名システムの動作について説明するためのフローチャートである。
【図３】  仮署名ｙiについて説明するための図面である。
【図４】  第２の実施形態における電子署名システムの構成を示す概略ブロック図である。
【図５】  図４の構成における電子署名システムの動作について説明するためのフローチャートである。
【符号の説明】
１００  利用者端末、    １１０  記憶部、
１３０、３１０、５２０  制御部、  １４０  分散部、
１５０、３７０、５１０  通信部、    １８０  乱数生成部、
１９０  演算部、    ３００  店舗端末、    ３２０  記憶部、
３３０  ＭＳＧ生成部、    ３４０  指示部、    ３５０  署名生成部、
３６０  検証部、    ５００  ＩＣカード、    ５３０  記憶部、
５４０、５４１  演算部、    ５５０  乱数生成部
【図１】
0004190713.tif 000002
【図２】
0004190713.tif 000003
【図３】
0004190713.tif 000004
【図４】
0004190713.tif 000005
【図５】
0004190713.tif 000006