(57)【要約】      （修正有）【課題】電子署名付きメッセージに追記をしても、署名後の利用時の文書構造の変換を不要にすることができるメッセージ署名方法を提供する。【解決手段】計算機Ａ１０の署名対象抽出部１１は、記憶部１３から読み出した構造化文書を構成する複数の文書要素からなるメッセージに対し、特定の名前空間に属する文書要素を署名対象として抽出する。署名付与部１２は、署名対象抽出部１１により抽出された署名対象に電子署名を付与する。署名付与部は電子署名付きメッセージを、計算機Ｂ２０に送信する。そして、計算機Ｂ２０の追記情報判定部２１は、計算機Ａ１０から電子署名付きメッセージを受信し、追記情報が特定の名前空間に属すかを判定する。追記情報判定部の判定の結果、追記情報が特定の名前空間に属さない場合、追記情報挿入部２２は、メッセージに追記情報を挿入する。追記情報挿入部は、追記情報を挿入したメッセージを計算機Ｃ３０に送信する。【選択図】図１
2008140043.tif 000002
【特許請求の範囲】
【請求項１】
構造化文書を構成する複数の文書要素からなるメッセージを提供する情報処理装置が、前記メッセージに署名する署名方法であって、
前記情報処理装置として、前記メッセージを記憶する第１の記憶部と、第１の署名対象抽出部と、第１の署名付与部とを有する第１の情報処理装置を備え、
前記第１の署名対象抽出部は、前記メッセージに署名が要求されると、前記第１の記憶部に記憶された前記メッセージから、前記メッセージにある所定の識別情報に基づき共通の特徴を持つ文書要素を第１の署名対象として抽出し、
前記第１の署名付与部は、抽出された前記第１の署名対象に署名を付与する
ことを特徴とする署名方法。
【請求項２】
前記情報処理装置として、追記情報を記憶する第２の記憶部と、追記情報判定部と、追記情報挿入部とを有する第２の情報処理装置をさらに備え、
前記追記情報判定部は、前記第１の情報処理装置から署名付きのメッセージを受信すると、前記第２の記憶部から取得した前記追記情報が前記署名付きのメッセージに挿入可能か否かを判定し、
前記追記情報挿入部は、前記追記情報判定部の判定結果により前記追記情報が挿入可能であれば、該追記情報を前記署名付きのメッセージに挿入する
ことを特徴とする請求項１に記載の署名方法。
【請求項３】
前記第２の情報処理装置は、第２の署名対象抽出部と、第２の署名付与部とをさらに有し、
前記第２の署名対象抽出部は、前記メッセージに署名が要求されると、前記署名付きのメッセージから、前記第１の署名対象の所定の識別情報に基づき共通の特徴を持つ文書要素に属し、かつ前記追加情報にある所定の識別情報に基づき共通の特徴を持つ文書要素を第２の署名対象として抽出し、
前記第２の署名付与部は、抽出された前記第２の署名対象に署名を付与する
ことを特徴とする請求項２に記載の署名方法。
【請求項４】
構造化文書を構成する複数の文書要素からなるメッセージを提供する情報処理装置が、前記メッセージに署名する署名方法であって、
前記情報処理装置は、追記情報を記憶する記憶部と、追記情報判定部と、追記情報挿入部と、署名対象抽出部と、署名付与部とを有し、
前記追記情報判定部は、他の情報処理装置からメッセージを受信すると、前記記憶部から取得した前記追記情報が前記メッセージに挿入可能か否かを判定し、
前記追記情報挿入部は、前記追記情報判定部の判定結果により前記追記情報が挿入可能であれば、該追記情報を前記メッセージに挿入し、
前記署名対象抽出部は、前記メッセージから既に署名が付与されている所定の識別情報に基づき共通の特徴を持つ文書要素に属し、かつ前記追加情報の署名対象となる所定の識別情報に基づき共通の特徴を持つ文書要素を署名対象として抽出し、
前記署名付与部は、抽出された前記署名対象に署名を付与する
ことを特徴とする署名方法。
【請求項５】
構造化文書を構成する複数の文書要素からなるメッセージを提供する情報処理装置が、前記メッセージに署名する署名方法であって、
前記情報処理装置は、前記メッセージを記憶する第１の記憶部と、第１の署名対象抽出部と、第１の署名付与部とを有する第１の情報処理装置を備え、
前記第１の署名対象抽出部は、前記メッセージに署名が要求されると、前記第１の記憶部に記憶された前記メッセージから、前記メッセージにある特定の名前空間に属する文書要素を第１の署名対象として抽出し、
前記第１の署名付与部は、抽出された前記第１の署名対象に署名を付与する
ことを特徴とする署名方法。
【請求項６】
前記情報処理装置として、追記情報を記憶する第２の記憶部と、追記情報判定部と、追記情報挿入部とを有する第２の情報処理装置をさらに備え、
前記追記情報判定部は、前記第１の情報処理装置から署名付きのメッセージを受信すると、前記第２の記憶部から取得した前記追記情報の名前空間と前記署名付きのメッセージの署名対象の名前空間が同じか否かを判定し、
前記追記情報挿入部は、前記追記情報判定部の判定結果が同じでないとき、前記追記情報を前記署名付きのメッセージに挿入する
ことを特徴とする請求項５に記載の署名方法。
【請求項７】
前記第２の情報処理装置は、第２の署名対象抽出部と、第２の署名付与部とをさらに有し、
前記第２の署名対象抽出部は、前記メッセージに署名が要求されると、前記署名付きのメッセージから、前記第１の署名対象の名前空間に属する文書要素に属し、かつ前記追加情報の名前空間に属する文書要素を第２の署名対象として抽出し、
前記第２の署名付与部は、抽出された前記第２の署名対象に署名を付与する
ことを特徴とする請求項６に記載の署名方法。
【請求項８】
構造化文書を構成する複数の文書要素からなるメッセージを提供する情報処理装置が、前記メッセージに署名する署名方法であって、
前記情報処理装置は、追記情報を記憶する記憶部と、追記情報判定部と、追記情報挿入部と、署名対象抽出部と、署名付与部とを有し、
前記追記情報判定部は、他の情報処理装置からメッセージを受信すると、前記記憶部から取得した前記追記情報の名前空間と前記メッセージの署名対象の名前空間が同じか否かを判定し、
前記追記情報挿入部は、前記追記情報判定部の判定結果が同じでないとき、前記追記情報を前記メッセージに挿入し、
前記署名対象抽出部は、前記メッセージから、既に署名が付与されている特定の名前空間に属する文書要素に属し、かつ前記追加情報の名前空間に属する文書要素を署名対象として抽出し、
前記署名付与部は、抽出された前記署名対象に署名を付与する
ことを特徴とする署名方法。
【請求項９】
構造化文書を構成する複数の文書要素からなるメッセージに署名する情報処理装置であって、
提供する前記メッセージを記憶する記憶部と、
前記記憶部に記憶されたメッセージから、前記メッセージにある特定の名前空間に属する文書要素を署名対象として抽出する署名対象抽出部と、
抽出された前記署名対象に署名を付与する署名付与部とを有する
ことを特徴とする情報処理装置。
【請求項１０】
構造化文書を構成する複数の文書要素からなるメッセージに署名する情報処理装置であって、
追記情報を記憶する記憶部と、
他の情報処理装置から署名付きのメッセージを受信すると、前記記憶部から取得した前記追記情報の名前空間と前記署名付きのメッセージの署名対象の名前空間が同じか否かを判定する追記情報判定部と、
前記追記情報判定部の判定結果が同じでないとき、前記追記情報を前記署名付きのメッセージに挿入する追記情報挿入部とを有する
ことを特徴とする情報処理装置。
【請求項１１】
前記署名付きのメッセージから、前記署名対象の名前空間に属する文書要素に属し、前記追加情報の名前空間に属する文書要素を署名対象として抽出する署名対象抽出部と、
抽出された前記署名対象に署名を付与する署名付与部とを有する
ことを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
構造化文書を構成する複数の文書要素からなるメッセージに署名する情報処理装置であって、
前記追記情報を記憶する記憶部と、
他の情報処理装置からメッセージを受信すると、前記追記情報の名前空間と前記メッセージの署名対象の名前空間が同じか否かを判定する追記情報判定部と、
前記追記情報判定部の判定結果が同じでないとき、前記追記情報を前記メッセージに挿入する追記情報挿入部と、
前記メッセージから、既に署名が付与されている名前空間に属する文書要素に属し、かつ前記追加情報の名前空間に属する文書要素を署名対象として抽出する署名対象抽出部と、
前記署名対象抽出部で抽出された前記署名対象に署名を付与する署名付与部とを有する
ことを特徴とする情報処理装置。
【請求項１３】
受信したメッセージの署名が有効であるか否かを検証する署名検証部を有する
ことを特徴とする請求項１２に記載した情報処理装置。
【請求項１４】
構造化文書を構成する複数の文書要素からなるメッセージに署名する署名プログラムであって、
コンピュータに、
他のコンピュータからメッセージを受信すると、前記メッセージに追記する情報である追記情報の名前空間と前記メッセージの署名対象の名前空間が同じか否かを判定する追記情報判定処理と、
前記追記情報判定処理の判定結果が同じでないとき、前記追記情報を前記メッセージに挿入する追記情報挿入処理と、
前記メッセージから、既に署名が付与されている名前空間に属する文書要素に属し、かつ前記追加情報の名前空間に属する要素を署名対象として抽出する署名対象抽出処理と、
前記署名対象抽出処理により抽出された前記署名対象に署名を付与する署名付与処理とを
実行させることを特徴とする署名プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子署名付きメッセージに追記をしても、署名後の利用時の文書構造の変換を不要にすることができる署名方法、情報処理装置、および署名プログラムに関する。
【背景技術】
【０００２】
ネットワークを介して複数の計算機がメッセージを交換する場合、メッセージの正当性を保証するために電子署名が用いられている。電子署名は暗号化された署名情報であり、公開鍵暗号方式を用いてメッセージの送信者を保証およびメッセージが改ざんされていないことを証明する。
【０００３】
計算機が電子署名付きメッセージを送信する際、最終的な受信者以外の計算機を中継することがある。まず、送信元の計算機が中継用の計算機に電子署名付きメッセージを送信する。次に、中継用の計算機は、送信元の計算機から電子署名付きメッセージを受信し、最終的な受信者の計算機にメッセージを転送する。ここで、中継用の計算機が電子署名付きメッセージを変更すると、最終的な受信者の計算機は、送信元の計算機が付与した電子署名の有効性を検証できない。
【０００４】
そこで、電子署名付きメッセージの署名対象ではない部分に、メッセージの変換情報を挿入した変換メッセージを生成することで、電子署名の有効性を保ったまま、データに追加、削除等の変更を加える技術が開示されている（特許文献１参照）。
【０００５】
また、複数の計算機がメッセージを交換する際の標準的なデータフォーマットとして、ＸＭＬ（Extensible Markup Language）により記述されたＸＭＬ文書が用いられている。ＸＭＬはマークアップ言語の一つであり、標準化団体であるＷ３Ｃ（World Wide Web Consortium）が勧告している言語である。そして、Ｗ３Ｃは、ＸＭＬ文書を含む任意のデジタルデータに対する署名の方法について規定したＸＭＬ署名を勧告している。
【０００６】
また、それぞれの語彙が世界で一意に定まる名前を持つために、名前空間という概念がある。名前空間とは、インターネット上に存在する情報資源の場所を指し示す記述方式であるＵＲＩ（Uniform Resource Identifier）と、語彙を組み合わせることで、衝突の可能性を低減しつつ参照を容易にする概念である。全てのタグにＵＲＩを記述するのは煩雑なため、名前空間では、これらのＵＲＩに別名を割り当て、それを接頭辞として用いている。
【特許文献１】特開２００５−２２３３９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載された方法では、電子署名付きメッセージへの追記が可能になったが、受信された電子署名付きメッセージから追記した文書を得るために、文書構造の変換、例えば、ＸＳＬＴ（XML Stylesheet Language Transformations）変換をする必要がある。ＸＳＬＴ変換後は、電子署名が無効になる問題がある。すなわち、メッセージの署名後と、メッセージの利用時とにおいて、文書構造が変更になるためである。また、署名が有効な状態のメッセージに対して、追記された文書により、文書構造の指定位置が変更になるため、ＸＰａｔｈ（XML Path Language）を有効に利用できない問題もある。なお、ＸＰａｔｈは、ＸＭＬ文書の特定の部分を指定する言語構文である。
【０００８】
さらに、ワークフローのような回覧の場合、追記に関する情報量が多くなる場合がある。追記した回数だけ文書構造の変換処理をする必要があり、それに伴い変換情報も増えていく問題がある。
【０００９】
本発明は、前記の課題を解決するための発明であって、電子署名付きメッセージに追記をしても、署名後の利用時の文書構造の変換を不要にすることができる署名方法、情報処理装置、および署名プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
前記目的を達成するため、電子署名を付与する構造化文書を構成する複数の文書要素からなるメッセージにおいて、メッセージにある所定の識別情報に基づき共通の特徴を持つ文書要素、例えば、特定の名前空間に属する文書要素だけを対象に署名と署名検証をする。そのため、署名対象と異なる名前空間に属する文書要素や属性であれば、署名された文書要素内に直接追加することができる。
【発明の効果】
【００１１】
本発明によれば、電子署名付きメッセージに、電子署名の有効性を保ったまま追記でき、追記したメッセージを利用する際に文書構造の変換を不要にすることができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施形態について図面を参照して説明する。
本実施形態では、ＳＯＡＰ（Simple Object Access Protocol）を用いたメッセージ交換を例に説明する。ＳＯＡＰとは、ＸＭＬとＨＴＴＰをベースとした、他の装置に存在するデータやサービスを呼び出すためのプロトコルである。また、本実施形態では、ＸＭＬ署名を例に説明する。なお、本発明は、ＳＯＡＰメッセージに限定されることなく、他の構造化文書を用いたメッセージに適用できる。また、本発明は、ＸＭＬ署名に限定されず、他の電子署名を用いることもできる。また、本実施形態では、署名に用いる名前空間情報と、メッセージと、追記情報とを記憶部に記憶しているが、動的に生成してもよい。
【００１３】
なお、「構造化文書」は、文章にタグをつけて構造を示す方法を採用した文書とその形式をいい、文書記述言語ＳＧＭＬ（Standard Generalized Markup Language）等があり、簡略化形態として、ＸＭＬ、ＨＴＭＬ（Hyper Text Markup Language）がある。広義の定義として、構造化文書は、帳票に記載された文章を含む文書、画像と文章との組み合せの文書等も含まれる。
【００１４】
《第１の実施形態》
図１は、本発明を適用するためのシステム構成を示す図である。本実施形態のシステムは、計算機Ａ（第１の情報処理装置）１０と、計算機Ｂ（第２の情報処理装置）２０と、計算機Ｃ３０を有し、それぞれがネットワーク４０により接続されている。
【００１５】
計算機Ａ１０は、ＸＭＬ署名付きＳＯＡＰメッセージ（以下メッセージ）を、計算機Ｂ２０を中継して、計算機Ｃ３０に送信する装置である。計算機Ａ１０は、構造化文書を構成する複数の文書要素からなるメッセージから特定の名前空間に属する要素を署名対象として抽出する署名対象抽出部１１と、抽出された署名対象にＸＭＬ署名を付与する署名付与部１２と、署名に用いる名前空間情報およびＸＭＬ文書であるメッセージが記憶された記憶部１３と、ネットワーク４０を介して他の装置とメッセージを送受信する通信処理部１４を有する。
【００１６】
計算機Ｂ２０は、計算機Ａ１０から受信したメッセージに対し、情報の追加または削除をし、計算機Ｃ３０にメッセージを転送する装置である。計算機Ｂ２０は、追記情報が計算機Ａ１０から受信したメッセージの署名対象の名前空間に属するか否かを判定する追記情報判定部２１と、計算機Ａ１０から受信したメッセージに追記情報を挿入する追記情報挿入部２２と、追記情報が記憶された記憶部２３と、エラー情報を出力装置に出力する表示部２４と、ネットワーク４０を介して他の装置とメッセージを送受信する通信処理部２５を有する。
【００１７】
計算機Ｃ３０は、計算機Ｂ２０を中継して計算機Ａ１０が送信したメッセージを受信する装置である。計算機Ｃ３０は、署名検証のために受信したメッセージから特定の名前空間に属する文書要素を署名対象として抽出する署名対象抽出部３１と、受信したメッセージに付与されたＸＭＬ署名の有効性を検証する署名検証部３２と、エラー情報を出力装置に出力する表示部３３と、ネットワーク４０を介して他の装置とメッセージを送受信する通信処理部３４を有する。以上説明した計算機Ａ１０、計算機Ｂ２０および計算機Ｃ３０には、いずれも汎用的なコンピュータシステムを用いることができる。
【００１８】
図２は、図１で列挙した各計算機のハードウェア構成を示す図である。各計算機は、図２に示すように、ＣＰＵ５１と、メモリ５２と、ＨＤＤ等の外部記憶装置５３と、キーボードやマウス等の入力装置５４と、モニタやプリンタ等の出力装置５５と、ネットワークに接続するための通信制御装置５６と、これらの各装置を接続するバス５７を有している。ＣＰＵ５１がメモリ５２にロードされた所定のプログラムを実行することで、各装置の各機能が実施される。
【００１９】
計算機Ａ１０、計算機Ｂ２０および計算機Ｃ３０の各機能について、計算機Ａ１０用のプログラムの場合は計算機Ａ１０のＣＰＵ５１が、計算機Ｂ２０用のプログラムの場合は計算機Ｂ２０のＣＰＵ５１が、計算機Ｃ３０用のプログラムの場合は計算機Ｃ３０のＣＰＵ５１が、それぞれ実行することで実現する。また、計算機Ａ１０の記憶部１３には、計算機Ａ１０のメモリ５２または外部記憶装置５３を使用し、計算機Ｂ２０の記憶部２３には、計算機Ｂ２０のメモリ５２または外部記憶装置５３を使用する。
【００２０】
次に、システム全体の処理フローを説明する。
図３は、システムの処理フローを示す図である。まず、計算機Ａ１０の署名対象抽出部１１は、メッセージに署名が要求されると、記憶部１３に記憶されたＸＭＬ文書である構造化文書を構成する複数の文書要素からなるメッセージから、特定の名前空間に属する文書要素を署名対象として抽出する（Ｓ３０１）。そして、署名付与部１２は、抽出された署名対象にＸＭＬ署名を付与する（Ｓ３０２）。そして、署名付与部１２は、通信処理部１４を介してＸＭＬ署名付きメッセージを計算機Ｂ２０に送信する（Ｓ３０３）。
【００２１】
計算機Ｂ２０の追記情報判定部２１は、計算機Ａ１０から通信処理部２５を介してＸＭＬ署名付きメッセージを受信し、記憶部２３から取得した追記情報が当該メッセージに挿入可能かを判定する（Ｓ３０４）。Ｓ３０４の判定の結果、追記情報が挿入可能であれば、追記情報挿入部２２は追記情報を当該メッセージに挿入する（Ｓ３０５）。そして、追記情報挿入部２２は、追記情報を挿入したメッセージを、通信処理部２５を介して計算機Ｃ３０に送信する（Ｓ３０６）。
【００２２】
計算機Ｃ３０の署名検証部３２は、計算機Ｂ２０から通信処理部３４を介して追記情報が挿入されたメッセージを受信し、計算機Ａ１０により付与されたＸＭＬ署名が有効か当該メッセージを検証する（Ｓ３０７）。
【００２３】
次に、ＸＭＬ署名付きメッセージについて説明する。
図４は、計算機Ａの送信メッセージの一例を示す図である。計算機Ａ１０（図１参照）は、記憶部１３に記憶されているメッセージに、ＸＭＬ署名を付与する。なお、図のメッセージには、説明を容易にするため、実際には含まれない行番号（各行の先頭に記述された２桁の数字）を含んでいる。
【００２４】
メッセージは、ルート要素としてEnvelope要素（行番号「０２」〜「４１」）を有する。Envelope要素は子要素として、Header要素（行番号「０４」〜「２６」）と、Body要素（行番号「２７」〜「４０」）を有する。
【００２５】
Header要素には、メッセージを処理するアプリケーションが解釈すべき付加的な情報を記述する。図４に示す例では、Header要素は子要素として、ＸＭＬ署名に関する情報を記述するSignature要素（行番号「０５」〜「２５」）を有する。そして、Signature要素は子要素として、署名情報を記述するSignedInfo要素（行番号「０６」〜「２３」）と、署名値を記述するSignatureValue要素（行番号「２４」）を有する。SignedInfo要素は子要素として、正規化アルゴリズムを記述するCanonicalizationMethod要素（行番号「０７」〜「０８」）と、署名値計算アルゴリズムを記述するSignatureMethod要素（行番号「０９」〜「１０」）と、ＸＭＬ署名の対象を記述するReference要素（行番号「１１」〜「２２」）を有する。「Reference URI=」で指定される署名対象文書を、以降「オリジナルのＸＭＬ署名対象」という。
【００２６】
図４に示す例では、Reference要素に記述された「URI="#Order"」（行番号「１２」）によって指定された、Id属性が「Order」である、後述するBody要素の子要素のPurchaseOrder要素（行番号「２８」〜「３９」）がオリジナルのＸＭＬ署名対象である。Reference要素は子要素として、署名対象生成アルゴリズムを記述するTransforms要素（行番号「１３」〜「１８」）と、ダイジェスト値計算アルゴリズムを記述するDigestMethod要素（行番号「１９」〜「２０」）と、ダイジェスト値を記述するDigestValue要素（行番号「２１」）を有する。
【００２７】
Transforms要素は子要素として、Transform要素（行番号「１４」〜「１７」）を有する。Transform要素のAlgorithm属性に本方法のアルゴリズム名を記載することで、オリジナルのＸＭＬ署名対象から特定の名前空間に属する文書要素のみを署名対象として抽出する。特定の名前空間に属する文書要素の抽出については後述する。
【００２８】
Body要素には、送信するメッセージの内容を記述する。図４に示す例では、Body要素は、子要素として、PurchaseOrder要素を有する。PurchaseOrder要素は子要素として、書籍情報を記述するBooks要素（行番号「３２」〜「３８」）を有する。Books要素は、子要素として、書籍名を記述するTitle要素（行番号「３３」）と、著者名を記述するAuthor要素（行番号「３４」）と、Sample要素（行番号「３５」〜「３７」）を有する。Sample要素は子要素として、副題を記述するSubtitle要素（行番号「３６」）を有する。
【００２９】
計算機Ａ１０の記憶部１３には、ＸＭＬ署名が付与される前のメッセージが記憶されている。すなわち、図４に示すHeader要素（行番号「０４」〜「２６」）を除いたメッセージが記憶されている。
【００３０】
次に、オリジナルのＸＭＬ署名対象から、特定の名前空間に属する文書要素を抽出する方法を説明する。
【００３１】
図５は、計算機Ａの送信メッセージから取得したオリジナルのＸＭＬ署名対象を示す図である。なお、図のメッセージには、説明を容易にするため、実際には含まれない行番号（各行の先頭に記述された２桁の数字）を含んでいる。オリジナルのＸＭＬ署名対象は、ルート要素としてPurchaseOrder要素（行番号「０１」〜「１２」）を有する。PurchaseOrder要素は、デフォルトの名前空間「http://example.com/order」と接頭辞itemの名前空間「http://example.com/order/item」の２つの名前空間を有する。PurchaseOrder要素は子要素として、書籍情報を記述するBooks要素（行番号「０５」〜「１１」）を有する。Books要素は子要素として、書籍名を記述するTitle要素（行番号「０６」）と、著者名を記述するAuthor要素（行番号「０７」）と、Sample要素（行番号「０８」〜「１０」）を有する。Sample要素は子要素として、副題を記述するSubtitle要素（行番号「０９」）を有する。
【００３２】
図６は、特定の名前空間に属する署名対象の抽出例を示す図である。なお、図のメッセージには、説明を容易にするため、実際には含まれない行番号（各行の先頭に記述された２桁の数字）を含んでいる。図示する例では、オリジナルのＸＭＬ署名対象から、接頭辞itemの名前空間「http://example.com/order/item」に属する文書要素を取得し、署名対象とする。そして、署名対象要素のルート要素に特定の名前空間の宣言を記述する。また、特定の名前空間に属さない文書要素は、その子要素も含めて署名対象から除外する。具体的には、Books要素（行番号「０１」〜「０５」）、Title要素（行番号「０３」）およびAuthor要素（行番号「０４」）を署名対象とする。そして、署名対象要素のルート要素であるBooks要素に特定の名前空間の宣言を記述する（行番号「０２」）。そして、特定の名前空間に属さないSample要素の子要素であるSubtitle要素は署名対象に含めない。
【００３３】
図７は、特定の名前空間に属する署名対象の抽出例を示す他の図である。なお、図のメッセージには、説明を容易にするため、実際には含まれない行番号（各行の先頭に記述された２桁の数字）を含んでいる。図示する例では、オリジナルのＸＭＬ署名対象から、接頭辞itemの名前空間「http://example.com/order/item」に属する文書要素を取得し、署名対象とする。そして、署名対象要素のルート要素に特定の名前空間の宣言を記述する。また、特定の名前空間に属さない文書要素は、その子要素に特定の名前空間に属する文書要素を有する場合、テキストノードを削除し、一律に要素名をDummyに置換する。具体的には、Books要素（行番号「０１」〜「０８」）、Title要素（行番号「０３」）、Author要素（行番号「０４」）およびSubtitle要素（行番号「０６」）を署名対象とする。そして、署名対象要素のルート要素であるBooks要素に特定の名前空間の宣言を記述する（行番号「０２」）。そして、特定の名前空間に属するSubtitle要素（図５：行番号「０９」）を子要素に有するSample要素（図５：行番号「０８」と「１０」）は、要素名をDummy（行番号「０５」と「０７」）に置換する。
【００３４】
次に、計算機Ａの処理について説明する。
図８は、計算機Ａの処理フローを示す図である。まず、計算機Ａ１０の署名付与部１２は、メッセージに署名が要求されると、記憶部１３に記憶されたＸＭＬ文書であるメッセージを読み出す（Ｓ８０１）。そして、署名付与部１２は、署名情報を設定するSignature要素を作成し、メッセージのヘッダ要素に追加する。そして、署名対象抽出部１１は、記憶部１３に記憶された名前空間情報を読み出し、署名対象となる名前空間を取得する（Ｓ８０２）。取得した署名対象の名前空間は、Transform要素の子要素であるNamespace要素に設定する。具体的には「http://example.com/order/item」を署名対象の名前空間とする場合、
「<nta:Namespace>http://example.com/order/item</nta:Namespace>」
（図４：行番号「１６」）と記述する。このNamespace要素は複数個記述でき、これにより複数の名前空間を署名対象にできる。そして、署名対象抽出部１１は、メッセージ中のオリジナルのＸＭＬ署名対象から、Ｓ８０２で取得した名前空間に属する文書要素を取得し、署名対象とする（Ｓ８０３）。
【００３５】
具体的には、図６または図７が署名対象である特定の名前空間に属する文書要素となる。そして、署名付与部１２は、メッセージのReference要素内の「DigestMethod Algorithm=」に設定するアルゴリズムを用いて、Ｓ８０３で取得した署名対象からダイジェスト値（ハッシュ値）を求める（Ｓ８０４）。求めたダイジェスト値は、DigestValue要素に設定する。そして、署名付与部１２は、Reference要素と、そのダイジェスト値が埋め込まれたSignedInfo要素を、「CanonicalizationMethod Algorithm=」に設定するアルゴリズムを用いて正規化し、SignatureMethod要素に設定するアルゴリズムを用いて署名する（Ｓ８０５）。署名の値はSignatureValue要素に設定する。そして、署名付与部１２は、通信処理部１４を用いて、ＸＭＬ署名付きメッセージを計算機Ｂ２０に送信する（Ｓ８０６）。
【００３６】
このように、計算機Ａ１０では、メッセージに対し、特定の名前空間に属する文書要素のみを署名対象とし、ＸＭＬ署名をする。これにより、特定の名前空間に属さない文書要素であれば、計算機Ａ１０の付与したＸＭＬ署名の有効性を保持しつつ、メッセージに追記することができる。
【００３７】
次に、計算機Ｂの処理について説明する。
図９は、計算機Ｂの処理フローを示す図である。まず、計算機Ｂ２０の追記情報判定部２１は、通信処理部２５を介して計算機Ａ１０から送信されたメッセージを受信する（Ｓ９０１）。そして、追記情報判定部２１は、計算機Ａ１０から受信したメッセージより、署名対象の名前空間を取得する（Ｓ９０２）。すなわち、追記情報判定部２１は、メッセージのTransform要素の子要素であるNamespace要素から、署名対象の名前空間を取得する。そして、追記情報判定部２１は、記憶部２３に記憶された追記情報を読み出す（Ｓ９０３）。具体的には、読み出した追記情報は「書評を記述する、名前空間”http://example.com/order/postscript"に属するComment要素を、Books要素の子要素に挿入」とする。
【００３８】
そして、追記情報判定部２１は、Ｓ９０３で読み出した追記情報が属する名前空間と署名対象の名前空間とを比較して等しいか否かを判定する（Ｓ９０４）。追記情報が属する名前空間と署名対象の名前空間とを比較した結果が等しい場合（Ｓ９０４：Ｙｅｓ）、ＸＭＬ署名が壊れるため、追記情報を挿入することができない。よって、表示部２４は出力装置５５に追記情報を挿入できない旨をエラーとして表示する（Ｓ９０５）。追記情報が属する名前空間と署名対象の名前空間とを比較した結果が異なる場合（Ｓ９０４：Ｎｏ）、追記情報挿入部２２は、追記情報判定部２１から追記情報とメッセージを取得し、追記情報をメッセージに挿入する（Ｓ９０６）。
【００３９】
よって、計算機Ｂ２０の追記情報挿入部２２が挿入する追記情報は、署名対象に含まれない。そして、追記情報挿入部２２は、通信処理部２５を用いて、追記済みＸＭＬ署名付きメッセージを計算機Ｃ３０に送信する（Ｓ９０７）。具体的には、図１０に示すメッセージを計算機Ｃ３０に送信する。
【００４０】
図１０は、計算機Ｂの送信メッセージを示す図である。図１０に示すように、図４に示すメッセージに、追記情報（図１０：行番号「３１」と「３９」）として、書籍の批評を挿入したメッセージである。
【００４１】
このように、計算機Ｂ２０では、署名対象とする名前空間に属さない文書要素を、追記情報としてメッセージに挿入する。これにより、計算機Ｂ２０は、計算機Ａ１０の付与したＸＭＬ署名の有効性を保持しつつ、メッセージに追記する。
【００４２】
次に、計算機Ｃの処理フローについて説明する。
図１１は、計算機Ｃの処理フローを示す図である。まず、計算機Ｃ３０の署名検証部３２は、通信処理部３４を介して計算機Ｂ２０から送信されたメッセージを受信する（Ｓ１１０１）。そして、署名検証部３２は、受信したメッセージに付与されているＸＭＬ署名の有効性を検証する（Ｓ１１０２）。署名者である計算機Ａ１０の署名付与部１２は、自身の秘密鍵を用いて記憶部１３に記憶されたメッセージ（ＸＭＬ文書）の所定の署名対象部分を暗号化してＸＭＬ署名を生成し、当該メッセージに生成したＸＭＬ署名を付与して送信する。そして、計算機Ｃ３０の署名検証部３２は、署名者の公開鍵を用いて当該メッセージに付与されたＸＭＬ署名を復号し、復号結果と署名対象部分とを比較して、正しい内容かどうかを検証する。この際、署名対象抽出部３１を用いて、計算機Ａ１０の署名対象抽出部１１と同様に、署名対象を取得する。このようにＸＭＬ署名を用いることにより、計算機Ａ１０が送信したメッセージが改ざんされていないこと、また、署名者が計算機Ａ１０であることを保証できる。
【００４３】
なお、本実施形態における計算機Ｂ２０の追記情報挿入部２２により挿入された追記情報は、署名対象に含まれない。よって追記情報挿入部２２が追記情報を挿入した場合もＸＭＬ署名は有効なままである。復号結果と署名対象部分を比較した結果ＸＭＬ署名が有効でない場合（Ｓ１１０３：Ｎｏ）、表示部３３は出力装置５５にＸＭＬ署名が有効でない旨をエラーとして表示する（Ｓ１１０４）。復号結果と署名対象部分を比較した結果ＸＭＬ署名が有効である場合（Ｓ１１０３：Ｙｅｓ）、表示部３３はPurchaseOrder要素を出力装置５５に出力し、計算機Ｃ３０のユーザに追記済みメッセージを表示してもよい。また、署名検証部３２は、追記済みメッセージを外部記憶装置５３に記憶してもよい。
【００４４】
このように、計算機Ｃ３０は、署名対象となる名前空間のみを対象としてＸＭＬ署名検証をする。そのため、計算機Ｃ３０は、計算機Ａ１０が付与したＸＭＬ署名の有効性を検証する際、改ざんと追記情報を区別できる。これにより、計算機Ｃ３０は、計算機Ｂ２０が追記情報を挿入したメッセージを受信できる。
【００４５】
本実施形態により、計算機Ｂ２０は、計算機Ａ１０のＸＭＬ署名の有効性を保持しつつ、署名対象の文書要素に情報を追記することができる。また、計算機Ｃ３０は、計算機Ａ１０によるＸＭＬ署名の有効性を検証した上で、計算機Ｂ２０が追記情報を挿入したメッセージを取得することができる。
【００４６】
本実施形態によれば、第１の情報処理装置（例えば、計算機Ａ）は、記憶部１３と、署名対象抽出部１１と、署名付与部１２とを有する。署名対象抽出部１１は、記憶部１３に記憶された構造化文書を構成する複数の文書要素からなるメッセージから、メッセージにある所定の識別情報に基づき共通の特徴を持つ文書要素（例えば、特定の名前空間に属する文書要素）を第１の署名対象として抽出し、署名付与部１２は、抽出された第１の署名対象に署名を付与することができる。
【００４７】
さらに、本実施形態によれば、第２の情報処理装置（例えば、計算機Ｂ）は、記憶部２３と、追記情報判定部２１と、追記情報挿入部２２とを有する。追記情報判定部２１は、第１の情報処理装置から署名付きの構造化文書を構成する複数の文書要素からなるメッセージを受信すると、記憶部２３から取得した追記情報が署名付きのメッセージに挿入可能か否かを判定し、追記情報挿入部２２は、追記情報判定部２１の判定結果により追記情報が挿入可能であれば、追記情報を前記署名付きのメッセージに挿入することができる。
【００４８】
《第２の実施形態》
図１２は、本発明を実施するための他のシステム構成を示す図である。図１２に示すように、図１と比較して、計算機ＢＡ（２０Ａ）の構成が、計算機Ｂ（２０）の構成と異なる。図１に記載の同一構成については、同一番号を付しており、説明は省略する。計算機ＢＡ（２０Ａ）は、署名対象とする名前空間に属さない文書要素を、追記情報としてメッセージに挿入後、追記情報を署名対象としＸＭＬ署名をする。これにより、計算機ＢＡ（２０Ａ）は、計算機Ａ１０の付与したＸＭＬ署名の有効性を保持しつつ、メッセージに計算機ＢＡ（２０Ａ）が署名する情報を追記することができる。
【００４９】
計算機ＢＡ（２０Ａ）は、計算機Ａ１０から受信したメッセージに対し、情報の追加をし、計算機Ｃ３０にメッセージを転送する装置である。計算機ＢＡ（２０Ａ）は、追記情報が計算機Ａ１０から受信したメッセージの署名対象の名前空間に属するか判定する追記情報判定部２１と、計算機Ａ１０から受信したメッセージに追記情報を挿入する追記情報挿入部２２と、追記情報挿入後のメッセージから追記情報の名前空間に属する文書要素を署名対象として抽出する署名対象抽出部２６と、抽出された署名対象にＸＭＬ署名を付与する署名付与部２７と、追記情報が記憶された記憶部２３と、エラー情報を出力装置に出力する表示部２４と、ネットワーク４０を介して他の装置とメッセージを送受信する通信処理部２５を有する。
【００５０】
次に、計算機ＢＡの処理について説明する。
図１３は、計算機ＢＡの処理フローを示す図である。まず、計算機ＢＡ（２０Ａ）の追記情報判定部２１は、通信処理部２５を介して計算機Ａ１０から送信されたメッセージを受信する（Ｓ９０１）。そして、追記情報判定部２１は、計算機Ａ１０から受信したメッセージより、署名対象の名前空間を取得する（Ｓ９０２）。そして、追記情報判定部２１は、記憶部２３に記憶された追記情報を読み出す（Ｓ９０３）。そして、追記情報判定部２１は、Ｓ９０３で読み出した追記情報が属する名前空間と署名対象の名前空間とを比較して、等しいか否かを判定する（Ｓ９０４）。
【００５１】
追記情報が属する名前空間と署名対象の名前空間とを比較した結果が等しい場合（Ｓ９０４：Ｙｅｓ）、追記情報を追記するとＸＭＬ署名が壊れるため、追記情報を挿入することができない。よって、表示部２４は出力装置５５に追記情報を挿入できない旨をエラーとして表示する（Ｓ９０５）。追記情報が属する名前空間と署名対象の名前空間とを比較した結果が異なる場合（Ｓ９０４：Ｎｏ）、追記情報挿入部２２は、追記情報判定部２１から追記情報とメッセージを取得し、追記情報をメッセージに挿入する（Ｓ９０６）。よって、計算機Ｂ２０の追記情報挿入部２２が挿入する追記情報は、計算機Ａ１０の署名対象に含まれない。以上の処理まで（Ｓ９０１〜Ｓ９０６）は、図９と同様である。
【００５２】
次に、追記情報に署名が要求されると、署名付与部２７は、署名情報を設定するSignature要素を新たに作成し、メッセージのHeader要素に追加する。そして、署名対象抽出部２６は、追記情報判定部２１からＳ９０２で取得した署名対象の名前空間と、追記情報の名前空間を取得（抽出）し（Ｓ１３０１）、Transform要素の子要素であるNamespace要素に設定する。具体的には、図１４を参照して説明する。
【００５３】
図１４は、計算機ＢＡの送信メッセージを示す図である。なお、図のメッセージには、説明を容易にするため、実際には含まれない行番号（各行の先頭に記述された２桁の数字）を含んでいる。新たに追加された行は、Header要素に、行番号「２６」〜「４７」，Body要素に、行番「５３」，「６１」である。「http://example.com/order/postscript」が追記情報の名前空間である場合、行番号「３７」と行番号「３８」が記述される。
【００５４】
図１３に戻り、署名付与部２７は、計算機Ａ１０の署名付与部１２と同様にし、抽出した要素からダイジェスト値を求め（Ｓ１３０２）、ダイジェスト値を使用しメッセージに署名をする（Ｓ１３０３）。そして、署名付与部２７は、通信処理部２５を用いて、追記済みＸＭＬ署名付きメッセージを計算機Ｃ３０に送信する（Ｓ９０７）。具体的には、図１４に示すメッセージを計算機Ｃ３０に送信する。図１４に示すメッセージは、図４に示すメッセージに、追記情報と追記情報に対する署名（図１４において枠で囲われた部分）を挿入したメッセージである。
【００５５】
このように、計算機ＢＡ（２０Ａ）では、署名対象とする名前空間に属さない文書要素を、追記情報としてメッセージに挿入後、追記情報を署名対象としＸＭＬ署名をする。これにより、計算機ＢＡ（２０Ａ）は、計算機Ａ１０の付与したＸＭＬ署名の有効性を保持しつつ、メッセージに計算機Ｂ２０が署名する情報を追記することができる。
【００５６】
本実施形態によれば、情報処理装置（例えば、計算機ＢＡ）は、記憶部２３と、追記情報判定部２１と、追記情報挿入部２２と、署名対象抽出部２６と、署名付与部２７とを有する。追記情報判定部２１は、他の情報処理装置（例えば、計算機Ａ）から、構造化文書を構成する複数の文書要素からなるメッセージを受信すると、記憶部２３から取得した追記情報がメッセージに挿入可能か否かを判定し、追記情報挿入部２２は、追記情報判定部２１の判定結果により追記情報が挿入可能であれば、追記情報をメッセージに挿入し、署名対象抽出部２６は、メッセージから、既に署名が付与されている所定の識別情報に基づき共通の特徴を持つ文書要素（例えば、特定の名前空間に属する文書要素）に属し、かつ追加情報の所定の識別情報に基づき共通の特徴を持つ文書要素を署名対象として抽出し、署名付与部２７は、抽出された署名対象に署名を付与することができる。
【００５７】
本発明の実施形態は、署名内への追記方法として、特定の名前空間を対象として署名することができる。このため、本発明のメリットを以下に示す。
（１）構造化文書の変換が不要のため、受信したメッセージの処理が軽い。
（２）構造化文書の変換が不要のため、受信したメッセージの署名は有効のままである。
（３）追記に関するデータ量が少ない。
（４）追記したデータに署名が可能となる。すなわち、複数回の署名ができる。
【００５８】
本発明の具体的な利用形態のビジネス例として、次に情報提供サービスについて説明する。
【００５９】
図１５は、証券会社の企業分析レポート提供サービスを示す図である。Ｘ社１５０１は、自社のＩＲ（Investor Relation）情報を、投資家および証券会社等へＷｅｂサービスとして配信する。ＩＲとは、投資家を対象にした企業の広報活動のことをいう。証券会社Ｙ社１５０２は、投資家（クライアント）１５０５へのＷｅｂサービスの付加価値サービスとして、アナリストＡ１５０３とアナリストＢ１５０４の分析結果を添付し、投資家１５０５へ配信する。Ｘ社１５０１の電子署名入りのＩＲ情報１５１０に、アナリストＡ１５０３とアナリストＢ１５０４の電子署名入りの分析レポート１５１１を付加することができる。本発明によれば、電子署名付きメッセージに追記をしても、電子署名後の利用時の文書構造の変換を不要にすることができるメッセージ署名方法を提供することができる。
【００６０】
本発明は、前記の実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。例えば、電子ワークフローによるＸＭＬ文書等の構造化文書の回覧等にも本発明を適用することができる。また、本発明の実施形態のシステム構成として、計算機Ａ、計算機Ｂ、計算機Ｃのように分けて説明したが、ネットワークに接続されている各計算機が、計算機Ａ、計算機Ｂ、計算機Ｃを統合した機能部、すなわち、署名対象抽出部、署名付与部、記憶部、追記情報判定部、追記情報挿入部、署名検証部を有していてもよい。
【図面の簡単な説明】
【００６１】
【図１】本発明を適用するためのシステム構成を示す図である。
【図２】図１で列挙した各計算機のハードウェア構成を示す図である。
【図３】システムの処理フローを示す図である。
【図４】計算機Ａの送信メッセージの一例を示す図である。
【図５】計算機Ａの送信メッセージから取得したオリジナルのＸＭＬ署名対象を示す図である。
【図６】特定の名前空間に属する署名対象の抽出例を示す図である。
【図７】特定の名前空間に属する署名対象の抽出例を示す他の図である。
【図８】計算機Ａの処理フローを示す図である。
【図９】計算機Ｂの処理フローを示す図である。
【図１０】計算機Ｂの送信メッセージを示す図である。
【図１１】計算機Ｃの処理フローを示す図である。
【図１２】本発明を適用するための他のシステム構成を示す図である。
【図１３】計算機Ｂの処理フローを示す図である。
【図１４】計算機Ｂの送信メッセージを示す図である。
【図１５】証券会社の企業分析レポート提供サービスを示す図である。
【符号の説明】
【００６２】
１０    計算機Ａ（第１の情報処理装置）
１１，２６    署名対象抽出部
１２，２７    署名付与部
１３，２３    記憶部
１４，２５，３４    通信処理部
２０    計算機Ｂ（第２の情報処理装置）
２０Ａ    計算機ＢＡ
２１    追記情報判定部
２２    追記情報挿入部
２４，３３    表示部
３０    計算機Ｃ
３１    署名対象抽出部
３２    署名検証部
４０    ネットワーク
５１    ＣＰＵ
５２    メモリ
５３    外部記憶装置
５４    入力装置
５５    出力装置
５６    通信制御装置
【図１】
2008140043.tif 000003
【図２】
2008140043.tif 000004
【図３】
2008140043.tif 000005
【図４】
2008140043.tif 000006
【図５】
2008140043.tif 000007
【図６】
2008140043.tif 000008
【図７】
2008140043.tif 000009
【図８】
2008140043.tif 000010
【図９】
2008140043.tif 000011
【図１０】
2008140043.tif 000012
【図１１】
2008140043.tif 000013
【図１２】
2008140043.tif 000014
【図１３】
2008140043.tif 000015
【図１４】
2008140043.tif 000016
【図１５】
2008140043.tif 000017