(57)【要約】【課題】署名依頼者が指定した署名者が正しく署名を行ったか否かを、検証者が検証することができる。【解決手段】ステップ６０８では、復号化された署名依頼者からの文書データのハッシュ値とステップ６０６で計算されたハッシュ値とが一致しているか否か判断する。一致していると判断した場合、ステップ６１２へ移行する。ステップ６１２では、復号化した署名者の証明書情報に含まれている署名者のメールアドレスと復号化した署名依頼者の署名データＤ１に含まれる署名者のメールアドレスとが一致しているか否か判断する。一致していると判断した場合は、ステップ６１６へ移行する。ステップ６１６では、復号化した署名者からの文書データのハッシュ値とステップ６０６で計算したハッシュ値とが一致しているか否か判断する。一致していると判断した場合は、ステップ６２０で表示装置に署名者が正しいことを表示する。【選択図】図１０
2010219618.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
署名依頼者が指定する署名者の証明書情報に含める該署名者を特定する特定情報を設定する設定手段と、
認証局から発行された前記署名依頼者の秘密かぎ及び該認証局から発行された前記署名依頼者の証明書情報が記憶された記憶媒体から前記秘密かぎ及び前記証明書情報を取得する取得手段に、前記署名者が電子署名する文書を表わす文書情報、及び前記設定手段で設定された前記特定情報を送信する第１の送信手段と、
前記文書情報、前記証明書情報及び前記特定情報を用いて前記取得手段で生成され、かつ前記取得手段から受信した署名依頼情報を前記署名者のコンピュータに送信する第２の送信手段と、
前記署名者のコンピュータから受信した前記署名依頼情報に基づいて電子署名された署名情報が正しいか否かを検証する検証手段と、
して機能させるためのプログラム。
【請求項２】
コンピュータを、
認証局から発行された前記署名依頼者の秘密かぎ及び該認証局から発行された前記署名依頼者の証明書情報が記憶された記憶媒体から前記秘密かぎ及び前記証明書情報を取得する取得手段と、
署名依頼者のコンピュータから署名者が電子署名する文書を表わす文書情報、及び署名依頼者が指定する署名者の証明書情報に含める該署名者を特定する特定情報を受信する受信手段と、
前記受信手段が受信した前記文書情報の特徴を示す特徴情報を生成する第１の生成手段と、
前記第１の生成手段で生成した特徴情報、前記受信手段で受信した特定情報及び前記取得手段で取得した証明書情報を、前記取得手段で取得した秘密かぎを用いて暗号化して暗号化情報を生成する暗号化手段と、
前記文書情報及び前記暗号化情報に基づいて署名依頼情報を生成する第２の生成手段と、
前記第２の生成手段で生成された署名依頼情報を前記署名依頼者のコンピュータに送信する送信手段と、
して機能させるためのプログラム。
【請求項３】
前記特定情報を、署名者のメールアドレスとした請求項１または請求項２記載のプログラム。
【請求項４】
署名依頼者が指定する署名者の証明書情報に含める該署名者を特定する特定情報を設定する設定手段と、
認証局から発行された前記署名依頼者の秘密かぎ及び該認証局から発行された前記署名依頼者の証明書情報が記憶された記憶媒体から前記秘密かぎ及び前記証明書情報を取得する取得手段に、前記署名者が電子署名する文書を表わす文書情報、及び前記設定手段で設定された前記特定情報を送信する第１の送信手段と、
前記文書情報、前記証明書情報、及び前記特定情報を用いて前記取得手段で生成され、かつ前記取得手段から受信した署名依頼情報を前記署名者のコンピュータに送信する第２の送信手段と、
前記署名者のコンピュータから受信した前記署名依頼情報に基づいて電子署名された署名情報が正しいか否かを検証する検証手段と、
を備えた署名検証装置。
【請求項５】
認証局から発行された前記署名依頼者の秘密かぎ及び該認証局から発行された前記署名依頼者の証明書情報が記憶された記憶媒体から前記秘密かぎ及び前記証明書情報を取得する取得手段と、
署名依頼者のコンピュータから署名者が電子署名する文書を表わす文書情報、及び署名依頼者が指定する署名者の証明書情報に含める該署名者を特定する特定情報を受信する受信手段と、
前記受信手段が受信した前記文書情報の特徴を示す特徴情報を生成する第１の生成手段と、
前記第１の生成手段で生成した特徴情報、前記受信手段で受信した特定情報及び前記取得手段で取得した証明書情報を、前記取得手段で取得した秘密かぎを用いて暗号化して暗号化情報を生成する暗号化手段と、
前記文書情報及び前記暗号化情報に基づいて署名依頼情報を生成する第２の生成手段と、
前記第２の生成手段で生成した署名依頼情報を前記署名依頼者のコンピュータに送信する送信手段と、
を備えた署名情報生成装置。
【請求項６】
署名依頼者が指定する署名者の証明書情報に含める該署名者を特定する特定情報を設定する設定手段と、
認証局から発行された前記署名依頼者の秘密かぎ及び該認証局から発行された前記署名依頼者の証明書情報が記憶された記憶媒体から前記秘密かぎ及び前記証明書情報を取得する取得手段と、
前記署名者が電子署名する文書を表わす文書情報、及び前記設定手段で設定された前記特定情報を、前記取得手段に送信する第１の送信手段と、
署名依頼者のコンピュータから前記文書情報、及び前記特定情報を受信する受信手段と、
前記受信手段が受信した前記文書情報の特徴を示す特徴情報を生成する第１の生成手段と、
前記第１の生成手段で生成した特徴情報、前記受信手段で受信した特定情報及び前記取得手段で取得した証明書情報を、前記取得手段で取得した秘密かぎを用いて暗号化して暗号化情報を生成する暗号化手段と、
前記文書情報及び前記暗号化情報に基づいて署名依頼情報を生成する第２の生成手段と、
前記第２の生成手段で生成した署名依頼情報を前記署名依頼者のコンピュータに送信する第２の送信手段と、
前記取得手段から受信した前記署名依頼情報を前記署名者のコンピュータに送信する第３の送信手段と、
前記署名者のコンピュータから受信した前記署名依頼情報に基づいて電子署名された署名情報が正しいか否かを検証する検証手段と、
を備えた署名検証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラム、署名検証装置、署名情報生成装置及び署名検証システムに関する。
【背景技術】
【０００２】
特許文献１には、担当者が中間署名Ａの署名対象データを作成し、予め署名権限者情報が設定されている署名エリアに署名を行うと、秘密かぎで中間署名Ａの署名対象データを暗号化した中間署名１の署名データが生成され、課長または課長代理が、担当者の公開かぎを用いて復号化した中間署名１の署名データと担当者が作成した中間署名Ａの署名対象データとを比較して、署名が担当者によるものか検証する署名検証システムが記載されている。この署名検証システムでは、担当者による署名と判断された場合、不足情報等を追加した中間署名１後の追加データを作成し、担当者が作成した中間署名Ａの署名対象データに中間署名１後の追加データを結合した中間署名Ｂの署名対象データを作成して、予め署名権限者情報が設定されている署名エリアに署名を行い、課長または課長代理の秘密かぎで暗号化された作成した中間署名２の署名データを生成する。また、部長は、中間署名２の署名データを部長の公開かぎで復号化し、中間署名２の署名データタと中間署名Ｂの署名対象データとを比較して署名が課長または課長代理によるものか検証し、課長または課長代理による署名と判断された場合、不足情報等を追加した中間署名２後の追加データを作成し、課長または課長代理が作成した中間署名Ｂの署名対象データに中間署名２後の追加データを結合した最終署名の署名対象データを作成して、予め署名権限者情報が設定されている署名エリアに署名を行い、部長の秘密かぎで暗号化された最終署名の署名データを生成する。そして、検証者が、最終署名が部長本人によるものか否か及び部長の公開かぎで復号化した最終署名の署名データと最終署名の検証対象データとを比較して検証する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２４８０４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、署名依頼者が指定した署名者が正しく署名を行ったか否かを、検証者が検証することができるプログラム、署名検証装置、署名情報生成装置及び署名検証システムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために請求項１記載の発明に係るプログラムは、コンピュータを、署名依頼者が指定する署名者の証明書情報に含める該署名者を特定する特定情報を設定する設定手段と、認証局から発行された前記署名依頼者の秘密かぎ及び該認証局から発行された前記署名依頼者の証明書情報が記憶された記憶媒体から前記秘密かぎ及び前記証明書情報を取得する取得手段に、前記署名者が電子署名する文書を表わす文書情報、及び前記設定手段で設定された前記特定情報を送信する第１の送信手段と、前記文書情報、前記証明書情報及び前記特定情報を用いて前記取得手段で生成され、かつ前記取得手段から受信した署名依頼情報を前記署名者のコンピュータに送信する第２の送信手段と、前記署名者のコンピュータから受信した前記署名依頼情報に基づいて電子署名された署名情報が正しいか否かを検証する検証手段と、して機能させる。
【０００６】
請求項２の発明に係るプログラムは、コンピュータを、認証局から発行された前記署名依頼者の秘密かぎ及び該認証局から発行された前記署名依頼者の証明書情報が記憶された記憶媒体から前記秘密かぎ及び前記証明書情報を取得する取得手段と、署名依頼者のコンピュータから署名者が電子署名する文書を表わす文書情報、及び署名依頼者が指定する署名者の証明書情報に含める該署名者を特定する特定情報を受信する受信手段と、前記受信手段が受信した前記文書情報の特徴を示す特徴情報を生成する第１の生成手段と、前記第１の生成手段で生成した特徴情報、前記受信手段で受信した特定情報及び前記取得手段で取得した証明書情報を、前記取得手段で取得した秘密かぎを用いて暗号化して暗号化情報を生成する暗号化手段と、前記文書情報及び前記暗号化情報に基づいて署名依頼情報を生成する第２の生成手段と、前記第２の生成手段で生成された署名依頼情報を前記署名依頼者のコンピュータに送信する送信手段と、して機能させる。
【０００７】
請求項３の発明に係るプログラムは、前記特定情報を、署名者のメールアドレスとしたものである。
【０００８】
請求項４の発明に係る署名検証装置は、署名依頼者が指定する署名者の証明書情報に含める該署名者を特定する特定情報を設定する設定手段と、認証局から発行された前記署名依頼者の秘密かぎ及び該認証局から発行された前記署名依頼者の証明書情報が記憶された記憶媒体から前記秘密かぎ及び前記証明書情報を取得する取得手段に、前記署名者が電子署名する文書を表わす文書情報、及び前記設定手段で設定された前記特定情報を送信する第１の送信手段と、前記文書情報、前記証明書情報、及び前記特定情報を用いて前記取得手段で生成され、かつ前記取得手段から受信した署名依頼情報を前記署名者のコンピュータに送信する第２の送信手段と、前記署名者のコンピュータから受信した前記署名依頼情報に基づいて電子署名された署名情報が正しいか否かを検証する検証手段とを備えている。
【０００９】
請求項５の発明に係る署名情報生成装置は、認証局から発行された前記署名依頼者の秘密かぎ及び該認証局から発行された前記署名依頼者の証明書情報が記憶された記憶媒体から前記秘密かぎ及び前記証明書情報を取得する取得手段と、署名依頼者のコンピュータから署名者が電子署名する文書を表わす文書情報、及び署名依頼者が指定する署名者の証明書情報に含める該署名者を特定する特定情報を受信する受信手段と、前記受信手段が受信した前記文書情報の特徴を示す特徴情報を生成する第１の生成手段と、前記第１の生成手段で生成した特徴情報、前記受信手段で受信した特定情報及び前記取得手段で取得した証明書情報を、前記取得手段で取得した秘密かぎを用いて暗号化して暗号化情報を生成する暗号化手段と、前記文書情報及び前記暗号化情報に基づいて署名依頼情報を生成する第２の生成手段と、前記第２の生成手段で生成した署名依頼情報を前記署名依頼者のコンピュータに送信する送信手段と、を備えている。
【００１０】
請求項６の発明に係る署名検証システムは、署名依頼者が指定する署名者の証明書情報に含める該署名者を特定する特定情報を設定する設定手段と、認証局から発行された前記署名依頼者の秘密かぎ及び該認証局から発行された前記署名依頼者の証明書情報が記憶された記憶媒体から前記秘密かぎ及び前記証明書情報を取得する取得手段と、前記署名者が電子署名する文書を表わす文書情報、及び前記設定手段で設定された前記特定情報を、前記取得手段に送信する第１の送信手段と、署名依頼者のコンピュータから前記文書情報、及び前記特定情報を受信する受信手段と、前記受信手段が受信した前記文書情報の特徴を示す特徴情報を生成する第１の生成手段と、前記第１の生成手段で生成した特徴情報、前記受信手段で受信した特定情報及び前記取得手段で取得した証明書情報を、前記取得手段で取得した秘密かぎを用いて暗号化して暗号化情報を生成する暗号化手段と、前記文書情報及び前記暗号化情報に基づいて署名依頼情報を生成する第２の生成手段と、前記第２の生成手段で生成した署名依頼情報を前記署名依頼者のコンピュータに送信する第２の送信手段と、前記取得手段から受信した前記署名依頼情報を前記署名者のコンピュータに送信する第３の送信手段と、前記署名者のコンピュータから受信した前記署名依頼情報に基づいて電子署名された署名情報が正しいか否かを検証する検証手段と、を備えている。
【発明の効果】
【００１１】
請求項１及び請求項４の発明によれば、署名依頼者が署名者を特定する特定情報を設定しない場合に比べ、検証者が署名者によって電子署名された署名依頼情報を検証する際に、署名依頼者が設定した特定情報を有する署名者による電子署名であることを検証することができる、という効果が得られる。
【００１２】
また、請求項２及び請求項５の発明によれば、本構成を有さない場合に比べ、生成した署名依頼情報の改ざん及びなりすましを抑制することができる、という効果が得られる。
【００１３】
請求項３の発明によれば、本構成を有さない場合に比べ、特定情報の設定を容易に行うことができる、という効果が得られる。
【００１４】
そして、請求項６の発明によれば、署名依頼者が署名者を特定する特定情報を設定しない場合に比べ、署名依頼者が指定した署名者が正しく署名を行ったか否かを、検証者が検証することができる、という効果が得られる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態に係る署名検証システムの電気系の要部構成を例示するブロック図である。
【図２】第１の実施の形態に係るＩＣカードに含まれる証明書情報を例示する概略図である。
【図３】第１の実施の形態に係る署名検証システムの処理の概略の一例を示す流れ図である。
【図４】第１の実施の形態に係る署名検証システムで生成される署名依頼者の署名データ及び署名者の署名データを例示する概略図である。
【図５】第１の実施の形態に係る署名検証システムのカードリーダの処理の流れの一例を示すフローチャートである。
【図６】第１の実施の形態に係る署名検証システムの署名依頼者の署名データ生成処理の流れの一例を示すフローチャートである。
【図７】第１の実施の形態に係る署名検証システムの署名者の署名データ生成処理の流れの一例を示すフローチャートである。
【図８】第１の実施の形態に係る署名検証システムのコンピュータの処理の流れの一例を示すフローチャートである。
【図９】第１の実施の形態に係る署名検証システムの署名者のメールアドレス設定処理の流れの一例を示すフローチャートである。
【図１０】第１の実施の形態に係る署名検証システムの署名データ検証処理の流れの一例を示すフローチャートである。
【図１１】第１の実施の形態に係る署名検証システムの署名者の証明書情報に含まれている情報と署名依頼者の署名データに含まれている署名者のメールアドレスを例示する概略図である。
【図１２】第２の実施の形態に係る署名検証システムの各ステップにおける署名依頼者、署名者、及び検証者を例示する表である。
【図１３】第２の実施の形態に係る署名検証システムの処理の概略の一例の流れ図である。
【図１４】第２の実施の形態に係る署名検証システムの処理の概略の一例の流れ図である。
【図１５】第２の実施の形態に係る署名検証システムで生成される官公庁の署名データ、第１の社長の署名データ、第１の部長の署名データ、担当者の署名データ、第２の部長の署名データ、及び第２の社長の署名データを例示する図表である。
【図１６】第２の実施の形態に係る署名検証システムのカードリーダ処理プログラムの処理の流れの一例を示すフローチャートである。
【図１７】第２の実施の形態に係る署名検証システムの署名依頼者の署名データ生成処理の流れの一例を示すフローチャートである。
【図１８】第２の実施の形態に係る署名検証システムのコンピュータの処理の流れの一例を示すフローチャートである。
【図１９】第２の実施の形態に係る署名検証システムの署名者のメールアドレス設定処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００１７】
図１は、第１の実施の形態に係る署名検証システム１０の電気系の要部構成を例示するブロック図である。
【００１８】
図１に示すように、署名検証システム１０は、ＩＣカード１１Ａ、１１Ｂ、１１Ｃ・・・のいずれかに記憶された情報を読み取る機能を有する同一構成の複数のカードリーダ１２Ａ、１２Ｂ、１２Ｃ・・・と、カードリーダのいずれかと接続された同一の機能を有する同一構成の複数のコンピュータ１４Ａ、１４Ｂ、１４Ｃ・・・とで構成されている。
【００１９】
ＩＣカード１１Ａ、１１Ｂ、１１Ｃ・・・の各々には、秘密かぎ及び認証局から発行されたＩＣカード所持者の識別名（以下、ＤＮという。）、認証局のＤＮ、及びＩＣカードのシリアル番号等を含む証明書情報が記憶されている。なお、証明書情報には例えば、ＩＣカード所持者の証明書のロール、及び図２の表に例示するようにＩＣカード所持者のメールアドレス等の必要な情報を新たな情報として追加することができる。新たな情報を追加する場合、証明書情報に追加する新たな情報を認証局に通知すると、認証局から新たな情報を追加した証明書情報が発行される。
【００２０】
複数のカードリーダ１２Ａ、１２Ｂ、１２Ｃ・・・の各々は、各種の制御処理を行うＣＰＵ（中央処理装置）１６、ＣＰＵ１６で実行される各種制御プログラム及び各種のデータを記憶したＲＯＭ１８、各種の処理において作業用の記憶領域として一時的に用いられるＲＡＭ（Random Access Memory）２０、記憶媒体に対してデータやコマンドの読み出し及び書き出しを行う記録装置（Ｒ／Ｗ）２１、カードリーダにＩＣカードが挿入された際に、ＩＣカードに記憶されている秘密かぎ及び証明書情報を読み取るカード情報読取部２２、並びに対応するコンピュータの外部インタフェース４０と接続されると共に、対応するコンピュータと情報の入出力を行う外部インタフェース２４で構成されており、これらはシステムバス２６を介して電気的に接続されている。
【００２１】
複数のコンピュータ１４Ａ、１４Ｂ、１４Ｃ・・・の各々は、各種の制御処理を行うＣＰＵ２８、ＣＰＵ２８で実行される各種制御プログラム及び各種のデータを記憶したＲＯＭ３０、各種の処理において作業用の記憶領域として一時的に用いられるＲＡＭ３２、記憶媒体に対してデータやコマンドの読み出し及び書き出しを行う記録装置（Ｒ／Ｗ）３３、後述する署名検証に用いる公開かぎ及び文書データを記憶する記憶装置３４、キーボード及びマウスを含んで構成されると共に、各種情報を入力する入力装置３６、各種情報を表示する表示装置３８、対応するカードリーダの外部インタフェース２４と接続されると共に、対応するカードリーダと情報の入出力を行う外部インタフェース４０、並びにネットワーク４１に接続されると共に、ネットワーク４１を介して他のコンピュータとの通信を行う際に、他のコンピュータと各種情報の入出力を行うネットワークインタフェース４２で構成されており、これらはシステムバス４４を介して電気的に接続されている。
【００２２】
コンピュータ１４Ａ、１４Ｂ、１４Ｃ・・・の記憶媒体としてのＲＯＭの各々には、以下で説明する共通の処理ルーチンが各々記憶されると共に、カードリーダ１２Ａ、１２Ｂ、１２Ｃ・・・の記憶媒体としてのＲＯＭの各々には、以下で説明する共通の処理ルーチンが各々記憶されている。各コンピュータ及び各カードリーダは、電子署名の依頼者（署名依頼者）、電子署名者（署名者）、電子署名の検証者（検証者）が各々所持しているＩＣカードをカードリーダに挿入してコンピュータを使用する際に、各々署名依頼者のコンピュータ及びカードリーダ、署名者のコンピュータ及びカードリーダ、検証者のコンピュータ及びカードリーダ等として機能する。
【００２３】
次に、図３及び図４を参照して、署名依頼者、署名者、及び検証者が、本実施の形態に係る署名検証システム１０を用いて署名者を設定して署名者からの署名を検証する場合を例にして、本実施の形態の署名検証システム１０の処理の概略の流れの一例を説明する。以下では、署名依頼者が所持しているＩＣカードをＩＣカード１１Ａ、署名依頼者が使用するコンピュータをコンピュータ１４Ａ、コンピュータ１４Ａと接続されているカードリーダをカードリーダ１２Ａ、署名者が所持しているＩＣカードをＩＣカード１１Ｂ、署名者が使用するコンピュータをコンピュータ１４Ｂ、コンピュータ１４Ｂと接続されるカードリーダをカードリーダ１２Ｂ、及び検証者が所持しているＩＣカードをＩＣカード１１Ｃ、検証者が使用するコンピュータをコンピュータ１４Ｃとして説明する。
【００２４】
まず、署名依頼者は、コンピュータ１４Ａに、署名依頼者の識別情報（パスワード及びＤＮ等）及び文書データを入力すると共に、署名を依頼する署名者を特定する特定情報として署名者のメールアドレスを設定する。コンピュータ１４Ａは、署名者のメールアドレスが設定されると、署名依頼者のＤＮ、文書データ、及び署名者のメールアドレスをカードリーダ１２Ａへ出力する。
【００２５】
カードリーダ１２Ａは、コンピュータ１４Ａから署名依頼者のＤＮ、文書データ、及び署名者のメールアドレスを取得すると、後述する署名依頼者の署名データ生成処理を実行し、図４に例示する署名依頼者の署名データＤ１を生成する。生成した署名依頼者の署名データＤ１を署名依頼者のコンピュータ１４Ａへ送信する。
【００２６】
署名依頼者のコンピュータ１４Ａは、カードリーダ１２Ａから署名依頼者の署名データＤ１を受信すると、署名者のコンピュータ１４Ｂへ受信した署名依頼者の署名データＤ１を送信する。
【００２７】
署名者のコンピュータ１４Ｂは、署名者から署名者の識別情報（パスワード及びＤＮ等）が入力され、かつ署名依頼者のコンピュータ１４Ａから送信された上記署名依頼者の署名データＤ１が受信されると、コンピュータ１４Ｂに接続されたカードリーダ１２Ｂへ署名者の識別情報であるＤＮ及び署名依頼者の署名データＤ１を送信する。
【００２８】
カードリーダ１２Ｂは、コンピュータ１４Ｂから署名者のＤＮ及び署名依頼者の署名データＤ１を取得すると、後述する署名者の署名データ生成処理を実行し、図４に示す署名者の署名データＤ２を生成する。生成した署名者の署名データＤ２をコンピュータ１４Ｂへ送信する。
【００２９】
署名者のコンピュータ１４Ｂは、カードリーダ１２Ｂから署名者の署名データＤ２を受信すると、署名依頼者のコンピュータ１４Ａへ署名者の署名データＤ２を送信する。
【００３０】
署名依頼者のコンピュータ１４Ａは、署名者のコンピュータ１４Ｂから署名者の署名データＤ２を受信すると、署名者の署名データＤ２を検証者のコンピュータ１４Ｃへ送信する。
【００３１】
検証者のコンピュータ１４Ｃは、署名依頼者のコンピュータ１４Ａから署名者の署名データＤ２を受信すると、署名者の署名データＤ２の署名検証を行い、検証結果を検証者のコンピュータ１４Ｃの表示装置３８に表示する。
【００３２】
次に、上記の署名検証システム１０の処理の詳細について説明する。
【００３３】
図５に基いて、コンピュータ１４Ａ及び１４Ｂに接続されているカードリーダ１２Ａ、１２Ｂの各ＣＰＵ１６により実行されるカードリーダ処理プログラムの処理の流れの一例を説明する。なお、カードリーダ１２Ａ及び１２Ｂを区別しない場合は、カードリーダ１２として説明する。
【００３４】
ステップ１００では、署名依頼者のコンピュータ１４Ａから文書データ及び後述する署名依頼者のコンピュータ１４Ａで設定された署名者のメールアドレス（署名者の特定情報）が入力されたか否かを判断する。入力されたと判断された場合は、カードリーダ１２は、署名依頼者が起動したコンピュータ１４Ａに接続されているカードリーダ１２Ａであるため、ステップ１０２で後述する署名依頼者の署名データ生成処理を実行する。
【００３５】
一方、ステップ１００で否定判断された場合は、ステップ１０４へ移行し、コンピュータ１４Ａから受信した署名依頼者の署名データＤ１が入力されたか否かを判断する。入力されたと判断された場合は、カードリーダ１２は、署名者が起動したコンピュータ１４Ｂに接続されているカードリーダ１２Ｂであるため、ステップ１０６で後述する署名者の署名データ生成処理を実行する。
【００３６】
図６に基いて、上記ステップ１０２の署名依頼者の署名データ生成処理の一例について説明する。
【００３７】
ステップ２００では、ＩＣカードに記憶されている証明書情報を読み取る。次のステップ２０２では、読み取った証明書情報内のＩＣカード所持者（署名依頼者）のＤＮとコンピュータ１４Ａから送信されたＤＮとが一致しているかを判断することにより署名依頼者のＩＣカード１１Ａがカードリーダ１２Ａに挿入されているか否かを判断する。署名依頼者のＩＣカード１１Ａが挿入されていない場合は、本サブルーチンを終了し、署名依頼者のＩＣカード１１Ａが挿入されている場合には、ステップ２０４へ移行し、ＩＣカード１１Ａから署名依頼者の秘密かぎを取得する。
【００３８】
次のステップ２０６では、予め定められたハッシュ関数を用いてコンピュータ１４Ａから送信された文書データのハッシュ値を計算する。
【００３９】
次のステップ２０８では、送信された署名者のメールアドレス、ステップ２０６で計算した文書データのハッシュ値、及びステップ２００で取得した署名依頼者の証明書情報をステップ２０４で取得した署名依頼者の秘密かぎで暗号化する。
【００４０】
ステップ２１０では、送信された文書データとステップ２０８で暗号化した情報とを組み合わせることにより署名依頼者の署名データＤ１を生成する。
【００４１】
ステップ２１２では、ステップ２１０で生成した署名依頼者の署名データＤ１をコンピュータ１４Ａへ出力して本サブルーチンを終了する。
【００４２】
次に図７に基いて、上記ステップ１０６の署名者の署名データ生成処理の一例について説明する。
【００４３】
ステップ３００では、ＩＣカードに記録されている証明書情報を読み取る。次のステップ３０２では、読み取った証明書情報内のＩＣカード所持者（署名者）のＤＮとコンピュータ１４Ｂから入力されたＤＮとが一致しているかを判断することにより署名者のＩＣカード１１Ｂがカードリーダ１２Ｂに挿入されているか否かを判定する。署名者のＩＣカード１１Ｂが挿入されていない場合は、本サブルーチンを終了し、署名者のＩＣカード１１Ｂが挿入されている場合には、ステップ３０４へ移行し、ＩＣカード１１Ｂから署名者の秘密かぎを取得する。
【００４４】
次のステップ３０６では、予め定められたハッシュ関数を用いてコンピュータ１４Ｂから送信された署名依頼者の署名データＤ１に含まれている文書データを用いて、この文書データのハッシュ値を計算する。
【００４５】
次のステップ３０８では、ステップ３０６で計算した文書データのハッシュ値及びステップ３００で取得した署名者の証明書情報をステップ３０４で取得した署名者の秘密かぎで暗号化する。
【００４６】
次のステップ３１０では、送信された署名依頼者の署名データＤ１とステップ３０８で暗号化した情報とを組み合わせることにより署名者の署名データＤ２を生成する。
【００４７】
次のステップ３１２では、ステップ３１０で生成した署名者の署名データＤ２をコンピュータ１４Ｂへ出力して本サブルーチンを終了する。
【００４８】
次に図８に基いて、対象となる文書データが受信された際に実行されるコンピュータ１４Ａ、１４Ｂ、及び１４Ｃの各ＣＰＵが実行する処理の一例について説明する。なお、コンピュータ１４Ａ、１４Ｂ、及び１４Ｃを区別しない場合は、コンピュータ１４として説明する。
【００４９】
ステップ４００では、署名依頼者の署名データＤ１及び署名者の署名データＤ２に含まれていない文書データが、すなわち文書データのみが入力されたか、署名依頼者の署名データＤ１または署名者の署名データＤ２が受信されたかを判断する。文書データが入力された場合には、ステップ４０２で後述する署名者のメールアドレス設定処理を実行する（コンピュータ１４Ａによる処理）。
【００５０】
また、ステップ４００で、署名依頼者の署名データＤ１または署名者の署名データＤ２が受信されたと判断された場合は、ステップ４０４でコンピュータ１４に接続されているカードリーダ１２から署名依頼者の署名データＤ１を受信したか否かを判断する。カードリーダ１２から署名依頼者の署名データＤ１を受信した場合は、ステップ４０６でネットワーク４１を介して他のコンピュータ（署名者のコンピュータ１４Ｂ）へ署名依頼者の署名データＤ１を送信して処理を終了（コンピュータ１４Ａの処理）し、署名依頼者の署名データＤ１が入力されていない場合は、ステップ４０８へ移行する。
【００５１】
ステップ４０８では、コンピュータ１４が、他のコンピュータ（署名依頼者のコンピュータ１４Ａ）から送信された署名依頼者の署名データＤ１が受信されたか否かを判断する。署名依頼者の署名データＤ１を受信した場合は、ステップ４１０でコンピュータ１４に接続されているカードリーダ１２へ署名依頼者の署名データＤ１を送信して処理を終了（コンピュータ１４Ｂの処理）し、署名依頼者の署名データＤ１が他のコンピュータ１４から受信されていない場合は、ステップ４１２へ移行する。
【００５２】
ステップ４１２では、コンピュータ１４に接続されているカードリーダ１２から署名者の署名データＤ２が受信されたか否かを判断する。署名者の署名データＤ２がカードリーダ１２から受信された場合は、ステップ４１４でネットワーク４１を介して他のコンピュータ１４（署名依頼者のコンピュータ１４Ａまたは検証者のコンピュータ１４Ｃ）へ署名者の署名データＤ２を送信して処理を終了（コンピュータ１４Ｂの処理）し、署名者の署名データＤ２がカードリーダ１２から受信されていない場合は、ステップ４１６へ移行する。
【００５３】
ステップ４１６では、他のコンピュータ１４から署名者の署名データＤ２が受信されたか否かを判断する。署名者の署名データＤ２が受信されていない場合は、ステップ４００へ戻り、署名者の署名データＤ２が受信された場合は、ステップ４１８へ移行する。
【００５４】
ステップ４１８では、署名者の署名データＤ２が、コンピュータ１４Ａから受信されたか、コンピュータ１４Ｂから受信されたかを判断することにより、署名者の署名データＤ２を検証するか否かを判断する。検証しない場合（署名者の署名データＤ２が、署名者のコンピュータ１４Ｂから受信された場合）は、ステップ４２０で他のコンピュータ（コンピュータ１４Ｃ）へ署名者の署名データＤ２を送信して処理を終了（コンピュータ１４Ａの処理）し、検証する場合（署名者の署名データＤ２が、コンピュータ１４Ａから受信された場合）は、ステップ４２２で署名データ検証処理を実行する。
【００５５】
図９に基いて、上記ステップ４０２の署名者のメールアドレス設定処理のサブルーチンの一例を説明する。このサブルーチンは、コンピュータ１４Ａで実行される。
【００５６】
ステップ５００では、コンピュータ１４の表示装置３８に署名者のメールアドレスを入力させる画面を表示する。次のステップ５０２では、コンピュータ１４に署名者のメールアドレスが入力されたか否かを判断し、入力されていない場合は、コンピュータ１４に署名者のメールアドレスが入力されるまで待機し、入力された場合は、ステップ５０４へ移行する。
【００５７】
ステップ５０４では、上述したように入力された文書データ及びコンピュータ１４で受信された署名者のメールアドレスをカードリーダ１２Ａに送信して本サブルーチンを終了する。
【００５８】
図１０に基いて、上記ステップ４２２の署名データ検証処理のサブルーチンの一例について説明する。このサブルーチンはコンピュータ１４Ｃで実行される。
【００５９】
ステップ６００では、コンピュータ１４の記憶装置３４から署名依頼者の公開かぎ及び署名者の公開かぎを取得し、次のステップ６０２では、署名者の署名データＤ２に含まれる署名依頼者の署名データＤ１を署名依頼者の公開かぎで復号化する。
【００６０】
次のステップ６０４では、署名依頼者の署名データＤ１を除く署名者の署名データＤ２を署名者の公開かぎで復号化する。
【００６１】
次のステップ６０６では、コンピュータ１４でハッシュ関数、及び署名依頼者の署名データＤ１に含まれている文書データを用いて、この文書データのハッシュ値を計算する。
【００６２】
次のステップ６０８では、署名依頼者の公開かぎによって復号化された署名依頼者からの文書データのハッシュ値とステップ６０６で計算されたハッシュ値とが一致しているか否か判断する。一致していないと判断された場合は、ステップ６１０でコンピュータ１４の表示装置３８に署名依頼者の署名が不一致であることを表示して本サブルーチンを終了し、一致していると判断した場合、ステップ６１２へ移行する。
【００６３】
ステップ６１２では、図１１の表に例示する署名者の公開かぎで復号化した署名者の証明書情報に含まれている署名者のメールアドレスと署名依頼者の公開かぎで復号化した署名依頼者の署名データＤ１に含まれる署名者のメールアドレスとが一致しているか否か判断する。一致していないと判断した場合は、ステップ６１４で表示装置３８に署名依頼者が指定した署名者と異なる旨を表示して本サブルーチンを終了し、一致していると判断した場合は、ステップ６１６へ移行する。
【００６４】
ステップ６１６では、署名者の公開かぎで復号化した署名者からの文書データのハッシュ値とステップ６０６で計算したハッシュ値とが一致しているか否か判断する。一致していないと判断した場合は、ステップ６１８で表示装置３８に署名者の署名が不一致であることを表示して本サブルーチンを終了し、一致していると判断した場合は、ステップ６２０で検証者のコンピュータ１４Ｃの表示装置３８に署名者が正しいことを表示して本サブルーチンを終了する。
【００６５】
以上のように処理する結果、署名依頼者が依頼した署名者が、正しく署名を行ったか否かを検証者（第３者）のコンピュータで検証することができる。
【００６６】
次に、第２の実施の形態について説明する。
【００６７】
本実施の形態に係る署名検証システム１０の電気系の要部構成は、第１の実施の形態と同様であるため説明を省略する。
【００６８】
本実施の形態では、図１２の表に表すように、例えば、第１ステップで官公庁が署名依頼者の役割、及び社長が署名者の役割を担い、第２ステップで社長が署名依頼者の役割、及び部長が署名者の役割を担い、第３ステップで部長が署名依頼者、及び担当者が署名者の役割を担い、第４ステップで担当者が署名者の役割、官公庁及び部長が署名依頼者の役割、及び部長が検証者の役割を担い、第５ステップで部長が署名者の役割、官公庁及び社長が署名依頼者の役割、及び社長が検証者の役割を担い、そして、第６ステップで社長が署名者の役割、官公庁が署名依頼者の役割、及び官公庁が検証者の役割を担うことになる。
【００６９】
まず、図１３及び図１４を参照して、本実施の形態の署名検証システム１０の処理の概略の一例を説明する。
【００７０】
以下では、官公庁のＩＣカードをＩＣカード１１ａ、官公庁が使用するコンピュータをコンピュータ１４ａ、コンピュータ１４ａと接続されているカードリーダをカードリーダ１２ａ、社長のＩＣカードをＩＣカード１１ｂ、社長が使用するコンピュータをコンピュータ１４ｂ、コンピュータ１４ｂと接続されているカードリーダをカードリーダ１２ｂ、部長のＩＣカードをＩＣカード１１ｃ、部長が使用するコンピュータをコンピュータ１４ｃ、コンピュータ１４ｃと接続されているカードリーダをカードリーダ１２ｃ、担当者のＩＣカードをＩＣカード１１ｄ、担当者が使用するコンピュータをコンピュータ１４ｄ、及びコンピュータ１４ｄと接続されるカードリーダをカードリーダ１２ｄとして説明する。
【００７１】
まず、第１ステップでは、官公庁（第１ステップの署名依頼者）は、コンピュータ１４ａに、官公庁の識別情報（パスワード及びＤＮ等）及び文書データを入力すると共に、社長（第１ステップの署名者）を特定する情報として社長のメールアドレスを設定する。コンピュータ１４ａは、社長のメールアドレスが設定されると、官公庁のＤＮ、文書データ、及び社長のメールアドレスをカードリーダ１２ａヘ出力する。
【００７２】
カードリーダ１２ａは、コンピュータ１４ａから官公庁のＤＮ、文書データ、及び社長のメールアドレスを取得すると、後述する署名依頼者の署名データ生成処理を実行して図１５に例示する官公庁の署名データｄ１を生成し、生成した官公庁の署名データｄ１を官公庁のコンピュータ１４ａへ送信する。
【００７３】
官公庁のコンピュータ１４ａは、カードリーダ１２ａから官公庁の署名データｄ１を受信すると、社長のコンピュータ１４ｂへ受信した官公庁の署名データｄ１を送信する。
【００７４】
次に第２ステップでは、社長（第２ステップの署名依頼者）は、コンピュータ１４ｂに、社長の識別情報（パスワード及びＤＮ等）を入力すると共に、コンピュータ１４ａから官公庁の署名データｄ１が受信されると、部長（第２ステップの署名者）を特定する情報として部長のメールアドレスを設定する。コンピュータ１４ｂは、部長のメールアドレスが設定されると、社長のＤＮ、官公庁の署名データｄ１、及び部長のメールアドレスをカードリーダ１２ｂヘ送信する。
【００７５】
カードリーダ１２ｂは、コンピュータ１４ｂから社長のＤＮ、官公庁の署名データｄ１、及び部長のメールアドレスを取得すると、後述する署名依頼者の署名データ生成処理を実行して図１５に示す第１の社長の署名データｄ２を生成し、生成した第１の社長の署名データｄ２を社長のコンピュータ１４ｂへ送信する。
【００７６】
社長のコンピュータ１４ｂは、カードリーダ１２ｂから第１の社長の署名データｄ２を受信すると、部長のコンピュータ１４ｃへ受信した第１の社長の署名データｄ２を出力する。
【００７７】
次に第３ステップでは、部長（第３ステップの署名依頼者）は、コンピュータ１４ｃに、部長の識別情報（パスワード及びＤＮ等）が入力されると共に、コンピュータ１４ｂから第１の社長の署名データｄ２が受信されると、担当者（第３ステップの署名者）を特定する情報として担当者のメールアドレスを設定する。コンピュータ１４ｃは、担当者のメールアドレスが設定されると、部長のＤＮ、第１の社長の署名データｄ２、及び担当者のメールアドレスをカードリーダ１２ｃヘ送信する。
【００７８】
カードリーダ１２ｃは、コンピュータ１４ｃから部長のＤＮ、第１の社長の署名データｄ２、及び担当者のメールアドレスを取得すると、後述する署名依頼者の署名データ生成処理を実行して図１５に示す第１の部長の署名データｄ３を生成し、生成した第１の部長の署名データｄ３を部長のコンピュータ１４ｃへ送信する。
【００７９】
部長のコンピュータ１４ｃは、カードリーダ１２ｃから第１の部長の署名データｄ３を受信すると、担当者のコンピュータ１４ｄへ受信した第１の部長の署名データｄ３を出力する。
【００８０】
次に第４ステップでは、担当者（第４ステップの署名者）のコンピュータ１４ｄは、担当者から担当者の識別情報（パスワード及びＤＮ等）が入力され、かつ部長のコンピュータ１４ｃから第１の部長の署名データｄ３が受信されると、コンピュータ１４ｄに接続されたカードリーダ１２ｄへ担当者のＤＮ及び第１の部長の署名データｄ３を送信する。
【００８１】
カードリーダ１２ｄは、コンピュータ１４ｄから担当者のＤＮ及び第１の部長の署名データｄ３を取得すると、後述する署名者の署名データ生成処理を実行して図１５に示す担当者の署名データｄ４を生成し、生成した担当者の署名データｄ４をコンピュータ１４ｄへ送信する。
【００８２】
コンピュータ１４ｄは、カードリーダ１２ｄから担当者の署名データｄ４が受信されると、コンピュータ１４ｃへ担当者の署名データｄ４を送信する。
【００８３】
部長（第４ステップの検証者）のコンピュータ１４ｃは、コンピュータ１４ｄからの担当者の署名データｄ４が受信されると、後述する署名データ検証処理を実行して担当者の署名データｄ４の検証を行う。検証結果が正しい場合は、カードリーダ１２ｃに担当者のコンピュータ１４ｄから受信された担当者の署名データｄ４を送信する。これによって、署名依頼者が官公庁及び部長で、かつ署名者が担当者の場合の官公庁の署名データｄ１、第１の部長の署名データｄ３、及び担当者の署名データｄ４の検証が行われる。
【００８４】
次に第５ステップでは、カードリーダ１２ｃは、コンピュータ１４ｃから部長（第５ステップの署名者）のＤＮ及び担当者の署名データｄ４を取得すると、後述する署名者の署名データ生成処理を実行して図１５に示す第２の部長の署名データｄ５を生成し、生成した第２の部長の署名データｄ５を部長のコンピュータ１４ｃへ送信する。
【００８５】
部長のコンピュータ１４ｃは、カードリーダ１２ｃから第２の部長の署名データｄ５が入力されると、社長のコンピュータ１４ｂへ第２の部長の署名データｄ５を送信する。
【００８６】
社長（第５ステップの検証者）のコンピュータ１４ｂは、部長のコンピュータ１４ｃから第２の部長の署名データｄ５が受信されると、後述する署名データ検証処理を実行して第２の部長の署名データｄ５の検証を行う。検証結果が正しい場合は、カードリーダ１２ｂにコンピュータ１４ｃから受信された第２の部長の署名データｄ５を出力する。これによって、署名依頼者が官公庁及び社長で、かつ署名者が部長の場合の官公庁の署名データｄ１、第１の社長の署名データｄ２、及び第２の部長の署名データｄ５の検証が行われる。
【００８７】
次に第６ステップでは、カードリーダ１２ｂは、コンピュータ１４ｂから社長（第６ステップの署名者）のＤＮ及び第２の部長の署名データｄ５を取得すると、後述する署名者の署名データ生成処理を実行して図１５に示す第２の社長の署名データｄ６を生成し、生成した第２の社長の署名データｄ６を社長のコンピュータ１４ｂへ送信する。
【００８８】
コンピュータ１４ｂは、カードリーダ１２ｂから第２の社長の署名データｄ６が入力されると、コンピュータ１４ａへ第２の社長の署名データｄ６を出力する。
【００８９】
官公庁（第６ステップの検証者）のコンピュータ１４ａは、コンピュータ１４ｂから第２の社長の署名データｄ６が入力されると、後述する署名データ検証処理を実行して第２の社長の署名データｄ６の検証を行う。これによって、署名依頼者が官公庁で、かつ署名者が社長の場合の官公庁の署名データｄ１及び第２の社長の署名データｄ６の検証が行われる。
【００９０】
次に、図１６〜図１９を参照して署名検証システム１０の処理の一例の詳細について説明する。なお、第１の実施の形態と対応する部分については、同一符号を付して説明を省略する。
【００９１】
図１６に基いて、コンピュータ１４ａ、１４ｂ、１４ｃ、及び１４ｄに接続されているカードリーダ１２ａ、１２ｂ、１２ｃ、及び１２ｄの各ＣＰＵ１６により実行されるカードリーダ処理プログラムの処理の流れの一例を説明する。なお、カードリーダ１２ａ、１２ｂ、１２ｃ、及び１２ｄを区別しない場合は、カードリーダ１２として説明する。また、コンピュータ１４ａ、１４ｂ、１４ｃ、及び１４ｄを区別しない場合は、コンピュータ１４として説明し、官公庁の署名データ、第１の社長の署名データ、及び第１の部長の署名データを区別しない場合は、署名依頼者の署名データＤ１とし、第２の社長の署名データ、第２の部長の署名データ、及び担当者の署名データを区別しない場合は、署名者の署名データＤ２として説明する。
【００９２】
ステップ７００では、官公庁のコンピュータ１４ａから文書データ及び後述する官公庁のコンピュータ１４ａで設定された社長のメールアドレス（署名者の特定情報）が入力されたか否かを判断する。入力されたと判断された場合は、カードリーダ１２は、官公庁が起動したコンピュータ１４ａに接続されているカードリーダ１２ａであるため、ステップ７０２で後述する署名依頼者の署名データ生成処理を実行する。
【００９３】
一方、ステップ７００で否定判断された場合は、ステップ７０４へ移行し、コンピュータ１４から署名依頼者の署名データＤ１及び署名者のメールアドレスが入力されたか否かを判断する。入力されたと判断された場合は、ステップ７０６へ移行し、入力されていないと判断された場合は、ステップ７０８へ移行する。
【００９４】
ステップ７０６では、官公庁の署名データｄ１及び社長のメールアドレス並びに第１の社長の署名データｄ２及び担当者のメールアドレスが、コンピュータ１４から受信されたか否かを判断することにより、署名依頼者の署名データＤ１を生成するか否かを判断する。署名依頼者の署名データＤ１を生成する場合（官公庁の署名データｄ１及び社長のメールアドレスが、コンピュータ１２ｂから受信された場合、並びに第１の社長の署名データｄ２及び部長のメールアドレスが、コンピュータ１４ｃから受信された場合）は、ステップ７０２で署名依頼者の署名データ生成処理を実行する。
【００９５】
一方、ステップ７０６で署名依頼者の署名データＤ１を生成しない場合（第１の部長の署名データｄ３及び担当者のメールアドレスが、コンピュータ１４ｄから受信された場合）は、ステップ１０６で第１の実施の形態で説明した署名者の署名データ生成処理を実行する。
【００９６】
ステップ７０８では、コンピュータ１４から署名者の署名データＤ２を受信したか否かを判断する。受信したと判断した場合（担当者の署名データｄ４が、コンピュータ１４ｃから受信された場合及び第２の部長の署名データｄ５が、コンピュータ１４ｂから受信された場合）は、ステップ１０６へ移行し、署名者の署名データ生成処理を実行する。
【００９７】
一方、ステップ７０８で受信されていないと判断された場合は、ステップ７００へ戻る。
【００９８】
次に、図１７に基いて、上記ステップ７０２の署名依頼者の署名データ生成処理の一例について説明する。
【００９９】
ステップ８００では、ＩＣカード１１に記憶されている証明書情報を読み取る。次のステップ８０２では、読み取った証明書情報内のＩＣカード所持者（官公庁、社長または部長）のＤＮとコンピュータ１４から送信されたＤＮが一致しているかを判断することにより署名依頼者（官公庁、社長または部長）のＩＣカード１１がカードリーダ１２に挿入されているか否かを判断する。署名依頼者（官公庁、社長または部長）のＩＣカード１１が挿入されていない場合は、本サブルーチンを終了し、署名依頼者（官公庁、社長または部長）のＩＣカード１１が挿入されている場合には、ステップ８０４へ移行し、ＩＣカード１１から署名依頼者（官公庁、社長または部長）の秘密かぎを取得する。
【０１００】
次のステップ８０６では、官公庁の署名データｄ１及び部長のメールアドレス並びに、第１の社長の署名データｄ２及び担当者のメールアドレスが、コンピュータ１４から受信されたか否かを判断することにより、署名依頼者のコンピュータ１４から署名依頼者の署名データ及び署名者のメールアドレスが受信されたか否かを判断する。署名依頼者の署名データ及び署名者のメールアドレスが受信された場合には、ステップ８０８へ移行する（カードリーダ１２ｂ及び１２ｃによる処理）。
【０１０１】
ステップ８０８では、コンピュータ１４から受信した署名者のメールアドレス及びステップ８００で取得した署名依頼者の証明書情報をステップ８０４で取得した署名依頼者の秘密かぎで暗号化する。
【０１０２】
次のステップ８１０では、コンピュータ１４から受信した署名依頼者の署名データとステップ８０８で暗号化した情報とを組み合わせることにより署名依頼者（社長または部長）の署名データを生成し、ステップ８１８へ移行する。
【０１０３】
一方、ステップ８０６で署名依頼者の署名データＤ１及び署名者のメールアドレスが受信されていない場合は、ステップ８１２へ移行し（カードリーダ１２ａによる処理）、予め定められたハッシュ関数を用いてコンピュータ１４ａから受信した文書データのハッシュ値を計算する。
【０１０４】
次のステップ８１４では、コンピュータ１４ａから受信した署名者（社長）のメールアドレス、ステップ８１２で計算した文書データのハッシュ値、及びステップ８００で取得した官公庁の証明書情報をステップ８０４で取得した官公庁の秘密かぎで暗号化する。
【０１０５】
ステップ８１６では、コンピュータ１４ａから受信した文書データとステップ８１４で暗号化した情報とを組み合わせることにより官公庁の署名データｄ１を生成し、ステップ８１８へ移行する。
【０１０６】
ステップ８１８では、ステップ８１０及びステップ８１６で生成した署名依頼者の署名データＤ１をコンピュータ１４へ送信して本サブルーチンを終了する。
【０１０７】
次に図１８に基いて、対象となる文書データが入力された際に実行されるコンピュータ処理の一例について説明する。
【０１０８】
ステップ９００では、署名依頼者の署名データＤ１及び署名者の署名データＤ２に含まれていない文書データが、すなわち文書データのみが入力されたか、署名依頼者の署名データＤ１及び署名者の署名データＤ２が受信されたか判断する。文書データが入力された場合には、ステップ９０２で署名者（社長）のメールアドレス設定処理を実行する（コンピュータ１４ａによる処理）
また、ステップ９００で署名依頼者の署名データＤ１及び署名者の署名データＤ２を受信した場合は、ステップ９０４でコンピュータ１４が、他のコンピュータ１４（官公庁のコンピュータ１４ａ、社長のコンピュータ１４ｂ、及び部長のコンピュータ１４ｃ）から送信された署名依頼者の署名データＤ１を受信したか否かを判断する。署名依頼者の署名データＤ１を受信した場合は、ステップ９０６へ移行し、受信していない場合は、ステップ９０８へ移行する。
【０１０９】
ステップ９０６では、署名者のメールアドレスを設定するか否かを判断する。署名者のメールアドレスを設定する場合には、ステップ９０２で署名者のメールアドレス設定処理を実行し（コンピュータ１４ｂ及び１４ｃの処理）、署名者のメールアドレスを設定しない場合には、ステップ９１０でコンピュータ１４に接続されているカードリーダへ署名依頼者の署名データＤ１を送信して処理を終了する（コンピュータ１４ｄの処理）。
【０１１０】
ステップ９０８では、コンピュータ１４に接続されているカードリーダ１２から署名依頼者の署名データＤ１が受信されたか否かを判断する。カードリーダ１２から署名依頼者の署名データＤ１が送信された場合は、ステップ９１２でネットワーク４１を介して他のコンピュータ（コンピュータ１４ｂ、１４ｃ及び１４ｄ）へ署名依頼者の署名データＤ１を送信して処理を終了し、署名依頼者の署名データＤ１を受信していない場合は、ステップ９１４へ移行する。
【０１１１】
ステップ９１４では、コンピュータ１４に接続されているカードリーダ１２から署名者の署名データＤ２が受信されたか否かを判断する。署名者の署名データＤ２がカードリーダ１２から受信された場合は、ステップ９１６でネットワーク４１を介して他のコンピュータへ署名者の署名データを送信して処理を終了し、カードリーダ１２から署名者の署名データＤ２が受信されていない場合は、ステップ９１８へ移行する。
【０１１２】
ステップ９１８では、他のコンピュータ１４（社長のコンピュータ１４ｂ、部長のコンピュータ１４ｃまたは担当者のコンピュータ１４ｄ）から署名者の署名データＤ２が受信されたか否かを判断する。署名者の署名データＤ２が受信されていない場合は、ステップ９００へ戻り、署名者の署名データＤ２が受信された場合は、ステップ４２２で第１の実施の形態で説明した署名データ検証処理を実行する。
【０１１３】
ステップ９２０では、ステップ４２２の署名データＤ２の検証結果が正しいか否かを判断する。正しくないと判断した場合は、処理を終了し、正しいと判断した場合は、ステップ９２２へ移行する。
【０１１４】
ステップ９２２では、署名者の署名データＤ２を生成するか否かを判断する。署名者の署名データＤ２を生成しないと判断した場合は、処理を終了し（コンピュータ１４ａの処理）、署名者の署名データＤ２を生成する場合は、ステップ９２４でカードリーダ１２へ署名者の署名データＤ２を送信し、処理を終了する（コンピュータ１４ｂ及び１４ｃ）。
【０１１５】
図１９に基いて、ステップ９０２の署名者（社長、部長、及び担当者）のメールアドレス設定処理のサブルーチンの一例を説明する。
【０１１６】
ステップ１０００では、コンピュータ１４の表示装置３８に署名者（社長、部長、及び担当者）のメールアドレスを入力させる画面を表示する。次のステップ１００２では、コンピュータ１４に署名者（社長、部長、または担当者）のメールアドレスが入力されたか否かを判断し、入力されていない場合は、コンピュータ１４に署名者（社長、部長、または担当者）のメールアドレスが入力されるまで待機し、入力された場合は、ステップ１００４へ移行する。
【０１１７】
ステップ１００４では、他のコンピュータから署名依頼者の署名データＤ１を受信したか否かを判断する。他のコンピュータから署名依頼者の署名データを受信していない場合は、ステップ１００６で上述したように入力されたＤＮ、入力された文書データ、及びコンピュータ１４で署名者のメールアドレスをカードリーダ１２に送信して本サブルーチンを終了する（コンピュータ１４ａの処理）。
【０１１８】
一方、ステップ１００４で他のコンピュータから署名依頼者の署名データが受信された場合は、ステップ１００８で上述したように入力されたＤＮ、他のコンピュータ１４から受信した署名依頼者の署名データＤ１、及び署名者のメールアドレスをカードリーダ１２に送信して本サブルーチンを終了する（コンピュータ１４ｂ及び１４ｃの処理）。
【０１１９】
以上のように処理する結果、最初の依頼者が署名を依頼し、署名の依頼を受けた署名者が次々に後段の人物に署名依頼を行い、かつ最後の署名者が署名を行った場合に、途中の署名依頼者（途中の署名者でもある）が後段の署名依頼者の署名を検証して検証結果に基いて署名を行い、最終的に最初の署名依頼者が全ての署名の検証を行うことができる。
【０１２０】
なお、第１の実施の形態及び第２の実施の形態では、カードリーダ処理を行うプログラム、署名依頼者の署名データ生成処理を行うプログラム、及び署名者の署名データ生成処理を行うプログラムが、ＲＯＭ１８に、コンピュータ処理を行うプログラム、署名者のメールアドレス設定処理を行うプログラム、及び署名データ検証処理を行うプログラムが、ＲＯＭ３０に予め記憶されている場合について説明したが、本発明はこれに限定されるものではなく、これらのプログラムをＣＤ−ＲＯＭ、ＭＤ、ＭＯ、ＤＶＤ−ＲＯＭ、フレキシブルディスク、ＤＡＴ等のコンピュータ読み取り可能な記録媒体に格納した状態で提供する形態を適用してもよい。
【符号の説明】
【０１２１】
１０  署名検証システム
１１  ＩＣカード
１２  カードリーダ
１４  コンピュータ
１６  ＣＰＵ
１８  ＲＯＭ
２０  ＲＡＭ
２１  記録装置
２２  カード情報読取部
２４  外部インタフェース
２６  システムバス
２８  ＣＰＵ
３０  ＲＯＭ
３２  ＲＡＭ
３３  記録装置
３４  記憶装置
３６  入力装置
３８  表示装置
４０  外部インタフェース
４１  ネットワーク
４２  外部インタフェース
【図１】
2010219618.tif 000003
【図２】
2010219618.tif 000004
【図３】
2010219618.tif 000005
【図４】
2010219618.tif 000006
【図５】
2010219618.tif 000007
【図６】
2010219618.tif 000008
【図７】
2010219618.tif 000009
【図８】
2010219618.tif 000010
【図９】
2010219618.tif 000011
【図１０】
2010219618.tif 000012
【図１１】
2010219618.tif 000013
【図１２】
2010219618.tif 000014
【図１３】
2010219618.tif 000015
【図１４】
2010219618.tif 000016
【図１５】
2010219618.tif 000017
【図１６】
2010219618.tif 000018
【図１７】
2010219618.tif 000019
【図１８】
2010219618.tif 000020
【図１９】
2010219618.tif 000021