(57)【特許請求の範囲】
【請求項１】
ネットワークを通じて契約者のクライアント端末と接続されたオンライン契約システムのサーバ装置において、
契約情報を保存するデータベースと、
契約内容フィールド及び複数の契約者入力フィールドを含む契約書データについて、前記契約内容フィールドを対象としてサーバの電子署名を作成して契約書データに付与し、契約者の入力が未だ行われていない状態の入力前契約書データとして契約者のクライアント端末へ送信する送信手段と、
契約者が必要事項を入力し、契約者の電子署名を付した状態の入力後契約書データを前記クライアント端末から受信する受信手段と、
全ての契約者から入力後契約書データを受信した時点で、前記サーバ及び各契約者の電子署名の対象となっているフィールドのデータを入力後契約書データから抽出し、各電子署名を検証する検証手段と、
前記検証手段が全ての電子署名を正しく検証できた場合に契約を成立させる成立手段と、を備えるサーバ装置。
【請求項２】
入力前契約書データと入力後契約書データとを比較して契約書データの一致を検出する比較手段を備え、
前記成立手段は、全ての契約者について、前記比較手段が契約書データの一致を検出し、かつ、前記検証手段が電子署名を正しく検証できた場合に、契約を成立させる請求項１に記載のサーバ装置。
【請求項３】
前記送信手段、前記受信手段、前記検証手段及び前記成立手段が行った処理のログを前記データベースに保存するログ記録手段を備える請求項１または請求項２に記載のサーバ装置。
【請求項４】
前記契約書データは、対応する電子フォームのデータを含む請求項１乃至３のいずれかに記載のサーバ装置。
【請求項５】
前記契約書データは、対応する電子フォームの識別情報を含む請求項１乃至３のいずれかに記載のサーバ装置。
【請求項６】
ネットワークを通じて契約者のクライアント端末と接続されたオンライン契約システムのサーバ装置において実行されるプログラムであって、前記サーバ装置を、
契約内容フィールド及び複数の契約者入力フィールドを含む契約書データについて、前記契約内容フィールドを対象としてサーバの電子署名を作成して契約書データに付与し、契約者の入力が未だ行われていない状態の入力前契約書データとして契約者のクライアント端末へ送信する送信手段、
契約者が必要事項を入力し、契約者の電子署名を付した状態の入力後契約書データを前記クライアント端末から受信する受信手段、
全ての契約者から入力後契約書データを受信した時点で、前記サーバ及び各契約者の電子署名の対象となっているフィールドのデータを入力後契約書データから抽出し、各電子署名を検証する検証手段、
前記検証手段が全ての電子署名を正しく検証できた場合に契約を成立させる成立手段、として動作させるプログラム。
【請求項７】
入力前契約書データと入力後契約書データとを比較して契約書データの一致を検出する比較手段として更に動作させ、
前記成立手段は、全ての契約者について、前記比較手段が契約書データの一致を検出し、かつ、前記検証手段が電子署名を正しく検証できた場合に、契約を成立させる請求項６に記載のプログラム。
【請求項８】
前記契約書データは、対応する電子フォームのデータを含む請求項６または請求項７に記載のプログラム。
【請求項９】
前記契約書データは、対応する電子フォームの識別情報を含む請求項６または請求項７に記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、インターネット上で電子フォーム及び電子署名を使用してオンライン契約手続を実行するシステムに関する。
【０００２】
【従来の技術】
近年の電子技術やネットワーク技術の進歩に伴い、従来は紙の書類で行われていた種々の手続をインターネット上で行う環境が整いつつある。例えば、官公庁への届出、申請などの手続や、保険、リースなどの契約手続を、電子書類と電子署名とを利用してオンラインで行うことが可能となりつつある。
【０００３】
【発明が解決しようとする課題】
このような環境下において、複数の者がオンラインである種の契約を行う場合には、共通の契約内容に対して、契約者全員が電子署名を利用して同意の意思表示を行うことになる。
【０００４】
しかし、同一の契約書データに対して、単純に複数の契約者が順に電子署名を付与する手法を採ると、後で契約を成立させるための検証を行う際、全員の電子署名を正しく検証できないという問題が生じる。例えば、契約者ＡとＢの間で契約を行う場合、契約者Ａが契約書データに対して必要事項（契約者Ａの氏名、住所など）を記入して電子署名を付与した場合、その電子署名は、契約者Ａの記入後の契約書データを対象として作成される。次に、そうして契約者Ａが必要事項を記入し、電子署名を付与した契約書データに対して、今度は契約者Ｂが必要事項を記入し、電子署名を付す。その結果、契約書データとしては、契約者Ａ及びＢが必要事項を記入した後のものが存在し、電子署名は契約者ＡとＢのものが存在することになる。
【０００５】
ここで、契約者Ｂの電子署名は契約者Ａ、Ｂの両者が必要事項を記入した後の契約書データを対象として作成されているので、正しく検証することができる。しかし、契約者Ａの電子署名は、前述のように契約者Ｂが必要事項を記入する前の契約書データを対象として作成されているので、契約者Ｂが必要事項を記入した後の契約書データを利用して正しく検証することはできない。
【０００６】
このように、複数の契約者間のオンライン契約を実現するためには、同一の契約書データに対して複数の者が必要事項を記入し、電子署名を付した際に、全ての契約者の電子署名を正しく検証することができるシステムが要求される。
【０００７】
本発明は、以上の点に鑑みてなされたものであり、同一の契約書データに対して行われた契約者全員の電子署名を正しく検証することにより、安全にオンライン契約手続を実現することが可能なシステム及びそのためのプログラムを提供することを目的とする。
【０００８】
【課題を解決するための手段】
請求項１に記載の発明は、  ネットワークを通じて契約者のクライアント端末と接続されたオンライン契約システムのサーバ装置において、  契約情報を保存するデータベースと、契約内容フィールド及び複数の契約者入力フィールドを含む契約書データについて、前記契約内容フィールドを対象としてサーバの電子署名を作成して契約書データに付与し、契約者の入力が未だ行われていない状態の入力前契約書データとして契約者のクライアント端末へ送信する送信手段と、契約者が必要事項を入力し、契約者の電子署名を付した状態の入力後契約書データを前記クライアント端末から受信する受信手段と、全ての契約者から入力後契約書データを受信した時点で、前記サーバ及び各契約者の電子署名の対象となっているフィールドのデータを入力後契約書データから抽出し、各電子署名を検証する検証手段と、前記検証手段が全ての電子署名を正しく検証できた場合に契約を成立させる成立手段と、を備える。
【０００９】
上記のように構成された発明によれば、まず、契約書データにサーバの電子署名が付与されて入力前契約書データが作成され、これが契約者のクライアント端末へ送信される。契約者は必要事項を入力し、電子署名を付与し、入力後契約書データとしてサーバ装置へ送信する。サーバ装置はこれを受信する。全ての契約者にこの処理が行われた時点で、サーバ及び各契約者の電子署名の対象となっているフィールドのデータが入力後契約書データから抽出され、各電子署名の検証がなされる。全ての電子署名が正しく検証できれば、契約書データに対する改竄がなく、かつ、入力がそれぞれ契約者本人により行われたことがわかるので、契約が成立する。
【００１０】
請求項２に記載の発明は、請求項１に記載のサーバ装置において、入力前契約書データと入力後契約書データとを比較して契約書データの一致を検出する比較手段を備え、前記成立手段は、全ての契約者について、前記比較手段が契約書データの一致を検出し、かつ、前記検証手段が電子署名を正しく検証できた場合に、契約を成立させる。これにより、入力前契約書データと入力後契約書データとが一致すれば、契約書データに対する改竄がないことがわかり、契約者の電子署名の検証が正しく行われれば、入力が契約者本人により行われたことがわかるので、契約が成立する。
【００１１】
請求項３に記載の発明は、請求項１又は２に記載のサーバ装置において、前記送信手段、前記受信手段、前記検証手段及び前記成立手段が行った処理のログを前記データベースに保存するログ記録手段を備える。これにより、契約成立までの各段階の処理の記録を保存することができる。
【００１２】
請求項４に記載の発明は、請求項１乃至３のいずれかに記載のサーバ装置において、前記契約書データは、対応する電子フォームのデータを含む。これにより、契約書データを電子的な書類として正しく表示することができる。
【００１３】
請求項５に記載の発明は、請求項１乃至３のいずれかに記載のサーバ装置において、前記契約書データは、対応する電子フォームの識別情報を含む。これにより、契約書データを電子的な書類として正しく表示することを確保しつつ、契約書データ自体のデータ量を減らすことができる。
【００１４】
また、請求項６に記載の発明は、ネットワークを通じて契約者のクライアント端末と接続されたオンライン契約システムのサーバ装置において実行されるプログラムであって、前記サーバ装置を、契約内容フィールド及び複数の契約者入力フィールドを含む契約書データについて、前記契約内容フィールドを対象としてサーバの電子署名を作成して契約書データに付与し、契約者の入力が未だ行われていない状態の入力前契約書データとして契約者のクライアント端末へ送信する送信手段、契約者が必要事項を入力し、契約者の電子署名を付した状態の入力後契約書データを前記クライアント端末から受信する受信手段、全ての契約者から入力後契約書データを受信した時点で、前記サーバ及び各契約者の電子署名の対象となっているフィールドのデータを入力後契約書データから抽出し、各電子署名を検証する検証手段、前記検証手段が全ての電子署名を正しく検証できた場合に契約を成立させる成立手段、として動作させる。
【００１５】
上記のように構成された発明によれば、まず、契約書データにサーバの電子署名が付与されて入力前契約書データが作成され、これが契約者のクライアント端末へ送信される。契約者は必要事項を入力し、電子署名を付与し、入力後契約書データとしてサーバ装置へ送信する。サーバ装置はこれを受信する。全ての契約者にこの処理が行われた時点で、サーバ及び各契約者の電子署名の対象となっているフィールドのデータが入力後契約書データから抽出され、各電子署名の検証がなされる。全ての電子署名が正しく検証できれば、契約書データに対する改竄がなく、かつ、入力がそれぞれ契約者本人により行われたことがわかるので、契約が成立する。
【００１６】
請求項７に記載の発明は、請求項６に記載のプログラムにおいて、入力前契約書データと入力後契約書データとを比較して契約書データの一致を検出する比較手段として更に動作させ、前記成立手段は、全ての契約者について、前記比較手段が契約書データの一致を検出し、かつ、前記検証手段が電子署名を正しく検証できた場合に、契約を成立させる。これにより、入力前契約書データと入力後契約書データとが一致すれば、契約書データに対する改竄がないことがわかり、契約者の電子署名の検証が正しく行われれば、入力が契約者本人により行われたことがわかるので、契約が成立する。
【００１７】
請求項８に記載の発明は、請求項６または請求項７に記載のプログラムにおいて、前記契約書データは、対応する電子フォームのデータを含む。これにより、契約書データを電子的な書類として正しく表示することができる。
【００１８】
請求項９に記載の発明は、請求項６または請求項７に記載のプログラムにおいて、前記契約書データは、対応する電子フォームの識別情報を含む。これにより、契約書データを電子的な書類として正しく表示することを確保しつつ、契約書データのデータ量を減らすことができる。
【００２７】
【発明の実施の形態】
以下、図面を参照して本発明の好適な実施の形態について説明する。
【００２８】
図１は、本発明のオンライン契約システムによるオンライン契約手続の概要を示す。図１の例では、企業Ｂとユーザ甲との間である契約が行われる。企業Ｂは、例えば保険会社、リース会社など、ユーザとの間で契約を行う種々のものが該当する。企業Ｂ側は、契約者として例えば代表取締役などである個人乙が契約書に記名、署名などを行うものとする。
【００２９】
企業Ａは、企業Ｂとユーザ甲との間に入り、インターネットを使用してオンライン契約手続を実行する企業であり、契約手続を行うことにより、企業Ｂ及び／又はユーザ甲から所定のサービス料を得る場合がある。企業Ａは契約代行サーバを運営し、インターネットを通じて甲及び乙のクライアント端末と通信を行って契約手続のために必要な処理を実行する。
【００３０】
企業Ａのサーバ及び契約者のクライアント端末を含むオンライン契約システムの概略構成を図２に示す。図２において、企業Ａのサーバ１０と、契約者（甲、乙）のクライアント端末２０とがインターネット１を介して通信可能に接続されている。サーバ１０は、フォームＤＢ１１、マスターＤＢ１２、契約情報ＤＢ１３に接続される。フォームＤＢ１１は、契約に利用される電子フォームを蓄積している。電子フォームとは、通常の紙書類の契約書などを電子データとしたものであり、契約内容の記載や契約者の氏名記入欄などの枠やフィールドなどを示すデータである。電子フォームを利用して電子書類を作成する際には、契約者などが契約内容を記述した入力データを作成して電子フォームの対応するフィールドに挿入し、さらに契約者が氏名などの必要事項を対応するフィールドに入力することになるが、これら入力データは電子フォーム自体とは別のデータとして管理される。即ち、電子フォームと、それに対する入力データとを組み合わせることにより、１つの電子書類が作成されることになる。
【００３１】
本発明の場合、各種の契約書に対応する電子フォームがフォームＤＢ１１に保存されており、各種の契約内容を記述した入力データがマスターＤＢ１２に保存されている。サーバ１０はこれらを組み合わせることにより契約書の電子書類（以下、「契約書データ」と呼ぶ。）を作成し、契約者に提供することになる。
【００３２】
契約情報ＤＢ１３には、契約手続の完了までに発生する様々のデータが、契約処理の進行に伴って順次保存されていく。具体的には、契約者の要求により１つの契約手続が開始すると、まずそれに対する契約ＩＤが生成され契約情報ＤＢ１３に保存される。次に、以後の契約処理に伴って発生する種々のデータがこの契約ＩＤの下に蓄積されていく。契約情報ＤＢ１３に蓄積されるデータとしては、例えば、対象となる契約書データ、その契約書データにおいて使用されている電子フォーム自体又は電子フォームＩＤ、契約者の電子署名、契約成立を示すデータ、契約手続において契約者やサーバが行った手続のログデータ、などが含まれる。
【００３３】
また、サーバ１０には、後述する契約書データの処理や契約内容の検証処理などを実行するためのサーバアプリケーション１４（以下、「サーバアプリ」と呼ぶ。）が導入されている。なお、サーバアプリ１４は、コンピュータプログラムとして構成することができる。
【００３４】
一方、クライアント端末２０には、契約者としての必要事項の入力、電子署名の付与などの処理を実行するためのクライアントモジュール２２が導入されている。クライアントモジュールもコンピュータプログラムとして構成することができる。また、クライアント端末２０は、図示しないＩＣカードリーダにより契約者の所持するＩＣカード２１との間でデータの入出力が可能である。ＩＣカード２１には、例えば、契約者の電子署名の秘密鍵などが含まれている。従って、クライアントモジュール２２は、ユーザが電子署名を付与する際に、クライアント端末２０内又はＩＣカード２１中に存在する秘密鍵を使用して電子署名を作成する。
【００３５】
次に、図１及び２を参照して、オンライン契約手続の流れを概説する。図１の例においては、個人契約者甲と、企業Ｂに属する契約者乙との間である契約が行われる。企業Ａは、サーバ１０によりオンラインでその契約手続の補助、代行を行い、契約が完了するとそれを企業Ｂに報告する。
【００３６】
まず、契約者甲と企業Ｂとの間の契約に関して、企業Ａに代行依頼がなされると、サーバ１０は企業ＢのマスターＤＢから契約内容データを取得し、企業ＡのマスターＤＢ１２に保存する（ステップＳ０）。次に、サーバ１０はその契約内容データに対応する電子フォームをフォームＤＢ１１から取得し、両者を組み合わせて契約書データを作成し、契約者甲のクライアント端末２０へ送信する（ステップＳ１）。甲は、クライアント端末２０のクライアントモジュール２２を利用して、契約書データに必要事項（具体的には甲の氏名など）を入力し、甲の電子署名を付与してサーバ１０へ返信する（ステップＳ２）。
【００３７】
次に、サーバ１０は、甲の電子署名が付された契約書データを乙のクライアント端末２０へ送信する（ステップＳ３）。これに対し、乙は必要事項を入力し、乙の電子署名を付与してサーバ１０へ返信する（ステップＳＳ４）。サーバ１０は、こうして受け取った契約書データ及び電子署名を利用して、契約書の内容の改変の有無の検査ならびに甲及び乙の電子署名の検証などの処理（以下、「契約情報検証処理」とも呼ぶ。）を行う。本発明はこの契約情報検証処理に関連するものであり、その詳細は後述する。そして、サーバ１０における検証の結果、契約内容の改変がなく、甲及び乙の電子署名が正しいことが確認されると、サーバ１０は契約書データや甲、乙の電子署名データなどを契約情報ＤＢ１３に保存するとともに、企業Ｂに送信して契約成立の報告を行う（ステップＳ５）。企業Ｂは、契約成立したデータを企業Ｂの契約情報ＤＢに格納する（ステップＳ６）。
こうして、オンライン契約手続が完了する。
【００３８】
なお、サーバ１０は、契約手続中に行われた処理のログデータをとり、契約情報ＤＢ１３に保存することができる。これにより、サーバと契約者のクライアント端末との間でデータの送受信が行われた日時などの履歴を保存し、後に問題となった場合に参照などすることができる。
【００３９】
次に、サーバ１０と契約者のクライアント端末２０との間で行われる契約手続について詳細に説明する。契約手続は、サーバ１０が契約者に契約書データを提供し、契約者がこれに氏名などの必要事項を記入し、電子署名を付与することにより行われる。２者間の契約では、１人の契約者が必要事項を記入し、電子署名を付した後、さらにもう１人の契約者が必要事項を入力し、電子署名を付す。サーバ１０は、２人の契約者が必要事項を入力した契約書データ及び２人の契約者の電子署名の検証を行う。
【００４０】
サーバ１０が実行する契約情報検証処理においては、主として２つの事項について検証が行われる。１つは、「契約書データの原本性の確認」である。最初にサーバ１０から契約者に送信される契約書データには、契約内容が記載されている。契約書データが契約者に送信され、契約者が必要事項を記入し、電子署名を付してサーバ１０へ返信される間に、契約内容が契約者によって改竄されたり、又はインターネットによる送信中に第３者により改竄されたりしていないかを確認する必要がある。契約書データの原本性の確認はこのために行われる。もう１つは、「契約者（記入者）の確認」である。つまり、本人以外の者が偽って契約者になりすまして契約を行っていないかの確認である。この２つの検証を行うための方法を以下に説明する。
［１］第１の契約情報検証方法
以下に、第１の契約情報検証方法を説明する。第１の方法では、上記の「契約書データの原本性の確認」は、契約者が必要事項を入力する前後の契約書データ同士を比較することにより行う。また、「記入者の確認」は、付与された電子署名を復号化して検証することにより行う。なお、契約書データ同士を比較するために、企業Ａの契約情報ＤＢ１３は履歴管理機能を備えたものを使用する。また、契約書データの比較は、契約書データを構成する複数のフィールド単位で比較を行うことになる。
（１）原本性の確認
まず、契約書データの原本性の確認方法について説明する。サーバ１０はマスターＤＢ１２中の契約内容データとフォームＤＢ１１内の電子フォームから契約書データを作成すると、その写しを契約情報ＤＢ１３に保存してから契約者甲に送信する。契約者甲は、契約書データを受信し、契約内容を確認する。
【００４１】
図５の下部の例において、契約書データは、契約内容フィールド２４（図４（Ａ）の契約書データの「契約」及び「別表」の欄）と、第１契約者フィールド２５（契約者１の氏名・住所欄）と、第２契約者フィールド２６（契約者２の氏名・住所欄）とを含む。ここで、甲は、図４（Ａ）の左側に示すように甲の情報（氏名、住所）を第１契約者フィールドに入力して、甲の電子署名を付す。この時点では、第２契約者フィールド（乙の入力欄）は未だ空欄である。甲はクライアント端末２０を使用して、入力後の契約書データ（甲の電子署名付き）をサーバ１０へ返信する。
【００４２】
サーバ１０は、受信した契約書データ（甲の電子署名付き）をまず契約情報ＤＢ１３に格納する。次に、サーバ１０はサーバアプリ１４を実行することにより、先に契約情報ＤＢ１３に保存した、甲の入力前の契約書データ中の契約内容フィールドと、甲から受信した、甲の入力後の契約書データ中の契約内容フィールドとを比較する。両者が一致すれば、甲の入力・署名処理において、契約内容に改竄はなく、契約書データの原本性が確保されたと判断される。
【００４３】
次に、サーバ１０は、今度は甲の入力後の契約書データ（図４（Ａ）の左側の状態）を乙のクライアント端末２０へ送信する。乙は、契約内容を確認し、第２契約者フィールドに氏名、住所を入力し、乙の電子署名を付してサーバ１０へ返信する。サーバ１０は、乙の入力・署名後の契約書データ（乙の電子署名付き）を受信し、契約情報ＤＢ１３内に保存する。次に、サーバ１０はサーバアプリ１４を実行することにより、先に保存した甲の入力後の契約書データ中の契約内容フィールドと、乙の入力後の契約書データ中の契約内容フィールドとを比較する。両者が一致すれば、乙の入力・署名処理中にも、契約書データの原本性が保たれたことがわかる。
【００４４】
このように、第１実施例では、契約書データの原本性は、各契約者の入力前後における契約書データ中の契約内容フィールドを比較することにより検証する。
（２）記入者の検証
次に、第１実施例における電子署名の検証について説明する。第１実施例では、基本的に図３に示す署名パターン１により電子署名が付与される。
【００４５】
図３（Ａ）に示す署名パターン１を適用した場合、甲及び乙の電子署名は契約書データ全体（即ち、入力データ＋電子フォーム）に対して付与される。サーバ１０のサーバアプリ１４は、契約者のクライアント端末から契約書データ及び電子署名を受信すると、最新の電子署名のみを検証する。
【００４６】
まず、契約者の入力前の契約書データがサーバ１０から甲のクライアント端末２０へ送信されると、甲は自分の情報を入力し、入力後の契約書データに対して電子署名を付して、サーバ１０へ返信する。この時、甲のクライアント端末２０のクライアントモジュール２２は、甲の入力後の契約書データ全体を対象として甲の電子署名を作成する。サーバ１０はこれらを受信し、サーバアプリ１４により、受信した契約書データ（甲の入力後）を利用して甲の電子署名を検証する。検証が正しく行えれば、その契約書データは確かに甲により入力されたと判定される。
【００４７】
次に、サーバ１０は甲の入力後の契約書データを乙のクライアント端末２０に送信する。乙は、同様に自分の情報を入力し、電子署名を付してサーバ１０へ返信する。この時、乙のクライアント端末２０のクライアントモジュール２２は、乙の入力後の契約書データ全体を対象として乙の電子署名を作成する。サーバ１０は、乙の入力後の契約書データを使用して乙の電子署名を検証し、検証が正しく行えれば、その入力が乙によってなされたと判定する。こうして、契約者の電子署名の検証がなされる。
（３）処理フロー
次に、図６を参照して、第１の契約情報検証方法によるオンライン契約手続の流れを概説する。まず、サーバ１０はサーバアプリ１４により、電子フォームと契約内容データを組み合わせて契約書データ（オリジナルデータ）を作成し（ステップＳ１０）、契約情報ＤＢ１３に保存し（ステップＳ１２）、甲のクライアント端末２０へ送信する（ステップＳ１４）。甲は契約書データを受信し、氏名・住所を入力し、電子署名を付与し（ステップＳ１６）、サーバ１０へ返信する。サーバ１０は、受信した契約書データ及び甲の電子署名を契約情報ＤＢ１３に保存し、サーバアプリ１４により甲の電子署名の検証を行う（ステップＳ１８）。次に、サーバアプリ１４は、先に契約情報ＤＢ１３に保存された甲の入力前の契約書データと、甲のクライアント端末２０から受信した甲の入力後の契約書データとを比較して原本性の確認を行う（ステップＳ２０）。甲の電子署名の検証及び契約書データの原本性の確認が無事完了すると、サーバ１０は甲の入力後の契約書データ及び甲の電子署名を契約情報ＤＢ１３に保存する。
【００４８】
次に、サーバ１０は、甲の入力・署名後の契約書データを乙のクライアント端末２０へ送信する（ステップＳ２２）。乙はこれを受け取り、自分の氏名・住所を入力し、入力後のデータに乙の電子署名を付してサーバへ返信する（ステップＳ２４）。サーバ１０では、サーバアプリ１４が乙の署名を検証し（ステップＳ２６）、さらにステップＳ２０で契約情報ＤＢ１３に保存された乙の入力前の契約書データと、乙のクライアント端末２０から受信した乙の入力後の契約書データとを比較して原本性の確認を行う（ステップＳ２８）。こうして、原本性の確認及び署名の検証が完了すると、サーバ１０は契約書データ及び乙の電子署名を契約情報ＤＢ１３に保存し、契約成立とする。
【００４９】
このように、第１の契約情報検証方法によれば、契約情報ＤＢ１３に契約者の入力前の契約書データを保存し、それと入力後の契約書データとを比較することにより契約書データの改竄を検出して契約書データの原本性を確保する。また、契約者の入力後の契約書データに基づいて各契約者の電子署名を検証し、契約者（記入者）の検証を行う。これにより、契約者データの原本性と記入者の確認を同時に行うことができる。
【００５０】
なお、サーバ１０の契約情報ＤＢ１３内に保存された契約書データの改竄を検出する目的で、契約情報ＤＢ１３に契約書データを保存する際にはサーバ側の電子署名を付し、契約情報ＤＢ１３から契約書データを取り出す際にはサーバ側の電子署名による検証を行うようにサーバアプリ１４を構成することもできる。これにより、サーバ１０内における契約書データの改竄などを検出することができる。
［２］第２の契約情報検証方法
次に、第２の契約情報検証方法を説明する。第２の方法では、上記の「契約書データの原本性の確認」及び「契約者（記入者）の検証」をいずれも電子署名を利用して行う。なお、この方法では、契約者の入力前の契約書データを契約情報ＤＢ１３に保存する必要はないので、契約情報ＤＢ１３は履歴管理機能の無いものを使用できる。
（１）原本性の確認及び電子署名の検証
この方法では、基本的に図３（Ｂ）に示す署名パターン２を使用する。署名パターン２は、契約内容データ中の特定のフィールド及び電子フォームに対してサーバ側、甲及び乙が電子署名を付す方法である。
【００５１】
図４（Ｂ）に示すように、サーバ１０は、オリジナルの契約書データに対してサーバ側の電子署名を付して甲のクライアント端末２０へ送信する。この際、サーバの電子署名の対象となるのは、契約内容フィールドである。次に、甲は自分の情報を入力し、電子署名を付与する。この際、甲のクライアント端末２０のクライアントモジュール２２は、第１契約者フィールドを対象として甲の電子署名を作成する。これにより、甲の入力後の契約書データ、サーバの電子署名及び甲の電子署名がサーバ１０へ返信され、さらに乙のクライアント端末２０に送信される。乙が入力を行い、電子署名付与の指示をクライアント端末２０に入力すると、クライアントモジュール２２は、契約書データ全体を対象として乙の電子署名を作成する。よって、この時点では、甲及び乙の両者の入力後の契約書データに対して、サーバ、甲及び乙の３つの電子署名が付加された状態でサーバ１０へ送信される。
【００５２】
さて、サーバ１０のサーバアプリ１４は、まずサーバ署名の検証を行う。サーバ署名は契約内容フィールドのみを対象として作成されているので、甲及び乙の入力後であっても、契約内容フィールド中に改竄が無ければ正しく復号化できる。つまり、サーバ署名を検証することにより、契約内容の改竄を検出することができる。
【００５３】
サーバ署名の検証により、契約内容の改竄が無いと判定されると、次にサーバアプリ１４は甲の電子署名を検証する。甲の電子署名は第１契約者フィールドを対象として作成されているので、乙の入力後であっても、契約書データから第１契約者フィールドのみを抜き出して検証すれば正しい検証を行うことができる。こうして、甲の電子署名の検証に成功すると、第１契約者フィールドの記入者が確かに甲本人であることが確認できる。次に、サーバアプリ１４は、乙の電子署名を検証する。乙の電子署名は契約書データ全体について作成されているので、サーバアプリ１４は乙のクライアント端末２０から受信した契約書データ（甲、乙の入力後）を利用して乙の電子署名を検証する。検証に成功すれば、第２契約者フィールドの記入者が乙本人であることが確認できる。
（２）処理フロー
次に、図７を参照して第２の契約情報検証処理の流れを説明する。まず、サーバ１０において契約内容データと電子フォームとにより契約書データ（オリジナルデータ）が作成され、それに対するサーバの電子署名が付され（ステップＳ４０）、契約情報ＤＢ１３に保存される（ステップＳ４２）。次に、サーバ１０が契約書データを甲のクライアント端末２０へ送信する（ステップＳ４４）。甲は自分の氏名・住所を入力し、入力後の契約書データに対して電子署名を付してサーバ１０へ送る（ステップＳ４６）。このとき、クライアント端末２０上で甲が電子署名の付与を指示すると、クライアントモジュール２２は契約書データ中の第１契約者フィールド（甲の記入欄）を対象として電子署名を作成する。サーバ１０は、甲のクライアント端末２０から受け取った契約書データ及び甲の電子署名を契約情報ＤＢ１３に保存する（ステップＳ５０）。
【００５４】
次に、サーバ１０は、サーバ及び甲の署名が付与された契約書データを乙のクライアント端末２０へ送信する（ステップＳ５２）。乙は、第２契約者フィールドに自分の氏名・住所を入力し、電子署名付与の指示を入力する。これにより、クライアントモジュール２２は乙の入力後の契約書データに対して電子署名を作成し（ステップＳ５４）、サーバ１０へ返信する。サーバ１０は、乙のクライアント端末２０からデータを受信すると、前述のように、サーバの電子署名、甲の電子署名、乙の電子署名の順に署名を検証する。全ての署名の検証が正しく行われると、それは契約内容の原本性が保証され、かつ、甲及び乙本人が契約書データに必要事項を入力したことが確認されたことを示す。よって、サーバアプリ１４は契約書データ及びそれらの電子署名を契約情報ＤＢ１３に保存する（ステップＳ５８）。
【００５５】
なお、上記の例では、サーバの電子署名の対象を契約内容フィールド、甲の電子署名の対象を第１契約者フィールド、乙の電子署名の対象を契約書データ全体としているが、第２の契約情報検証方法では、甲の電子署名の対象となる部分が、乙の入力フィールドを含まないようにすれば、他の態様でもかまわない。こうすることにより、甲の電子署名の対象となる部分が乙の入力により変更することが無くなるので、甲の電子署名の検証を正しく行えるからである。よって、例えば、甲の電子署名の対象を契約内容フィールド＋第１契約者フィールドとすることもできる。また、乙の電子署名の対象は第２契約者フィールドのみでもよく、第２契約者フィールド＋契約内容フィールドでもよく、第２契約者フィールド＋第１契約者フィールドでもよい。
【００５６】
また、契約者が３人以上である場合でも同様の処理を適用することができる。即ち、ある契約者の電子署名が、その契約者より後に記入・署名する契約者のための契約者フィールドを含まない署名対象部分に対して作成されることを確保すれば、各契約者の電子署名を正しく検証することができる。
【００５７】
また、第１の契約情報検証方法の場合と同様に、契約情報ＤＢ１３中に契約書データを保存する際に、サーバ側で電子署名を付して、サーバ内における契約書データの改竄を検出可能とすることもできる。この場合の電子署名は、ステップＳ４０で使用した秘密鍵を用いてもよいし、それとは異なる秘密鍵を用いてもよい。
（３）変形例
次に、第２の契約情報検証方法において、別の署名パターンを使用する場合について説明する。上の例では、図３（Ｂ）に示す署名パターン２として、電子フォーム自体を含めて電子署名を付している。しかし、同種類の契約には同一の電子フォームが利用されることが多く、電子フォーム自体を契約書データに含めて契約情報ＤＢ１３に保存すると、保存すべき契約書データのデータ量が大きくなってしまう。そこで、図３（Ｃ）及び図４（Ｃ）に示すように、電子フォーム自体の代わりに、電子フォームを特定する紐付け情報（例えば電子フォームのＩＤなど）を契約書データに含める。即ち、署名パターン２の契約内容データ及び電子フォームの代わりに、契約内容データ及び対応する電子フォームの紐付け情報を利用して電子署名を作成する。これにより、各契約書データは電子フォーム自体を含まなくなるので、個々の契約書データの容量を小さくすることができ、契約情報ＤＢ１３の容量を効率的に使用することができる。これは、具体的にはクライアント端末２０のクライアントモジュールが電子署名を付与する際に、電子署名の対象として、電子フォーム自体の代わりに電子フォームの紐付け情報を利用するように構成すればよい。
【００５８】
なお、署名パターン３を使用した場合も、甲の電子署名の対象が乙の入力範囲を含まないようにすれば、甲及び乙の電子署名の対象を種々の態様で決めることができるのは同様である。
【００５９】
なお、上記の例では、第１の契約情報検証方法において署名パターン１を使用し、第２の契約情報検証方法において署名パターン２又は３を使用しているが、第１の契約情報検証方法において署名パターン２及び３を使用することも可能である。
【００６０】
また、クライアント端末がサーバから契約書データを受信した際に、まずその時点の契約書データに付されている電子署名を検証するように構成することもできる。これにより、契約者が正しい契約内容データに対して入力・署名することが確保される。これは、クライアントモジュール２２に電子署名の検証機能を含めることにより実現できる。具体的には、甲のクライアント端末でサーバの電子署名を検証し、乙のクライアント端末でサーバ及び甲の電子署名を検証することができる。
【００６１】
また、上記の例では、説明の便宜上、２者間の契約の場合について説明しているが、同様の処理により３者以上の間での契約手続も行うことができる。
【００６２】
【発明の効果】
以上説明したように、本発明によれば、契約内容の原本性を確保し、電子署名により契約者の認証を行うことにより、安全にオンライン契約手続を実行することができる。
【図面の簡単な説明】
【図１】本発明のシステムによるオンライン契約処理の概要を示す。
【図２】本発明のオンライン契約システムの概略構成図である。
【図３】本発明のオンライン契約手続において使用できる署名パターンを示す。
【図４】署名パターン１及び２における電子署名の方法を示す。
【図５】署名パターン３における電子署名の方法を示す。
【図６】第１の契約情報検証処理を示すフローチャートである。
【図７】第２の契約情報検証処理を示すフローチャートである。
【符号の説明】
１  インターネット
１０  サーバ
１１  フォームＤＢ
１２  マスターＤＢ
１３  契約情報ＤＢ
２０  クライアント端末
【図１】
0004551009.tif 000002
【図２】
0004551009.tif 000003
【図３】
0004551009.tif 000004
【図４】
0004551009.tif 000005
【図５】
0004551009.tif 000006
【図６】
0004551009.tif 000007
【図７】
0004551009.tif 000008