説明

コンピュータ実施方法、コンピュータ・プログラム製品、データ処理システム(安全なデジタル署名システム)

【課題】電子文書をインスタンス化するよう求めるクライアントからの要求を受信するための、コンピュータ実施方法、装置、およびコンピュータ・プログラム製品を提供すること。
【解決手段】webアプリケーション・サーバとクライアントの間の相互認証が正常に完了した後、webアプリケーション・サーバは、電子文書をクライアントに提供する。その後、webアプリケーション・サーバは、修正文書を形成するための、電子文書に関連する1組の変更を受信することがある。修正文書用に生成されたデジタル署名を求めるクライアントからの要求を受信した後、webアプリケーション・サーバは、webアプリケーション・サーバの私有鍵とクライアントに関連するエンドユーザの識別情報とを使用して、デジタル署名を生成する。その後、webアプリケーション・サーバは、そのデジタル署名を用いて、修正文書に署名を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、データ処理システムに関し、詳細には、デジタル署名に関する。より詳細には、本発明は、リッチwebアプリケーション・コンテンツ(rich web application content)に対する安全なデジタル署名を生成するための、コンピュータ実施方法、装置、およびコンピュータ使用可能プログラム・コードに関する。
【背景技術】
【0002】
公開鍵暗号は、公開鍵と私有鍵のペアを使用する、暗号の一形態である。私有鍵は、秘密に保たれ、私有鍵の保有者にだけ知られている。私有鍵とペアをなす公開鍵は、私有鍵に数学的に関連づけられ、公に配布することができる。デジタル署名は、暗号の一タイプであり、私有鍵を使用して署名を作成する。その場合、公開鍵を有するどのユーザも、署名を検証することができる。
【0003】
したがって、デジタル署名は、メッセージを改ざんから保護することと、個人の識別情報をメッセージ内容と関連づけることの両方のための、暗号で守られた手段である。メッセージは、限定することなく例を挙げると、電子メール・メッセージ、ビジネス取引や契約を表す電子フォームの拡張マークアップ言語(XML)、または他の任意の有限長のバイト列など、任意のタイプの情報または通信である。フォームは、特にデータ収集およびデータ転送を可能にする、汎用アプリケーションである。デジタル署名の署名者は、フォームによって表される取引または契約など、取引または契約を行うユーザである。
【0004】
デジタル署名は一般に、メッセージ認証トークン(messageauthentication token)と、署名者認証トークン(signer authentication token)を含む。メッセージ用の認証トークンは、暗号で守られるべきである。同様に、署名者用の認証トークンは、暗号で守られた方式で、メッセージにバインドされるべきである。これらの方策は、デジタル署名を無効化することなくメッセージを改ざんすること、または署名を無効化することなく署名者の認証トークンを変更されたメッセージに関連づけることが、計算的に実現不可能であることを保証する必要がある。さらに、署名者の資格証明(credential)の満了または取消によって署名を無効化することが、実現可能であるべきである。
【0005】
署名識別情報は、私有鍵と、公開鍵証明書(public key certificate)とからなる。デジタル署名の生成を助けるために、署名者の私有鍵材料(privatekey material)が使用されなければならず、署名者の身元を署名されたメッセージ・コンテンツと関連づける。署名者の私有鍵が関係する動作へのアクセスは、エンドユーザのコンピュータ上の信用されたアプリケーションにだけ許可される。これは、クライアントサイドwebブラウザ以外のクライアントサイド実行可能コードの配備を制限するwebアプリケーションにとって、問題をはらんだ要件である。加えて、完全なwebアプリケーションを構成するコンテンツの大部分は、サーバによって維持されるので、ユーザの豊かなwebアプリケーション体験を完全に表現するコンテンツにデジタル署名を施すことは困難である。
【発明の開示】
【発明が解決しようとする課題】
【0006】
現行の一実践では、リッチ・コンテンツ文書(rich content document)への署名は、クライアントサイド・ソフトウェアを介して提供される。しかし、このソリューションは、リッチ・コンテンツ文書サーバによって提供されるリッチ・コンテンツ文書へのデジタル署名を可能にするために、クライアントサイド・ソフトウェアをインストールまたはアップデートするようユーザに要求する。
【0007】
現行の別の実践では、リッチ・コンテンツ文書は、デジタル署名によるセキュリティ保護が行えない、ゼロ・フットプリントwebアプリケーション・サーバ(zero footprint web application server)製品によって提供される。ゼロ・フットプリントwebアプリケーション・サーバは、アプリケーションに関連するソフトウェアをクライアントにダウンロードまたはインストールすることなしに、webアプリケーションへのアクセスを提供するサーバである。しかし、このソリューションは、デジタル署名によるセキュリティ保護がユーザには利用できないので、文書の安全性および真正性を危険にさらす。
【課題を解決するための手段】
【0008】
説明的な実施形態は、電子文書をインスタンス化するよう求めるクライアントからの要求を受信するための、コンピュータ実施方法、装置、およびコンピュータ・プログラム製品を提供する。webアプリケーション・サーバとクライアントの間の相互認証が正常に完了した後、webアプリケーション・サーバは、電子文書をクライアントに提供する。その後、webアプリケーション・サーバは、修正文書を形成するための、電子文書に関連する1組の変更を受信することがある。修正文書用に生成されたデジタル署名を求めるクライアントからの要求を受信した後、webアプリケーション・サーバは、webアプリケーション・サーバの私有鍵とクライアントに関連するエンドユーザの識別情報とを使用して、デジタル署名を生成する。その後、webアプリケーション・サーバは、そのデジタル署名を用いて、修正文書に署名を行う。
【0009】
また別の実施形態では、文書が少なくとも1回デジタル署名を施された後、電子文書をインスタンス化するよう求めるクライアントからのさらなる要求に応答するためのプロセスは拡大される。文書に関連するどのデジタル署名も、webアプリケーション・サーバの公開鍵証明書に加えて、署名者の公開鍵証明書または公開識別情報(public identity)、および他の任意のメタデータにも基づいて、正当性が確認される。
【0010】
本発明に特徴的と思われる新規な特徴が、添付の特許請求の範囲において説明される。しかし、本発明自体に加え、その好ましい使用態様、さらなる目的および利点は、説明的な実施形態についての以下の詳細な説明を、添付の図面と併読しながら参照することによって、最もよく理解されよう。
【発明を実施するための最良の形態】
【0011】
ここで図面を、特に図1〜図2を参照すると、説明的な実施形態が実施され得る、データ処理環境の例示的な図が提供されている。図1〜図2は、例示的なものであるにすぎず、異なる実施形態が実施され得る環境に関する限定を主張または暗示することを意図したものではないことを理解されたい。表された環境に対して多くの修正を施すことができる。
【0012】
図1は、説明的な実施形態が実施され得る、データ処理システムのネットワークの絵図を表している。ネットワーク・データ処理システム100は、説明的な実施形態が実施され得る、コンピュータのネットワークである。ネットワーク・データ処理システム100は、ネットワーク102を含み、ネットワーク102は、ネットワーク・データ処理システム100内で共に接続される様々なデバイスおよびコンピュータの間の通信リンクを提供するために使用される媒体である。ネットワーク102は、有線通信リンク、無線通信リンク、または光ファイバ・ケーブルなどのコネクションを含むことができる。
【0013】
表された例では、サーバ104およびサーバ106は、記憶ユニット108と共に、ネットワーク102に接続する。この例では、サーバ104は、ゼロ・フットプリントwebアプリケーション・サーバであり、サーバ106は、標準webアプリケーション・サーバである。ゼロ・フットプリントwebアプリケーション・サーバは、クライアント110、112、114にリッチ・コンテンツwebアプリケーション・ソフトウェアをインストールすることなしに、ネットワーク102を介してソフトウェア・アプリケーションをクライアント110、112、114に送付する、ソフトウェア・エンジンである。サーバ104は、署名バリデータ(signature validator)と、署名ジェネレータ(signature generator)を含む。サーバ104は、説明的な実施形態が実施され得る、サーバの一例である。別の例では、サーバ106も、署名バリデータと、署名ジェネレータを含むことができる。
【0014】
加えて、クライアント110、112、114も、ネットワーク102に接続する。クライアント110、112、114は、例えば、パーソナル・コンピュータまたはネットワーク・コンピュータとすることができる。表された例では、サーバ106は、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションなどのデータを、クライアント110、112、114に提供する。クライアント110、112、114は、この例では、サーバ104または106に対するクライアントである。図1では、クライアント110は、サーバ104または106との相互認証プロセスを完了するための、ユーザ私有鍵を含む。相互認証とは、当事者双方が相手の身元を確信できる方法で、クライアントまたはユーザがサーバに対して自らの真正性を証明し、サーバがユーザに対して自らの真正性を証明することである。ネットワーク・データ処理システム100は、図示されていない、さらなるサーバ、クライアント、および他のデバイスを含むことができる。
【0015】
表された例では、ネットワーク・データ処理システム100は、伝送制御プロトコル/インターネット・プロトコル(TCP/IP)というプロトコル・スイートを使用して互いに通信を行う、ネットワークおよびゲートウェイの世界規模の集まりを表す、ネットワーク102を含むインターネットである。インターネットの中核には、データおよびメッセージをルーティングする、非常に多数の商用、政府用、教育用、および他のコンピュータ・システムからなる主要ノードまたはホスト・コンピュータの間に、基幹となる高速データ通信線が存在する。もちろん、ネットワーク・データ処理システム100は、例えば、イントラネット、ローカル・エリア・ネットワーク(LAN)、またはワイド・エリア・ネットワーク(WAN)などの、多くの異なるタイプのネットワークとして実施されてもよい。図1は、一例として意図されており、異なる説明的な実施形態に対するアーキテクチャ面での限定として意図されてはいない。
【0016】
ここで図2を参照すると、説明的な実施形態が実施され得る、データ処理システムのブロック図が示されている。データ処理システム200は、図1のサーバ104またはクライアント110などの、コンピュータの一例であり、説明的な実施形態のために、プロセスを実施するコンピュータ使用可能プログラム・コードまたは命令が配置できる。この説明的な例では、データ処理システム200は、通信構造202を含み、通信構造202は、プロセッサ・ユニット204、メモリ206、永続記憶208、通信ユニット210、入力/出力(I/O)ユニット212、およびディスプレイ214の間の通信を提供する。
【0017】
プロセッサ・ユニット204は、メモリ206にロードできるソフトウェアの命令を実行するように働く。プロセッサ・ユニット204は、具体的な実施に応じて、1つまたは複数のプロセッサの組とすることができ、またはマルチプロセッサ・コアとすることができる。さらに、プロセッサ・ユニット204は、シングル・チップ上にメイン・プロセッサとセカンダリ・プロセッサが存在する、1つまたは複数の異種プロセッサ・システムを使用して実施することができる。別の説明的な例では、プロセッサ・ユニット204は、複数の同じタイプのプロセッサを含む、対称マルチプロセッサ・システムとすることができる。
【0018】
メモリ206は、これらの例では、例えば、ランダム・アクセス・メモリ、または他の任意の適切な揮発性もしくは不揮発性記憶デバイスとすることができる。永続記憶208は、具体的な実施に応じて、様々な形態を取ることができる。例えば、永続記憶208は、1つまたは複数のコンポーネントまたはデバイスを含むことができる。例えば、永続記憶208は、ハード・ドライブ、フラッシュ・メモリ、リライタブル光ディスク、リライタブル磁気テープ、または上記の何らかの組合せとすることができる。永続記憶208によって使用される媒体は、着脱可能でもよい。例えば、着脱可能ハード・ドライブが、永続記憶208のために使用できる。
【0019】
通信ユニット210は、これらの例では、他のデータ処理システムまたはデバイスとの通信を提供する。これらの例では、通信ユニット210は、ネットワーク・インタフェース・カードである。通信ユニット210は、物理的通信リンクおよび無線通信リンクの一方または両方を使用することによって通信を提供することができる。
【0020】
入力/出力ユニット212は、データ処理システム200に接続できる他のデバイスを用いたデータの入力および出力を可能にする。例えば、入力/出力ユニット212は、キーボードおよびマウスを介したユーザ入力用のコネクションを提供することができる。さらに、入力/出力ユニット212は、出力をプリンタに送ることができる。ディスプレイ214は、ユーザに情報を表示するための機構を提供する。
【0021】
オペレーティング・システムおよびアプリケーションまたはプログラムのための命令は、永続記憶208に配置される。これらの命令は、プロセッサ・ユニット204によって実行するために、メモリ206にロードすることができる。異なる実施形態のプロセスは、メモリ206などのメモリに配置できるコンピュータ実施命令を使用して、プロセッサ・ユニット204によって実行することができる。これらの命令は、プログラム・コード、コンピュータ使用可能プログラム・コード、またはコンピュータ可読プログラム・コードと呼ばれ、プロセッサ・ユニット204内のプロセッサによって読み出し、実行することができる。異なる実施形態におけるプログラム・コードは、メモリ206または永続記憶208などの、異なる物理的または有形のコンピュータ可読媒体上に具象化することができる。
【0022】
コンピュータ使用可能プログラム・コード216は、着脱可能であることを選択できるコンピュータ可読媒体218上に機能可能な形式で配置され、プロセッサ・ユニット204によって実行するために、データ処理システム200にロードまたは転送することができる。コンピュータ使用可能プログラム・コード216およびコンピュータ可読媒体218は、これらの例では、コンピュータ・プログラム製品220を形成する。一例では、コンピュータ可読媒体218は、例えば、永続記憶208の部分であるハード・ドライブなどの記憶デバイスに転送するために、永続記憶208の部分であるドライブまたは他のデバイス内に挿入または配置される光ディスクまたは磁気ディスクといった有形な形態を取ることができる。有形な形態では、コンピュータ可読媒体218は、データ処理システム200に接続される、ハード・ドライブ、サム・ドライブ、またはフラッシュ・メモリといった永続記憶の形態も取ることができる。有形な形態のコンピュータ可読媒体218は、コンピュータ記録可能記憶媒体とも呼ばれる。場合によっては、コンピュータ記録可能媒体218は、着脱可能とすることはできない。
【0023】
代替として、コンピュータ使用可能プログラム・コード216は、通信ユニット210への通信リンクを介して、または入力/出力ユニット212へのコネクションを介して、あるいはその両方を介して、コンピュータ可読媒体218からデータ処理システム200に転送することができる。通信リンクまたはコネクションあるいはその両方は、説明的な実施形態では、物理的または無線とすることができる。コンピュータ可読媒体は、プログラム・コードを含む通信リンクまたは無線伝送など、非有形媒体の形態も取ることができる。
【0024】
データ処理システム200に関して例示された異なるコンポーネントは、異なる実施形態が実施され得る方法に対するアーキテクチャ面での限定を提供することを意図していない。異なる説明的な実施形態は、データ処理システム200に関して例示されたコンポーネントの追加または代替コンポーネントを含むデータ処理システムにおいて実施することができる。図2に示される他のコンポーネントは、示された説明的な例から変更されることができる。
【0025】
一例として、データ処理システム200内の記憶デバイスは、データを保存できる任意のハードウェア装置である。メモリ206、永続記憶208、およびコンピュータ可読媒体218は、有形な形態の記憶デバイスの例である。
【0026】
別の例では、通信構造202を実施するために、バス・システムが使用でき、バス・システムは、システム・バスまたは入力/出力バスなどの1つまたは複数のバスからなることができる。もちろん、バス・システムは、バス・システムに接続された異なるコンポーネントまたはデバイスの間でデータ転送を提供する、任意の適切なタイプのアーキテクチャを使用して実施することができる。加えて、通信ユニットは、モデムまたはネットワーク・アダプタなど、データを送信および受信するために使用される、1つまたは複数のデバイスを含むことができる。さらに、メモリは、例えば、通信構造202内に存在し得るインタフェースおよびメモリ・コントローラ・ハブ内で見出されるような、メモリ206またはキャッシュとすることができる。
【0027】
説明的な実施形態は、デジタル署名を無効化することなくメッセージを改ざんすることの実現不可能性という要件、デジタル署名を無効化することなく署名者の認証トークンを変更されたメッセージに関連づけることの実現不可能性という要件、および署名者の資格証明の満了または取消によって署名を無効化することの実現可能性を依然として保証するという要件を満たす、リッチwebアプリケーション・コンテンツに対する暗号で守られたデジタル署名を作成可能なシステムが必要とされていることを認識している。
【0028】
したがって、説明的な実施形態は、電子文書をインスタンス化するようwebアプリケーション・サーバに求める要求を受信するための、コンピュータ実施方法、装置、およびコンピュータ・プログラム製品を提供する。webアプリケーション・サーバとクライアントの間の相互認証が正常に完了した後、webアプリケーション・サーバは、電子文書をクライアントに提供する。その後、webアプリケーション・サーバは、修正文書を形成するための、電子文書に対する1組の変更を受信する。修正文書用に生成されたデジタル署名を求めるクライアントからの要求を受信した後、webアプリケーション・サーバは、webアプリケーション・サーバの私有鍵とクライアントに関連するエンドユーザの識別情報とを使用して、デジタル署名を生成する。その後、webアプリケーション・サーバは、そのデジタル署名を用いて、修正文書に署名を行う。
【0029】
図3は、説明的な実施形態に従ってデジタル署名が生成される際のデータ・フローを示すブロック図である。ネットワーク・データ処理システム300は、図1および図2に表された、パーソナル・コンピュータ、ラップトップ、携帯情報端末、サーバ、または他の任意のコンピューティング・デバイスを含むが、これらに限定されない、任意のタイプのコンピューティング・デバイスを使用して実施することができる。
【0030】
webアプリケーション・サーバ302は、ネットワークを介してクライアントにアプリケーションを提供するための、当技術分野で知られた任意のタイプのサーバとすることができる。例えば、webアプリケーション・サーバ302は、標準webアプリケーション・サーバまたはゼロ・フットプリントwebアプリケーション・サーバとすることができる。ゼロ・フットプリント・アプリケーション・サーバは、webブラウザだけを配備し、他のタイプのクライアントサイド実行可能コードを配備しない。
【0031】
この例では、webアプリケーション・サーバ302は、文書/HTMLトランスレータ(documentto HTML translator)304と、文書ランナ(document runner)306と、アクセス・コントローラ308と、署名ジェネレータ310と、署名バリデータ312と、文書テンプレートまたは一部完成文書のリポジトリ(repositoryof document templates or partially completed documents)314と、データ記憶デバイス316と、ランニング文書リポジトリ(runningdocument repository)318を含む。しかし、webアプリケーション・サーバ302は、説明的な実施形態の範囲から逸脱することなく、図3に示されていない付加的な機能およびコンポーネントも含むことができる。
【0032】
文書/HTMLトランスレータ304は、特定の時間にエンドユーザが対話しなければならない、リッチwebアプリケーション文書の部分に関するハイパーテキスト・マークアップ言語(HTML)およびJava(R)script/AJAXコンテンツを作成するソフトウェア・コンポーネントである。文書ランナ306は、webアプリケーション・サーバ302内で完了される、状態遷移およびサブタスクを生成し、監視する。一例では、文書ランナ306は、エンドユーザに代わって文書を実行し、またはバックエンド・ビジネス・プロセスを推進するために、文書から情報を抽出し、その情報に基づいて動作するように設計された、カスタム・サーブレットおよびポートレットの要求で文書を実行する。別の例では、文書ランナ306は、文書が最初にロードされた時に文書内に存在する署名の妥当性検証を行い、要求時に特定の署名の妥当性再検証を行う。
【0033】
アクセス・コントローラ308は、サーバ私有鍵を始めとする、サーバとエンドユーザの間の相互認証に関するすべての情報を含む。署名ジェネレータ310および署名バリデータ312は、エンドユーザからの要求に応答して、署名を生成し、また署名の妥当性検証を行うために、アクセス・コントローラ308に保存された情報を使用する。文書テンプレートまたは一部完成文書のリポジトリ314は、システムによってインスタンス化され得る、空のリッチwebアプリケーション文書および一部完成文書の両方を含む。例えば、文書テンプレートまたは一部完成文書のリポジトリ314は、リッチwebアプリケーション文書、誘導インタビュー(guided interview)の一ステージ、またはウィザード・プロセスを含むことができる。本明細書で使用される文書テンプレートは、フォーム、一部完成文書、または1人もしくは複数人のユーザによって署名を施されているが、完成させるには1つもしくは複数の追加の署名を必要とする一部完成文書を含むが、これらに限定されない。文書テンプレートは、例えば、ビジネス取引または契約とすることができる。データ記憶デバイス316は、ランニング文書リポジトリ318を含む。この例では、ランニング文書リポジトリ318は、エンドユーザ用に作成されて、現在、完全な取引記録になる過程にある、文書テンプレートおよび一部完成文書のインスタンスを含む。
【0034】
webブラウザ・クライアント320は、ハイパーテキスト転送プロトコル(HTTP)送信エンジン322と、非同期Java(R)ScriptおよびXML(AJAX)ならびにJava(R)Scriptエンジン324と、セキュア・ソケット・レイヤ(SSL)モジュール326と、ハイパーテキスト・マークアップ言語(HTML)レンダラ328と、ユーザ私有鍵330と、ハイパーテキスト・マークアップ言語(HTML)文書332を含む。webブラウザ・クライアント320のコンポーネントは、この実施形態では、完全に機能するハイパーテキスト・マークアップ言語(HTML)文書にとって必要とされる、典型的なコンポーネントの例である。webブラウザ・クライアント320は、セキュア・ソケット・レイヤ(SSL)認証のためにユーザの私有鍵材料にアクセスできる、信用できるアプリケーションである。この実施形態では、ユーザ体験は、webアプリケーション・サーバ302によってクライアントサイドに動的に送付されるハイパーテキスト・マークアップ言語(HTML)文書と結び付けられる、これらの事前に存在する信用できるコンポーネントによってもっぱら支配される。このシステムのためには、他のクライアントサイド・ソフトウェアは必要とされないので、このシステムで達成できるアプリケーション挙動の一例は、ゼロ・フットプリント・アプリケーションの挙動である。ゼロ・フットプリント・アプリケーションは、サーバ上にすべてが保存されて、クライアントサイド実行可能コードを配備しない、エンドユーザ・アプリケーションである。
【0035】
したがって、この実施形態では、webブラウザ・クライアント320は、webアプリケーション・サーバ302に文書要求334を送信する。要求334は、文書テンプレートまたは一部完成文書のリポジトリ314からの文書テンプレートまたは一部完成文書のインスタンス化を求める要求である。HTTP送信エンジン322は、webアプリケーション・サーバ302に要求334を転送または伝達するために使用される要求/応答プロトコルである。
【0036】
webブラウザ・クライアント320から、文書のインスタンス化を求める要求334を受信したことに応答して、webアプリケーション・サーバ302は、webブラウザ・クライアント320に相互認証要求336を送信し、相互認証を開始する。相互認証を正常に完了するには、正しいユーザ私有鍵材料が使用されなければならない。相互認証は、SSL相互認証を介したシングル・サインオン(single sign-on)、HTTP基本認証(HTTP basic authentication)、または他の非公開鍵基盤(非PKI)認証(non-publickey infrastructure authentication)方法を含むが、これらに限定されない、当技術分野で知られた方法のいずれかを使用して実施することができる。相互認証を正常に完了するため、正しい私有鍵が使用される。webブラウザ・クライアント320は、webアプリケーション・サーバ302に相互認証完了338を送信する。認証が成功した場合、webアプリケーション・サーバ302は、文書ランナ306を始めとするアプリケーション・コンテキストから利用可能な、webブラウザ・クライアント320に関連する公開鍵または他の公開識別情報を作成する。
【0037】
webアプリケーション・サーバ302は、その後、要求された文書テンプレートまたは一部完成文書をインスタンス化し、その文書をwebブラウザ・クライアント320上で利用可能なランタイム・フォーマットに変換する。文書/HTMLトランスレータ304が、文書を適切なランタイム・フォーマットに変換する。例えば、この実施形態では、サーバは、文書/HTMLトランスレータ304を使用して、文書をHTMLおよびJava(R)script/AJAXに変換し、文書送付340を介して図3のwebブラウザ・クライアント320に文書を送付する。
【0038】
HTMLレンダラ328は、webブラウザ・クライアント320においてユーザに表示するために、文書をレンダリングする。AJAXならびにJava(R)Scriptエンジン324は、webブラウザ・クライアント320においてユーザによって行われた文書への変更を反映させるために、webアプリケーション・サーバ302とデータを交換する。データ転送は、ネットワークを介してwebアプリケーション・サーバ302に転送されるメッセージを保護するためにセキュア・ソケット・レイヤ・プロトコルを使用する、SSLモジュール326によって安全に行うことができる。webブラウザ・クライアント320は、その後、文書用に生成されたデジタル署名を求める署名生成要求342を送信する。
【0039】
webアプリケーション・サーバ302は、文書の記入または変更を行うため、また文書がマルチページ文書の場合にページ変更を行うためのエンドユーザ入力と、文書用に生成されたデジタル署名を求める署名生成要求342とを受信した後、エンドユーザ識別情報に基づいて、文書に署名を施す。webアプリケーション・サーバ302は、相互認証プロセス中に、エンドユーザ識別情報を取得する。次に、webアプリケーション・サーバ302は、webブラウザ・クライアント320に署名完了通知344を送信し、文書がデジタル署名を用いて署名されたことをエンドユーザに通知する。webアプリケーション・サーバ302は、その後、署名された文書をサブミットして処理にまわすための、文書サブミット要求346を受信する。そのような処理は、さらなる対話や、他のクライアントによる文書に対する1組の変更および1組の署名を可能にするために、文書テンプレートまたは一部完成文書のリポジトリ314に保存することを含むことができる。
【0040】
図4は、説明的な実施形態による、エンドユーザ要求に応答してトランザクションを完了するためのプロセスを示すフローチャートである。図4のプロセスは、図3のwebアプリケーション・サーバ302などのwebアプリケーション・サーバによって実施される。
【0041】
プロセスは、トランザクション・プロセスを開始または継続するために、文書テンプレートまたは文書のインスタンス化を求める要求を受信することによって開始する(ステップ402)。次に、サーバは、相互認証を開始し(ステップ404)、エンドユーザの相互認証の完了を受信する(ステップ406)。
【0042】
サーバは、その後、要求された文書テンプレートまたは文書をインスタンス化し、その文書をクライアントサイドwebブラウザ・システム上で利用可能なランタイム・フォーマットに変換する(ステップ408)。サーバは、図3の文書/HTMLトランスレータ304などのトランスレータを使用して、文書を変換する。
【0043】
次に、サーバは、修正文書を形成するため、また文書がマルチページ文書の場合にはページを変更するための1組の変更をエンドユーザから受信する(ステップ410)。1組の変更は、本明細書では、変更なし、1つの変更、および2つ以上の変更を含むものとして定義される。修正文書は、本明細書では、変更がない文書、変更が1つある文書、および変更が2つ以上ある文書を含むものとして定義される。サーバは、その後、修正文書用に生成されたデジタル署名を求める要求を受信する(ステップ412)。サーバは、相互認証プロセス中に取得されたエンドユーザ識別情報に基づいて、修正文書に署名を施す(ステップ414)。署名生成中に確立されたデジタル署名と文書の間の関係は、エンベロープト署名(enveloped signature)(デジタル署名が文書内容に添付される、もしくは文書内容内に出現する)、エンベローピング署名(envelopingsignature)(文書内容が署名内に出現する)、または分離署名(separated signature)(署名が独立して保存され、URIもしくは他の外部リソース・ポインタを使用して文書を参照する)を含むが、これらに限定されない、当技術分野で知られた方法のいずれかによることができる。次に、サーバは、修正文書が署名されたことをエンドユーザに知らせる通知をwebブラウザ・クライアントに送信する(ステップ416)。サーバは、その後、完成されて署名が施された文書を処理するよう求める要求を受信し(ステップ418)、プロセスは、その後で終了する。
【0044】
図5は、説明的な実施形態による、署名を生成するためのプロセスを示すフローチャートである。図5のプロセスは、図3のwebアプリケーション・サーバ302などのwebアプリケーション・サーバによって実施される。
【0045】
プロセスは、サーバが、デジタル署名を求める要求を受信した時に開始する(ステップ502)。サーバは、すべての必要とされるメタデータを署名プロパティに追加する(ステップ504)。例えば、メタデータは、タイムスタンプまたはレイアウト・データとすることができる。サーバは、エンドユーザ(署名者)の公開鍵証明書または公開識別情報あるいはその両方を署名プロパティに追加する(ステップ506)。例えば、サーバは、SSL認証において、公開鍵証明書を追加することができる。他の例では、サーバは、非公開鍵基盤認証方法で、公開識別情報を追加することができる。次に、サーバは、リファレンスを署名プロパティに追加する(ステップ508)。リファレンスは、署名に追加される必要なメタデータを示し、将来の署名妥当性検証目的で有用である。サーバは、webアプリケーション・サーバの私有鍵を使用して、修正文書内容、関連リソース、および署名プロパティに対するデジタル署名を生成し(ステップ510)、プロセスは、その後で終了する。
【0046】
図6は、説明的な実施形態による、署名の妥当性検証を行うためのプロセスを示すフローチャートである。図6のプロセスは、図3のwebアプリケーション・サーバ302などのwebアプリケーション・サーバによって実施される。
【0047】
プロセスは、相互認証が成功した後、サーバが、送付する文書を準備する時に開始する(ステップ601)。サーバは、保護リソース用の保存ハッシュ値を取得し、必要に応じて、webアプリケーション・サーバの署名証明書からの公開鍵を用いて暗号解除する(ステップ602)。次に、サーバは、すべての保護リソース用の暗号ハッシュ値を再計算し、保存値と等しいかどうか比較する(ステップ604)。保存ハッシュ値と再計算ハッシュ値が等しい場合、コア妥当性検証成功が発生する。ハッシュ値が等しくない場合、コア妥当性検証は失敗する。
【0048】
サーバは、すべての対応するハッシュ値のペアに関する等価性比較の成功に基づいて、コア妥当性検証が成功したかどうかを判定する(ステップ606)。コア妥当性検証が成功しなかった場合、サーバは、署名妥当性検証失敗を報告する(ステップ608)。コア妥当性検証が成功した場合、サーバは次に、サーバの公開鍵証明書を取得し(ステップ610)、別の妥当性検証チェックを実行して、証明書有効性、満了、および取消チェックが成功したかどうかを判定する(ステップ612)。それらのチェックが成功しなかった場合、サーバは、署名妥当性検証失敗を報告する(ステップ608)。
【0049】
それらのチェックが成功した場合、サーバは次に、デジタル署名から署名者の公開鍵証明書を取得する(ステップ614)。署名者の識別情報が公開鍵証明書と共に提供される場合、サーバは、証明書有効性、満了、および取消チェックが成功したかどうかを判定する(ステップ616)。チェックが成功しなかった場合、サーバは、署名妥当性検証失敗を報告する(ステップ608)。チェックが成功した場合、サーバは、署名メタデータによって含意される他のすべての妥当性チェックを実行して、認証を判定する(ステップ618)。最終チェックが成功しなかった場合、サーバは、署名妥当性検証失敗を報告する(ステップ608)。最終チェックが成功した場合、文書のデジタル署名は有効であり(ステップ620)、プロセスは、その後で終了する。ゼロまたは1以上のデジタル署名の妥当性が検証されると、文書は、クライアントサイドで処理され得るフォーマットに変換され、その後、クライアント・エンドユーザに送付される。
【0050】
異なる表された実施形態におけるフローチャートおよびブロック図は、装置、方法、およびコンピュータ・プログラム製品のいくつかの可能な実施の構成、機能、および動作を示している。この点で、フローチャートまたはブロック図の各ブロックは、1つまたは複数の指定された機能を実施するための1つまたは複数の実行可能命令を含むコンピュータ使用可能または可読プログラム・コードのモジュール、セグメント、または部分を表すことができる。いくつかの代替実施では、ブロック内で言及される1つまたは複数の機能は、図において言及された順序と異なる順序で発生してもよい。例えば、いくつかのケースでは、連続して示された2つのブロックは、含まれる機能に応じて、実質的に同時に実行されてよく、または時には逆の順序で実行されてよい。
【0051】
したがって、異なる実施形態は、特に、相互認証が可能なwebブラウザ以外の特別なコンピュータ・コードをクライアント装置に配備またはインストールすることなしに、電子文書にデジタル署名を施し、そのデジタル署名の妥当性検証を行うための、コンピュータ実施方法、装置、およびコンピュータ・プログラム製品を提供する。
【0052】
デジタル署名は、webアプリケーション・サーバの私有鍵を用いて生成されるが、署名メタデータは、相互認証中に取得されるエンドユーザ(署名者)の公開識別情報を少なくとも含む。一実施形態では、クライアント上でのエンドユーザの私有鍵が関係する相互認証が成功した後に初めて、公開識別情報がwebアプリケーション・サーバによって取得され得るように、エンドユーザの公開鍵証明書が、公開識別情報を提供する。
【0053】
デジタル署名妥当性検証は、webアプリケーション・サーバの公開鍵証明書を用いたコア妥当性検証に加えて、署名者の公開識別情報の妥当性検証を少なくとも含む、署名メタデータに関する妥当性検証ステップも含む。
【0054】
本発明は、すべてのハードウェア実施形態、すべてのソフトウェア実施形態、またはハードウェア要素およびソフトウェア要素の両方を含む実施形態の形態を取ることができる。好ましい一実施形態では、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むが、これらに限定されない、ソフトウェアで実施される。
【0055】
さらに、本発明は、コンピュータまたは任意の命令実行システムによって使用されるプログラム・コード、またはそれらに関連するプログラム・コードを提供する、コンピュータ使用可能またはコンピュータ可読媒体から入手可能な、コンピュータ・プログラム製品の形態を取ることができる。この説明の趣旨では、コンピュータ使用可能またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって使用されるプログラム、またはそれらに関連するプログラムを格納、保存、伝達、伝播、または転送することができる、任意の有形な装置とすることができる。
【0056】
媒体は、電子、磁気、光、電磁気、赤外線、または半導体システム(または装置もしくはデバイス)とすることができ、あるいは伝播媒体とすることができる。コンピュータ可読媒体の例は、半導体または固体メモリ、磁気テープ、着脱可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、固定磁気ディスク、および光ディスクを含む。現在における光ディスクの例は、コンパクト・ディスク−リード・オンリ・メモリ(CD−ROM)、コンパクト・ディスク−リード/ライト(CD−R/W)、およびDVDを含む。
【0057】
プログラム・コードの保存または実行あるいはその両方に適したデータ処理システムは、システム・バスを介してメモリ要素に直接的または間接的に結合された、少なくとも1つのプロセッサを含む。メモリ要素は、プログラム・コードを実際に実行している最中に利用されるローカル・メモリ、大容量ストレージ、および実行中に大容量ストレージからコードを取り出さなければならない回数を減らすために、少なくともいくらかのプログラム・コードの一時記憶を提供するキャッシュ・メモリを含むことができる。
【0058】
(キーボード、ディスプレイ、ポインティング・デバイスなどを含むが、これらに限定されない)入力/出力すなわちI/Oデバイスは、直接的に、または仲介I/Oコントローラを介して、システムに結合することができる。
【0059】
ネットワーク・アダプタも、システムに結合することができ、データ処理システムを、介在する私的または公的ネットワークを介して、他のデータ処理システムまたはリモート・プリンタもしくは記憶デバイスに結合することを可能にする。モデム、ケーブル・モデム、およびイーサネット(R)・カードは、現在利用可能なタイプのネットワーク・アダプタの中のほんのいくつかである。
【0060】
本発明の説明が、例示および説明を目的として提供されたが、網羅的であること、または開示された形態に本発明を限定することは意図していない。多くの修正および変形が、当業者には明らかであろう。本発明の原理、実践的応用を最もよく説明するように、また他の当業者が本発明を理解して、企図される具体的な使用に適した様々な修正が施された様々な実施形態を可能にするように、実施形態は選択され、説明された。
【図面の簡単な説明】
【0061】
【図1】説明的な実施形態が実施され得る、データ処理システムのネットワークの絵図である。
【図2】説明的な実施形態が実施され得る、データ処理システムのブロック図である。
【図3】説明的な実施形態に従ってデジタル署名が生成される際のデータ・フローを示すブロック図である。
【図4】説明的な実施形態による、リッチ・コンテンツ文書に対するデジタル署名を作成するためのプロセスを示すフローチャートである。
【図5】説明的な実施形態による、webアプリケーション・サーバによってデジタル署名を生成するためのプロセスを示すフローチャートである。
【図6】説明的な実施形態による、デジタル署名の妥当性検証を行うためのプロセスを示すフローチャートである。
【符号の説明】
【0062】
100 ネットワーク・データ処理システム
102 ネットワーク
104 サーバ
106 サーバ
108 記憶ユニット
110 クライアント
112 クライアント
114 クライアント
200 データ処理システム
202 通信構造
204 プロセッサ・ユニット
206 メモリ
208 永続記憶
210 通信ユニット
212 入力/出力ユニット
214 ディスプレイ
216 コンピュータ使用可能プログラム・コード
218 コンピュータ可読媒体
220 コンピュータ・プログラム製品
300 ネットワーク・データ処理システム
302 webアプリケーション・サーバ
304 文書/HTMLトランスレータ
306 文書ランナ
308 アクセス・コントローラ
310 署名ジェネレータ
312 署名バリデータ
314 文書テンプレートまたは一部完成文書のリポジトリ
316 データ記憶デバイス
318 ランニング文書リポジトリ
320 webブラウザ・クライアント
322 ハイパーテキスト転送プロトコル(HTTP)送信エンジン
324 非同期Java(R)ScriptおよびXML(AJAX)ならびにJava(R)Scriptエンジン
326 セキュア・ソケット・レイヤ(SSL)モジュール
328 ハイパーテキスト・マークアップ言語(HTML)レンダラ
330 ユーザ私有鍵
332 ハイパーテキスト・マークアップ言語(HTML)文書
334 文書要求
336 相互認証要求
338 相互認証完了
340 文書送付
342 署名生成要求
344 署名完了通知
346 文書サブミット要求

【特許請求の範囲】
【請求項1】
リッチ・コンテンツ文書に対するデジタル署名を生成するためのコンピュータ実施方法であって、
クライアントによる、電子文書のインスタンス化を求める要求を受信するステップと、
webアプリケーション・サーバと前記クライアントの間の相互認証の正常完了に応答して、前記電子文書を前記クライアントに提供するステップと、
修正文書を形成するための、前記電子文書に関連する1組の変更を受信するステップと、
前記クライアントから、前記修正文書のためのデジタル署名を生成するよう求める要求を受信したことに応答して、前記webアプリケーション・サーバの私有鍵と前記クライアントに関連するエンドユーザの識別情報とを使用して、前記デジタル署名を生成するステップと、
前記デジタル署名を用いて、前記修正文書に署名を行うステップと、
を含むコンピュータ実施方法。
【請求項2】
前記webアプリケーション・サーバが、ゼロ・フットプリント・サーバである、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記修正文書用の前記デジタル署名を生成するよう求める前記要求を受信したことに応答して、前記デジタル署名を形成するために、メタデータとリファレンスとをデジタル署名プロパティに追加するステップであって、前記リファレンスは、前記デジタル署名プロパティに追加される前記メタデータを詳しく述べるものである、ステップ
をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項4】
前記メタデータが、前記クライアントに関連する公開鍵証明書または公開識別情報を含む、請求項3に記載のコンピュータ実施方法。
【請求項5】
前記電子文書を前記クライアントに提供するステップが、
複数の保護リソース用の保存ハッシュ値を取得するステップと、
デジタル署名生成中に前記webアプリケーション・サーバの前記私有鍵を用いて暗号化されたすべての保存ハッシュ値を、前記webアプリケーション・サーバの公開鍵を用いて暗号解除するステップと、
前記複数の保護リソース用の暗号ハッシュ値を再計算するステップと、
前記暗号ハッシュ値を前記保存ハッシュ値と比較するステップと、
をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項6】
前記暗号ハッシュ値と前記保存ハッシュ値との比較から、前記暗号ハッシュ値と前記保存ハッシュ値とは等しいという結果が得られたことに応答して、コア妥当性検証成功を指示するステップと、
前記暗号ハッシュ値と前記保存ハッシュ値との比較から、前記暗号ハッシュ値と前記保存ハッシュ値とは等しくないという結果が得られたことに応答して、コア妥当性検証失敗を指示するステップと、
をさらに含む、請求項5に記載のコンピュータ実施方法。
【請求項7】
前記コア妥当性検証成功に応答して、前記デジタル署名内の前記webアプリケーション・サーバの公開鍵証明書を、無効性、満了、および取消の少なくとも1つに関してチェックするステップと、
前記webアプリケーション・サーバの前記公開鍵証明書が無効であること、満了していること、または取り消されていることに応答して、サーバ証明書妥当性検証失敗を指示するステップと、
前記webアプリケーション・サーバの前記公開鍵証明書が有効であり、満了しておらず、取り消されていないとの判定に応答して、サーバ証明書妥当性検証成功を指示するステップと、
をさらに含む、請求項6に記載のコンピュータ実施方法。
【請求項8】
前記サーバ証明書妥当性検証成功に応答して、署名者の公開鍵証明書を取得するステップであって、前記署名者は、前記クライアントに関連する前記エンドユーザである、ステップと、
前記署名者の前記公開鍵証明書を、無効性、満了、および取消の少なくとも1つに関してチェックするステップと、
前記署名者の前記公開鍵証明書が無効であること、満了していること、または取り消されていることに応答して、署名者識別情報妥当性検証失敗を指示するステップと、
前記署名者の前記公開鍵証明書が有効であり、満了しておらず、取り消されていないとの判定に応答して、署名者識別情報妥当性検証成功を指示するステップと、
をさらに含む、請求項7に記載のコンピュータ実施方法。
【請求項9】
前記サーバ証明書妥当性検証成功に応答して、署名者の公開識別情報を取得するステップであって、前記署名者は、前記クライアントに関連する前記エンドユーザである、ステップと、
前記署名者の前記公開識別情報を、無効性、満了、および取消の少なくとも1つに関してチェックするステップと、
前記署名者の前記公開識別情報が無効であること、満了していること、または取り消されていることに応答して、署名者識別情報妥当性検証失敗を指示するステップと、
前記署名者の前記公開識別情報が有効であり、満了しておらず、取り消されていないとの判定に応答して、署名者識別情報妥当性検証成功を指示するステップと、
をさらに含む、請求項7に記載のコンピュータ実施方法。
【請求項10】
署名者識別情報妥当性検証成功に応答して、デジタル署名メタデータによって含意される妥当性チェックを実行するステップと、
前記デジタル署名メタデータによって含意された前記妥当性チェックの少なくとも1つの失敗に応答して、メタデータ妥当性検証失敗を指示するステップと、
前記デジタル署名メタデータによって含意されたすべての妥当性チェックの成功に応答して、メタデータ妥当性検証成功を指示するステップと、
をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項11】
コア妥当性検証失敗、サーバ証明書妥当性検証失敗、署名者識別情報妥当性検証失敗、またはメタデータ妥当性検証失敗に応答して、署名妥当性検証失敗を前記エンドユーザに報告するステップと、
コア妥当性検証成功、サーバ証明書妥当性検証成功、署名者識別情報妥当性検証成功、およびメタデータ妥当性検証成功に応答して、署名妥当性検証成功を前記エンドユーザに報告するステップと、
をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項12】
クライアントによる、電子文書のインスタンス化を求める要求を受信するためのコンピュータ使用可能プログラム・コードと、
webアプリケーション・サーバと前記クライアントの間の相互認証の正常完了に応答して、前記電子文書を前記クライアントに提供するためのコンピュータ使用可能プログラム・コードと、
修正文書を形成するための、前記電子文書に関連する1組の変更を受信するためのコンピュータ使用可能プログラム・コードと、
前記クライアントから、前記修正文書のためのデジタル署名を生成するよう求める要求を受信したことに応答して、前記webアプリケーション・サーバの私有鍵と前記クライアントに関連するエンドユーザの識別情報とを使用して、前記デジタル署名を生成するためのコンピュータ使用可能プログラム・コードと、
前記デジタル署名を用いて、前記修正文書に署名を行うためのコンピュータ使用可能プログラム・コードと、
を備える、コンピュータ使用可能媒体の保存されたコンピュータ・プログラム。
【請求項13】
バス・システムと、
前記バス・システムに結合された通信システムと、
前記バス・システムに結合されたメモリであって、コンピュータ使用可能プログラム・コードを含むメモリと、
前記バス・システムに結合された処理ユニットであって、クライアントによる、電子文書のインスタンス化を求める要求を受信し、webアプリケーション・サーバと前記クライアントの間の相互認証の正常完了に応答して、前記電子文書を前記クライアントに提供し、修正文書を形成するための、前記電子文書に関連する1組の変更を受信し、前記クライアントから、前記修正文書のためのデジタル署名を生成するよう求める要求を受信したことに応答して、前記webアプリケーション・サーバの私有鍵と前記クライアントに関連するエンドユーザの識別情報とを使用して、前記デジタル署名を生成し、前記デジタル署名を用いて、前記修正文書に署名を行うための前記コンピュータ使用可能プログラム・コードを実行する処理ユニットと、
を備えるデータ処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2009−147919(P2009−147919A)
【公開日】平成21年7月2日(2009.7.2)
【国際特許分類】
【出願番号】特願2008−289708(P2008−289708)
【出願日】平成20年11月12日(2008.11.12)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】