(57)【要約】【課題】署名鍵、タイムスタンプ、電子署名に関する処理のログを管理し、各データの正当性を保証する。【解決手段】鍵管理と業務フロー管理を行い、業務上で付与された電子署名の長期に渡る検証及びログの真正性保証（時刻保証を含む）を行う。電子文書の検証では、通常の署名検証（Ｓ１５０１）に加えて、電子署名を行ったかどうかを検証するログ検証（Ｓ１５０２）、署名時刻を検証するタイムスタンプ検証（Ｓ１５０３）、及びその時に使用された鍵が有効期限内であったかどうかを検証する鍵検証（Ｓ１５０４）を行い、より厳密な真正性の証明を行う。時刻保証では、用途に対応して柔軟にタイムスタンプを作成しながら、かつ第三者機関利用と同等の信頼性を与える。【選択図】図１５
2008109519.tif 000002
【特許請求の範囲】
【請求項１】
電子署名に用いられる署名鍵の検証方法であって、
情報処理装置が、
前記署名鍵が更新された場合に、前記署名鍵を特定する鍵ＩＤと、更新後の新たな署名鍵に付与される前記鍵ＩＤと、前記更新が行われた更新時刻に基づく情報である更新時刻情報とを対応づけて記憶し、
検証対象となる電子署名に用いられた署名鍵の鍵ＩＤと、前記電子署名が行われた署名時刻に基づく情報である署名時刻情報とを受け付け、
受け付けた前記鍵ＩＤに対応づけて記憶している前記更新時刻情報のうち、最新の更新時刻情報によって特定される前記更新時刻と、受け付けた前記署名時刻情報によって特定される前記署名時刻との時間的な前後関係を比較すること
を特徴とする署名鍵の検証方法。
【請求項２】
請求項１に記載の署名鍵の検証方法であって、
前記情報処理装置は、タイムスタンプサーバと通信可能に接続し、
前記タイムスタンプサーバは、前記情報処理装置からの要求に応じて過去に生成した前記更新時刻情報を時系列順に記憶し、
前記タイムスタンプサーバは、直近に生成した前記更新時刻情報と、前記要求とともに前記情報処理装置から送られてくる前記鍵ＩＤと、現在時刻とに基づいて、前記更新時刻情報を生成し、
前記タイムスタンプサーバは、生成した前記更新時刻情報を前記情報処理装置に送信すること
を特徴とする署名鍵の検証方法。
【請求項３】
請求項２に記載の署名鍵の検証方法であって、
前記タイムスタンプサーバは、自身が記憶している過去に生成した所定期間分の前記更新時刻情報を、時刻保証業務を行っている第三者機関のサーバに随時送信し、
前記タイムスタンプサーバは、前記第三者機関のサーバから、前記第三者機関のサーバが前記送信した過去の前記更新時刻情報に基づいて生成した前記更新時刻情報を受信し、
前記タイムスタンプサーバは、受信した前記更新時刻情報を、前記過去の更新時刻情報として記憶すること
を特徴とする署名鍵の検証方法。
【請求項４】
電子署名方法であって、
情報処理装置が、
電子データに対して電子署名を付した場合に、前記電子署名と前記電子署名を付した時刻に基づく情報である署名時刻情報とを対応づけて記憶し、
時刻保証業務を行う第三者機関のサーバ又はそれ以外の前記署名時刻情報の取得先が指定されているポリシーデータを記憶し、
前記電子署名と前記署名時刻情報とを対応づけて記憶する際、前記ポリシーデータに指定されている前記取得先から前記署名時刻情報を取得して、前記電子署名と取得した前記署名時刻情報とを対応づけて記憶すること
を特徴とする電子署名方法。
【請求項５】
電子署名の検証方法であって、
情報処理装置が、
電子データに対して電子署名を付した場合に、前記電子署名と、前記電子署名に用いた署名鍵の鍵ＩＤと、前記署名鍵とを対応づけて記憶し、
検証対象となる電子署名と、当該電子署名に用いた署名鍵の鍵ＩＤに対応づけて記憶している署名鍵を用いて生成した電子署名とを比較し、かつ、前記検証対象の電子署名と、記憶している電子署名とを比較することにより電子署名の検証を行うこと
を特徴とする電子署名の検証方法。
【請求項６】
請求項５に記載の電子署名の検証方法であって、
前記情報処理装置は、タイムスタンプサーバと通信可能に接続し、
前記情報処理装置は、前記電子署名を付した時刻に基づく情報である署名時刻情報を前記タイムスタンプサーバに要求し、
前記タイムスタンプサーバは、前記要求に応じて生成した前記署名時刻情報を前記情報処理装置に送信し、
前記タイムスタンプサーバは、前記要求に応じて過去に生成した前記署名時刻情報を時系列順に記憶し、
前記タイムスタンプサーバは、自身が記憶している過去に生成した所定期間分の前記署名時刻情報を、時刻保証業務を行う第三者機関のサーバに随時送信し、
前記タイムスタンプサーバは、前記第三者機関のサーバから、前記送信した過去の前記署名時刻情報に基づいて前記第三者機関のサーバが生成した前記署名時刻情報を受信し、
前記情報処理装置は、前記タイムスタンプサーバに、検証対象の前記電子署名についての前記署名時刻情報を含む所定期間分の前記署名時刻情報と、前記所定期間分の前記署名時刻情報に時間的に前後に位置する、前記タイムスタンプサーバが前記第三者機関のサーバから受信した２つの前記署名時刻情報とを要求し、
前記タイムスタンプサーバは、前記所定期間分の前記署名時刻情報と、自身が前記第三者機関のサーバから受信した２つの前記署名時刻情報とを送信し、
前記情報処理装置は、前記所定期間分の署名時刻情報と、前記タイムスタンプサーバが前記第三者機関のサーバから受信した２つの前記署名時刻情報とを受信し、
前記情報処理装置は、前記所定期間分の各前記署名時刻情報及び当該各前記署名時刻情報に時間的に後に位置する前記第三者機関のサーバから受信した前記署名時刻情報のそれぞれについて、それぞれの時間的に直前に位置する前記署名時刻情報に基づいて署名時刻情報を生成し、生成した前記署名時刻情報の時間的な前後関係を比較すること、
を特徴とする電子署名の検証方法。
【請求項７】
電子署名の検証方法であって、
情報処理装置が、
電子署名の対象となる電子データに業務フローが含まれており、かつ、前記電子データに対して既に前記業務フローに関する電子署名が付されている場合には、受け付けた前記電子データ及び当該電子データに付されている前記電子署名を含むデータの全体に対して電子署名を新たに付し、
前記電子データについての前記電子署名の検証に際し、前記電子データに付されている前記複数の電子署名のそれぞれについて、前記電子署名と、前記電子署名よりも前に付されている電子署名及び前記電子データの全体に基づいて生成した電子署名とを比較すること
を特徴とする電子署名の検証方法。
【請求項８】
電子署名に用いられる署名鍵が更新された場合に、前記署名鍵を特定する鍵ＩＤと、更新後の新たな署名鍵に付与される前記鍵ＩＤと、前記更新が行われた更新時刻に基づく情報である更新時刻情報とを対応づけて記憶する手段と、
検証対象となる電子署名に用いられた署名鍵の鍵ＩＤ及び前記電子署名が行われた署名時刻に基づく情報である署名時刻情報を受け付ける手段と、
受け付けた前記鍵ＩＤに対応づけて記憶している前記更新時刻のうち最新の更新時刻と前記署名時刻との時間的な前後関係を比較する手段と、
を備えることを特徴とする情報処理装置。
【請求項９】
電子データに対して電子署名を付した場合に、前記電子署名と前記電子署名を付した時刻に基づく情報である署名時刻情報とを対応づけて記憶する手段と、
時刻保証業務を行う第三者機関のサーバ又はそれ以外の前記署名時刻情報の取得先が指定されているポリシーデータを記憶する手段と、
前記電子署名と前記電子署名を付した時刻に基づく情報である署名時刻情報とを対応づけて記憶する際、前記ポリシーデータに指定されている前記取得先から前記署名時刻情報を取得して、前記電子署名と取得した前記署名時刻情報とを対応づけて記憶する手段と、
を備えることを特徴とする情報処理装置。
【請求項１０】
電子データに対して電子署名を付した場合に、前記電子署名と、前記電子署名に用いた署名鍵の鍵ＩＤと、前記署名鍵とを対応づけて記憶する手段と、
検証対象となる電子署名と、当該電子署名に用いた署名鍵の鍵ＩＤに対応づけて記憶している署名鍵を用いて生成した電子署名とを比較し、かつ、前記検証対象の電子署名と、記憶している電子署名とを比較することにより電子署名の検証を行う手段と、
備えることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ログ管理技術に関する。特に、信頼性の高いタイムスタンプを効率的に付与し、署名鍵、電子データ、ログ、業務フローなどの時刻証明、正当性証明を行うシステムに関する。
【背景技術】
【０００２】
電子政府の一環として、２００５年４月にｅ−文書法が施行され、電子署名やタイムスタンプを付与して真正性を保証することを条件として、紙をスキャニングした電子データを原本と同等なものとしてみなすことができるようになった。また、米国のサーベンス・オクスリー法（ＳＯＸ法）に倣って、会計監査制度の充実と企業の内部統制強化を求める動きが、日本国内でも高まりつつある中で、企業に対して、日常業務の証拠を記録として残すような内部統制の仕組みが求められている。これらを実現する技術として、ログ管理技術など記録を取る技術、電子署名など改ざんを検知する技術、タイムスタンプなど時刻証明を行う技術が既に存在しているが、今後は、誰が、いつ、どのデータを、どのような手順（フロー）で処理したかを一元的に管理し、比較的長期に渡って保証するようなシステムが望まれる。
【０００３】
電子署名の長期検証技術としては、例えば、特許文献１があり、タイムスタンプ付与システムとしては、例えば、特許文献２があり、ログを管理する技術としては、例えば、特許文献３がある。
【特許文献１】特開２００５−１３６４８２号公報
【特許文献２】特開２００５−２１０４７９号公報
【特許文献３】特開２００６−９９３４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特許文献３などの文書管理システムにおいて、特許文献２の方式によるタイムスタンプを用いて、特許文献１の方式により、鍵の存在期間（署名付与時刻との前後関係）の検証を行うことで、通常の公開鍵証明書の有効期間を超えた長期検証が可能になる。  
しかしながら、上記のような仕組みでは、業務管理においては、使用目的として正しい鍵が使われたかどうか、すなわち仮に認証局により保証された一般的に正当な鍵であっても、それが業務上正当な鍵であったかどうかの検証は行うことができない。
【０００５】
本発明は、前記問題に鑑み、署名鍵、タイムスタンプ、電子署名に関する処理のログを管理し、各データの正当性を保証する方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
前記課題を解決する本発明は、電子署名に用いられる署名鍵の検証方法であって、情報処理装置が、前記署名鍵が更新された場合に、前記署名鍵を特定する鍵ＩＤと、更新後の新たな署名鍵に付与される前記鍵ＩＤと、前記更新が行われた更新時刻に基づく情報である更新時刻情報とを対応づけて記憶し、検証対象となる電子署名に用いられた署名鍵の鍵ＩＤと、前記電子署名が行われた署名時刻に基づく情報である署名時刻情報とを受け付け、受け付けた前記鍵ＩＤに対応づけて記憶している前記更新時刻情報のうち、最新の更新時刻情報によって特定される前記更新時刻と、受け付けた前記署名時刻情報によって特定される前記署名時刻との時間的な前後関係を比較することを特徴とする。  
上記検証方法によれば、電子署名の有効性や不正使用の存在有無を判断することができる。例えば、更新時刻よりも署名時刻の方が前であれば、その電子署名は無効であり、又は、不正使用された可能性があると判断することができる。また、電子署名の検証時における公開鍵の検証に際し、公開鍵証明書の確認や公開鍵が失効しているかどうかの確認等とともに、上記検証方法による署名鍵の検証を行うことで、従来よりも確実に電子署名の検証を行うことが可能となる。
【０００７】
また、本発明は、署名鍵の検証方法であって、前記情報処理装置が、タイムスタンプサーバと通信可能に接続し、前記タイムスタンプサーバが、前記情報処理装置からの要求に応じて過去に生成した前記更新時刻情報を時系列順に記憶し、前記タイムスタンプサーバが、直近に生成した前記更新時刻情報と、前記要求とともに前記情報処理装置から送られてくる前記鍵ＩＤと、現在時刻とに基づいて、前記更新時刻情報を生成し、前記タイムスタンプサーバが、生成した前記更新時刻情報を前記情報処理装置に送信することを特徴とする。  
上記検証方法によれば、過去に生成した更新時刻情報がタイムスタンプサーバにおいて時系列順に管理され、これにより署名鍵の更新時刻情報に、その生成順序に従った連鎖関係をもたせることができる。従って、タイムスタンプサーバは、現在時刻に頼ることなく署名鍵の更新の時間的な前後関係を保証することが可能となる。そして、この時間的な前後関係を、過去から最新の署名鍵まで辿ることにより、最新の署名鍵の正当性や有効性を保証することができる。
【０００８】
また、本発明は、署名鍵の検証方法であって、前記タイムスタンプサーバが、自身が記憶している過去に生成した所定期間分の前記更新時刻情報を、時刻保証業務を行っている第三者機関のサーバに随時送信し、前記タイムスタンプサーバが、前記第三者機関のサーバから、前記第三者機関のサーバが前記送信した過去の前記更新時刻情報に基づいて生成した前記更新時刻情報を受信し、前記タイムスタンプサーバが、受信した前記更新時刻情報を、前記過去の更新時刻情報として記憶することを特徴とする。  
上記検証方法によれば、タイムスタンプサーバが管理している連鎖関係を持つ過去の更新時刻情報に、時刻保証業務を行っている第三者機関のサーバによって生成された更新時刻情報が付加される。これにより、タイムスタンプサーバが管理している過去の更新時刻情報と、第三者機関のサーバによって生成された更新時刻情報との前後関係を確認することが可能となり、タイムスタンプサーバが管理している過去の更新時刻情報の正当性を検証又は保証することができる。
【０００９】
また、本発明は、電子署名方法であって、情報処理装置が、電子データに対して電子署名を付した場合に、前記電子署名と前記電子署名を付した時刻に基づく情報である署名時刻情報とを対応づけて記憶し、時刻保証業務を行う第三者機関のサーバ又はそれ以外の前記署名時刻情報の取得先が指定されているポリシーデータを記憶し、前記電子署名と前記署名時刻情報とを対応づけて記憶する際、前記ポリシーデータに指定されている前記取得先から前記署名時刻情報を取得して、前記電子署名と取得した前記署名時刻情報とを対応づけて記憶することを特徴とする。  
上記電子署名方法によれば、電子署名のログ情報を記憶している情報処理装置に、上記ログ情報に含ませる署名時刻情報の取得先を指定することができる。従って、高い信頼性が要求される場合には取得先として時刻保証業務を行う第三者機関のサーバを指定し、通信効率が求められる場合は通信効率の良い取得先を指定するなど、ユーザニーズに応じて適切に署名時刻情報の取得先を設定することが可能となる。
【００１０】
また、本発明は、電子署名の検証方法であって、情報処理装置が、電子データに対して電子署名を付した場合に、前記電子署名と、前記電子署名に用いた署名鍵の鍵ＩＤと、前記署名鍵とを対応づけて記憶し、検証対象となる電子署名と、当該電子署名に用いた署名鍵の鍵ＩＤに対応づけて記憶している署名鍵を用いて生成した電子署名とを比較し、かつ、前記検証対象の電子署名と、記憶している電子署名とを比較することにより電子署名の検証を行うことを特徴とする。  
上記検証方法によれば、検証対象となる電子署名と、当該電子署名に用いた署名鍵の鍵ＩＤに対応づけて記憶している署名鍵を用いて生成した電子署名とを比較するという電子署名の検証方法に加えて、検証対象となる電子署名と、電子データに対して電子署名を付した場合にログ情報として記憶している電子署名とを比較するので、電子署名の検証精度を高めることができる。
【００１１】
また、本発明は、電子署名の検証方法であって、前記情報処理装置が、タイムスタンプサーバと通信可能に接続し、前記情報処理装置が、前記電子署名を付した時刻に基づく情報である署名時刻情報を前記タイムスタンプサーバに要求し、前記タイムスタンプサーバが、前記要求に応じて生成した前記署名時刻情報を前記情報処理装置に送信し、前記タイムスタンプサーバが、前記要求に応じて過去に生成した前記署名時刻情報を時系列順に記憶し、前記タイムスタンプサーバが、自身が記憶している過去に生成した所定期間分の前記署名時刻情報を、時刻保証業務を行う第三者機関のサーバに随時送信し、前記タイムスタンプサーバが、前記第三者機関のサーバから、前記送信した過去の前記署名時刻情報に基づいて前記第三者機関のサーバが生成した前記署名時刻情報を受信し、前記情報処理装置が、前記タイムスタンプサーバに、検証対象の前記電子署名についての前記署名時刻情報を含む所定期間分の前記署名時刻情報と、前記所定期間分の前記署名時刻情報に時間的に前後に位置する、前記タイムスタンプサーバが前記第三者機関のサーバから受信した２つの前記署名時刻情報とを要求し、前記タイムスタンプサーバが、前記所定期間分の前記署名時刻情報と、自身が前記第三者機関のサーバから受信した２つの前記署名時刻情報とを送信し、前記情報処理装置が、前記所定期間分の署名時刻情報と、前記タイムスタンプサーバが前記第三者機関のサーバから受信した２つの前記署名時刻情報とを受信し、前記情報処理装置が、前記所定期間分の各前記署名時刻情報及び当該各前記署名時刻情報に時間的に後に位置する前記第三者機関のサーバから受信した前記署名時刻情報のそれぞれについて、それぞれの時間的に直前に位置する前記署名時刻情報に基づいて署名時刻情報を生成し、生成した前記署名時刻情報の時間的な前後関係を比較することを特徴とする。  
上記検証方法によれば、検証対象となる電子署名と、当該電子署名に用いた署名鍵の鍵ＩＤに対応づけて記憶している署名鍵を用いて生成した電子署名とを比較するという電子署名の検証方法と、検証対象となる電子署名と、電子データに対して電子署名を付した場合にログ情報として記憶している電子署名とを比較するという前述の検証方法に加えて、所定期間分の各署名時刻情報及び当該各署名時刻情報に時間的に後に位置する第三者機関のサーバから受信した署名時刻情報のそれぞれについて、それぞれの時間的に直前に位置する署名時刻情報に基づいて署名時刻情報を生成し、生成した前記署名時刻情報の時間的な前後関係を比較して、所定期間分の署名時刻情報及びその前後に位置する署名時刻情報の連鎖関係の検証も行う。このため、電子署名の検証精度をさらに高めることができる。
【００１２】
また、本発明は、電子署名の検証方法であって、情報処理装置が、電子署名の対象となる電子データに業務フローが含まれており、かつ、前記電子データに対して既に前記業務フローに関する電子署名が付されている場合には、受け付けた前記電子データ及び当該電子データに付されている前記電子署名を含むデータの全体に対して電子署名を新たに付し、前記電子データについての前記電子署名の検証に際し、前記電子データに付されている前記複数の電子署名のそれぞれについて、前記電子署名と、前記電子署名よりも前に付されている電子署名及び前記電子データの全体に基づいて生成した電子署名とを比較することを特徴とする。  
上記検証方法によれば、業務フローを含む電子データについて、業務フローに従って正しく電子署名が付されているかどうかを検証することができる。
【００１３】
また、本発明は、情報処理装置であって、電子署名に用いられる署名鍵が更新された場合に、前記署名鍵を特定する鍵ＩＤと、更新後の新たな署名鍵に付与される前記鍵ＩＤと、前記更新が行われた更新時刻に基づく情報である更新時刻情報とを対応づけて記憶する手段と、検証対象となる電子署名に用いられた署名鍵の鍵ＩＤ及び前記電子署名が行われた署名時刻に基づく情報である署名時刻情報を受け付ける手段と、受け付けた前記鍵ＩＤに対応づけて記憶している前記更新時刻のうち最新の更新時刻と前記署名時刻との時間的な前後関係を比較する手段とを備えることを特徴とする。  
上記情報処理装置によれば、電子署名の有効性や不正使用の存在有無を判断することができる。例えば、更新時刻よりも署名時刻の方が前であれば、その電子署名は無効であり、又は、不正使用された可能性があると判断することができる。  
また電子署名の検証時における公開鍵の検証に際し、公開鍵証明書の確認や公開鍵が失効しているかどうかの確認等とともに、上記検証方法による署名鍵の検証を行うことで、従来よりも確実に電子署名の検証を行うことが可能となる。
【００１４】
また、本発明は、情報処理装置であって、電子データに対して電子署名を付した場合に、前記電子署名と前記電子署名を付した時刻に基づく情報である署名時刻情報とを対応づけて記憶する手段と、時刻保証業務を行う第三者機関のサーバ又はそれ以外の前記署名時刻情報の取得先が指定されているポリシーデータを記憶する手段と、前記電子署名と前記電子署名を付した時刻に基づく情報である署名時刻情報とを対応づけて記憶する際、前記ポリシーデータに指定されている前記取得先から前記署名時刻情報を取得して、前記電子署名と取得した前記署名時刻情報とを対応づけて記憶する手段とを備えることを特徴とする。  
上記情報処理装置によれば、電子署名のログ情報を記憶している情報処理装置に、上記ログ情報に含ませる署名時刻情報の取得先を指定することができる。従って、高い信頼性が要求される場合には取得先として時刻保証業務を行う第三者機関のサーバを指定し、通信効率が求められる場合は通信効率の良い取得先を指定するなど、ユーザニーズに応じて適切に署名時刻情報の取得先を設定することが可能となる。
【００１５】
また、本発明は、情報処理装置であって、電子データに対して電子署名を付した場合に、前記電子署名と、前記電子署名に用いた署名鍵の鍵ＩＤと、前記署名鍵とを対応づけて記憶する手段と、検証対象となる電子署名と、当該電子署名に用いた署名鍵の鍵ＩＤに対応づけて記憶している署名鍵を用いて生成した電子署名とを比較し、かつ、前記検証対象の電子署名と、記憶している電子署名とを比較することにより電子署名の検証を行う手段と備えることを特徴とする。  
上記情報処理装置によれば、検証対象となる電子署名と、当該電子署名に用いた署名鍵の鍵ＩＤに対応づけて記憶している署名鍵を用いて生成した電子署名とを比較するという電子署名の検証方法に加えて、検証対象となる電子署名と、電子データに対して電子署名を付した場合にログ情報として記憶している電子署名とを比較するので、電子署名の検証精度を高めることができる。
【発明の効果】
【００１６】
本発明によれば、署名鍵、タイムスタンプ、電子署名に関する処理のログを管理し、各データの正当性を保証することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００１８】
≪業務管理システムの構成≫
図１は、本発明を適用した一実施形態における業務管理システムの概略図である。本実施形態では、企業内の業務を記録、管理するシステムに本発明を適用した場合について述べる。
【００１９】
図示するように、本実施形態での業務管理システム１は、企業内の業務内容、及び生成された電子文書を管理するために、電子文書に付与された電子署名の長期に渡る検証及びログ（業務のトレース）の真正性保証（時刻保証を含む）を行うシステムであり、時刻情報を含めた電子署名であるタイムスタンプの生成、管理を行うタイムスタンプサーバ１０１と、署名生成などに利用する鍵の管理、電子署名の生成・検証、タイムスタンプの取得・検証、業務ログの管理を行う情報処理装置である業務管理サーバ１０２と、正確な時刻のタイムスタンプを付与する（例えば、（財）日本データ通信協会により認定された）第三者機関のサーバ（又は、第三者機関の処理を代行するサーバ）であるタイムスタンプ局１０３と、正確な時刻を配信する第三者機関のサーバである時刻配信局１０４と、電子文書の生成、承認などの業務を行うユーザ側装置１０５〜１０７とを含んで構成される。
【００２０】
ユーザ側装置は、ユーザ側装置１０５〜１０７に限定されることなく、業務を行うユーザ数分が存在する。タイムスタンプサーバ１０１や業務管理サーバ１０２は、ユーザ側装置１０５〜１０７と同一の組織内に存在してもよいし、管理専用の外部組織として存在してもよい。本実施形態では、タイムスタンプサーバ１０１、業務管理サーバ１０２、タイムスタンプ局１０３、時刻配信局１０４、ユーザ側装置１０５〜１０７は、ネットワーク１０８を介して繋がっている。なお、業務管理サーバ１０２は、外部ネットワークに接続されることなく、内部ネットワークによりユーザ側装置１０５〜１０７と繋がっていてもよい（情報漏洩防止の観点から見れば、こちらの方が望ましい）。
【００２１】
≪タイムスタンプサーバの構成≫
図２に、タイムスタンプサーバ１０１の内部構成を示す。タイムスタンプサーバ１０１は、ＣＰＵ（Central Processing Unit）２０１と、記憶装置２０２と、ネットワーク１０８を介して他の装置と通信を行うための通信装置２０４と、キーボードやマウスなどの入力装置２０５と、ディスプレイなどの表示装置２０６と、時刻情報を保持する時計装置２０７と、これらを接続するインタフェース２０３とから構成される。
【００２２】
記憶装置２０２には、業務管理サーバ１０２又はユーザ側装置１０５〜１０７から送られて来たハッシュ値（又は電子データ）に対して、時刻情報及び前回生成したタイムスタンプデータのハッシュ値を含めて電子署名を生成することで、前回生成したタイムスタンプデータと連鎖構造を持つタイムスタンプデータを生成するタイムスタンプ生成プログラム２０８と、時刻配信局１０４から正確な時刻を取得し、時計装置２０７の持つ時刻の正確性を維持する時刻合わせプログラム２０９と、自身の持つログの一部をタイムスタンプ局１０３に送信して、第三者機関のタイムスタンプを取得するタイムスタンプ取得プログラム２１０と、タイムスタンプ生成や、タイムスタンプ局１０３からのタイムスタンプ取得などに関するログを蓄積、管理するログ管理プログラム２１１と、タイムスタンプ生成や、タイムスタンプ局１０３からのタイムスタンプ取得などに関するログが記録されたタイムスタンプサーバログ（更新時刻情報）２１２と、タイムスタンプ局１０３から取得したタイムスタンプを格納するタイムスタンプ格納領域２１３と、タイムスタンプデータの生成時に、電子署名の生成に使用するタイムスタンプサーバの秘密鍵２１４と、秘密鍵２１４とペアであり、電子署名の検証に使用する公開鍵２１５とが格納されている。
【００２３】
以下の説明における各プログラム２０８〜２１１の処理は、インタフェース２０３を介して呼び出された各プログラムをＣＰＵ２０１が実行することにより、タイムスタンプサーバ１０１上で実現されるものである。各プログラムは、予め記憶装置２０２に格納されていてもよいし、タイムスタンプサーバ１０１が利用可能な媒体を介して導入されてもよい。媒体とは、例えば、タイムスタンプサーバ１０１に着脱可能な記憶媒体や、通信装置２０４に接続するネットワーク又はネットワークを伝搬する搬送波といった通信媒体を含む。
【００２４】
≪業務管理サーバの構成≫
図３に、業務管理サーバ１０２の内部構成を示す。業務管理サーバ１０２は、前述のタイムスタンプサーバ１０１と同様の構成からなる（３０１〜３０６）。
【００２５】
記憶装置３０２には、各ユーザに対する鍵（秘密鍵、公開鍵）を登録、管理する鍵管理プログラム３０７と、電子文書に対して、業務管理サーバ１０２の管理するユーザの秘密鍵を用いて署名を生成し、また、タイムスタンプサーバ１０１からタイムスタンプの取得を行う業務管理プログラム３０８と、業務管理プログラム３０８で処理した内容についてログを生成・管理する業務ログ管理プログラム３０９と、鍵に関する情報が登録された鍵管理データベース３１０と、業務ログ管理プログラム３０９により生成されたログが記録された業務管理サーバログ３１１と、業務などで扱う電子文書に対して規定される業務フローが記録された業務フロー管理ファイル３１２と、監査対象とすべき電子文書の識別番号が記録された監査用ファイル３１３と、業務などで扱う電子文書に対して、業務フローあるいは処理すべき内容についての規定が記載されている業務ポリシーファイル３１４と、取得したタイムスタンプを格納するタイムスタンプ格納領域３１５、電子署名の生成に使用する秘密鍵３１６、電子署名の検証に使用する公開鍵３１７、ユーザの鍵を格納する鍵格納領域３１８が格納されている。
【００２６】
ここで、業務フローとは、１つのまとまった業務を構成する各処理や処理を行うべき者を処理単位として記述し、記述された複数の処理単位の間を業務の流れに合うようにポインタで結合したものである。例えば、流れ作業を構成する各工程が規定された工程フローや、担当者が作成した電子文書を上長や上位上長が承認する承認フローなどがある。
【００２７】
以下の説明における各プログラム３０７〜３０９の処理は、業務管理サーバ１０２上で実現されるものである。各プログラムの実行及び格納方法については、前述のタイムスタンプサーバ１０１と同様である。
【００２８】
≪ユーザ側装置の構成≫
図４に、ユーザ側装置１０５〜１０７の内部構成を示す。ユーザ側装置１０５〜１０７は、前述のタイムスタンプサーバ１０１と同様の構成からなる（４０１〜４０６）。
【００２９】
記憶装置４０２には、電子署名や暗号化に利用する鍵を生成し、又は、業務管理サーバ１０２に鍵の生成を要求し、業務管理サーバ１０２に鍵を登録する鍵生成・登録プログラム４０７と、電子文書などの電子データを生成する電子文書生成プログラム４０８と、電子署名やタイムスタンプが付与された電子文書などの電子データの真正性を検証、又は、業務管理サーバ１０２に電子データの真正性の検証を要求する電子文書検証プログラム４０９と、生成した電子文書などの電子データ、付与された署名、タイムスタンプを格納する電子文書格納領域４１０と、電子署名の生成や暗号化・復号化に利用するユーザの秘密鍵４１１、公開鍵４１２とが格納されている。
【００３０】
以下の説明における各プログラム４０７〜４０９の処理は、ユーザ側装置１０５〜１０７上で実現されるものである。各プログラムの実行及び格納方法については、前述のタイムスタンプサーバ１０１と同様である。
【００３１】
≪鍵管理方法≫
図５に、本実施形態における鍵管理方法について、タイムスタンプサーバ１０１と、業務管理サーバ１０２と、ユーザ側装置１０５、１０６との間でやり取りされるデータフローの例を示す。
【００３２】
ユーザ側装置１０５は、電子署名の生成などを行う際に必要な鍵を、業務管理サーバ１０２に登録する。登録にあたっては、鍵をユーザ自身で生成する場合と、業務管理サーバ１０２に鍵の生成を依頼する場合がある。鍵をユーザ自身で生成する場合には、ユーザ側装置１０５で生成した秘密鍵、公開鍵のペアについて、公開鍵と、公開鍵証明書など公開鍵に関連する情報とを含む鍵情報５０２を、業務管理サーバ１０２に送信する。業務管理サーバ１０２に鍵の生成を依頼する場合には、生成する鍵のサイズや、使用するアルゴリズムなど鍵の生成に必要な情報を含む鍵情報５０２を、業務管理サーバ１０２に送信する。本実施形態では、ユーザ側装置１０５から業務管理サーバ１０２に鍵の生成を依頼する場合、すなわち業務管理サーバ１０２において鍵の生成・登録を行う場合について述べる。なお、このとき、ユーザに関する情報を含む属性証明書５０１を、業務管理サーバ１０２に送信して、鍵情報５０２とともに業務管理サーバ１０２に登録してもよい。
【００３３】
鍵情報５０２を受け取った業務管理サーバ１０２は、鍵情報５０２で指定された鍵サイズ、アルゴリズムに基づいて、公開鍵暗号方式により秘密鍵、公開鍵のペアを生成する。ただし、鍵情報５０２により、共通鍵の生成を依頼された場合は、共通鍵暗号方式により共通鍵を生成する。本実施形態では、公開鍵暗号方式により秘密鍵、公開鍵のペアを生成する場合について説明する。次に、生成した鍵に関する情報を基にログを生成し、業務管理サーバログ３１１に記録する。また、生成したログのハッシュ値を算出し、算出したハッシュ値及び生成した鍵を含むタイムスタンプ要求５０３を、タイムスタンプサーバ１０１に送信する。
【００３４】
タイムスタンプ要求５０３を受信したタイムスタンプサーバ１０１は、タイムスタンプ要求５０３に含まれるハッシュ値に対して、受信した鍵を用いてタイムスタンプを生成し、生成したタイムスタンプを含むタイムスタンプデータ５０４を業務管理サーバ１０２に送信する。
【００３５】
タイムスタンプデータ５０４を受け取った業務管理サーバ１０２は、生成した鍵とともにタイムスタンプデータ５０４を、鍵管理データベース３１０に登録する。次に、登録が完了した旨を示す登録完了通知５０５を、ユーザ側装置１０５に送信する。ユーザ側装置１０５から登録内容の閲覧要求があった場合には、業務管理サーバ１０２は、公開鍵やタイムスタンプデータなど登録内容が含まれる閲覧データ５０６を、ユーザ側装置１０５に送信する。また、登録したユーザ以外のユーザ、例えば、ユーザ側装置１０６が、ユーザ側装置１０５のユーザの電子署名を検証する場合に、検証に必要なユーザ側装置１０５の公開鍵を業務管理サーバ１０２に要求したときには、業務管理サーバ１０２は、検証に必要な公開鍵を含む検証用鍵情報５０７を、ユーザ側装置１０６に送信する。
【００３６】
≪鍵生成・登録処理≫
図６に、ユーザ側装置１０５〜１０７が、業務管理サーバ１０２に鍵の生成・登録の要求を行って、業務管理サーバ１０２から登録完了通知５０５を受け取るまでの鍵生成・登録処理のフローチャートを示す。ユーザ側装置１０５〜１０７は、鍵生成・登録処理を行い、電子署名の生成（業務で生成する電子データに自身の電子署名を付与するため）に必要な鍵を、１つ又は用途に合わせて複数個、業務管理サーバ１０２に登録する。
【００３７】
ユーザ側装置１０５〜１０７は、鍵生成・登録プログラム４０７により、Ｓ６０１の処理を行う。具体的には、生成する鍵のサイズ（例えば、１０２４ｂｉｔ）や、使用するアルゴリズム（例えば、ＲＳＡ（Rivest Shamir Adleman）暗号方式）など鍵の生成に必要な情報を含む鍵情報５０２を生成し、業務管理サーバ１０２に送信することにより、鍵の生成・登録要求を行う。また、このとき、ユーザに関する情報を含む属性証明書５０１を、鍵情報５０２とともに業務管理サーバ１０２に送信してもよい。
【００３８】
業務管理サーバ１０２は、鍵管理プログラム３０７により、Ｓ６０２〜Ｓ６０６、Ｓ６０８〜Ｓ６０９の処理を行う。まず、前半部分のＳ６０２〜Ｓ６０６について説明する。
【００３９】
Ｓ６０２では、まずユーザ側装置１０５から、鍵情報５０２を含む鍵の生成・登録要求を受信する。受信にあたっては、認証の後に行うことが望ましい。例えば、ユーザ側装置１０５を介して、ユーザにＩＤ、パスワード（予め、ユーザ登録して設定しておく）を要求し、業務管理サーバ１０２にログオンさせてから鍵情報５０２を受け取る、又は、鍵情報５０２とともに、ユーザを証明するデータ（予めＩＣ（Integrated Circuit）カードなどにより各ユーザに個別に与えられた秘密データなど）を受信し、秘密データがどのユーザのものであるかを確かめた上で、鍵情報５０２を受け取る。
【００４０】
Ｓ６０３では、鍵情報５０２に記載された鍵サイズ及びアルゴリズムに従って、鍵の生成（例えば、ＲＳＡ暗号方式における秘密鍵、公開鍵の生成）を行う。生成した秘密鍵、公開鍵の鍵ペアに対して、識別番号（以降、鍵ＩＤと呼ぶ）を生成する。鍵ＩＤ生成にあたっては、鍵の生成・登録を要求したユーザ（ユーザ名、ユーザＩＤなどにより識別）と、鍵ＩＤとを合わせたものが、固有であるように生成する（例えば、ユーザＩＤ＝０００１において、鍵ＩＤ＝００１の鍵ペアは複数存在しない）。また、業務管理サーバ１０２の業務ポリシーファイル３１４を参照して、鍵の有効期限を定めてもよい（例えば、生成日から２年間有効など）。
【００４１】
Ｓ６０４では、Ｓ６０３で生成した鍵及び生成した鍵に関する情報を、鍵管理データベース３１０に登録する。鍵管理データベース３１０は、図９に示すように、鍵の所有者を示す「ユーザＩＤ」（９０６）、Ｓ６０３で生成した「鍵ＩＤ」（９０７）、利用用途（例えば、承認印、職印など）を示す「用途」（９０８）、鍵サイズやアルゴリズムを表す「バージョン」（９０９）、鍵の有効期限を示す「有効期限」（９１０）、公開鍵の正当性を証明する「証明書」（９１１）からなる。ここで、「証明書」（９１１）は、生成した公開鍵が、誰のものであるかを示すものであり、公開鍵データ、ユーザＩＤなどのユーザを特定する情報（又は、属性証明書５０１）、及びそれらに対して生成した業務管理サーバ１０２の電子署名などからなる。なお、証明書は認証局が発行したものでもよく、その場合は、認証局に対し、通常一般的に行われる証明書の取得手続きを行い、認証局の電子署名を含む証明書を取得し、「証明書」（９１１）に登録する。「証明書」を生成又は取得するかどうかは、業務管理サーバ１０２の業務ポリシーファイル３１４を参照して、ポリシーに従って決定してもよい。また、Ｓ６０３で生成した鍵は、鍵格納領域３１８に格納し、格納した鍵は、生成したユーザＩＤ、鍵ＩＤで検索、取得できるようにしておく。
【００４２】
Ｓ６０５では、今回の鍵生成処理に関する業務ログを生成し、業務管理サーバログ３１１に登録する。業務管理サーバログ３１１は、図１１に示すように、業務ログのレコード１１０１〜１１０６からなり、業務ログの各レコードは、処理を識別するための番号であり、ログ生成の度に連番で付与される「処理ＩＤ」（１１０７）、業務内容（例えば、鍵生成）を表す「業務ＩＤ」（１１０８）、電子文書に対する処理である場合に、処理対象となった電子文書に付与された識別番号を表す「文書ＩＤ」（１１０９）、今回の処理が誰に関連する業務か（例えば、ユーザＩＤ＝０００１のユーザの鍵を生成）を示す「ユーザＩＤ」（１１１０）、鍵を生成した場合に、Ｓ６０３で生成した「鍵ＩＤ」（１１１１）、鍵更新、又は業務フローを持つ電子文書について、関連する処理ＩＤを示す「関連ＩＤ」（１１１２）、今回の処理で生成された電子署名（例えば、Ｓ６０４で証明書を生成する際に、業務管理サーバ１０２が生成した電子署名）が入る「署名値（電子署名）」（１１１３）、後述するＳ６０８で取得したタイムスタンプデータ５０４に含まれるログＩＤを格納する「タイムスタンプ」（１１１４）からなる。ここで、「関連ＩＤ」（１１１２）は、例えば、今回の処理が、ユーザＩＤ＝０００１のユーザの鍵ＩＤ＝００２の鍵を生成する処理であり、前回鍵生成、又は鍵更新した際の業務ログの「処理ＩＤ」（１１０７）が処理ＩＤ＝０００１（ユーザＩＤ＝０００１のユーザの鍵ＩＤ＝００１の鍵を生成した際の業務ログ）であった場合、今回の処理に該当する業務ログの項目「関連ＩＤ」（１１１２）には、「０００１」が入る。
【００４３】
Ｓ６０６では、タイムスタンプ要求５０３を生成し、タイムスタンプサーバ１０１に送信する。タイムスタンプ要求５０３には、タイムスタンプ生成対象データのハッシュ値が含まれる。タイムスタンプ生成対象データは、Ｓ６０３で生成した公開鍵、Ｓ６０４で鍵管理データベース３１０に登録したデータ「ユーザＩＤ」（９０６）、「鍵ＩＤ」（９０７）、「用途」（９０８）、「バージョン」（９０９）、「有効期限」（９１０）、「証明書」（９１１）、及び、Ｓ６０５で業務管理サーバログ３１１に登録したデータのうち、「処理ＩＤ」（１１０７）、「業務ＩＤ」（１１０８）、「文書ＩＤ」（１１０９）、「ユーザＩＤ」（１１１０）、「鍵ＩＤ」（１１１１）、「関連ＩＤ」（１１１２）、「署名値」（１１１３）からなる。このとき、業務管理サーバ１０２は、業務ポリシーファイル３１４を参照し、鍵生成処理に対するポリシーを確認する。鍵生成処理の重要度に応じて、例えば、鍵生成時刻の保証をより厳密に行うべきである場合には、タイムスタンプ要求５０３を、タイムスタンプサーバ１０１ではなくタイムスタンプ局１０３に送信して、タイムスタンプ局１０３の生成するタイムスタンプデータ５０４を取得する。
【００４４】
業務管理サーバ１０２からタイムスタンプ要求５０３を受け取ったタイムスタンプサーバ１０１は、タイムスタンプ生成プログラム２０８により、Ｓ６０７の処理を行う。本実施形態では、第三者機関のタイムスタンプと同等の信頼性を維持しながら、タイムスタンプ付与にかかるコストを軽減するタイムスタンプサーバ１０１の仕組みについて示す。図７に、この場合のＳ６０７の処理内容の詳細のフローチャートを示す。
【００４５】
Ｓ７０１では、まず、今回のタイムスタンプ生成の処理番号（以降、ログＩＤと呼ぶ）を生成する。ログＩＤの生成にあたっては、例えば、前回のタイムスタンプ生成時に生成したログＩＤと連番になるようにする。ここでは、ログＩＤ「２」が生成されたとする。次に、業務管理サーバ１０２から受け取ったタイムスタンプ要求５０３から、タイムスタンプ生成対象データのハッシュ値「Ｈ（Ｄ２）」を取得する。ここで、「Ｄ２」は、ログＩＤ「２」におけるタイムスタンプ生成対象データを表す。
【００４６】
Ｓ７０２では、前回のタイムスタンプ生成時に生成したログを取得し、取得したログのハッシュ値を算出する。具体的には、例えば、今回のタイムスタンプ生成について、Ｓ７０１で生成したログＩＤが「２」であった場合、「２」の１つ前のログＩＤ「１」のレコード１００２（図１０参照）を、タイムスタンプサーバログ２１２から取得し、ハッシュ値「Ｈ（Ｓ１）」を取得する。ここで、「Ｓ１」は、ログＩＤ「１」のレコード１００２のデータを表す。タイムスタンプサーバログ２１２の各レコードの構成については、後述（Ｓ７０６）にて説明する。
【００４７】
Ｓ７０３では、タイムスタンプサーバ１０１に内蔵されている時計装置２０７から、時刻情報「Ｔ２」を取得する。ここで、時計装置２０７は、タイムスタンプサーバ１０１の時刻合わせプログラム２０９により正確な時刻が設定されていることが望ましい。正確な時刻とは、時刻配信局１０４などの信頼できる第三者機関によって配信される時刻である。時刻合わせプログラム２０９は、時刻配信局１０４と通信を行い、時計装置２０７が正確な時刻を維持できるようにする。ここで、「Ｔ２」は、ログＩＤ「２」における時刻情報を表す。
【００４８】
Ｓ７０４では、Ｓ７０１で取得したタイムスタンプ生成対象データのハッシュ値（ここでは、「Ｈ（Ｄ２）」）と、Ｓ７０２で取得した前回のタイムスタンプ生成時に生成したログのハッシュ値（ここでは、「Ｈ（Ｓ１）」）と、Ｓ７０３で取得した時刻情報（ここでは、「Ｔ２」）とを入力とし、ハッシュ関数Ｈ（・）又は結合‖を任意に組み合わせた処理を行い、電子署名対象データを生成する。本実施形態では、例えば、ハッシュ値「Ｈ（Ｈ（Ｄ２）‖Ｈ（Ｓ１）‖Ｔ２）」を算出する。次に、算出したハッシュ値に対して、公開鍵暗号方式により、タイムスタンプサーバ秘密鍵２１４を用いて、電子署名「Ｓｉｇｎ（Ｈ（Ｈ（Ｄ２）‖Ｈ（Ｓ１）‖Ｔ２））」を生成する。上記のように電子署名対象データに前回のログのハッシュ値「Ｈ（Ｓ１）」を含めることにより、ログＩＤ「１」のログと、ログＩＤ「２」のログとの間に連鎖関係を構築することができる。
【００４９】
Ｓ７０５では、Ｓ７０４で生成した電子署名及び電子署名生成の対象となったデータとからなるタイムスタンプデータ５０４を生成する。タイムスタンプデータ５０４は、Ｓ７０１で生成したログＩＤ（ここでは、「２」）、タイムスタンプ要求５０３から取得したタイムスタンプ生成対象データのハッシュ値「Ｈ（Ｄ２）」、Ｓ７０３で取得した時刻情報「Ｔ２」、Ｓ７０４で生成した電子署名「Ｓｉｇｎ（Ｈ（Ｈ（Ｄ２）‖Ｈ（Ｓ１）‖Ｔ２））」からなる。
【００５０】
Ｓ７０６では、今回のタイムスタンプ生成に関するログを生成し、タイムスタンプサーバログ２１２に登録する。図１０に、タイムスタンプサーバログ２１２の構成を示す。タイムスタンプサーバ１０１においてタイムスタンプ生成が行われるたびに、生成に関するレコードが、タイムスタンプサーバログ２１２に追加される。各レコードは、ログＩＤ１００７、種別１００８、前回ログのハッシュ値１００９、時刻情報１０１０、署名値（更新時刻情報）１０１１からなる。本実施形態の場合、ログＩＤ１００７は、Ｓ７０１で生成したログＩＤ「２」である。種別１００８は、タイムスタンプを生成したときのログか、タイムスタンプ局１０３からタイムスタンプを取得したときのログかを表すデータが入る。本実施形態の場合、タイムスタンプを生成したときのログを表す「生成」が種別１００８に入る。前回ログのハッシュ値１００９は、Ｓ７０２で取得したハッシュ値「Ｈ（Ｓ１）」であり、時刻情報１０１０は、Ｓ７０３で取得した時刻情報「Ｔ２」であり、署名値１０１１は、Ｓ７０４で生成した署名値「Ｓｉｇｎ（Ｈ（Ｈ（Ｄ２）‖Ｈ（Ｓ１）‖Ｔ２））」が入る。  
Ｓ７０７では、Ｓ７０５で生成したタイムスタンプデータ５０４を、業務管理サーバ１０２に送信する。
【００５１】
タイムスタンプサーバ１０１は、第三者機関のタイムスタンプと同等の信頼性を維持するために、タイムスタンプ取得プログラム２１０により、定期的（例えば、１日に１回）にタイムスタンプ局１０３からタイムスタンプの取得を行う。図８に、タイムスタンプ取得プログラム２１０による処理の詳細のフローチャートを示す。
【００５２】
Ｓ８０１では、タイムスタンプサーバ１０１は、タイムスタンプ局１０３にタイムスタンプを要求するために、タイムスタンプ付与の対象となるデータの取得を行う。具体的には、タイムスタンプサーバログ２１２について、例えば、現時点で最新のレコードがログＩＤ「９」のレコード１００４であった場合、それから遡って前回タイムスタンプ局１０３からタイムスタンプを取得した際に生成したログ、すなわち種別１００８がタイムスタンプ局１０３からタイムスタンプを取得したことを示す「取得」であるログＩＤ「１」のレコード１００２を検出し、ログＩＤ「１」からログＩＤ「９」までのレコード全て（「Ｓ１‖Ｓ２‖・・・‖Ｓ９」）を取得する。
【００５３】
Ｓ８０２では、タイムスタンプサーバログ２１２から、前回のタイムスタンプ生成のときに生成したログを取得し、取得したログのハッシュ値を算出する。具体的には、例えば、本実施形態の場合、現時点で最新のレコード（前回生成したログ）が、ログＩＤ「９」であるので、ログＩＤ「９」のレコード１００４（図１０参照）を、タイムスタンプサーバログ２１２から取得し、ハッシュ値「Ｈ（Ｓ９）」を取得する。  
Ｓ８０３では、Ｓ８０１で取得したデータ「Ｓ１‖Ｓ２‖・・・‖Ｓ９」、及びＳ８０２で取得したデータ「Ｈ（Ｓ９）」を合わせたもののハッシュ値「Ｈ（（Ｓ１‖Ｓ２‖・・・‖Ｓ９）‖Ｈ（Ｓ９））」を算出する。  
Ｓ８０４では、Ｓ８０３で生成した「Ｈ（（Ｓ１‖Ｓ２‖・・・‖Ｓ９）‖Ｈ（Ｓ９））」を含むタイムスタンプ要求をタイムスタンプ局１０４に送信する。
【００５４】
タイムスタンプ局１０４は、タイムスタンプを生成する第三者機関であり、タイムスタンプ生成方式には、様々なものがあるが、一般的に、「時刻情報」「署名値」を含むタイムスタンプデータをタイムスタンプ要求元に返す。本実施形態では、「時刻情報」は、タイムスタンプ局が要求を受け取った時刻（ここでは、「ＴＳ１０」とする）であり、その時刻は正確であるとし、「署名値」は、タイムスタンプサーバ１０１が、Ｓ８０４で送信したデータ「Ｈ（（Ｓ１‖Ｓ２‖・・・‖Ｓ９）‖Ｈ（Ｓ９））」と、前記「時刻情報（ＴＳ１０）」とを合わせたものに対するタイムスタンプ局１０４の電子署名「Ｓｉｇｎ＿Ｔ（Ｈ（（Ｓ１｜Ｓ２｜・・・｜Ｓ９）｜Ｈ（Ｓ９））｜ＴＳ１０）」とする。
【００５５】
Ｓ８０５では、タイムスタンプ局１０４から受け取ったタイムスタンプデータから、「時刻情報（ＴＳ１０）」、署名値「Ｓｉｇｎ＿Ｔ（Ｈ（（Ｓ１‖Ｓ２‖・・・‖Ｓ９）｜Ｈ（Ｓ９））‖ＴＳ１０）」を取得する。
【００５６】
Ｓ８０６では、今回のタイムスタンプ取得に関するログを生成し、タイムスタンプサーバログ２１２に登録する。本実施形態の場合のログの内容を、図１０のレコード１００５に示す。ログＩＤ１００７には、前回のログＩＤ「９」からの連番となるログＩＤ「１０」が入り、種別１００８には、タイムスタンプ局１０４からタイムスタンプを取得した時のログを表す「取得」が入り、前回ログのハッシュ値１００９には、Ｓ８０２で取得したハッシュ値「Ｈ（Ｓ９）」が入り、時刻情報１０１０は、Ｓ８０５で取得した時刻情報「ＴＳ１０」が入り、署名値１０１１は、Ｓ８０５で取得した署名値「Ｓｉｇｎ＿Ｔ（Ｈ（（Ｓ１‖Ｓ２‖・・・‖Ｓ９）‖Ｈ（Ｓ９））‖ＴＳ１０）」が入る。
【００５７】
以上により、タイムスタンプサーバログ２１２において、ログＩＤ「１」〜ログＩＤ「９」までのログ内容については、Ｓ８０５でタイムスタンプ局１０４から受け取ったタイムスタンプデータから、「ＴＳ１０」より以前に存在していたことがタイムスタンプ局１０４により保証される。また、ログＩＤ「１」については、タイムスタンプ局１０４により、タイムスタンプ取得を行った際のログであるので、ログＩＤ「１」のレコード１００２に含まれる署名値「Ｓｉｇｎ＿Ｔ（Ｈ（（Ｓ０）‖Ｈ（Ｓ０））‖ＴＳ１）」を検証することにより、ログＩＤ「１」のレコード１００２が、「ＴＳ１」より以降に生成されたことがタイムスタンプ局１０４により保証される。
【００５８】
また、ログＩＤ「１」からログＩＤ「１０」までのログの間には、ハッシュ値による連鎖構造が構築されている（１つ前のログのハッシュ値が、次のログの署名値に反映されている）ので、この連鎖が途切れていなければ、ログＩＤ「２」〜ログＩＤ「９」のログ内容、すなわち、タイムスタンプサーバ１０２で生成したタイムスタンプのうちログＩＤ「２」〜ログＩＤ「９」に記録されたタイムスタンプ（署名値１０１１）の順序関係、及び、少なくとも「ＴＳ１」以降、「ＴＳ１０」までの間に生成されたことが、タイムスタンプ局１０４による保証と同程度に保証される。業務管理サーバログ３１１に含まれていても連鎖に含まれていないログは、正規の処理を経て生成されたログではないので、不正なログとみなすことができる。
【００５９】
ここで、話を戻し、図６の鍵生成・登録処理のフローチャートについて、残りの処理を説明する。
【００６０】
業務管理サーバ１０２の鍵管理プログラム３０７における、後半部分のＳ６０８〜Ｓ６０９について説明する。  
Ｓ６０８では、タイムスタンプサーバ１０１（又は、Ｓ６０６でタイムスタンプ局１０３にタイムスタンプを要求した場合は、タイムスタンプ局１０３）から、タイムスタンプデータ５０４を受信する。受信したタイムスタンプデータ５０４に含まれるログＩＤ（ここでは、「２」）を、Ｓ６０５で生成した業務ログの項目「タイムスタンプ」（１１１４）に記録し、タイムスタンプデータ５０４を、タイムスタンプ格納領域３１５に格納する。業務管理サーバログ３１１に含まれる各業務ログ（レコード１１０１〜１１０６）の項目「タイムスタンプ」（１１１４）に記録されたログＩＤを参照することによって、タイムスタンプ格納領域３１５から、業務ログごとにそれぞれ対応したタイムスタンプデータ５０４を検索することができる。また、仮に、タイムスタンプ局１０３から取得したタイムスタンプデータ５０４に、上記ログＩＤに該当するような識別番号が存在しない場合は、ファイル名など識別可能なデータを、ログＩＤの代わりに項目「タイムスタンプ」（１１１４）に記録してもよい。
【００６１】
Ｓ６０９では、登録完了通知５０５を生成し、鍵情報送信元（Ｓ６０２で受け取った鍵情報５０２の送信元）のユーザ側装置１０５〜１０７に送信する。ここで、登録完了通知５０５には、例えば、Ｓ６０６で生成したタイムスタンプ生成対象データ（Ｓ６０３で生成した公開鍵、Ｓ６０４で鍵管理データベース３１０に登録した「ユーザＩＤ」（９０６）、「鍵ＩＤ」（９０７）、「用途」（９０８）、「バージョン」（９０９）、「有効期限」（９１０）、「証明書」（９１１）、及び、Ｓ６０５で業務管理サーバログ３１１に登録したデータのうち、「処理ＩＤ」（１１０７）、「業務ＩＤ」（１１０８）、「文書ＩＤ」（１１０９）、「ユーザＩＤ」（１１１０）、「鍵ＩＤ」（１１１１）、「関連ＩＤ」（１１１２）、「署名値」（１１１３））、及びＳ６０８で受信したタイムスタンプデータ５０４を記載する。
【００６２】
ユーザ側装置１０５〜１０７は、鍵生成・登録プログラム４０７により、Ｓ６１０の処理を行い、業務管理サーバ１０２から登録完了通知５０５を受信する。ユーザ側装置１０５〜１０７は、登録完了通知５０５に含まれる「証明書」（９１１）中の業務管理サーバ１０２の電子署名を、業務管理サーバ１０２の公開鍵３１７で検証することにより、登録完了通知５０５に含まれる自身の公開鍵が、業務管理サーバ１０２で生成・登録されたことを検証することができる。証明書が認証局により発行されたものである場合は、認証局の公開鍵を用いて、一般的に行われる証明書の検証手続きにより検証を行う。また、登録完了通知５０５に含まれるタイムスタンプデータ５０４中のタイムスタンプサーバ１０１の電子署名を、タイムスタンプサーバ１０１の公開鍵２１５で検証することにより、登録完了通知５０５に含まれる自身の公開鍵が、業務管理サーバ１０２でいつ生成されたかを検証することができる。
【００６３】
業務管理サーバ１０２は、ユーザ側装置１０５〜１０７から登録内容の閲覧要求や、電子署名検証のための公開鍵要求があった場合には、閲覧データ５０６、検証用鍵情報５０７を送信する。ここで、閲覧データ５０６、検証用鍵情報５０７に含める情報としては、例えば、登録完了通知５０５と同様の構成にする。
【００６４】
≪鍵更新処理≫
図１２のＳ１２０２〜Ｓ１２０６、Ｓ１２０８〜Ｓ１２０９に、業務管理サーバ１０２の鍵管理プログラム３０７における鍵更新処理のフローチャートを示す。鍵更新処理を行うタイミングとしては、ユーザ側装置１０５〜１０７が業務管理サーバ１０２に鍵更新要求を行う場合と、業務管理サーバ１０２が鍵更新の必要性を判断した場合（例えば、鍵が漏洩した恐れ、暗号アルゴリズムの危殆化、有効期限９１０の期限切れなど）がある。なお、鍵を更新せず削除（無効化処理）を行ってもよい。この場合には、以下の処理のうち、Ｓ１２０３、Ｓ１２０４を省略し、業務ＩＤに鍵削除を示すＩＤを設定する。
【００６５】
Ｓ１２０２では、まず更新する鍵の鍵ＩＤ（以降、旧鍵ＩＤと呼ぶ。ここでは、旧鍵ＩＤ＝００１とする）、及び鍵情報５０２を取得する。Ｓ１２０１でユーザ側装置１０５〜１０７から鍵更新要求があった場合には、ユーザ側装置１０５〜１０７から旧鍵ＩＤ及び鍵情報５０２を受信する。受信にあたっては、認証の後に行うことが望ましい。例えば、ユーザ側装置１０５〜１０７を介してユーザにＩＤ、パスワード（予め、ユーザ登録して設定しておく）を要求して、業務管理サーバ１０２にログオンさせてから鍵情報５０２を受け取るか、又は、鍵情報５０２とともに、ユーザを証明するデータ（予めＩＣカードなどにより各ユーザに個別に与えられた秘密データなど）を受信し、秘密データがどのユーザのものであるかを確かめた上で、鍵情報５０２を受け取る。業務管理サーバ１０２が鍵更新の必要性を判断した場合には、ユーザ側装置１０５〜１０７に鍵情報５０２を送るよう要求して取得するか、又は業務ポリシーファイル３１４を参照して、鍵情報５０２を取得する。ここで、鍵情報５０２には、生成する鍵のサイズ（例えば、１０２４ｂｉｔ）や、使用するアルゴリズム（例えば、ＲＳＡ暗号方式）など鍵の生成に必要な情報を含む。
【００６６】
Ｓ１２０３では、鍵情報５０２に記載された鍵サイズ及びアルゴリズムに従って、鍵の生成（例えば、ＲＳＡ暗号方式における秘密鍵、公開鍵の生成）を行う。生成した秘密鍵、公開鍵の鍵ペアに対して、鍵ＩＤ（例えば、「００２」）を生成する。鍵ＩＤ生成にあたっては、鍵生成・登録を要求したユーザ（ユーザ名、ユーザＩＤなどにより識別）と、鍵ＩＤとを合わせたものが、固有であるように生成する（例えば、ユーザＩＤ＝０００１において、鍵ＩＤ＝００２の鍵ペアは複数存在しない）。また、業務管理サーバ１０２の業務ポリシーファイル３１４を参照して、鍵の有効期限を定めてもよい（例えば、生成日から２年間有効など）。
【００６７】
Ｓ１２０４では、Ｓ１２０３で生成した鍵及び生成した鍵に関する情報を、鍵管理データベース３１０に登録する（今回の処理では、例えば、レコード９０２が登録される）。鍵管理データベース３１０は、図９に示すように、鍵の所有者を示す「ユーザＩＤ」（９０６）、Ｓ６０３で生成した「鍵ＩＤ」（９０７）、利用用途（例えば、承認印、職印など）を示す「用途」（９０８）、鍵サイズやアルゴリズムを表す「バージョン」（９０９）、鍵の有効期限を示す「有効期限」（９１０）、公開鍵の正当性を証明する「証明書」（９１１）からなる。ここで、「証明書」（９１１）は、生成した公開鍵が誰のものであるかを示すものであり、公開鍵データ、ユーザＩＤなどのユーザを特定する情報（又は、属性証明書５０１）、及びそれらに対して生成した業務管理サーバ１０２の電子署名などからなる。なお、証明書は認証局が発行したものでもよく、その場合は、認証局に対し、通常一般的に行われる証明書の取得手続きを行い、認証局の電子署名を含む証明書を取得し、「証明書」（９１１）に登録する。「証明書」を生成又は取得するかどうかは、業務管理サーバ１０２の業務ポリシーファイル３１４を参照して、ポリシーに従って決定してもよい。
【００６８】
Ｓ１２０５では、今回の鍵更新処理に関する業務ログを生成し、業務管理サーバログ３１１に登録する（今回の処理では、例えば、処理ＩＤが「０００５」のレコード１１０５が登録される）。業務管理サーバログ３１１は、図１１に示すように、業務ログのレコード１１０１〜１１０６からなり、業務ログの各レコードは、処理を識別するための番号であり、ログ生成の度に連番で付与される「処理ＩＤ」（１１０７）、業務内容（例えば、鍵更新）を表す「業務ＩＤ」（１１０８）、電子文書に対する処理である場合に、処理対象となった電子文書に付与された識別番号を表す「文書ＩＤ」（１１０９）、今回の処理が誰に関連する業務か（例えば、ユーザＩＤ＝０００１のユーザの鍵を生成）を示す「ユーザＩＤ」（１１１０）、鍵を更新した場合に、Ｓ１２０３で生成した「鍵ＩＤ」（１１１１）、今回の鍵更新に関連する処理ＩＤを示す「関連ＩＤ」（１１１２）、今回の処理で生成された電子署名（例えば、Ｓ１２０４で証明書を生成する際に、業務管理サーバ１０２が生成した電子署名）が入る「署名値」（１１１３）、後述Ｓ１２０８で取得したタイムスタンプデータ５０４に含まれるログＩＤを格納する「タイムスタンプ」（１１１４）からなる。
【００６９】
ここで、「関連ＩＤ」（１１１２）は、以下のように取得する。例えば、今回の処理は、ユーザＩＤ＝０００１の鍵を更新する処理であるので、業務管理サーバログ３１１を検索して、業務ＩＤ（１１０８）が鍵生成又は鍵更新を表す「００１」又は「００２」であり、ユーザＩＤ（１１１０）が「０００１」であるレコードのうち最新のレコード（処理ＩＤ（１１０７）が最も大きいレコード）を取得する。ここでは、処理ＩＤ（１１０７）が「０００１」であるレコード１１０１が取得される。この取得されたレコードの処理ＩＤ「０００１」が「関連ＩＤ」（１１１２）である。
【００７０】
Ｓ１２０６では、タイムスタンプ要求５０３を生成し、タイムスタンプサーバ１０１に送信する。タイムスタンプ要求５０３には、タイムスタンプ生成対象データのハッシュ値が含まれる。タイムスタンプ生成対象データは、Ｓ１２０５で取得した関連ＩＤを処理ＩＤに持つレコード（ここでは、レコード１１０１）、Ｓ１２０３で生成した公開鍵、Ｓ１２０４で鍵管理データベース３１０に登録したデータ「ユーザＩＤ」（９０６）、「鍵ＩＤ」（９０７）、「用途」（９０８）、「バージョン」（９０９）、「有効期限」（９１０）、「証明書」（９１１）、及び、Ｓ１２０５で業務管理サーバログ３１１に登録したデータのうち、「処理ＩＤ」（１１０７）、「業務ＩＤ」（１１０８）、「文書ＩＤ」（１１０９）、「ユーザＩＤ」（１１１０）、「鍵ＩＤ」（１１１１）、「関連ＩＤ」（１１１２）、「署名値」（１１１３）からなる。
【００７１】
このとき、業務管理サーバ１０２は、業務ポリシーファイル３１４を参照し、鍵生成処理に対するポリシーを確認する。鍵生成処理の重要度に応じて、例えば、鍵生成時刻の保証をより厳密に行いたい場合は、タイムスタンプ要求５０３を、タイムスタンプ局１０３に送信して、タイムスタンプ局の生成するタイムスタンプデータ５０４を取得する。タイムスタンプ生成対象データに、Ｓ１２０５で取得した関連ＩＤを処理ＩＤに持つレコード（ここでは、レコード１１０１）を含むことにより、ユーザＩＤ＝「０００１」のユーザの前回の鍵生成、鍵更新に関するレコードと、今回生成した鍵に関するレコードとの間に連鎖関係を構築することができる。
【００７２】
Ｓ１２０７では、タイムスタンプサーバ１０１（又は、タイムスタンプ局１０３）において、業務管理サーバ１０２から送信されて来たタイムスタンプ要求５０３に対して、タイムスタンプデータ５０４を生成し、業務管理サーバ１０２にタイムスタンプデータ５０４を送信する。処理の詳細については、Ｓ６０７に記載した内容と同様である。
【００７３】
Ｓ１２０８では、タイムスタンプサーバ１０１（又は、Ｓ１２０６でタイムスタンプ局１０３にタイムスタンプを要求した場合は、タイムスタンプ局１０３）から、タイムスタンプデータ５０４を受信する。受信したタイムスタンプデータ５０４に含まれるログＩＤ（ここでは、「１２」）を、Ｓ１２０５で生成した業務ログの項目「タイムスタンプ」（１１１４）に記録し、タイムスタンプデータ５０４を、タイムスタンプ格納領域３１５に格納する。業務管理サーバログ３１１に含まれる各業務ログ（レコード１１０１〜１１０６）の項目「タイムスタンプ」（１１１４）に記録されたログＩＤを参照することによって、タイムスタンプ格納領域３１５から、業務ログごとにそれぞれ対応したタイムスタンプデータ５０４を検索することができる。また、仮に、タイムスタンプ局１０３から取得したタイムスタンプデータ５０４に、上記ログＩＤに該当するような識別番号が存在しない場合は、ファイル名など識別可能なデータを、ログＩＤの代わりに項目「タイムスタンプ」（１１１４）に記録してもよい。
【００７４】
Ｓ１２０９では、更新完了通知５０５を生成し、更新された鍵の所有者であるユーザのユーザ側装置１０５〜１０７に送信する。ここで、更新完了通知５０５には、例えば、Ｓ１２０６で生成したタイムスタンプ生成対象データ（Ｓ１２０５で取得した関連ＩＤを処理ＩＤに持つレコード、Ｓ１２０３で生成した公開鍵、Ｓ１２０４で鍵管理データベース３１０に登録した「ユーザＩＤ」（９０６）、「鍵ＩＤ」（９０７）、「用途」（９０８）、「バージョン」（９０９）、「有効期限」（９１０）、「証明書」（９１１）、及び、Ｓ６０５で業務管理サーバログ３１１に登録したデータのうち、「処理ＩＤ」（１１０７）、「業務ＩＤ」（１１０８）、「文書ＩＤ」（１１０９）、「ユーザＩＤ」（１１１０）、「鍵ＩＤ」（１１１１）、「関連ＩＤ」（１１１２）、「署名値」（１１１３））、及びＳ１２０８で受信したタイムスタンプデータ５０４を記載する。
【００７５】
≪電子文書生成処理≫
本実施形態における業務管理方法について、ユーザが電子文書（業務文書など）を生成し、本実施形態の業務管理サーバ１０２を介して、電子署名を付与し、電子文書の証拠性を確保する場合を例に挙げて説明する。
【００７６】
図１３に、ユーザ側装置１０５〜１０７が、電子文書を生成し、業務管理サーバ１０２に電子署名生成の要求を行って、業務管理サーバ１０２から電子署名が付与された電子文書を受け取るまでの電子文書生成処理のフローチャートを示す。
【００７７】
ユーザ側装置１０５〜１０７は、電子文書生成プログラム４０８により、Ｓ１３０１の処理を行い、電子文書を生成する。ここで生成する電子文書は、ユーザが既存のアプリケーションソフトを使って生成する文書、表、図面、画像、映像、実験データなどや、業務管理サーバ１０２やその他文書保管サーバなどに保存されている予め定められたデータフォーマットを取得して、取得したフォーマットを編集して生成する文書、表、図面、画像、映像、実験データなどを指す。次に、ユーザ側装置１０５〜１０７は、生成した電子文書及び電子文書に関連するデータとして、「業務ＩＤ」、「文書ＩＤ」、「鍵ＩＤ」を、業務管理サーバ１０２に送信し、電子署名生成を要求する。ここで、業務ＩＤは、電子文書がどのような業務で使用するものかを識別するＩＤであり、文書ＩＤは、電子文書を識別するためのＩＤ（例えば、ファイル名など）であり、鍵ＩＤは、電子署名生成に利用する鍵を指定するものである。業務ＩＤは、予めシステム上で設定しておき、それを全ユーザが共有して使うことが望ましい。業務ＩＤは、例えば、経理業務＝「００３」、業務フロー付き経理業務＝「００４」、特許関連業務＝「００５」、…、その他＝「９９９」などと定める。電子署名に使用する鍵については、業務管理サーバ１０２において自動的に決定してもよい。
【００７８】
業務管理サーバ１０２は、業務管理プログラム３０８により、Ｓ１３０２〜Ｓ１３０６、Ｓ１３０８、Ｓ１３０９の処理を行う。
【００７９】
Ｓ１３０２では、ユーザ側装置１０５〜１０７から、電子文書、「業務ＩＤ」、「文書ＩＤ」及び「鍵ＩＤ」を受け取る。受信にあたっては、認証の後に行うことが望ましい。例えば、ユーザ側装置１０５〜１０７を介してユーザにＩＤ、パスワード（予め、ユーザ登録して設定しておく）を要求して、業務管理サーバ１０２にログオンさせてからデータを受け取るか、又は、ユーザを証明するデータ（予めＩＣカードなどにより各ユーザに個別に与えられた秘密データなど）を一緒に受信し、秘密データがどのユーザのものであるかを確かめた上で、電子文書などを受け取る。次に、取得した業務ＩＤから、業務フローが定められた電子文書（承認ルートを持つ電子文書）かどうかを判断する。ここの例では、業務フローのない電子文書であるとする。業務フローが定められた電子文書の場合については、後述する。次に、業務ＩＤから、電子文書の重要性や、イレギュラー性（特殊な業務フローを持つ、日常的ではない業務、代理承認など）を判断する。
【００８０】
Ｓ１３０３では、Ｓ１３０２で受け取った電子文書（本文１４０２）、業務ＩＤ及び文書ＩＤ（ヘッダ部１４０３）に対して、電子文書生成ユーザの電子署名を生成する。具体的には、以下のような処理を行う。まず、ユーザＩＤ、鍵ＩＤを用いて、鍵格納領域３１８を検索し、電子署名生成に使用する秘密鍵を取得する。例えば、ユーザＩＤ＝「０００１」、鍵ＩＤ＝「００１」に対応する秘密鍵を取得したとする。次に、取得した秘密鍵を用いて、本文１４０２及びヘッダ部１４０３に対して電子署名生成を行う。
【００８１】
Ｓ１３０４では、今回の署名付き電子文書生成処理に関する業務ログを生成し、業務管理サーバログ３１１に登録する（今回の処理では、例えば、処理ＩＤが「０００３」のレコード１１０３が登録される）。業務管理サーバログ３１１のレコード１１０３は、図１１に示すように、「処理ＩＤ」（１１０７）、経理業務を表す「業務ＩＤ」（１１０８）、Ｓ１３０２で受け取った「文書ＩＤ」（１１０９）、電子文書生成ユーザを表す「ユーザＩＤ」（１１１０）、Ｓ１３０３で使用した鍵を表す「鍵ＩＤ」（１１１１）、今回の業務に関連する処理ＩＤを示す「関連ＩＤ」（１１１２）、Ｓ１３０３で生成された電子署名が入る「署名値」（１１１３）、後述Ｓ１３０８で取得したタイムスタンプデータ５０４に含まれるログＩＤを格納する「タイムスタンプ」（１１１４）からなる。ここで、今回の電子文書には業務フローは設定されていないので、「関連ＩＤ」（１１１２）は、なしとする。
【００８２】
Ｓ１３０５では、Ｓ１３０２で電子文書の重要性や、代理承認などのイレギュラー性を判断した場合に、監査用ファイル３１３にＳ１３０４で生成した業務ログの処理ＩＤを記録する。これにより、後に行われる業務監査を支援することができる。例えば、監査用ファイル３１３を利用することによって、特に重要な監査対象となるべき業務に関して、その業務ログを優先的に検証するなど、監査作業を効率化することができる。
【００８３】
Ｓ１３０６では、タイムスタンプ要求５０３を生成し、タイムスタンプサーバ１０１に送信する。タイムスタンプ要求５０３には、タイムスタンプ生成対象データのハッシュ値が含まれる。業務フローのない今回の電子文書生成処理におけるタイムスタンプ生成対象データは、Ｓ１３０４で生成した処理ＩＤ「０００３」のレコード１１０３のうち、「処理ＩＤ」（１１０７）、「業務ＩＤ」（１１０８）、「文書ＩＤ」（１１０９）、「ユーザＩＤ」（１１１０）、「鍵ＩＤ」（１１１１）、「関連ＩＤ」（１１１２）、「署名値」（１１１３）からなる。このとき、業務管理サーバ１０２は、業務ポリシーファイル３１４を参照し、Ｓ１３０２で受け取った業務ＩＤに対するポリシーを確認する。そして、業務管理サーバ１０２は、例えば、電子文書に対する電子署名生成時刻の保証をより厳密に行いたい場合には、タイムスタンプ要求５０３を、タイムスタンプサーバ１０１の代わりにタイムスタンプ局１０３に送信して、タイムスタンプ局１０３の生成するタイムスタンプデータ５０４を取得する。
【００８４】
Ｓ１３０７では、タイムスタンプサーバ１０１（又は、タイムスタンプ局１０３）において、業務管理サーバ１０２から送信されたタイムスタンプ要求５０３に対して、タイムスタンプデータ５０４を生成し、業務管理サーバ１０２にタイムスタンプデータ５０４を送信する。処理の詳細については、Ｓ６０７に記載した内容と同様である。
【００８５】
Ｓ１３０８では、タイムスタンプサーバ１０１（又は、Ｓ１３０６でタイムスタンプ局１０３にタイムスタンプを要求した場合には、タイムスタンプ局１０３）から、タイムスタンプデータ５０４を受信する。受信したタイムスタンプデータ５０４に含まれるログＩＤ（ここでは、「０００８」）を、Ｓ１３０４で生成した業務ログの項目「タイムスタンプ」（１１１４）に記録し、タイムスタンプデータ５０４を、タイムスタンプ格納領域３１５に格納する。
【００８６】
Ｓ１３０９では、電子署名付き電子文書１４０１を生成し、電子文書生成ユーザのユーザ側装置１０５〜１０７に送信する。図１４に、電子署名付き電子文書１４０１の構成を示す。電子署名付き電子文書は、本文１４０２、ヘッダ部１４０３及び署名部１４０４からなる。本文１４０２は、Ｓ１３０２で受け取った電子文書である。ヘッダ部１４０３は、Ｓ１３０２で受け取った業務ＩＤ及び文書ＩＤからなる。署名部１４０４は、Ｓ１３０４で生成した業務ログからなる署名データ１４０５（処理ＩＤ「０００３」のレコード１１０３のうち、「処理ＩＤ」（１１０７）、「業務ＩＤ」（１１０８）、「文書ＩＤ」（１１０９）、「ユーザＩＤ」（１１１０）、「鍵ＩＤ」（１１１１）、「関連ＩＤ」（１１１２）、「署名値」（１１１３））、及びＳ１３０８で取得したタイムスタンプデータ５０４からなる。
【００８７】
ユーザ側装置１０５〜１０７は、Ｓ１３１０で、業務管理サーバ１０２から電子署名付き電子文書１４０１を受け取る。
【００８８】
≪電子文書検証処理≫
図１５にユーザ側装置１０５〜１０７が、電子署名付き電子文書１４０１を検証する場合の電子文書検証処理の概要を示し、図１６に電子文書検証処理のフローチャートを示す。
【００８９】
図１５に示すように、電子署名付き電子文書１４０１を検証する際には、以下の４つの検証が行われる。１つ目は、電子文書がどのユーザによって作られたか、また改ざんされていないかを検証するために電子署名付き電子文書１４０１に含まれる署名データ１４０５を、鍵蓄積領域３１８から得られる検証用公開鍵１５０６を用いて検証する署名検証（Ｓ１５０１）である。２つ目は、電子文書を生成した際のログが業務管理サーバ１０２に残っているか（業務管理サーバを介して署名されたか）を検証するために、電子署名付き電子文書１４０１に含まれる署名データ１４０５と、業務管理サーバ１０２の業務管理サーバログ３１１に含まれるレコード（署名データ１４０５に含まれる処理ＩＤと同じ処理ＩＤを持つレコード）との一致を検証するログ検証（Ｓ１５０２）である。３つ目は、電子文書がいつ作られた（電子署名された）かを検証するために、電子署名付き電子文書１４０１に含まれるタイムスタンプデータ５０４を、タイムスタンプサーバ公開鍵２１５や、タイムスタンプサーバログ２１２から得られるタイムスタンプ検証利用データ１５０５を用いて検証するタイムスタンプ検証（Ｓ１５０３）である。４つ目は、Ｓ１５０１で検証に利用した検証用公開鍵１５０６が、業務管理サーバ１０２に登録されており、電子署名生成時に有効期限内であったかどうかを検証する鍵検証（Ｓ１５０４）である。
【００９０】
図１６を用いて、ユーザ側装置１０５〜１０７が、電子署名付き電子文書１４０１の検証を業務管理サーバ１０２に要求し、検証結果を受け取るまでの電子文書検証処理のフローチャートを説明する。  
Ｓ１６０１において、ユーザ側装置１０５〜１０７は、電子文書検証プログラム４０６により、検証対象となる電子署名付き電子文書１４０１を含む、電子文書の検証要求を業務管理サーバ１０２に送信する。  
業務管理サーバ１０２は、業務管理プログラム３０８により、Ｓ１６０２〜Ｓ１６０４、Ｓ１６０６〜Ｓ１６０９、Ｓ１６１１、Ｓ１６１２の処理を行う。  
Ｓ１６０２では、ユーザ側装置１０５〜１０７から、検証対象となる電子署名付き電子文書１４０１を含む、電子文書の検証要求を受信する。  
Ｓ１６０３では、Ｓ１６０２で受信した電子署名付き電子文書１４０１の検証を行う。具体的には、図１５のＳ１５０１〜Ｓ１５０４の処理を行う。以下に処理の詳細を説明する。
【００９１】
Ｓ１５０１では、まずＳ１６０２で受信した電子署名付き電子文書１４０１に含まれる署名データ１４０５を取得する。次に、署名データ１４０５から、ユーザＩＤ、鍵ＩＤを取得（ここでは、ユーザＩＤ＝０００１、鍵ＩＤ＝００１）し、これらのＩＤを用いて鍵蓄積領域３１８を検索し、該当する公開鍵（検証用公開鍵１５０６）を取得する。そして、取得した検証用公開鍵１５０６を用いて、署名データ１４０５に含まれる署名値を検証する。
【００９２】
Ｓ１５０２では、署名データ１４０５に含まれる処理ＩＤ（ここでは、処理ＩＤ＝「０００３」）を取得し、取得した処理ＩＤを基に業務管理サーバログ３１１を検索し、検証対象の電子署名付き電子文書１４０１が生成されたときのレコード（ここでは、レコード１１０３）を取得する。次に、取得したレコード１１０３の処理ＩＤ（１１０７）、業務ＩＤ（１１０８）、文書ＩＤ（１１０９）、ユーザＩＤ（１１１０）、鍵ＩＤ（１１１１）、関連ＩＤ（１１１２）、署名値（１１１３）が、署名データ１４０５の各項目の値と一致するかどうか検証する。
【００９３】
Ｓ１５０３では、電子署名付き電子文書１４０１に含まれるタイムスタンプデータ５０４を取得し、タイムスタンプデータ５０４に含まれる対象データハッシュ値（ここでは、「Ｈ（Ｄ８）」）が、署名データ１４０５のハッシュ値と一致するか調べる。次に、取得したタイムスタンプデータ５０４の検証を行う。タイムスタンプデータ５０４が、タイムスタンプ局１０３から取得したデータである場合は、タイムスタンプデータ５０４に含まれる署名値を、タイムスタンプ局１０３の公開鍵を用いて検証し、タイムスタンプデータがタイムスタンプ局１０３により生成されたものであることを検証する。タイムスタンプデータにタイムスタンプ局１０３独自のデータ（運営企業名など）が含まれており、かつそれが電子署名対象となっていた場合は、それも含めて電子署名検証を行う。
【００９４】
タイムスタンプデータ５０４が、タイムスタンプサーバ１０１により生成されたものである場合には、図１７のＳ１７０１〜Ｓ１７０４に示す検証手順を行う。なお、簡易的に検証を行いたい場合には、Ｓ１７０２のみ行い、検証対象となる電子署名付き電子文書１４０１に含まれるタイムスタンプデータ５０４を単独で検証してもよい。その場合、検証に必要な1つ前に生成されたタイムスタンプサーバログのレコードのハッシュ値（ここでは、「Ｈ（Ｓ７）」）は、タイムスタンプサーバ１０１から取得するか、又は、タイムスタンプサーバ１０１においてタイムスタンプデータ生成（Ｓ７０５）のときに、タイムスタンプデータ５０４に簡易検証用の「Ｈ（Ｓ７）」を予め含めておいてもよい。
【００９５】
Ｓ１７０１では、タイムスタンプデータ５０４からログＩＤを取得する（ここでは、ログＩＤ＝０００８）。次に、上記ログＩＤを含むタイムスタンプサーバログ要求を、タイムスタンプサーバ１０１に送信し、検証に必要なタイムスタンプサーバログを取得する。
【００９６】
ここで、タイムスタンプサーバログ要求を受け取ったタイムスタンプサーバ１０１は、要求に含まれるログＩＤ（ログＩＤ＝０００８）を基に、タイムスタンプサーバログ２１２を検索し、１つ前に生成したログ（ログＩＤ＝０００７）のレコードのハッシュ値「Ｈ（Ｓ７)」を取得する。また、タイムスタンプサーバログ２１２の種別（１００８）を参照して、要求に含まれるログＩＤ（ログＩＤ＝０００８）より前でタイムスタンプ局１０３からタイムスタンプを取得した際に生成したログのレコード（ここでは、ログＩＤ＝０００１のレコード）から、要求に含まれるログＩＤ（ログＩＤ＝０００８）より後でタイムスタンプ局１０３からタイムスタンプを取得した際に生成したログのレコード（ここでは、ログＩＤ＝００１０のレコード）までのレコードを全て取得する（ここで取得したレコードを、以降、タイムスタンプ検証用ログと呼ぶ）。また、ログＩＤ＝０００１、ログＩＤ＝００１０のログ作成時に取得したタイムスタンプ局１０３のタイムスタンプデータを、タイムスタンプ格納領域２１３から取得する。そして、ログＩＤ＝０００１のログ作成時に取得したタイムスタンプ局１０３のタイムスタンプデータに含まれる署名の対象となったタイムスタンプサーバ１０１のサーバログ「Ｓ０（ログＩＤ＝００００のレコード）」を取得する。次に、上記取得したタイムスタンプ検証用ログ、タイムスタンプ局１０３のタイムスタンプデータ及びログＩＤ＝０００１について取得したタイムスタンプ局１０３の署名の対象となったデータ「Ｓ０」を含むタイムスタンプ検証利用データ１５０５を、業務管理サーバ１０２に送信する。
【００９７】
ここで、本例では、ログＩＤ＝０００１について取得したタイムスタンプ局１０３の署名の対象となったデータ「Ｓ０」を送信しているが、一般的には、タイムスタンプ検証用ログの中の、タイムスタンプ局１０３からタイムスタンプを取得した際に生成した２つのログのレコードのうち、小さい番号のログＩＤのログについて、タイムスタンプ局１０３のタイムスタンプデータに含まれる署名の対象となったタイムスタンプサーバ１０１のサーバログ（「Ｓｍ」から「Ｓｍ＋ｎ」までの全てのログ。例えば、種別１００８が「取得」の２つのレコードのうち、小さい方の番号がログＩＤ＝００１０のレコードだとすれば、「Ｓ１」から「Ｓ９」までのログとなる。）を送信する。
【００９８】
Ｓ１７０２では、業務管理サーバ１０２は、タイムスタンプサーバ１０１から、タイムスタンプ検証利用データ１５０５を受け取る。次に、タイムスタンプデータ５０４に含まれる署名値（ここでは、Ｓｉｇｎ（Ｈ（Ｈ（Ｄ８）‖Ｈ（Ｓ７）‖Ｔ８）））を、タイムスタンプデータ５０４に含まれる対象データハッシュ値（ここでは、「Ｈ（Ｄ８）」）、時刻情報（ここでは、「Ｔ８」）、タイムスタンプ検証用ログに含まれる1つ前に生成されたレコード（ここでは、ログＩＤ＝０００７のレコード）のハッシュ値（ここでは、「Ｈ（Ｓ７）」）及びタイムスタンプサーバ１０１の公開鍵２１５を用いて検証する。また、タイムスタンプデータ５０４に含まれる署名値（ここでは、「Ｓｉｇｎ（Ｈ（Ｈ（Ｄ８）‖Ｈ（Ｓ７）‖Ｔ８））」）と、タイムスタンプ検証用ログに含まれる署名値（１０１１）とが一致するか検証する。これにより、タイムスタンプデータ５０４が検証される。
【００９９】
Ｓ１７０３では、タイムスタンプ検証利用データ１５０５に含まれるタイムスタンプ検証用ログについて、タイムスタンプサーバ１０１から取得したタイムスタンプデータ５０４を取得する。具体的には、ログＩＤ＝０００２〜０００９について、タイムスタンプ格納領域３１５を検索して、タイムスタンプデータを取得する。
【０１００】
Ｓ１７０４では、Ｓ１７０３で取得したタイムスタンプデータ及びＳ１７０２で受信したタイムスタンプ検証利用データ１５０５に含まれるタイムスタンプ局１０３のタイムスタンプデータの検証を行う。Ｓ１７０３で取得したタイムスタンプデータの検証は、Ｓ１７０２と同様の手順で行う。具体的には、ログＩＤ＝０００２〜０００９のレコードに対応するタイムスタンプデータを用いて、それぞれＳ１７０２と同様の手順を行う。タイムスタンプ局１０３のタイムスタンプデータ（ログＩＤ＝０００１、００１０のログ作成時に取得したタイムスタンプ局１０３のタイムスタンプデータ）の検証については、タイムスタンプ検証利用データ１５０５から、タイムスタンプデータに含まれる署名の対象となったログを取得して署名対象データを作成し、タイムスタンプ局１０３の公開鍵を用いて、タイムスタンプ局１０３のタイムスタンプデータに含まれる署名値の検証を行う。
【０１０１】
具体的には、本例では、ログＩＤ＝０００１のログ作成時に取得したタイムスタンプ局１０３のタイムスタンプデータを検証する場合には、タイムスタンプ検証利用データ１５０５に含まれる「Ｓ０（タイムスタンプデータに含まれる署名の対象となったログ）」から「Ｈ（（Ｓ０）‖Ｈ（Ｓ０））‖ＴＳ１」を作成し、タイムスタンプ局１０３の公開鍵を用いて、タイムスタンプ局１０３のタイムスタンプデータに含まれる署名値「Ｓｉｇｎ＿Ｔ（Ｈ（（Ｓ０）‖Ｈ（Ｓ０））‖ＴＳ１）」の検証を行う（ここで、時刻情報「ＴＳ１」は、タイムスタンプ局１０３のタイムスタンプデータに含まれているので、それを利用する）。また、ログＩＤ＝００１０のログ作成時に取得したタイムスタンプ局１０３のタイムスタンプデータを検証する場合には、タイムスタンプ検証利用データ１５０５に含まれるログＩＤ＝０００１〜０００９のタイムスタンプサーバログのレコードから「Ｈ（（Ｓ１‖・・・‖Ｓ９）‖Ｈ（Ｓ９））‖ＴＳ１０」を作成し、タイムスタンプ局１０３のタイムスタンプデータに含まれる署名値「Ｓｉｇｎ＿Ｔ（Ｈ（（Ｓ１‖・・・‖Ｓ９）‖Ｈ（Ｓ９））‖ＴＳ１０）」の検証を行う（ここで、時刻情報「ＴＳ１０」は、タイムスタンプ局１０３のタイムスタンプデータに含まれているので、それを利用する）。
【０１０２】
これにより、タイムスタンプ局１０３のタイムスタンプデータの検証、及びその間にタイムスタンプサーバ１０１が生成したタイムスタンプ間の連鎖関係の検証が行われ、Ｓ１７０２で検証したタイムスタンプデータ５０４（検証対象の電子署名付き電子文書１４０１に含まれるタイムスタンプデータ）が、Ｓ１７０４で検証したタイムスタンプ局１０３のタイムスタンプデータの時刻情報の間（例えば、「ＴＳ１」から「ＴＳ１０」までの間）に存在していたことを証明できる。簡易的に検証を行いたい場合などには、Ｓ１７０３、Ｓ１７０４の処理は省略してもよい。また、Ｓ１７０２で取得したタイムスタンプ検証利用データ１５０５に含まれるハッシュ値「Ｈ（Ｓ７）」は、電子署名付き電子文書生成時に、タイムスタンプデータ５０４に予め入れておいてもよい。
【０１０３】
Ｓ１５０４（図１５参照）では、Ｓ１５０１での電子署名検証に利用した検証用公開鍵１５０６の検証を行う。具体的には、以下のＳ１７０５〜Ｓ１７０９の処理を行う。
【０１０４】
Ｓ１７０５では、検証用公開鍵１５０６の鍵ＩＤ（ここでは、鍵ＩＤ＝「００１」）を基に、鍵管理データベース３１０を検索し、検証用公開鍵１５０６の鍵情報に関するレコード（ここでは、レコード９０１）を取得する。次に、有効期限（９１０）の値を確認し、Ｓ１５０３で検証したタイムスタンプデータ５０４の時刻情報「Ｔ８」が有効期限を超えていないことを確認する。これにより、鍵の有効期限を保証できる。また、証明書（９１１）を検証する。証明書（９１１）の検証は、例えば、証明書（９１１）に含まれる業務管理サーバ１０２の電子署名を検証する。証明書が認証局にから発行されたものである場合は、通常一般的に行われる認証局の証明書検証手順に従って、証明書の検証を行う。
【０１０５】
Ｓ１７０６では、Ｓ１５０１で検証用公開鍵１５０６を取得するときに使用したユーザＩＤ（ここでは、ユーザＩＤ＝０００１）により、業務管理サーバログ３１１を検索して、項目としてユーザＩＤ（１１１０）が「０００１」であり、かつ、業務ＩＤ（１１０８）が「鍵生成」、「鍵更新」、「鍵削除」など鍵管理に関連する業務ＩＤを持つレコードを取得する。例えば、図１８のレコード１８０１〜１８０３が取得されたとする。なお、
鍵ＩＤが全署名鍵に固有である場合には、Ｓ１６０２で受信した署名付き電子文書１４０１に含まれる鍵ＩＤにより業務管理サーバログ３１１を検索して、該当したレコードのユーザＩＤ及び鍵管理に関連する業務ＩＤを持つレコードを取得してもよい。また、鍵管理に関連するレコードだけ（例えば、「鍵更新」の業務ＩＤを持つレコードだけ）が業務管理サーバログ３１１に格納されている場合には、業務ＩＤを用いることなく、当該ユーザＩＤを持つレコードを取得するようにしてもよい。
【０１０６】
Ｓ１７０７では、Ｓ１７０６で取得したレコードに対するタイムスタンプデータを、タイムスタンプ格納領域３１５から取得する。例えば、図１８のタイムスタンプデータ１８０４〜１８０６が取得されたとする。
【０１０７】
Ｓ１７０８では、Ｓ１７０７で取得したタイムスタンプデータの連鎖関係の検証を行う。具体的には、まずＳ１７０６で取得したレコードのうち最新のレコード１８０３に対応するタイムスタンプデータ１８０６について、タイムスタンプデータ１８０６に含まれる対象データハッシュ値（例えば、Ｈ（Ｄ２８））と、タイムスタンプデータ１８０６についてのタイムスタンプ生成対象データとの整合性を検証する（ハッシュ値が一致するかどうか）。ここで、タイムスタンプ生成対象データは、レコード１８０３に含まれる関連ＩＤを処理ＩＤに持つレコード（ここでは、レコード１８０２）、レコード１８０３に含まれる鍵ＩＤに対応する公開鍵（鍵格納領域３１８から取得）、レコード１８０３に含まれる鍵ＩＤに対応する公開鍵の鍵情報（レコード１８０３に含まれるユーザＩＤ、鍵ＩＤを用いて鍵管理データベース３１０を検索して取得されるレコード）、及び、レコード１８０３のうち、「処理ＩＤ」、「業務ＩＤ」、「文書ＩＤ」、「ユーザＩＤ」、「鍵ＩＤ」、「関連ＩＤ」、「署名値」である。また、タイムスタンプデータ１８０６を検証する。検証手順は、Ｓ１７０１〜Ｓ１７０４と同様である。以上の処理をレコード１８０２、１８０１についても行う。これにより、Ｓ１７０６で取得したレコード間の連鎖関係を、タイムスタンプデータに含まれるタイムスタンプサーバ１０１（又は、タイムスタンプ局１０３）の電子署名を用いて検証することができる。
【０１０８】
Ｓ１７０９では、まず、検証用公開鍵１５０６（鍵ＩＤ＝「００１」）について、Ｓ１７０６で取得したレコードの中に含まれることを確認する。具体的には、鍵ＩＤ＝「００１」であり、業務ＩＤ（１１０８）が鍵生成（＝００１）、又は鍵更新（＝「００２」）であるレコード（例えば、１８０１）が、Ｓ１７０６で取得したレコードの中に存在することを確認する。
【０１０９】
次に、上記存在したレコード（例えば、１８０１）に対応するタイムスタンプデータ（例えば、１８０４）に含まれる時刻情報が、Ｓ１５０３で検証したタイムスタンプデータ５０４に含まれる時刻情報「Ｔ８」より前であるか確認する。なお、最新の署名鍵による電子署名だけを有効とするために、上記存在したレコードと同じユーザＩＤ及び鍵更新の業務ＩＤを持つレコードのうち、最新のレコードの時刻情報が、時刻情報「Ｔ８」より前であるか確認するようにしてもよい。
【０１１０】
続いて、上記存在したレコード（例えば、１８０１）の処理ＩＤを関連ＩＤに持つレコード（例えば、１８０２）をＳ１７０６で取得したレコードの中から検索する。そして、検索したレコード（例えば、１８０２）に対応するタイムスタンプデータ（例えば、１８０５）に含まれる時刻情報が、Ｓ１５０３で検証したタイムスタンプデータ５０４に含まれる時刻情報「Ｔ８」より後であることを確認する。（このとき検索されたレコードは、検証用公開鍵１５０６が鍵更新又は鍵削除されたときのレコードである。）そして、検索したレコードの時刻情報が時刻情報「Ｔ８」より後である場合には、検証失敗と判定する。  
なお、簡易的に鍵の検証を行いたい場合は、Ｓ１７０６〜Ｓ１７０９の処理を省略してもよい。
【０１１１】
Ｓ１６０４では、Ｓ１６０３で得られた検証の結果（電子署名検証成功、タイムスタンプ検証成功など）を記載した検証結果を生成し、生成した検証結果に対して、業務管理サーバ１０２の秘密鍵を用いて電子署名を生成し、検証結果に付与する。
【０１１２】
Ｓ１６０５では、今回の電子文書検証処理に関する業務ログを生成し、業務管理サーバログ３１１に登録する。業務管理サーバログ３１１には、「処理ＩＤ」（１１０７）、検証を表す「業務ＩＤ」（１１０８）、検証対象の電子署名付き電子文書１４０１の「文書ＩＤ」（１１０９）、検証対象の電子文書の生成ユーザを表す「ユーザＩＤ」（１１１０）、検証で使用した検証用公開鍵を表す「鍵ＩＤ」（１１１１）、「関連ＩＤ」（１１１２）、Ｓ１６０４で生成された電子署名が入る「署名値」（１１１３）が記録される。ここで、「関連ＩＤ」（１１１２）は、無効とする。
【０１１３】
Ｓ１６０６では、タイムスタンプ要求５０３を生成し、タイムスタンプサーバ１０１に送信する。タイムスタンプ要求５０３には、タイムスタンプ生成対象データのハッシュ値が含まれる。ここで、タイムスタンプ生成対象データは、Ｓ１６０５で生成した業務ログのレコードである。保証をより厳密に行いたい場合は、タイムスタンプ要求５０３をタイムスタンプ局１０３に送信して、タイムスタンプ局１０３の生成するタイムスタンプデータ５０４を取得してもよい。
【０１１４】
Ｓ１６０７では、タイムスタンプサーバ１０１（又は、タイムスタンプ局１０３）において、業務管理サーバ１０２から送信されたタイムスタンプ要求５０３に対して、タイムスタンプデータ５０４を生成し、業務管理サーバ１０２にタイムスタンプデータ５０４を送信する。処理の詳細については、Ｓ６０７に記載した内容と同様である。
【０１１５】
Ｓ１６０８では、タイムスタンプサーバ１０１（又は、Ｓ１６０６でタイムスタンプ局１０３にタイムスタンプを要求した場合は、タイムスタンプ局１０３）から、タイムスタンプデータ５０４を受信する。受信したタイムスタンプデータ５０４に含まれるログＩＤを、Ｓ１６０５で生成した業務ログの項目である「タイムスタンプ」（１１１４）に記録し、タイムスタンプデータ５０４を、タイムスタンプ格納領域３１５に格納する。
【０１１６】
Ｓ１６０９では、Ｓ１６０４で生成した電子署名付き検証結果を、検証要求ユーザ（Ｓ１６０１で、電子署名付き電子文書１４０１を業務管理サーバ１０２に送信したユーザ）のユーザ側装置１０５〜１０７に送信する。  
Ｓ１６１０では、電子署名付き検証結果を受け取ったユーザ側装置は、電子署名付き検証結果に含まれる業務管理サーバ１０２の電子署名を検証した後、検証結果を確認する。
【０１１７】
以上、本実施形態では、業務管理サーバ１０２によって、電子署名付き電子文書１４０１を検証する手順について述べたが、業務管理サーバ１０２やタイムスタンプサーバ１０１から上記検証で利用したデータを取得して、ユーザ側装置１０５〜１０７において、電子署名付き電子文書１４０１を検証してもよい。
【０１１８】
≪業務フロー付き電子文書生成処理≫
図１３を用いて、ユーザ側装置１０５〜１０７が、業務管理サーバ１０２に業務フロー付き電子文書に対する電子署名生成の要求を行ってから、業務管理サーバ１０２から電子署名が新たに付与された業務フロー付き電子文書を受け取るまでの処理（業務フロー付き電子文書生成処理）のフローチャートについて説明する。
【０１１９】
ここでは、図１９に示す業務フロー付き電子文書１９０１について、ユーザ側装置１０５（ユーザＩＤ＝「０００２」）により、課長入力欄１９０７に文章を入力し、電子署名を生成する場合を例に挙げて説明する。業務フロー付き電子文書１９０１には、既にユーザＩＤ＝「０００１」のユーザ及び業務管理サーバ１０２によってＳ１３０１〜Ｓ１３１０の処理（図１３の電子文書生成処理）が行われ、署名部１９０５に、署名データ１９０９及びタイムスタンプデータ１９１０が付与されている。また、ヘッダ部１９０３には、業務ＩＤ＝「００５（例えば、業務フロー付き申請を表す）」、文書ＩＤ＝「shinsei００１」及び業務フロー記録部１９０４（申請者から始まり、課長、部長という承認フロー）が設定されている。
【０１２０】
ユーザ側装置１０５は、電子文書生成プログラム４０８により、Ｓ１３０１の処理を行い、電子文書を生成する。ここでは、業務フロー付き電子文書１９０１に対して、課長入力欄１９０７に文章を入力する。申請者の署名がされた業務フロー付き電子文書１９０１は、他のユーザ側装置、業務管理サーバ１０２又は文書管理サーバなどから取得する。次に、ユーザ側装置１０５は、生成した（文章入力後の）業務フロー付き電子文書１９０１及び「鍵ＩＤ」を、業務管理サーバ１０２に送信し、電子署名生成を要求する。ここで、鍵ＩＤは、電子署名生成に利用する鍵を指定するものである。なお、電子署名に使用する鍵については、業務管理サーバ１０２において自動的に決定してもよい。
【０１２１】
業務管理サーバ１０２は、業務管理プログラム３０８により、Ｓ１３０２〜Ｓ１３０６、Ｓ１３０８、Ｓ１３０９の処理を行う。
【０１２２】
Ｓ１３０２では、ユーザ側装置１０５から、業務フロー付き電子文書１９０１及び「鍵ＩＤ」を受け取る。受信にあたっては、認証の後に行うことが望ましい。例えば、ユーザにＩＤ、パスワード（予め、ユーザ登録して設定しておく）を要求して、業務管理サーバ１０２にログオンさせてからデータを受け取るか、又は、ユーザを証明するデータ（予めＩＣカードなどにより各ユーザに個別に与えられた秘密データなど）を一緒に受信し、秘密データがどのユーザのものであるかを確かめた上で、電子文書などを受け取る。次に、業務フロー付き電子文書１９０１のヘッダ部１９０３に含まれる業務ＩＤから、業務フローが定められた電子文書（承認ルートを持つ電子文書）かどうかを判断する。ここでは、業務フローが存在する電子文書である。そこで、業務フロー付き電子文書１９０１の業務フロー記録部１９０４を参照する。本実施形態の場合、一人目（申請者）が署名済みであるので、本文１９０２のうち課長入力欄及び部長入力欄を除いたデータ、及びヘッダ部１９０３に対する一人目の電子署名の検証（Ｓ１６０３と同様の手順）を行う。ここで、検証に失敗した場合には、業務フロー付き電子文書が不正であるので、処理を終了する。
【０１２３】
二人目まで（申請者及び課長が）署名済みである場合は、以下のように検証を行う。まず、本文１９０２のうち部長入力欄を除いたデータ、ヘッダ部１９０３、及び署名部１９０５のうち一人目の署名データ１９０９及びタイムスタンプデータ１９１０に対する二人目の電子署名の検証（Ｓ１６０３と同様の手順）を行う。次に、本文１９０２のうち課長入力欄及び部長入力欄を除いたデータ、及びヘッダ部１９０３に対する一人目の電子署名の検証（Ｓ１６０３と同様の手順）を行う。ここで、検証に失敗した場合は、業務フロー付き電子文書が不正である（電子文書の改ざん、署名値自体が不正、又は、業務フローの間で連鎖が途切れている）ので、処理を終了する。
【０１２４】
次に、電子署名生成を要求しているユーザ（ここでは、ユーザＩＤ＝「０００２」のユーザ）が、業務フロー付き電子文書１９０１の業務フロー記録部１９０４の二人目に設定されているユーザとして正当かどうか、例えば、業務管理サーバ１０２の業務ポリシーファイル３１４を参照して判断する。二人目のユーザとして不適切な場合は、処理を終了する。また、業務ＩＤから、電子文書の重要性や、イレギュラー性（特殊な業務フローを持つ、又は、日常的ではない業務、また本実施形態の場合、課長の職位を持つユーザの代わりに、課長代理の職位を持つユーザが電子署名を生成する場合など）を判断する。
【０１２５】
Ｓ１３０３では、Ｓ１３０２で受け取った業務フロー付き電子文書１９０１に対し、Ｓ１３０１で電子署名生成を要求したユーザ（以降、署名生成要求ユーザと呼ぶ）の電子署名を生成する。具体的には、以下のような処理を行う。まず、署名生成要求ユーザＩＤ（ここでは、ユーザＩＤ＝「０００５」）、Ｓ１３０２で取得した鍵ＩＤ（ここでは、鍵ＩＤ＝「００１」とする）を用いて、鍵格納領域３１８を検索し、電子署名生成に使用する秘密鍵を取得する。次に、取得した秘密鍵を用いて、Ｓ１３０２で受け取った業務フロー付き電子文書１９０１の本文１９０２、ヘッダ部１９０３、並びに署名部１９０５のうち一人目の署名データ１９０９及びタイムスタンプデータ１９１０に対し、電子文書生成ユーザの電子署名を生成する。
【０１２６】
Ｓ１３０４では、今回の電子文書生成処理に関する業務ログを生成し、業務管理サーバログ３１１に登録する。業務管理サーバログ３１１には、図１１に示すように、最新の業務ログから連番で付与する「処理ＩＤ」、「業務ＩＤ」（ここでは、業務ＩＤ＝「００５」）、「文書ＩＤ」（ここでは、文書ＩＤ＝「shinsei００１」）、「ユーザＩＤ」（ここでは、ユーザＩＤ＝「０００２」）、「鍵ＩＤ」（ここでは、鍵ＩＤ＝「００１」）、「関連ＩＤ」、「署名値」（Ｓ１３０３で生成された電子署名が入る）を記録する。ここで、今回の電子文書には業務フローが設定されているので、「関連ＩＤ」には、一つ前の処理フローに関する処理ＩＤ（ここでは、業務フロー付き電子文書１９０１の署名部１９０５のうち一人目の署名データ１９０９の処理ＩＤ＝「０００３」）が入る。
【０１２７】
Ｓ１３０５では、Ｓ１３０２で電子文書の重要性やイレギュラー性を判断した場合に、監査用ファイル３１３にＳ１３０４で生成した業務ログの処理ＩＤを記録する。この監査用ファイル３１３を利用することによって、業務監査を行う場合など、特に重要な監査対象となるべき業務に関して、その業務ログを優先的に検証するなど監査作業を効率化することができる。
【０１２８】
Ｓ１３０６では、タイムスタンプ要求５０３を生成し、タイムスタンプサーバ１０１に送信する。タイムスタンプ要求５０３には、タイムスタンプ生成対象データのハッシュ値が含まれる。本実施形態におけるタイムスタンプ生成対象データは、Ｓ１３０４で生成した処理ＩＤのレコードのうち、「処理ＩＤ」（１１０７）、「業務ＩＤ」（１１０８）、「文書ＩＤ」（１１０９）、「ユーザＩＤ」（１１１０）、「鍵ＩＤ」（１１１１）、「関連ＩＤ」（１１１２）及び「署名値」（１１１３）からなる。このとき、業務管理サーバ１０２は、業務ポリシーファイル３１４を参照し、Ｓ１３０２で受け取った業務ＩＤに対するポリシーを確認する。業務フローの重要度に応じて、例えば、電子文書に対する電子署名生成時刻の保証をより厳密に行いたい場合は、タイムスタンプ要求５０３を、タイムスタンプ局１０３に送信して、タイムスタンプ局１０３の生成するタイムスタンプデータ５０４を取得する。
【０１２９】
Ｓ１３０７では、タイムスタンプサーバ１０１（又は、タイムスタンプ局１０３）において、業務管理サーバ１０２から送信されたタイムスタンプ要求５０３に対して、タイムスタンプデータ５０４を生成し、業務管理サーバ１０２にタイムスタンプデータ５０４を送信する。処理の詳細については、Ｓ６０７に記載した内容と同様である。
【０１３０】
Ｓ１３０８では、タイムスタンプサーバ１０１（又は、Ｓ１３０６でタイムスタンプ局１０３にタイムスタンプを要求した場合は、タイムスタンプ局１０３）から、タイムスタンプデータ５０４を受信する。受信したタイムスタンプデータ５０４に含まれるログＩＤを、Ｓ１３０４で生成した業務ログの項目である「タイムスタンプ」（１１１４）に記録し、タイムスタンプデータ５０４を、タイムスタンプ格納領域３１５に格納する。
【０１３１】
Ｓ１３０９では、業務フロー付き電子文書１９０１に二人目の電子署名として、Ｓ１３０３で生成した電子署名を、署名部１９０５に付与し、署名生成要求ユーザのユーザ側装置１０５に送信する。
【０１３２】
ユーザ側装置１０５は、Ｓ１３１０で、業務管理サーバ１０２から送信された業務フロー付き電子文書１９０１（二人目の電子署名が付与された業務フロー付き電子文書）を受け取る。
【０１３３】
業務フロー付き電子文書１９０１（例えば、Ｘ人目まで業務フローがある場合）の検証は、以下のように行う。まず、本文１９０２のうちＸ人目入力欄を除いたデータ、ヘッダ部１９０３、及び署名部１９０５のうち（Ｘ−１）人目の署名データ、及びタイムスタンプデータに対するＸ人目の電子署名（署名データ、タイムスタンプデータ）の検証（Ｓ１６０３と同様の手順）を行う。次に、本文１９０２のうちＸ人目及び（Ｘ−１）人目入力欄を除いたデータ、ヘッダ部１９０３、及び署名部１９０５のうち（Ｘ−２）人目の署名データ、及びタイムスタンプデータに対する（Ｘ−１）人目の電子署名（署名データ、タイムスタンプデータ）の検証（Ｓ１６０３と同様の手順）を行う。これをＸ＝２まで繰り返し、最後に、本文１９０２のうち一人目以降に入力した文章を全て除いたデータ、及びヘッダ部１９０３に対する一人目の電子署名の検証（Ｓ１６０３と同様の手順）を行う。
【０１３４】
検証対象の業務フロー付き電子文書に付与された署名データは、１つ前のユーザが付与した署名データ、及びタイムスタンプデータを反映して作られているため、連鎖関係が構築されているが、上記検証により、その連鎖関係の整合性の有無を含めて検証される。したがって、上記業務フロー付き電子文書１９０１の検証を行うことによって、業務フロー付き電子文書１９０１が業務フロー順に処理（署名）され、かつその過程で改ざんがないことを証明することができる。また、タイムスタンプデータの時刻情報により、業務フロー付き電子文書１９０１が処理されていった経過の時刻の参照、及びその検証ができる。
【０１３５】
ただし、上記検証過程に示す通り、署名データに含まれる署名値の検証を行う際は、本文１４０２のうち、署名生成対象となった部分のみ（例えば、課長の生成した署名データを検証する際には、部長記入欄を除く）を検証に用いることが必要である。
【０１３６】
また、業務フロー付き電子文書１９０１において、業務管理サーバ１０２は、ユーザからの要望に応じて、Ｓ１３０３において、電子署名を生成する代わりに、業務フロー付き電子文書１９１に付与されている電子署名を削除して、１つ前の状態に戻してもよい。その場合の業務ログは、処理ＩＤには電子署名生成のときと同様、今回の処理に対するＩＤが連番で付与され、業務ＩＤは、電子署名削除を表すＩＤであり、文書ＩＤは、業務フロー付き電子文書１９０１のヘッダ部に記載された文書ＩＤであり、ユーザＩＤは、削除依頼をしたユーザのユーザＩＤであり、鍵ＩＤは、関連ＩＤは、削除した電子署名が生成された時の業務ログに含まれる処理ＩＤであり、署名値は、削除した署名データ１９０９に含まれる署名値が入る。この場合、業務フロー付き電子文書の検証の際には、署名削除された電子署名が含まれていないかどうかの検証を行う必要がある。
【０１３７】
また、タイムスタンプサーバ１０１のタイムスタンプサーバログ２１２のログの連鎖を検証するステップ（Ｓ１７０３〜Ｓ１７０４）は、必ずしも行う必要はない。例えば、Ｓ１３０２において、電子署名生成対象となる業務フロー付き電子文書の業務フローの正当性を検証する場合や、社内監査部門による検証など内部で検証する場合などは、上記連鎖を検証するステップを省略し、外部に証拠として提示する場合など重要な場面で連鎖の検証を実施することが、運用効率上望ましい。
【０１３８】
本実施形態の鍵管理方式によれば、鍵の存在有無、及び存在期間の連続性を保証し、業務上正当な鍵であったかどうかの検証も行うことができる。また、電子文書に対しては、通常の署名検証に加えて、署名時刻の検証、およびそのときに使用された鍵が有効期限内であったかどうかの検証を行い、より厳密な真正性証明を行うことができる。また、承認フローなどの業務フローがある電子文書については、承認などの業務の過程で作成された電子署名の連鎖関係を検証することによって、業務フローの正当性を保証することができる。
【０１３９】
また、内部に設置したタイムスタンプサーバが、前回のタイムスタンプとの間に連鎖関係を構築しながらタイムスタンプを作成し、定期的に第三者機関であるタイムスタンプ局のタイムスタンプを連鎖に含めることにより、時刻保証業務を行う第三者機関のタイムスタンプと同等の信頼性を与えることができる。すなわち、第三者機関については必要最低限の利用にとどめて、タイムスタンプ付与にかかるコストや時間を軽減しながら、連鎖全体に渡って第三者機関の信頼性や安全性を波及させることができる。これにより、時刻保証を含めた効率的なログ管理を実現することができる。
【０１４０】
本発明は、内部業務の記録保証（内部統制）に限らず、電子商取引システムや電子メールシステムなど、電子文書やログを扱うシステムにおける電子データの真正性を保証する機能に適用可能である。また、鍵管理部分のみを別サーバに実装するといったように機能を切り分けて運用することも可能である。
【０１４１】
以上本発明の実施の形態について説明したが、図１に示す業務管理システム１内の各サーバや各装置を機能させるために、ＣＰＵで実行されるプログラムをコンピュータにより読み取り可能な記録媒体に記録し、その記録したプログラムをコンピュータに読み込ませ、実行させることにより、本発明の実施の形態に係る業務管理システム１が実現されるものとする。なお、プログラムをインターネットなどのネットワーク経由でコンピュータに提供してもよいし、プログラムが書き込まれた半導体チップなどをコンピュータに組み込んでもよい。
【０１４２】
以上、本発明を実施するための最良の形態について説明したが、上記実施の形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明はその趣旨を逸脱することなく変更、改良され得るとともに、本発明にはその等価物も含まれる。
【産業上の利用可能性】
【０１４３】
上記実施形態では、内部業務、特に電子文書に対する署名付与（承認業務）について処理内容の記録、管理、保証について述べたが、本発明は、内部業務の記録保証（内部統制）に限らず、電子商取引システムや電子メールシステムなど、電子文書やログを扱うシステムにおける電子データの真正性を保証する機能に適用可能である。また、鍵管理部分のみを別サーバに実装するといったように機能を切り分けて運用することも可能である。
【図面の簡単な説明】
【０１４４】
【図１】本発明の実施形態が適用されたシステムの概略図である。
【図２】タイムスタンプサーバの内部構成を示した図である。
【図３】業務管理サーバの内部構成を示した図である。
【図４】ユーザ側装置の内部構成を示した図である。
【図５】鍵生成処理の際に、各装置間でやり取りされるデータフローの概要を示した図である。
【図６】鍵生成処理における全体シーケンスを示した図である。
【図７】タイムスタンプサーバにおけるタイムスタンプデータ生成処理手順を示した図である。
【図８】タイムスタンプサーバにおいて、タイムスタンプ局からタイムスタンプデータの取得を行う際の処理手順を示した図である。
【図９】業務管理サーバにおける鍵管理データベースの構成を示した図である。
【図１０】タイムスタンプサーバにおけるタイムスタンプサーバログの構成を示した図である。
【図１１】業務管理サーバにおける業務管理サーバログの構成を示した図である。
【図１２】鍵更新処理における全体シーケンスを示した図である。
【図１３】電子文書生成処理における全体シーケンスを示した図である。
【図１４】電子署名付き電子文書の構成例を示した図である。
【図１５】電子署名付き電子文書の検証処理で利用するデータの概要を示した図である。
【図１６】電子署名付き電子文書の検証処理における全体シーケンスを示した図である。
【図１７】タイムスタンプデータの検証処理手順を示した図である。
【図１８】検証処理の概要を示した図である。
【図１９】業務フロー付き電子文書の構成例を示した図である。
【符号の説明】
【０１４５】
１０１  タイムスタンプサーバ
１０２  業務管理サーバ（情報処理装置）
１０３  タイムスタンプ局（第三者機関のサーバ）
１０５〜１０７  ユーザ側装置
２１２  タイムスタンプサーバログ（更新時刻情報）
２１３  タイムスタンプ格納領域
３１０  鍵管理データベース
３１１  業務管理サーバログ       
３１４  業務ポリシーファイル
３１５  タイムスタンプ格納領域
１０１０  時刻情報
１０１１  署名値（更新時刻情報）
１１０７  処理ＩＤ
１１０８  業務ＩＤ
１１１１  鍵ＩＤ
１１１２  関連ＩＤ
１１１３  署名値（電子署名）
１１１４  タイムスタンプ（署名時刻情報）
１４０１  署名付き電子文書（電子署名付き電子データ）
１９０１  業務フロー付き電子文書（業務フロー付き電子データ）
【図１】
2008109519.tif 000003
【図２】
2008109519.tif 000004
【図３】
2008109519.tif 000005
【図４】
2008109519.tif 000006
【図５】
2008109519.tif 000007
【図６】
2008109519.tif 000008
【図７】
2008109519.tif 000009
【図８】
2008109519.tif 000010
【図９】
2008109519.tif 000011
【図１０】
2008109519.tif 000012
【図１１】
2008109519.tif 000013
【図１２】
2008109519.tif 000014
【図１３】
2008109519.tif 000015
【図１４】
2008109519.tif 000016
【図１５】
2008109519.tif 000017
【図１６】
2008109519.tif 000018
【図１７】
2008109519.tif 000019
【図１８】
2008109519.tif 000020
【図１９】
2008109519.tif 000021