(57)【要約】【課題】オンラインで締結した契約内容に十分な証拠能力を与える。【解決手段】甲の利用する処理装置１００側で、契約内容となる文字列を示す契約内容データＣを用意し、保存手段１１０に保存するとともに、送信手段１６０から乙の利用する処理装置２００へと送信し、保存手段２１０に保存する。手段２２０により、契約内容データＣのハッシュ値ＩＤ２を求め、乙の署名Ｓｉｇ２を付加し、正式契約申入情報として処理装置１００側へ送信する。手段１５０で、署名Ｓｉｇ２を検証する。手段１２０により得られたデータＣのハッシュ値ＩＤ１と送信されてきたＩＤ２とが、手段１３０で合致検証される。合致したハッシュ値ＩＤに、甲の署名Ｓｉｇ１を付加し、正式契約応諾情報として処理装置２００側へ送信する。手段２５０で、署名Ｓｉｇ１を検証する。手段２３０で、ハッシュ値ＩＤ２と送信されてきたＩＤとの合致検証を行う。【選択図】　　　　図１
2004030121.tif 000002
【特許請求の範囲】
【請求項１】
第１の取引主体と第２の取引主体との間で、ネットワークを介して所定の契約内容について契約を締結するために利用される電子契約システムであって、
前記第１の取引主体によって利用される第１の情報処理装置と、前記第２の取引主体によって利用される第２の情報処理装置と、を備え、
前記第１の情報処理装置には、契約内容となる文字列を示す契約内容データＣを保存する第１の契約内容保存手段と、入力データに対して一義的に定まる出力データを得ることができる所定のアルゴリズムに基く演算機能を有し、前記契約内容データＣに対して前記所定のアルゴリズムに基く演算を行い、前記契約内容データＣに対して一義的に定まる第１の契約内容識別データＩＤ１を生成する第１の識別データ生成手段と、前記契約内容データＣを含む契約内容情報を、前記ネットワークを介して前記第２の情報処理装置へと送信する契約内容情報送信手段と、が設けられ、
前記第２の情報処理装置には、送信されてきた前記契約内容情報内の前記契約内容データＣを保存する第２の契約内容保存手段と、前記第２の契約内容保存手段に保存されている契約内容データＣに対して前記所定のアルゴリズムに基く演算を行い、前記第２の契約内容保存手段に保存されている契約内容データＣに対して一義的に定まる第２の契約内容識別データＩＤ２を生成する第２の識別データ生成手段と、前記第２の契約内容識別データＩＤ２に対する前記第２の取引主体のデジタル署名Ｓｉｇ２を生成する第２の取引主体用署名生成手段と、前記第２の契約内容識別データＩＤ２と前記第２の取引主体のデジタル署名Ｓｉｇ２とを含む正式契約申入情報を、前記ネットワークを介して前記第１の情報処理装置へと送信する正式契約申入情報送信手段と、が設けられ、
前記第１の情報処理装置には、更に、送信されてきた前記正式契約申入情報内の前記第２の契約内容識別データＩＤ２と前記第２の取引主体のデジタル署名Ｓｉｇ２との整合性を検証する第１の署名検証手段と、前記第１の契約内容識別データＩＤ１と前記第２の契約内容識別データＩＤ２との合致を検証する第１の識別データ検証手段と、前記第１の識別データ検証手段の検証により合致した契約内容識別データＩＤに対する前記第１の取引主体のデジタル署名Ｓｉｇ１を生成する第１の取引主体用署名生成手段と、前記合致した契約内容識別データＩＤと前記第１の取引主体のデジタル署名Ｓｉｇ１とを含む正式契約応諾情報を、前記ネットワークを介して前記第２の情報処理装置へと送信する正式契約応諾情報送信手段と、が設けられ、
前記第２の情報処理装置には、更に、送信されてきた前記正式契約応諾情報内の前記合致した契約内容識別データＩＤと前記第１の取引主体のデジタル署名Ｓｉｇ１との整合性を検証する第２の署名検証手段と、前記第２の識別データ生成手段によって生成された前記第２の契約内容識別データＩＤ２と前記合致した契約内容識別データＩＤとの合致を検証する第２の識別データ検証手段と、が設けられていることを特徴とする電子契約システム。
【請求項２】
請求項１に記載の電子契約システムにおいて、
第１の識別データ生成手段および第２の識別データ生成手段が、それぞれ複数Ｎ通りのアルゴリズムの中から選択された特定のアルゴリズムを用いて、契約内容データＣに対する契約内容識別データを生成する機能を有し、
同一の契約内容データＣに対して契約内容識別データを生成する演算を行う際には、前記第１の識別データ生成手段および前記第２の識別データ生成手段において、同一のアルゴリズムが選択されて用いられるように構成したことを特徴とする電子契約システム。
【請求項３】
請求項２に記載の電子契約システムにおいて、
第２の識別データ生成手段が、複数Ｎ通りのアルゴリズムの中から特定のアルゴリズムを選択する機能を有し、
正式契約申入情報送信手段が、前記第２の識別データ生成手段によって選択された特定のアルゴリズムを示すアルゴリズム指定コードを正式契約申入情報に含ませて送信する機能を有し、
第１の識別データ生成手段が、送信されてきた前記アルゴリズム指定コードに基いて前記特定のアルゴリズムを選択する機能を有することを特徴とする電子契約システム。
【請求項４】
請求項１〜３のいずれかに記載の電子契約システムにおいて、
契約内容識別データを得るためのアルゴリズムとして、入力データに対しては唯一の出力データが定まるが、逆に、出力データに対しては唯一の入力データが定まらない一方向性を有し、かつ、入力データの総データ量に比べて出力データの総データ量が小さくなるようなアルゴリズムを用いることを特徴とする電子契約システム。
【請求項５】
請求項１〜４のいずれかに記載の電子契約システムにおいて、
第１の識別データ生成手段および第２の識別データ生成手段が、契約内容データＣにハッシュ関数を適用して得られるハッシュ値を契約内容識別データとする演算を行うことを特徴とする電子契約システム。
【請求項６】
請求項１〜５のいずれかに記載の電子契約システムにおいて、
第１の情報処理装置と第２の情報処理装置とが、ネットワークを介してやりとりされる情報を、所定の方法で暗号化した状態で送受する機能を有することを特徴とする電子契約システム。
【請求項７】
請求項６に記載の電子契約システムにおいて、
第１の情報処理装置が、送信対象となる情報を、第２の取引主体の公開鍵を用いて暗号化してから送信する機能を有し、
第２の情報処理装置が、受信した前記情報を、第２の取引主体の秘密鍵を用いて復号化してから取り込む機能を有することを特徴とする電子契約システム。
【請求項８】
請求項６または７に記載の電子契約システムにおいて、
第２の情報処理装置が、送信対象となる情報を、第１の取引主体の公開鍵を用いて暗号化してから送信する機能を有し、
第１の情報処理装置が、受信した前記情報を、第１の取引主体の秘密鍵を用いて復号化してから取り込む機能を有することを特徴とする電子契約システム。
【請求項９】
請求項１〜８のいずれかに記載の電子契約システムにおいて、
第１の取引主体用署名生成手段が、第１の取引主体の秘密鍵を用いてデジタル署名の作成を行う機能を有し、
第２の署名検証手段が、第１の取引主体の公開鍵を用いて整合性の検証を行うことを特徴とする電子契約システム。
【請求項１０】
請求項１〜９のいずれかに記載の電子契約システムにおいて、
第２の取引主体用署名生成手段が、第２の取引主体の秘密鍵を用いてデジタル署名の作成を行う機能を有し、
第１の署名検証手段が、第２の取引主体の公開鍵を用いて整合性の検証を行うことを特徴とする電子契約システム。
【請求項１１】
請求項１〜１０のいずれかに記載の電子契約システムにおいて、
第１の契約内容保存手段内には、第１の契約内容識別データＩＤ１に対応づけて複数の契約内容データが保存できるようにし、第２の契約内容保存手段内には、第２の契約内容識別データＩＤ２に対応づけて複数の契約内容データが保存できるようにし、それぞれ契約内容識別データに基いて特定の契約内容データの検索が行えるようにしたことを特徴とする電子契約システム。
【請求項１２】
請求項１〜１１のいずれかに記載の電子契約システムにおける第１の情報処理装置または第２の情報処理装置として機能する情報処理装置。
【請求項１３】
請求項１２に記載された情報処理装置としてコンピュータを機能させるためのプログラムまたは当該プログラムを記録したコンピュータ読取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は電子契約システムに関し、特に、第１の取引主体と第２の取引主体との間で、ネットワークを介して所定の契約内容について契約を締結するために利用される電子契約システムに関する。
【０００２】
【従来の技術】
インターネットの普及により、企業間における電子商取引の頻度は益々その比重を増してきており、また、個人の日常生活においても、商品の購入、チケットの予約、電子雑誌の購読、オークションへの参加など、様々な電子商取引が浸透し始めている。このような電子商取引は、インターネットを媒介として行われるため、互いに相手の存在を直接的には意識していないことも少なくないが、法律的な商取引の一形態である以上、第１の取引主体と第２の取引主体との間に、商取引契約が締結されることが前提となる。このような商取引契約の締結には、「所定の契約内容に合意する」旨の相互の意思表示が必要とされ、通常、一方の取引主体が契約内容の提示を行い、他方の取引主体がこの契約内容に応諾する、という手順が採られる。たとえば、インターネット上に開設された一般的な電子モールを利用して、商品の購入やオークションへの参加などを行う場合であれば、当該電子モールのＷｅｂページ上に契約内容の一部（商品名、価格、納品方法、決済方法など）が提示される。一般消費者が、このＷｅｂページ上に掲載されている特定の商品を特定の個数だけ発注する旨の意思表示をオンラインで行えば、契約内容が確定したことになり、電子モール側がこの注文を受諾した時点で、双方が契約内容に合意したものとして契約締結の取り扱いがなされる。通常、電子モールからは、注文を受諾した旨の確認電子メールが返信されることになる。
【０００３】
このような電子商取引には、セキュリティ上の問題も数々指摘されており、このような問題を解決するための技術的手段も実用化されつつある。たとえば、インターネットを介した情報伝送のセキュリティを高める手段としては、ＳＳＬ（Ｓｅｃｕｒｅ　Ｓｏｃｋｅｔｓ　Ｌａｙｅｒ）などの技術が一般的に利用されており、送信情報の内容およびその送信者を認証するための手段としては、デジタル署名などの技術が一般的に利用されている。
【０００４】
【発明が解決しようとする課題】
上述したように、既に、インターネットを利用した商取引は種々の形態で実施されている。そして、この個々の商取引は、法律上は、取引主体双方がオンライン上で締結した契約に基いている。しかしながら、このようなオンライン上で締結された契約は、両者が書類に捺印することにより締結された一般の契約と比較すると、証拠能力が不十分であり、法的な問題も少なくない。実際、電子モールで商品を購入するオンライン契約を締結する場合、多くの電子モールでは、注文確認のための電子メールを返信するようにしているが、その内容は、注文内容を詳細に反復したものから、単に受注確認のメッセージだけが示されたものまで様々であり、法律的には、正式な契約締結とは言えないような形式のものもある。また、契約内容について両者間に齟齬が生じるケースもあり、事後に、商品の内容、販売価格、注文数量などについて食い違いが生じることも少なくない。このように、契約内容の証拠能力が不十分であると、代金決済後も商品が送られてこないとか、注文内容と異なる商品が送付されてきた、といった不都合が生じた場合、十分な対応措置を採ることができなくなる。
【０００５】
そこで本発明は、締結した契約内容に十分な証拠能力を与えることができる電子契約システムを提供することを目的とする。
【０００６】
【課題を解決するための手段】
（１）　　本発明の第１の態様では、第１の取引主体と第２の取引主体との間で、ネットワークを介して所定の契約内容について契約を締結するために利用される電子契約システムにおいて、第１の取引主体によって利用される第１の情報処理装置と、第２の取引主体によって利用される第２の情報処理装置と、が用意される。
ここで、第１の情報処理装置には、次の各手段が設けられる。
▲１▼　契約内容となる文字列を示す契約内容データＣを保存する第１の契約内容保存手段（１１０）
▲２▼　入力データに対して一義的に定まる出力データを得ることができる所定のアルゴリズムに基く演算機能を有し、契約内容データＣに対して所定のアルゴリズムに基く演算を行い、契約内容データＣに対して一義的に定まる第１の契約内容識別データＩＤ１を生成する第１の識別データ生成手段（１２０）
▲３▼　第１の契約内容識別データＩＤ１と、第２の情報処理装置から送信されてきた第２の契約内容識別データＩＤ２との合致を検証する第１の識別データ検証手段（１３０）
▲４▼　第１の識別データ検証手段の検証により合致した契約内容識別データＩＤに対する第１の取引主体のデジタル署名Ｓｉｇ１を生成する第１の取引主体用署名生成手段（１４０）
▲５▼　第２の情報処理装置から送信されてきた正式契約申入情報内の第２の契約内容識別データＩＤ２と第２の取引主体のデジタル署名Ｓｉｇ２との整合性を検証する第１の署名検証手段（１５０）
▲６▼　契約内容データＣを含む契約内容情報を、ネットワークを介して第２の情報処理装置へと送信する契約内容情報送信手段（１６０）
▲７▼　合致した契約内容識別データＩＤと第１の取引主体のデジタル署名Ｓｉｇ１とを含む正式契約応諾情報を、ネットワークを介して第２の情報処理装置へと送信する正式契約応諾情報送信手段（１７０）。
また、第２の情報処理装置には、次の各手段が設けられる。
▲１▼　第１の情報処理装置から送信されてきた契約内容情報内の契約内容データＣを保存する第２の契約内容保存手段（２１０）
▲２▼　第２の契約内容保存手段に保存されている契約内容データＣに対して所定のアルゴリズムに基く演算（第１の識別データ生成手段が行う演算と同一の演算）を行い、第２の契約内容保存手段に保存されている契約内容データＣに対して一義的に定まる第２の契約内容識別データＩＤ２を生成する第２の識別データ生成手段（２２０）
▲３▼　第２の識別データ生成手段によって生成された第２の契約内容識別データＩＤ２と、第１の情報処理装置から送信されてきた契約内容識別データＩＤとの合致を検証する第２の識別データ検証手段（２３０）
▲４▼　第２の契約内容識別データＩＤ２に対する第２の取引主体のデジタル署名Ｓｉｇ２を生成する第２の取引主体用署名生成手段（２４０）
▲５▼　第１の情報処理装置から送信されてきた正式契約応諾情報内の契約内容識別データＩＤと第１の取引主体のデジタル署名Ｓｉｇ１との整合性を検証する第２の署名検証手段（２５０）
▲６▼　第２の契約内容識別データＩＤ２と第２の取引主体のデジタル署名Ｓｉｇ２とを含む正式契約申入情報を、ネットワークを介して第１の情報処理装置へと送信する正式契約申入情報送信手段（２６０）。
【０００７】
（２）　　本発明の第２の態様は、上述の第１の態様に係る電子契約システムにおいて、
第１の識別データ生成手段および第２の識別データ生成手段が、それぞれ複数Ｎ通りのアルゴリズムの中から選択された特定のアルゴリズムを用いて、契約内容データＣに対する契約内容識別データを生成する機能を有し、
同一の契約内容データＣに対して契約内容識別データを生成する演算を行う際には、第１の識別データ生成手段および第２の識別データ生成手段において、同一のアルゴリズムが選択されて用いられるように構成したものである。
【０００８】
（３）　　本発明の第３の態様は、上述の第２の態様に係る電子契約システムにおいて、
第２の識別データ生成手段が、複数Ｎ通りのアルゴリズムの中から特定のアルゴリズムを選択する機能を有し、
正式契約申入情報送信手段が、第２の識別データ生成手段によって選択された特定のアルゴリズムを示すアルゴリズム指定コードを正式契約申入情報に含ませて送信する機能を有し、
第１の識別データ生成手段が、送信されてきたアルゴリズム指定コードに基いて特定のアルゴリズムを選択する機能を有するようにしたものである。
【０００９】
（４）　　本発明の第４の態様は、上述の第１〜第３の態様に係る電子契約システムにおいて、
契約内容識別データを得るためのアルゴリズムとして、入力データに対しては唯一の出力データが定まるが、逆に、出力データに対しては唯一の入力データが定まらない一方向性を有し、かつ、入力データの総データ量に比べて出力データの総データ量が小さくなるようなアルゴリズムを用いるようにしたものである。
【００１０】
（５）　　本発明の第５の態様は、上述の第１〜第４の態様に係る電子契約システムにおいて、
第１の識別データ生成手段および第２の識別データ生成手段が、契約内容データＣにハッシュ関数を適用して得られるハッシュ値を契約内容識別データとする演算を行うようにしたものである。
【００１１】
（６）　　本発明の第６の態様は、上述の第１〜第５の態様に係る電子契約システムにおいて、
第１の情報処理装置と第２の情報処理装置とが、ネットワークを介してやりとりされる情報を、所定の方法で暗号化した状態で送受する機能を有するようにしたものである。
【００１２】
（７）　　本発明の第７の態様は、上述の第６の態様に係る電子契約システムにおいて、
第１の情報処理装置が、送信対象となる情報を、第２の取引主体の公開鍵を用いて暗号化してから送信する機能を有し、
第２の情報処理装置が、受信した情報を、第２の取引主体の秘密鍵を用いて復号化してから取り込む機能を有するようにしたものである。
【００１３】
（８）　　本発明の第８の態様は、上述の第６または第７の態様に係る電子契約システムにおいて、
第２の情報処理装置が、送信対象となる情報を、第１の取引主体の公開鍵を用いて暗号化してから送信する機能を有し、
第１の情報処理装置が、受信した情報を、第１の取引主体の秘密鍵を用いて復号化してから取り込む機能を有するようにしたものである。
【００１４】
（９）　　本発明の第９の態様は、上述の第１〜第８の態様に係る電子契約システムにおいて、
第１の取引主体用署名生成手段が、第１の取引主体の秘密鍵を用いてデジタル署名の作成を行う機能を有し、
第２の署名検証手段が、第１の取引主体の公開鍵を用いて整合性の検証を行うようにしたものである。
【００１５】
（１０）　本発明の第１０の態様は、上述の第１〜第９の態様に係る電子契約システムにおいて、
第２の取引主体用署名生成手段が、第２の取引主体の秘密鍵を用いてデジタル署名の作成を行う機能を有し、
第１の署名検証手段が、第２の取引主体の公開鍵を用いて整合性の検証を行うようにしたものである。
【００１６】
（１１）　本発明の第１１の態様は、上述の第１〜第１０の態様に係る電子契約システムにおいて、
第１の契約内容保存手段内には、第１の契約内容識別データＩＤ１に対応づけて複数の契約内容データが保存できるようにし、第２の契約内容保存手段内には、第２の契約内容識別データＩＤ２に対応づけて複数の契約内容データが保存できるようにし、それぞれ契約内容識別データに基いて特定の契約内容データの検索が行えるようにしたものである。
【００１７】
（１２）　本発明の第１２の態様は、上述の第１〜第１１の態様に係る電子契約システムにおける第１の情報処理装置または第２の情報処理装置として機能する情報処理装置を構成するようにしたものである。
【００１８】
（１３）　本発明の第１３の態様は、上述の第１２の態様に係る情報処理装置としてコンピュータを機能させるためのプログラムを用意し、当該プログラムをコンピュータ読取り可能な記録媒体に記録して配付できるようにしたものである。
【００１９】
【発明の実施の形態】
以下、本発明を図示する実施形態に基いて説明する。
【００２０】
§１．本発明の基本的実施形態に係る電子契約システムの構成
図１は、本発明の基本的実施形態に係る電子契約システムの構成を示すブロック図である。このシステムは、第１の取引主体である甲と、第２の取引主体である乙との間で、ネットワークを介して所定の契約内容について契約を締結するために利用される電子契約システムであり、第１の情報処理装置１００と第２の情報処理装置２００とを、ネットワーク３００を介して接続することにより構成される。第１の情報処理装置１００および第２の情報処理装置２００は、いずれもコンピュータを用いて構成され、ネットワーク３００は、この２台のコンピュータを接続するネットワークである。本発明を実施する上で、ネットワーク３００としては、どのようなネットワークを利用してもかまわないが、ここでは、本発明の典型的な実施形態として、インターネットからなるネットワーク３００を用い、インターネットにアクセスする機能を有するコンピュータによって、第１の情報処理装置１００および第２の情報処理装置２００を構成した例を述べることにする。
【００２１】
本発明に係る電子契約システムでは、図１のネットワーク３００を示す楕円形の図形内にも明示されているとおり、両者間に合計３回にわたる情報交信を行うことにより、契約の締結が行われる。すなわち、まず、第１の情報処理装置１００から第２の情報処理装置２００に対して、甲が契約内容を仮提案するための契約内容情報が送信され、続いて、第２の情報処理装置２００から第１の情報処理装置１００に対して、乙からの正式契約申入情報が送信され、最後に、第１の情報処理装置１００から第２の情報処理装置２００に対して、甲からの正式契約応諾情報が送信される。
【００２２】
第１の情報処理装置１００は、第１の取引主体である甲によって利用されるコンピュータであり、図示のとおり、第１の契約内容保存手段１１０、第１の識別データ生成手段１２０、第１の識別データ検証手段１３０、第１の取引主体用署名生成手段１４０、第１の署名検証手段１５０、契約内容情報送信手段１６０、正式契約応諾情報送信手段１７０によって構成されている。一方、第２の情報処理装置２００は、第２の取引主体である乙によって利用されるコンピュータであり、図示のとおり、第２の契約内容保存手段２１０、第２の識別データ生成手段２２０、第２の識別データ検証手段２３０、第２の取引主体用署名生成手段２４０、第２の署名検証手段２５０、正式契約申入情報送信手段２６０によって構成されている。これらの各手段は、コンピュータによって実行される特定の機能をブロック要素として示したものであり、実際には、特定の機能を実行するためのプログラムをコンピュータに組み込むことにより構成されることになる。なお、これら各手段のうち、「第１の〜手段」および「第２の〜手段」と称される構成要素は、第１の情報処理装置１００と第２の情報処理装置２００との双方に同等の機能を有する手段が存在する構成要素を表しており、第１の情報処理装置１００側の構成要素については「第１の〜手段」と呼び、第２の情報処理装置２００側の構成要素については「第２の〜手段」と呼んで区別している。
【００２３】
続いて、各構成要素の機能について詳述する。まず、第１の契約内容保存手段１１０は、契約内容となる文字列を示す契約内容データＣを保存する機能を有する手段である。ここで、契約内容データＣは、第２の取引主体である乙に対して仮提案すべき契約内容を示すデータであり、たとえば、「商品ＸＹＺを２組注文します。代金引換で送ってください。」というような契約内容を示す文字列のデータである。第１の契約内容保存手段１１０内には、このような契約内容データＣが保存されることになる。一方、第２の情報処理装置２００側の第２の契約内容保存手段２１０も、同様に、契約内容データＣを保存する機能をもった構成要素である。後述するように、第２の契約内容保存手段２１０内には、第１の情報処理装置１００側から送信された契約内容データＣが保存されることになる。
【００２４】
第１の識別データ生成手段１２０は、入力データに対して一義的に定まる出力データを得ることができる所定のアルゴリズムに基く演算機能を有する手段であり、第１の契約内容保存手段１１０に保存されている契約内容データＣは、この第１の識別データ生成手段１２０へ入力データとして与えられる。第１の識別データ生成手段１２０内では、与えられた契約内容データＣに対して所定のアルゴリズムに基く演算が行われ、契約内容データＣに対して一義的に定まる第１の契約内容識別データＩＤ１が生成されることになる。本実施形態では、上記所定のアルゴリズムとして、入力データに対しては唯一の出力データが定まるが、逆に、出力データに対しては唯一の入力データが定まらない一方向性を有し、かつ、入力データの総データ量に比べて出力データの総データ量が小さくなるようなアルゴリズムを用いるようにしている。
【００２５】
上述の例の場合、契約内容データＣは、「商品ＸＹＺを２組注文します。代金引換で送ってください。」というような契約内容を示す文字列のデータであるが、このような文字列のデータを第１の識別データ生成手段１２０へ入力データとして与えると、たとえば、「１２３４５６」のような第１の契約内容識別データＩＤ１が出力データとして得られることになる。ここで、第１の契約内容識別データＩＤ１は、契約内容データＣに対して上記所定のアルゴリズムに基く演算結果として一義的に定まるデータになり、「商品ＸＹＺを２組注文します。代金引換で送ってください。」なる文字列のデータからは、「１２３４５６」なる唯一のデータが得られることになる。ただ、この実施形態で用いられているアルゴリズムは、データＣからは唯一のデータＩＤ１が求まるものの、逆に、データＩＤ１からは唯一のデータＣは定まらない、という一方向性を有しており、上述の例の場合、「１２３４５６」なるデータからは、もとの「商品ＸＹＺを２組注文します。代金引換で送ってください。」という文字列のデータは定まらない。また、総データ量を比較すると、契約内容データＣのデータ量に比べて第１の契約内容識別データＩＤ１のデータ量は小さくなっている。
【００２６】
このように、入力データに対しては唯一の出力データが定まるが、逆に、出力データに対しては唯一の入力データが定まらない一方向性を有し、かつ、入力データの総データ量に比べて出力データの総データ量が小さくなるような具体的なアルゴリズムとしては、入力データに対してハッシュ関数を適用して得られるハッシュ値を出力データとするアルゴリズムがあり、本実施形態では、実際には、このハッシュ関数を用いたアルゴリズムを用いている。すなわち、第１の識別データ生成手段１２０内では、与えられた契約内容データＣに対して（正確に言えば、データＣを数値に変換したデータに対して）、所定のハッシュ関数を適用してハッシュ値を求める演算が行われ、得られたハッシュ値が、第１の契約内容識別データＩＤ１として出力されることになる。
【００２７】
一方、第２の情報処理装置２００側の第２の識別データ生成手段２２０も、第１の識別データ生成手段１２０内のアルゴリズムと同一のアルゴリズムを用いた演算機能を有しており、第２の契約内容保存手段２１０に保存されている契約内容データＣは、この第２の識別データ生成手段２２０へ入力データとして与えられ、ここで第２の契約内容識別データＩＤ２が生成されることになる。このように、第１の識別データ生成手段１２０と第２の識別データ生成手段２２０とは、それぞれ同一のアルゴリズムに基く同一の演算を行う機能を有しており、それぞれに同一の入力データを与えた場合には、同一の出力データが得られることになる。
【００２８】
第１の識別データ検証手段１３０は、第１の識別データ生成手段１２０によって生成された第１の契約内容識別データＩＤ１と、第２の情報処理装置２００から送信されてきた第２の契約内容識別データＩＤ２との合致を検証する機能を有する構成要素である。同様に、第２の識別データ検証手段２３０は、第２の識別データ生成手段２２０によって生成された第２の契約内容識別データＩＤ２と、第１の情報処理装置１００から送信されてきた契約内容識別データＩＤとの合致を検証する機能を有する構成要素である。契約内容識別データＩＤ１，ＩＤ２，ＩＤは、契約内容データＣの内容を保証する役割を果たすことができるデータであり、前述したように、契約内容データＣから一義的に求まるデータである。第１の識別データ検証手段１３０および第２の識別データ検証手段２３０は、相手方から送信されてきた契約内容識別データが、特定の契約内容データＣに基いて作成された正しいデータであるか否かを検証する働きをする。たとえば、第１の識別データ検証手段１３０は、第１の識別データ生成手段１２０から与えられた第１の契約内容識別データＩＤ１と、第２の情報処理装置２００側から送信されてきた第２の契約内容識別データＩＤ２とが一致するか否かを検証する機能を有しており、両者が合致（一致）すれば、送信されてきた第２の契約内容識別データＩＤ２が、確かに特定の契約内容データＣに基いて作成されたデータであると認識することができる。なお、ここでは、第１の契約内容識別データＩＤ１と第２の契約内容識別データＩＤ２とが合致した場合、この合致したデータのことを「合致した契約内容識別データＩＤ」と呼ぶことにする。別言すれば、ＩＤ１＝ＩＤ２との合致が得られた場合、ＩＤ＝ＩＤ１＝ＩＤ２ということになる。
【００２９】
第１の取引主体用署名生成手段１４０は、第１の識別データ検証手段１３０の検証により合致した契約内容識別データＩＤに対する第１の取引主体甲のデジタル署名Ｓｉｇ１を生成する機能を有する。同様に、第２の取引主体用署名生成手段２４０は、第２の契約内容識別データＩＤ２に対する第２の取引主体乙のデジタル署名Ｓｉｇ２を生成する機能を有する。一般に、デジタル署名は、紙面上の物理的な署名と同様に、特定の署名者が、特定の内容を保証するために利用されるものであり、署名の対象となるデータＤに、デジタル署名Ｓｉｇを付して送信すれば、受信者は、このデータＤに対する署名が確かにＳｉｇであることを所定の方法で認証することにより、署名者本人が、データＤの内容を送信してきた事実を確認することができる。デジタル署名Ｓｉｇは、署名対象となるデータＤと、個々の署名者ごとに与えられた固有の秘密データＳｅｃとを組み合わせ、所定のアルゴリズムに基づく演算を行うことにより生成されるので、署名者を別人にしたり、データＤ自身を改竄したりすると、データＤとデジタル署名Ｓｉｇとの間に不整合が生じるため、正しい認証が行われなくなる。
【００３０】
このようなデジタル署名Ｓｉｇを生成するアルゴリズムとしては、たとえば、「署名対象となるデータＤを示すデータ列に、個々の署名者ごとの秘密データＳｅｃを示すデータ列を付加し、これらを１６進数に置き換えて数値化し、この数値にハッシュ関数を作用させたハッシュ値をデジタル署名Ｓｉｇとする」というようなアルゴリズムが広く利用されており、ここでは詳細な説明は省略する。上述のようなアルゴリズムを利用する場合、第１の取引主体用署名生成手段１４０は、第１の取引主体である甲に与えられた固有の秘密データＳｅｃ（甲）を、署名対象となるデータである契約内容識別データＩＤに付加し、これらを１６進数に置き換えて数値化し、この数値にハッシュ関数を作用させたハッシュ値をデジタル署名Ｓｉｇ１とする演算を行うことになる。同様に、第２の取引主体用署名生成手段２４０は、第２の取引主体である乙に与えられた固有の秘密データＳｅｃ（乙）を、署名対象となるデータである第２の契約内容識別データＩＤ２に付加し、これらを１６進数に置き換えて数値化し、この数値にハッシュ関数を作用させたハッシュ値をデジタル署名Ｓｉｇ２とする演算を行うことになる。
【００３１】
第１の署名検証手段１５０は、第２の情報処理装置２００から送信されてきた正式契約申入情報内の第２の契約内容識別データＩＤ２と第２の取引主体のデジタル署名Ｓｉｇ２との整合性を検証する機能を有する。同様に、第２の署名検証手段２５０は、第１の情報処理装置１００から送信されてきた正式契約応諾情報内の契約内容識別データＩＤと第１の取引主体のデジタル署名Ｓｉｇ１との整合性を検証する機能を有する。このようなデジタル署名の検証は、通常、所定の認証局への問い合わせによって行われている。すなわち、甲に与えられた固有の秘密データＳｅｃ（甲）や、乙に与えられた固有の秘密データＳｅｃ（乙）は、所定の認証局にも登録されており、第１の署名検証手段１５０や第２の署名検証手段２５０は、この認証局への問い合わせを行うことにより、データＤとデジタル署名Ｓｉｇとの組み合わせの整合性を確認することができる。たとえば、第１の署名検証手段１５０が、第２の契約内容識別データＩＤ２と第２の取引主体のデジタル署名Ｓｉｇ２との整合性を認証局に問い合わせると、認証局では、データＩＤ２と秘密データＳｅｃ（乙）とを用いて所定のアルゴリズムでデジタル署名を生成する処理を行い、生成されたデジタル署名がＳｉｇ２に一致すれば、両者は整合性がとれたことになるので、認証局から第１の署名検証手段１５０に対して、署名が正しい旨の認証結果が通知されることになる。
【００３２】
契約内容情報送信手段１６０は、第１の契約内容保存手段１１０内に保存されている契約内容データＣを含む契約内容情報を、ネットワーク３００を介して第２の情報処理装置２００へと送信する機能を有する。具体的には、上述の例の場合、「商品ＸＹＺを２組注文します。代金引換で送ってください。」という文字列のデータからなる契約内容データＣと、これに付随するデータ（たとえば、商品の送付先住所、電話番号など）とが、契約内容情報として、第２の情報処理装置２００へ向けて送信されることになる。また、正式契約申入情報送信手段２６０は、第２の契約内容識別データＩＤ２と第２の取引主体のデジタル署名Ｓｉｇ２とを含む正式契約申入情報を、ネットワーク３００を介して第１の情報処理装置１００へと送信する機能を有し、正式契約応諾情報送信手段１７０は、合致した契約内容識別データＩＤと第１の取引主体のデジタル署名Ｓｉｇ１とを含む正式契約応諾情報を、ネットワーク３００を介して第２の情報処理装置２００へと送信する機能を有する。
【００３３】
以上、図１のブロック図を参照しながら、本発明の基本的実施形態に係る電子契約システムの構成を説明したが、前述したように、実際には、第１の情報処理装置１００および第２の情報処理装置２００は、ネットワーク３００に接続されたコンピュータによって実現されるものであり、図１にブロックとして示す個々の構成要素は、コンピュータのハードウエアを利用したソフトウエアの固有の機能により実現されるべき構成要素である。したがって、本発明に係る電子契約システムは、実際には、ネットワーク３００に接続する機能を有する汎用のコンピュータに、図１に示す各構成要素として機能するプログラムをインストールすることにより実現されることになり、また、そのようなプログラムは、オンラインで配付することも可能であるし、コンピュータ読取り可能な記録媒体に記録して配付することも可能である。
【００３４】
§２．本発明の基本的実施形態に係る電子契約システムを用いた契約手順
続いて、図１に示した基本的実施形態に係る電子契約システムを用いた契約手順を説明する。本発明に係る電子契約システムは、一般消費者が、インターネット上で商品の購入、チケットの予約、電子雑誌の購読、オークションへの参加などを行う用途に利用できるだけでなく、種々のネットワークを介した企業間における電子商取引にも利用可能である。ただ、ここでは、説明の便宜上、一般消費者である甲（第１の取引主体）が、インターネット３００を介して、電子モールを運営する通信販売業者である乙（第２の取引主体）から特定の商品を購入する場合に、本発明に係る電子契約システムを利用して商品購入契約を締結する例について、以下の説明を行うことにする。この例の場合、第１の情報処理装置１００は、甲が使用するパソコン、携帯電話、携帯型情報端末装置などによって構成することができ、第２の情報処理装置２００は、乙が管理するＷｅｂサーバ装置によって構成することができる。
【００３５】
図２は、本発明に係る電子契約システムを用いた契約手順を示す流れ図である。この流れ図に示されている各ステップＳ１〜Ｓ１３のうち、左側に１００と記されたステップは、第１の情報処理装置１００側で行われる手順であり、左側に２００と記されたステップは、第２の情報処理装置２００側で行われる手順である。はじめに、ステップＳ１において、第１の取引主体である甲が、契約内容データＣを準備する。具体的には、「商品ＸＹＺを２組注文します。代金引換で送ってください。」というような契約内容を示す文字列からなる契約内容データＣが、第１の情報処理装置１００側で用意され、第１の契約内容保存手段１１０内に保存されることになる。もっとも、このような契約内容データＣは、必ずしも甲側で作成する必要はなく、乙側で用意したものを甲側へ送信するようにしてもよいし、乙側で用意したひな型に、甲がキーボードから入力したデータを合成することにより作成するようにしてもよい。たとえば、甲が、インターネット３００を介して、乙の提供するＷｅｂページをアクセスし、このＷｅｂページに掲載されている商品カタログの中から特定の商品と支払方法を選択して注文するような場合であれば、甲が商品および支払方法を選択した時点で、乙のＷｅｂサーバから甲へ、「商品ＸＹＺを○組注文します。代金引換で送ってください。」なるひな型の文字列データを送信し、甲は、このひな型に、注文の数量である「２組」を入力して「商品ＸＹＺを２組注文します。代金引換で送ってください。」なる契約内容データＣを作成することができる。要するに、ステップＳ１では、契約締結の対象となる契約内容データＣが、第１の契約内容保存手段１１０内に保存された状態で準備できれば、契約内容データＣ自体は、どのような方法で準備してもかまわない。
【００３６】
続いて、ステップＳ２では、第１の契約内容保存手段１１０内に準備された契約内容データＣの送信および受信が行われる。すなわち、第１の契約内容保存手段１１０内の契約内容データＣは、契約内容情報送信手段１６０によって、契約内容情報として、ネットワーク３００を介して第２の情報処理装置２００へと送信される。第２の情報処理装置２００は、受信した契約内容情報から契約内容データＣを取り出し、ステップＳ３において、これを第２の契約内容保存手段２１０に保存する。この時点で、第１の契約内容保存手段１１０と第２の契約内容保存手段２１０には、同一の契約内容データＣが保存されていることになり、甲から乙に対して、契約の仮提案がなされたことになる。もっとも、この時点で乙側に送信されてきた契約内容データＣには、甲の署名はなされていないので、この時点で第２の契約内容保存手段２１０内に保存されている契約内容データＣの内容は、甲の正式な意思表示としては取り扱われず、あくまでも仮提案にすぎない。
【００３７】
続いて、乙は、第２の契約内容保存手段２１０内に保存されている契約内容データＣの内容について、正式に契約締結の意思表示を行うか否かを判断する。このような判断を行うために必要があれば、第２の契約内容保存手段２１０内に保存されている契約内容データＣの内容をディスプレイ画面上に表示して、乙に閲覧させることができるような機能を設けておけばよい。もっとも、このような判断は、必ずしも乙自身がその都度行う必要はなく、所定の金額以内の契約内容であれば、自動的に正式な契約締結の意思表示が行われるようにプログラムしておいてもかまわない。いずれにせよ、乙に、正式に契約締結する意思がある場合には、ステップＳ４以下の処理が実行されることになる。逆言すれば、乙が、契約内容データＣに内容について、契約締結の意思がなければ、本件契約締結作業は、ここで中断することになる。ここでは、契約締結作業が中断した場合の処理手順や、そのような処理を行う構成要素についての説明は省略するが、実用上は、甲に対して、乙が契約締結を拒否した旨の通知が送信されるような処理が行われるようにしておくのが好ましい。
【００３８】
さて、乙が、正式に契約締結を行う旨の判断をした場合には、ステップＳ４において、第２の契約内容識別データＩＤ２の生成が行われる。すなわち、第２の契約内容保存手段２１０内に保存されていた契約内容データＣが第２の識別データ生成手段２２０へと与えられ、所定のアルゴリズムに基いて、第２の契約内容識別データＩＤ２が生成されることになる。この実施形態の場合、第２の契約内容識別データＩＤ２は、契約内容データＣに所定のハッシュ関数を適用して得られるハッシュ値として求められる。
【００３９】
続いて、ステップＳ５において、第２の取引主体のデジタル署名Ｓｉｇ２が生成される。すなわち、第２の取引主体用署名生成手段２４０によって、第２の契約内容識別データＩＤ２についての乙のデジタル署名Ｓｉｇ２が生成されることになる。前述したように、このデジタル署名Ｓｉｇ２は、乙に固有の秘密データＳｅｃ（乙）を用いて生成され、署名対象となるデータＩＤ２について、乙が署名をしたことを証明するためのデータということになる。
【００４０】
次に、ステップＳ６において、第２の契約内容識別データＩＤ２に、第２の取引主体のデジタル署名Ｓｉｇ２を付加したデータが、正式契約申入情報送信手段２６０から、正式契約申入情報として送信され、第１の情報処理装置１００側で受信される。すなわち、データＩＤ２に署名Ｓｉｇ２が付された状態で送信が行われることになり、乙から甲に対して、契約内容データＣに関する正式な契約の申入れがなされたことになる。
【００４１】
第１の情報処理装置１００側では、この正式契約申入情報を受信した後、ステップＳ７において、デジタル署名Ｓｉｇ２の検証が行われる。すなわち、第１の署名検証手段１５０によって、正式契約申入情報内に含まれていた第２の契約内容識別データＩＤ２と第２の取引主体のデジタル署名Ｓｉｇ２との整合性が検証される。この検証は、たとえば、前述したように、認証局への問い合わせにより行われる。ここで、正しい検証結果が得られれば、第２の契約内容識別データＩＤ２が、確かに乙本人から送信されてきたことが確認できるので、ステップＳ８以降の手順へ進むことになる。なお、図２の流れ図には示されていないが、第１の署名検証手段１５０における検証により、正しい検証結果が得られなかった場合には、送信されてきた正式契約申入情報が、乙本人から送信されたものでないか、あるいは、改竄が行われているものと判断できるので、本件契約締結作業は、ここで中断することになる。
【００４２】
第１の署名検証手段１５０における検証により、正しい検証結果が得られたら、少なくとも、第２の契約内容識別データＩＤ２が、確かに乙本人から送信されてきたことが確認できる。そこで、続いて、この第２の契約内容識別データＩＤ２が、甲が仮提案した契約内容データＣに対応するデータであるか否かの検証を行う。まず、ステップＳ８において、第１の契約内容識別データＩＤ１が生成される。すなわち、第１の契約内容保存手段１１０内に保存されていた契約内容データＣが第１の識別データ生成手段１２０に与えられ、所定のアルゴリズムに基く演算を行うことにより、第１の契約内容識別データＩＤ１が生成される。そして、ステップＳ９において、第１の契約内容識別データＩＤ１と第２の契約内容識別データＩＤ２との合致が検証される。すなわち、第１の識別データ検証手段１３０が、第１の識別データ生成手段１２０で生成された第１の契約内容識別データＩＤ１と、第２の情報処理装置２００側から送信されてきた第２の契約内容識別データＩＤ２とが一致するか否かの検証を行うことになる。既に述べたように、第１の識別データ生成手段１２０と第２の識別データ生成手段２２０とは、全く同一のアルゴリズムに基く演算を実行して、それぞれ第１の契約内容識別データＩＤ１および第２の契約内容識別データＩＤ２を生成する機能を有しているので、第１の契約内容保存手段１１０に保存されている契約内容データＣと、第２の契約内容保存手段２１０に保存されている契約内容データＣとが同一のものであれば、第１の契約内容識別データＩＤ１と第２の契約内容識別データＩＤ２とは一致するはずである。ここでは、この第１の識別データ検証手段１３０における検証によって合致したデータを、「合致した契約内容識別データＩＤ」と呼ぶことにする（すなわち、ＩＤ１＝ＩＤ２＝ＩＤ）。もし、データＩＤ１とＩＤ２とが合致しなかった場合は、第１の契約内容保存手段１１０内の契約内容データＣと、第２の契約内容保存手段２１０内の契約内容データＣとに食い違いが生じていることになり、甲が認識している契約内容と乙が認識している契約内容とが異なっていることになる。したがって、この場合は、本件契約締結作業は、ここで中断することになる。
【００４３】
第１の識別データ検証手段１３０における検証により、正しい検証結果が得られたら、ステップＳ１０において、第１の取引主体のデジタル署名Ｓｉｇ１が生成される。すなわち、第１の取引主体用署名生成手段１４０によって、「合致した契約内容識別データＩＤ」についての甲のデジタル署名Ｓｉｇ１が生成されることになる。前述したように、このデジタル署名Ｓｉｇ１は、甲に固有の秘密データＳｅｃ（甲）を用いて生成され、署名対象となるデータＩＤについて、甲が署名をしたことを証明するためのデータということになる。
【００４４】
次に、ステップＳ１１において、「合致した契約内容識別データＩＤ」に、第１の取引主体のデジタル署名Ｓｉｇ１を付加したデータが、正式契約応諾情報送信手段１７０から、正式契約応諾情報として送信され、第２の情報処理装置２００側で受信される。すなわち、データＩＤに署名Ｓｉｇ１が付された状態で送信が行われることになり、甲から乙に対して、契約内容データＣに関する正式な契約の応諾がなされたことになる。
【００４５】
第２の情報処理装置２００側では、この正式契約応諾情報を受信した後、ステップＳ１２において、デジタル署名Ｓｉｇ１の検証が行われる。すなわち、第２の署名検証手段２５０によって、正式契約応諾情報内に含まれていた「合致した契約内容識別データＩＤ」と第１の取引主体のデジタル署名Ｓｉｇ１との整合性が検証される。この検証は、たとえば、前述したように、認証局への問い合わせにより行われる。ここで、正しい検証結果が得られれば、「合致した契約内容識別データＩＤ」が、確かに甲本人から送信されてきたことが確認できるので、ステップＳ１３の手順へ進むことになる。なお、図２の流れ図には示されていないが、第２の署名検証手段２５０における検証により、正しい検証結果が得られなかった場合には、送信されてきた正式契約応諾情報が、甲本人から送信されたものでないか、あるいは、改竄が行われているものと判断できるので、本件契約締結作業は、ここで中断することになる。
【００４６】
第２の署名検証手段２５０における検証により、正しい検証結果が得られたら、少なくとも、「合致した契約内容識別データＩＤ」が、確かに甲本人から送信されてきたことは確認できる。そこで、続いて、この「合致した契約内容識別データＩＤ」が、第２の契約内容保存手段２１０内に保存されている契約内容データＣに対応するデータであるか否かの検証を行う。すなわち、ステップＳ１３において、第２の識別データ生成手段２２０で生成された第２の契約内容識別データＩＤ２と、第１の情報処理装置１００側から送信されてきた「合致した契約内容識別データＩＤ」との合致が検証される。第１の識別データ検証手段１３０の検証結果が合致していれば、ＩＤ１＝ＩＤ２＝ＩＤとなっているはずであるから、本来であれば、第２の識別データ検証手段２３０の検証結果も合致するはずである。万一、ここで合致が得られなければ、何らかの不正が行われている可能性があるものと判断できるので、本件契約締結作業は、ここで中断することになる。第２の識別データ検証手段２３０における検証により、正しい検証結果が得られたら、甲から契約内容データＣの内容について、正式契約が応諾されたものと判断できる。
【００４７】
以上述べた図２の流れ図に示す手順は、もちろん、本発明に係る電子契約システムを用いた契約手順の一例であり、本発明は、このような契約手順に限定されるものではない。たとえば、図２の例では、第２の契約内容識別データＩＤ２の生成プロセス（ステップＳ４）を、第１の契約内容識別データＩＤ１の生成プロセス（ステップＳ８）よりも先に行っているが、この順序は逆にしてもかまわないし、両プロセスを並行して進めるようにしてもかまわない。
【００４８】
図３は、図２の流れ図に示す契約手順におけるデータの流れを示すダイヤグラムである。ここで、一点鎖線で区切った上段部分は、第１の取引主体である甲が利用する第１の情報処理装置１００側で取り扱われるデータを示し、中段部分はネットワーク３００を流れるデータを示し、下段部分は、第２の取引主体である乙が利用する第２の情報処理装置２００側で取り扱われるデータを示している。いずれも楕円で示したブロックがデータを示し、矢印がその流れを示している。また、Ｓ１〜Ｓ１３の符号は、図２の流れ図の各ステップを示している。
【００４９】
契約の対象となる契約内容データＣは、まず、甲側で用意され（ステップＳ１）、契約内容情報として乙側へと送信され（ステップＳ２）、乙側に保存される（ステップＳ３）。乙側では、契約内容データＣに基いて第２の契約内容識別データＩＤ２が生成され（ステップＳ４）、この第２の契約内容識別データＩＤ２について乙のデジタル署名Ｓｉｇ２が生成され（ステップＳ５）、データＩＤ２にデジタル署名Ｓｉｇ２が付され（ステップＳ６）、正式契約申入情報として甲へと送信される。甲側では、デジタル署名Ｓｉｇ２の検証（ステップＳ７）が行われた後、契約内容データＣに基いて第１の契約内容識別データＩＤ１が生成され（ステップＳ８）、第１の契約内容識別データＩＤ１と第２の契約内容識別データＩＤ２との合致が検証される（ステップＳ９）。続いて、「合致した契約内容識別データＩＤ」についての甲のデジタル署名Ｓｉｇ１が生成され（ステップＳ１０）、データＩＤにデジタル署名Ｓｉｇ１が付され（ステップＳ１１）、正式契約応諾情報として乙へ送信される。乙側では、デジタル署名Ｓｉｇ１の検証（ステップＳ１２）が行われた後、「合致した契約内容識別データＩＤ」と第２の契約内容識別データＩＤ２との合致が検証される（ステップＳ１３）。
【００５０】
以上の手順により、甲乙間の契約が締結されることになる。このような手順により契約締結を行えば、締結した契約内容に十分な証拠能力を与えることができる。すなわち、まず、甲側から見れば、乙側から提示された正式契約申入情報として、乙の署名Ｓｉｇ２が付いた第２の契約内容識別データＩＤ２が得られるので、この署名Ｓｉｇ２を検証することにより、識別データＩＤ２が確かに乙本人から送信されてきたものであることが確認でき、また、識別データＩＤ２と識別データＩＤ１とが合致すれば、甲の認識している契約内容（すなわち、第１の契約内容保存手段１１０内に保存されている契約内容データＣ）と、乙の認識している契約内容（すなわち、第２の契約内容保存手段２１０内に保存されている契約内容データＣ）とが、同一であることが確認できる。結局、甲側から見れば、契約相手である乙本人から、甲が認識している契約内容と同一の契約内容について、正式契約の申入れがあったことが確認でき、必要があれば、これを事実として立証するデータが入手できたことになる。
【００５１】
一方、乙側から見れば、甲側から提示された正式契約応諾情報として、甲の署名Ｓｉｇ１が付いた「合致した契約内容識別データＩＤ」が得られるので、この署名Ｓｉｇ１を検証することにより、識別データＩＤが確かに甲本人から送信されてきたものであることが確認でき、また、識別データＩＤと識別データＩＤ２とが合致すれば、乙の認識している契約内容（すなわち、第２の契約内容保存手段２１０内に保存されている契約内容データＣ）と、甲の認識している契約内容（すなわち、第１の契約内容保存手段１１０内に保存されている契約内容データＣ）とが、同一であることが確認できる。結局、乙側から見れば、契約相手である甲本人から、乙が認識している契約内容と同一の契約内容について、正式契約の応諾があったことが確認でき、必要があれば、これを事実として立証するデータが入手できたことになる。
【００５２】
このように、本発明に係る電子契約システムでは、甲から乙に対する契約内容情報の送信行為は、あくまでも契約内容の仮提案としての意味しかもたないが、乙から甲に対する正式契約申入情報の送信行為は、契約内容データＣで表現される特定の契約内容についての乙からの正式な契約申入れを行う行為となり、更に、甲から乙に対する正式契約応諾情報の送信行為は、契約内容データＣで表現される特定の契約内容についての甲からの正式な契約応諾を行う行為となる。ここで留意すべき点は、仮提案として送信する契約内容情報には、契約内容データＣが含まれているものの、正式契約申入情報や正式契約応諾情報には、契約内容データＣそのものは含まれておらず、その代わりに契約内容識別データが含まれている点である。契約内容識別データは、契約内容データＣから一義的に得られるデータであるため、検証を行う上では、契約内容データＣと同等の機能を果たすことになる。契約内容データＣそのものを送信する代わりに、契約内容識別データを送信することにより、２つの大きなメリットが得られる。第１のメリットは、セキュリティを高める上でのメリットである。ネットワーク３００としてインターネットを利用した場合、送受されるデータに対してセキュリティ面での障害が発生する可能性は避けられない。しかしながら、契約内容データＣ自体を何度も送受する代わりに、契約内容識別データを送受するようにすれば、セキュリティをより高めることができる。そして、第２のメリットは、送受するデータ量を低減できる点である。上述の実施形態では、ハッシュ関数を適用して得られるハッシュ値を契約内容識別データとして用いており、もとの契約内容データＣのデータ量に比べて、契約内容識別データのデータ量を大幅に低減させることができる。このため、正式契約申入情報や正式契約応諾情報に、契約内容データＣではなく、そのハッシュ値である契約内容識別データを含ませるようにすれば、通信容量を大幅に低減させることができる。
【００５３】
§３．本発明に係る電子契約システムの変形例
以上、本発明に係る電子契約システムを基本的な実施形態に基いて説明したが、ここでは、本発明の変形例をいくつか述べておく。
【００５４】
（１）　　契約内容データＣの検索
これまで述べた基本的な実施形態では、甲と乙との間で、特定の契約内容データＣに基く契約締結を行う例を述べたが、実際には、両者間で複数の異なる契約が締結されることも少なくない。また、本発明に係る電子契約システムは、甲乙の二者間における契約締結に利用されるだけではなく、実用上は、多数の取引主体のグループの中の任意の二者による契約締結に利用されることになろう。たとえば、乙が電子モールの開設者である場合、契約の相手方は、甲（１），甲（２），甲（３），…という多数の一般需要者ということになり、それぞれ契約内容データＣ（１），Ｃ（２），Ｃ（３），…という複数の契約内容についての契約締結がなされることになる（この場合、甲（１）は、１台目の第１の情報処理装置１００（１）を利用して契約締結のための手続を行い、甲（２）は、２台目の第１の情報処理装置１００（２）を利用して契約締結のための手続を行い、甲（３）は、３台目の第１の情報処理装置１００（３）を利用して契約締結のための手続を行うことになる）。
【００５５】
このように、本発明に係る電子契約システムを用いた場合、複数の契約についての締結処理が順次行われてゆくのが一般的であり、第１の契約内容保存手段１１０や第２の契約内容保存手段２１０内には、複数の異なる契約内容データＣが順次蓄積されてゆくことになる。このような場合、各契約内容データＣを、契約内容識別データに対応づけて保存しておき、契約内容識別データによって検索が行えるようにするのが好ましい。すなわち、第１の契約内容保存手段１１０内には、第１の契約内容識別データＩＤ１に対応づけて複数の契約内容データが保存できるようにし、第２の契約内容保存手段２１０内には、第２の契約内容識別データＩＤ２に対応づけて複数の契約内容データが保存できるようにし、それぞれ契約内容識別データに基いて特定の契約内容データの検索が行えるようにするのである。具体的には、第１の契約内容保存手段１１０内に用意された特定の契約内容データＣ（１）について、第１の識別データ生成手段１２０によって第１の契約内容識別データＩＤ１（１）が生成された時点で、第１の契約内容保存手段１１０内の契約内容データＣ（１）に、第１の契約内容識別データＩＤ１（１）との対応関係を定義する情報を付加し、データＩＤ１（１）をキーとして用いて、データＣ（１）を検索できるようにしておく。同様に、第２の契約内容保存手段２１０内に保存された契約内容データＣ（１）について、第２の識別データ生成手段２２０によって第２の契約内容識別データＩＤ２（１）が生成された時点で、第２の契約内容保存手段２１０内の契約内容データＣ（１）に、第２の契約内容識別データＩＤ２（１）との対応関係を定義する情報を付加し、データＩＤ２（１）をキーとして用いて、データＣ（１）を検索できるようにしておく。このようにしておけば、第１の契約内容保存手段１１０や第２の契約内容保存手段２１０内に、複数の異なる契約内容データＣ（１），Ｃ（２），Ｃ（３），…が蓄積されていったとしても、第ｉ番目の契約内容データＣ（ｉ）は、契約内容識別データＩＤ１（ｉ）あるいはＩＤ２（ｉ）によって検索することができるようになり、相手方から正式契約申入情報や正式契約応諾情報が送信されてきたときに、対応する契約内容データＣ（ｉ）を容易に検索することが可能になる。
【００５６】
（２）　　契約内容識別データ生成に複数のアルゴリズムを用いる
図１に示す基本的な実施形態では、第１の識別データ生成手段１２０や第２の識別データ生成手段２２０内には、所定のアルゴリズムが用意されており、このアルゴリズムを用いた演算により、第１の契約内容識別データＩＤ１や第２の契約内容識別データＩＤ２の生成が行われていた。この契約内容識別データを生成するためのアルゴリズムは、必ずしも秘密にする必要はないが、セキュリティ対策上は、第三者には知られないようにした方が好ましい。また、セキュリティを更に向上させるためには、予め、複数通りのアルゴリズムを用意しておき、その都度、いずれかのアルゴリズムを選択して用いるようにするのが好ましい。
【００５７】
図４に示す実施形態は、図１に示す基本的な実施形態の変形例を示すものであり、契約内容識別データを生成する際に、複数通りのアルゴリズムの中から特定のアルゴリズムを選択して用いる機能を有している。具体的には、この図４に示す実施形態の場合、第１の識別データ生成手段１２０および第２の識別データ生成手段２２０には、それぞれ複数Ｎ通りのアルゴリズムが用意されており、これらのアルゴリズムの中から選択された特定のアルゴリズム（１つでもよいし、複数を組み合わせてもかまわない）を用いて、契約内容データＣに対する契約内容識別データを生成することができる。ただ、本発明に係る電子契約システムでは、同一の契約内容データＣについては、第１の識別データ生成手段１２０と第２の識別データ生成手段２２０とにおいて、同一のアルゴリズムを用いた演算が行われるようにし、演算により得られた第１の契約内容識別データＩＤ１と第２の契約内容識別データＩＤ２とが同一になるようにする必要がある。したがって、第１の識別データ生成手段１２０側で、複数Ｎ通りのアルゴリズムのうちの第ｉ番目のアルゴリズムを選択して演算を行った場合には、第２の識別データ生成手段２２０側でも、同じく第ｉ番目のアルゴリズムを選択した演算を行う必要がある。
【００５８】
そこで、図４に示す実施形態では、まず、第２の情報処理装置２００内の第２の識別データ生成手段２２０側で複数Ｎ通りのアルゴリズムの中から特定のアルゴリズムをランダムに選択するようにし、選択された特定のアルゴリズムを用いて第２の契約内容識別データＩＤ２を生成した後、選択された特定のアルゴリズムを示すアルゴリズム指定コードＡＲＧ（たとえば、選択されたアルゴリズム名を示す文字列）を第１の情報処理装置１００側に伝達するようにしている。具体的には、アルゴリズム指定コードＡＲＧを、正式契約申入情報に含ませて、第２の情報処理装置２００側から第１の情報処理装置１００側に伝達している。すなわち、図４に示す電子契約システムでは、第２の識別データ生成手段２２０は、契約内容データＣが与えられたときに、複数Ｎ通りのアルゴリズムの中からランダムに特定のアルゴリズムを選択し、選択したアルゴリズムを用いて、第２の契約内容識別データＩＤ２を生成する処理を行う。そして、このデータＩＤ２とともに、選択した特定のアルゴリズムを示すアルゴリズム指定コードＡＲＧを出力することになる。また、この実施形態では、データＩＤ２の後ろにコードＡＲＧを付加した「ＩＤ２＋ＡＲＧ」なるデータ全体を、第２の取引主体用署名生成手段２４０に与え、「ＩＤ２＋ＡＲＧ」なるデータ全体についてのデジタル署名Ｓｉｇ２を生成させるようにしている。かくして、正式契約申入情報送信手段２６０からは、データＩＤ２、アルゴリズム指定コードＡＲＧ、そしてこれら全体についてのデジタル署名Ｓｉｇ２が、正式契約申入情報として送信されることになる。第１の情報処理装置１００では、この正式契約申入情報を受信した後、まず、第１の署名検証手段１５０において、デジタル署名Ｓｉｇ２が正しいことを検証する。続いて、正式契約申入情報に含まれているアルゴリズム指定コードＡＲＧを第１の識別データ生成手段１２０に与え、複数Ｎ通りのアルゴリズムのいずれが選択されたかを伝達する。第１の識別データ生成手段１２０は、このアルゴリズム指定コードＡＲＧによって指定されているアルゴリズムを用いて、第１の契約内容保存手段１１０内の契約内容データＣに対する演算を行い、第１の契約内容識別データＩＤ１を生成することになる。この後、第１の識別データ検証手段１３０において、第１の契約内容識別データＩＤ１と、第２の契約内容識別データＩＤ２との合致が検証される点は、前述した基本的実施形態と全く同様である。
【００５９】
結局、この図４の実施形態に係るシステムを用いた契約締結処理の手順は、ほぼ図２の流れ図に示す手順と同じになるが、ステップＳ４において、第２の契約内容識別データＩＤ２を生成する際に、複数Ｎ通りのアルゴリズムの中からランダムに特定のアルゴリズムを選択した上で、この選択したアルゴリズムを用いて、第２の契約内容識別データＩＤ２を生成することになる。また、ステップＳ５においてデジタル署名Ｓｉｇ２を生成する際には、データＩＤ２にアルゴリズム指定コードＡＲＧを付加した状態のデータ全体についての署名が生成されることになり、ステップＳ６では、ＩＤ２，ＡＲＧ，Ｓｉｇ２が正式契約申入情報として送受信されることになる。更に、ステップＳ８において、第１の契約内容識別データＩＤ１を作成する際には、アルゴリズム指定コードＡＲＧによって指定されたアルゴリズムを用いた演算が実行されることになる。
【００６０】
もちろん、複数Ｎ通りのアルゴリズムの中から特定のアルゴリズムを選択する処理を、第１の識別データ生成手段１２０側で行うようにすることも可能である。この場合、上述の例とは逆に、どのアルゴリズムが選択されたかを示すアルゴリズム指定コードＡＲＧを、第１の情報処理装置１００側から第２の情報処理装置２００側へと伝達する必要がある。具体的には、たとえば、契約内容情報送信手段１６０から送信される契約内容情報に、アルゴリズム指定コードＡＲＧを含ませておけばよい。
【００６１】
また、上述の例では、アルゴリズム指定コードＡＲＧとして、選択されたアルゴリズムを示すアルゴリズム名そのものを用いているが、アルゴリズム指定コードＡＲＧとしては、選択アルゴリズムを特定することができるコードであれば、どのようなコードを用いても構わない。実用上は、選択されたアルゴリズムを示すアルゴリズム名にハッシュ関数を適用することにより得られるハッシュ値を、アルゴリズム指定コードＡＲＧとして用いると、より少ないデータ容量で選択されたアルゴリズムを特定することができるので便利である。この場合、第２の契約内容識別データＩＤ２としては、契約内容データＣのハッシュ値が用いられ、アルゴリズム指定コードＡＲＧとしては、選択されたアルゴリズムの名前のハッシュ値が用いられることになり、正式契約申入情報は、「契約内容データＣのハッシュ値」＋「アルゴリズム名のハッシュ値」なるデータと、このデータについてのデジタル署名Ｓｉｇ２と、を含む情報ということになる。
【００６２】
（３）　　送受信データの暗号化
これまで述べてきたように、本発明に係る電子契約システムを用いて契約を締結するためには、甲から乙へ契約内容情報を送信し、続いて、乙から甲へ正式契約申入情報を送信し、更に、甲から乙へ正式契約応諾情報を送信する必要がある。ここで、正式契約申入情報や正式契約応諾情報には、本来の契約内容を示す契約内容データＣそのものは含まれていないため、セキュリティを高めることができるメリットが得られる点は、既に述べたとおりである。しかしながら、より高いセキュリティを確保するためには、第１の情報処理装置１００と第２の情報処理装置２００との間で、ネットワーク３００を介してやりとりされる情報を、所定の方法で暗号化した状態で送受するようにするのが好ましい。このような暗号化による送信技術としては、たとえば、ＳＳＬ（Ｓｅｃｕｒｅ　Ｓｏｃｋｅｔｓ　Ｌａｙｅｒ）などの技術を利用することが可能である。
【００６３】
また、ＲＳＡ暗号などの公開鍵暗号方式を用いた暗号化を利用することも可能である。具体的には、第１の情報処理装置１００から第２の情報処理装置２００へ情報を送信する際には、第１の情報処理装置１００側において、第２の取引主体である乙の公開鍵を用いて暗号化した後に送信を行うようにし、第２の情報処理装置２００側では、受信した情報を、第２の取引主体である乙の秘密鍵を用いて復号化した後に取り込むようにすればよい。逆に、第２の情報処理装置２００から第１の情報処理装置１００へ情報を送信する際には、第２の情報処理装置２００側において、第１の取引主体である甲の公開鍵を用いて暗号化した後に送信を行うようにし、第１の情報処理装置１００側では、受信した情報を、第１の取引主体である甲の秘密鍵を用いて復号化した後に取り込むようにすればよい。
【００６４】
（４）　　公開鍵暗号方式を利用したデジタル署名の作成
上述した公開鍵暗号方式は、デジタル署名の作成にも利用可能である。すなわち、第１の取引主体用署名生成手段１４０が、第１の取引主体である甲の秘密鍵を用いてデジタル署名の作成を行う処理を行うようにすれば、第２の署名検証手段２５０は、第１の取引主体である甲の公開鍵を用いて整合性の検証を行うことができるようになり、同様に、第２の取引主体用署名生成手段２４０が、第２の取引主体である乙の秘密鍵を用いてデジタル署名の作成を行う処理を行うようにすれば、第１の署名検証手段１５０は、第２の取引主体である乙の公開鍵を用いて整合性の検証を行うことができるようになる。したがって、第１の署名検証手段１５０および第２の署名検証手段２５０は、取引相手の信用できる公開鍵を保持している場合には、認証局への問い合わせを行うことなしに、署名の検証を行うことができる。
【００６５】
（５）　　その他の実施形態
以上、本発明をいくつかの実施形態に基いて説明したが、本発明はこれらの実施形態に限定されるものではなく、この他にも種々の形態で実施可能である。たとえば、上述した基本的な実施形態では、契約内容情報は契約内容データＣからなり、正式契約申入情報は、データＩＤ２および署名Ｓｉｇ２からなり、正式契約応諾情報は、データＩＤおよび署名Ｓｉｇ１からなる旨の説明を行ったが、実用上は、これら以外の種々の付随的な情報を含ませるようにしてもかまわない。たとえば、正式契約応諾情報としては、基本的な実施形態では、ＩＤ＋Ｓｉｇ１なる情報（Ｓｉｇ１は、データＩＤについての甲の署名）を用いていたわけであるが、その代わりに、ＩＤ＋Ｓｉｇ２＋Ｓｉｇ１なる情報を、正式契約応諾情報として用いるようにしてもよい。ここで、Ｓｉｇ２は、正式契約申入情報に含まれていた乙の署名であり、Ｓｉｇ１は、「ＩＤ＋Ｓｉｇ２」なるデータ全体についての甲の署名である。なお、本願において、「データ〇〇」に対するデジタル署名と言う場合、上述の例のように、「データ〇〇」に別なデータを付加して得られる新たなデータ全体についてのデジタル署名も含んだ意味である。
【００６６】
また、上述の実施形態では、第１の取引主体である甲が一般需要者、第２の取引主体である乙が電子モールの開設者、という利用例を示したが、本発明に係る電子契約システムは、このような商品購入に関する契約締結を行う場合だけでなく、インターネット上でのチケットの予約、オークションや逆オークションへの参加など、種々の契約締結に利用することが可能であり、もちろん、企業間の諸取引に関する契約締結にも利用可能である。
【００６７】
【発明の効果】
以上のとおり、本発明によれば、締結した契約内容に十分な証拠能力を与えることができる電子契約システムが実現できる。
【図面の簡単な説明】
【図１】本発明の基本的実施形態に係る電子契約システムの構成を示すブロック図である。
【図２】図１に示す電子契約システムを用いた契約手順を示す流れ図である。
【図３】図２の流れ図に示す契約手順におけるデータの流れを示すダイヤグラムである。
【図４】図１に示す基本的な実施形態の変形例を示すブロック図である。
【符号の説明】
１００…第１の情報処理装置
１１０…第１の契約内容保存手段
１２０…第１の識別データ生成手段
１３０…第１の識別データ検証手段
１４０…第１の取引主体用署名生成手段
１５０…第１の署名検証手段
１６０…契約内容情報送信手段
１７０…正式契約応諾情報送信手段
２００…第２の情報処理装置
２１０…第２の契約内容保存手段
２２０…第２の識別データ生成手段
２３０…第２の識別データ検証手段
２４０…第２の取引主体用署名生成手段
２５０…第２の署名検証手段
２６０…正式契約申入情報送信手段
甲…第１の取引主体
乙…第２の取引主体
Ｃ…契約内容データ
ＩＤ，ＩＤ１，ＩＤ２…契約内容識別データ
Ｓｉｇ１，Ｓｉｇ２…デジタル署名
ＡＲＧ…アルゴリズム指定コード
【図１】
2004030121.tif 000003
【図２】
2004030121.tif 000004
【図３】
2004030121.tif 000005
【図４】
2004030121.tif 000006