(57)【要約】【課題】電子署名の付されたメッセージに、電子署名の有効性を保持しつつ、データの追加、削除などの変更を加える。【解決手段】計算機Ｂ２０の変換情報挿入部２１は、計算機Ａ１０から電子署名が付与されたメッセージを受信し、当該メッセージに変換情報を挿入する。そして、変換情報挿入部２１は、変換規則を追加したメッセージを、計算機Ｃ３０に送信する。計算機Ｃ３０の署名検証部３１は、計算機Ｂ２０から変換情報が挿入されたメッセージを受信し、受信したメッセージについて、計算機Ａ１０により付与されたＸＭＬ署名が有効か否かを検証する。そして、ＸＭＬ署名が有効な場合、変換情報適用部３２は、変換情報に基づいて、ＸＭＬ署名が付与されたメッセージにデータの追加または削除などの変更を加える【選択図】図１
2005223390.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置がメッセージを変換するメッセージ変換方法であって、
前記情報処理装置は、演算処理部と記憶部とを有し、
前記演算処理部は、
外部システムから電子署名が付与されたメッセージを取得する取得ステップと、
前記メッセージに記述された電子署名に関する情報に基づいて、前記メッセージの電子署名の対象部分を特定する特定ステップと、
前記メッセージを所定の規則により変換するための変換情報を、前記記憶部から読み出す読み出しステップと、
前記特定ステップで特定した電子署名の対象部分を除く前記メッセージのいずれかの部分に、前記変換情報を挿入し、前記変換情報が挿入された変換メッセージを生成する生成ステップと、を実行すること
を特徴とするメッセージ変換方法。
【請求項２】
請求項１記載のメッセージ変換方法であって、
前記変換メッセージに付与された電子署名の有効性を検証する検証ステップと、
電子署名の有効性が検証できた場合、前記変換メッセージに挿入された前記変換情報に基づいて、前記取得ステップにおいて取得したメッセージを変換する変換ステップと、をさらに実行すること
を特徴とするメッセージ変換方法。
【請求項３】
請求項１または請求項２記載のメッセージ変換方法であって、
前記取得ステップにおいて取得したメッセージに対する変更指示を受け付ける指示受付ステップと、
前記変更指示に基づいて、前記メッセージを所定の規則により変換するための変換情報を生成する生成ステップと、をさらに実行すること
を特徴とするメッセージ変換方法。
【請求項４】
請求項２記載のメッセージ変換方法であって、
前記検証ステップは、電子署名の有効性を示す有効署名情報を、前記変換メッセージの電子署名の対象部分の構成要素毎に、前記記憶部に記憶し、
前記変換ステップは、前記メッセージの変換を行った後、前記記憶部から前記構成要素毎の有効署名情報を読み出し、当該構成要素毎の有効署名情報から前記メッセージの変換により電子署名の有効性が失われた構成要素の有効署名情報を削除し、当該削除後の構成要件毎の有効署名情報に基づいて、変換後のメッセージの電子署名の有効性を、前記構成要素毎に出力装置に出力すること
を特徴とするメッセージ変換方法。
【請求項５】
請求項１から請求項４のいずれか１項に記載のメッセージ変換方法であって、
前記電子署名が付与されたメッセージは、構造化文書であること
を特徴とするメッセージ変換方法。
【請求項６】
情報処理装置がメッセージを変換するメッセージ変換プログラムであって、
前記情報処理装置は、演算処理部と記憶部とを有し、
前記演算処理部に、
外部システムから電子署名が付与されたメッセージを取得する取得ステップと、
前記メッセージに記述された電子署名に関する情報に基づいて、前記メッセージの電子署名の対象部分を特定する特定ステップと、
前記メッセージを所定の規則により変換するための変換情報を、前記記憶部から読み出す読み出しステップと、
前記特定ステップで特定した電子署名の対象部分を除く前記メッセージのいずれかに、前記変換情報を挿入し、前記変換情報が挿入された変換メッセージを生成する生成ステップと、を実行させること
を特徴とするメッセージ変換プログラム。
【請求項７】
請求項６記載のメッセージ変換プログラムであって、
前記変換メッセージに付与された電子署名の有効性を検証する検証ステップと、
前記電子署名の有効性が検証できた場合、前記変換メッセージに挿入された前記変換情報に基づいて前記メッセージを変換する変換ステップと、をさらに実行させること
を特徴とするメッセージ変換プログラム。
【請求項８】
メッセージを変換するメッセージ変換システムであって、
第１の情報処理装置と、第２の情報処理装置とを有し、
前記第１の情報処理装置は、
電子署名が付与されたメッセージを、所定の規則により変換するための変換情報を記憶する記憶手段と、
外部システムから前記電子署名が付与されたメッセージを取得する取得手段と、
前記メッセージに記述された電子署名に関する情報に基づいて、前記メッセージの電子署名の対象部分を特定する特定手段と、
前記特定手段が特定した電子署名の対象部分を除く前記メッセージのいずれかの部分に、前記記憶手段に記憶された変換情報を挿入し、前記変換情報が挿入された変換メッセージを生成する生成手段と、
前記生成手段が生成した変換メッセージを、前記第２の情報処理装置に送信する送信手段と、を有し、
前記第２の情報処理装置は、
前記第１の情報処理装置が送信した変換メッセージを受信する受信手段と、
前記変換メッセージに付与された電子署名の有効性を検証する検証手段と、
電子署名の有効性が検証できた場合、前記変換メッセージに挿入された変換情報に基づいて、前記前記第１の情報処理装置の取得手段が取得したメッセージを変換する変換手段と、有すること
を特徴とするメッセージ変換システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子署名が付加されたメッセージを変換するための技術に関する。
【背景技術】
【０００２】
ネットワークを介して複数の計算機がメッセージ交換を行なう場合、当該メッセージの正当性を保証するために電子署名（デジタル署名）が用いられている。電子署名は、暗号化された署名情報であり、公開鍵暗号方式を用いてメッセージの送信者およびメッセージが改ざんされていないことを証明するものである。
【０００３】
また、複数の計算機が、メッセージ交換を行なう際の標準的なデータフォーマットとして、ＸＭＬ（Extensible Markup Language）により記述されたＸＭＬ文書が用いられている。ＸＭＬは、マークアップ言語の１つであり、標準化団体であるＷ３Ｃ（World Wide Web Consortium）が勧告している言語である。そして、Ｗ３Ｃは、ＸＭＬ文書を含む任意のデジタルデータに対する署名の方法について規定したＸＭＬ署名を勧告している。（非特許文献１参照）。
【０００４】
【非特許文献１】Ｗ３Ｃ、”XML-Signature Syntax and Processing”、[online]、2002年2月12日、[2003年7月27日検索]、インターネット＜URL：http://www.w3.org/TR/xmldsig-core/＞
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、計算機が電子署名を付したメッセージを送信する際に、最終的な受信者以外の計算機を中継してメッセージを送信することがある。すなわち、送信元の計算機は、最初に中継用の計算機に電子署名を付したメッセージを送信する。そして、中継用の計算機は、送信元の計算機により電子署名が付されたメッセージを受信し、最終的な受信者の計算機にメッセージを転送する。ここで、中継用の計算機は、電子署名が付されたメッセージに修正を加えて、最終的な受信者の計算機に転送する場合がある。この場合、最終的な受信者の計算機は、送信元の計算機が付した電子署名の有効性を検証することができない。すなわち、最終的な受信者の計算機は、当該メッセージが送信元の計算機が送信したものであって、かつ、メッセージが改ざんされていないこと検証することができない。
【０００６】
このように、従来のＸＭＬ署名の技術では、送信元の計算機は、中継用の計算機によって変更される可能性あるメッセージの部分をあらかじめ把握し、変更される可能性あるメッセージの部分については、署名の対象から外す必要があった。また、メッセージに電子署名が付与されている場合、中継用の計算機は、電子署名の有効性を保持したまま電子署名が付与されたメッセージに変更を加えることができなかった。
【０００７】
本発明は上記事情を鑑みてなされたものであり、本発明の目的は、電子署名の付されたメッセージに、電子署名の有効性を保ったままデータの追加、削除などの変更を加えることを可能とすることにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明では、電子署名が付与されたメッセージの署名対象部分以外のいずれかの部分に、メッセージの変換情報を挿入した変換メッセージを生成する。
【０００９】
例えば、情報処理装置の演算処理部は、外部システムから電子署名が付与されたメッセージを取得する取得ステップと、前記メッセージに記述された電子署名に関する情報に基づいて、前記メッセージの電子署名の対象部分を特定する特定ステップと、前記メッセージを所定の規則により変換するための変換情報を、前記情報処理装置の記憶部から読み出す読み出しステップと、前記特定ステップで特定した電子署名の対象部分を除く前記メッセージのいずれかの部分に、前記変換情報を挿入し、前記変換情報が挿入された変換メッセージを生成する生成ステップと、を実行する。
【発明の効果】
【００１０】
本発明では、電子署名の付されたメッセージに、電子署名の有効性を保持しつつ、データの追加、削除などの変更を加えることができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の第１の実施の形態を説明する。
【００１２】
本実施形態では、ＳＯＡＰ（Simple Object Access Protocol）を用いたメッセージ交換を例に説明する。ＳＯＡＰは、ＸＭＬをベースとした、他の装置に存在するデータにアクセスするためのプロトコルである。すなわち、ＳＯＡＰによるメッセージ交換では、ＨＴＴＰなどの下位プロトコルを用いて、ＸＭＬにより記述されたＸＭＬ文書であるＳＯＡＰメッセージを、他の装置と送受信する。しかしながら、本願発明は、ＳＯＡＰメッセージに限定されることなく他の形式のメッセージを用いてもよい。例えば、ＸＭＬ文書以外の他の構造化文書（ＨＴＭＬ文書、ＳＧＭＬ文書など）を用いたメッセージに適用することができる。また、本実施形態では、ＸＭＬ署名を例に説明する。しかしながら、本願発明は、ＸＭＬ署名に限定されず、他の電子署名を用いることもできる。
【００１３】
図１は、本発明の第１の実施形態が適用されたメッセージ変換システムの全体構成図である。図示するように本実施形態のメッセージ変換システムは、計算機Ａ１０と、計算機Ｂ２０と、計算機Ｃ３０とを有し、それぞれがインターネットなどのネットワーク４０により接続されている。
【００１４】
計算機Ａ１０は、ＸＭＬ署名が付されたＳＯＡＰメッセージ（以下、メッセージ）を、計算機Ｂ２０を中継して、計算機Ｃに送信する装置である。計算機Ａ１０は、メッセージにＸＭＬ署名を付与する署名付与部１１と、ＸＭＬ文書であるメッセージが記憶された記憶部１２と、ネットワーク４０を介して他の装置とメッセージの送受信を行う通信処理部１３と、を有する。なお、記憶部１２に記憶されたメッセージは、図示しない入力装置によりあらかじめ記憶部１２に記憶されているものとする。
【００１５】
計算機Ｂ２０は、計算機Ａ１０から受信したメッセージに対し情報の追加または削除を行ない、計算機Ｃ３０にメッセージを転送（中継）する装置である。計算機Ｂ２０は、計算機Ａ１０から受信したメッセージに後述する変換情報を挿入する変換情報挿入部２１と、変換情報が記憶された記憶部２２と、ネットワーク４０を介して他の装置とメッセージの送受信を行う通信処理部２３と、を有する。変換情報は、所定の変換規則によって、受信したメッセージに対する情報の追加・削除を指示するための情報であり、図５において後述する。なお、記憶部２２に記憶された変換情報は、図示しない入力装置よりあらかじめ記憶部２２に記憶されているものとする。
【００１６】
計算機Ｃ３０は、計算機Ｂ２０を中継して計算機Ａ１０が送信したメッセージを受信する装置である。計算機Ｃ３０は、受信したメッセージに付与されたＸＭＬ署名の有効性を検証する署名検証部３１と、計算機Ｂ２０により挿入された変換情報をメッセージに適用する変換情報適用部３２と、エラー情報を出力装置に出力する表示部３３と、ネットワーク４０を介して他の装置とメッセージの送受信を行う通信処理部３４と、を有する。
【００１７】
以上説明した、計算機Ａ１０、計算機Ｂ２０および計算機Ｃ３０には、いずれも、例えば図２に示すようなＣＰＵ９０１と、メモリ９０２と、ＨＤＤ等の外部記憶装置９０３と、キーボードやマウスなどの入力装置９０４と、モニタやプリンタなどの出力装置９０５と、ネットワーク接続するための通信制御装置９０６と、これらの各装置を接続するバス９０７と、を備えた汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、ＣＰＵ９０１がメモリ９０２上にロードされた所定のプログラムを実行することにより、各装置の各機能が実現される。
【００１８】
例えば、計算機Ａ１０、計算機Ｂ２０および計算機Ｃ３０の各機能は、計算機Ａ１０用のプログラムの場合は、計算機Ａ１０のＣＰＵ９０１が、計算機Ｂ２０用のプログラムの場合は、計算機Ｂ２０のＣＰＵ９０１が、計算機Ｃ３０用のプログラムの場合は、計算機Ｃ３０のＣＰＵ９０１が、それぞれ実行することにより、実現される。また、計算機Ａ１０の記憶部１２には、計算機Ａ１０のメモリ９０２または外部記憶装置９０３が用いられ、また、計算機Ｂ２０の記憶部２２には、計算機Ｂ２０のメモリ９０２または外部記憶装置９０３が用いられる。なお、計算機Ａおよび計算機Ｂは、入力装置９０２または出力装置を有しない場合もある。また、計算機Ｃは入力装置を有しない場合もある。
【００１９】
次に、メッセージ変換システム全体の処理概要を説明する。
【００２０】
図３は、本システムの処理概要を示すフロー図である。まず、計算機Ａ１０の署名付与部１１は、記憶部１２に記憶されたＸＭＬ文書であるメッセージにＸＭＬ署名を付与する（Ｓ３０１）。そして、署名付与部１１は、通信処理部１３を用いてＸＭＬ署名が付与されたメッセージを計算機Ｂ２０に送信する（Ｓ３０２）。
【００２１】
そして、計算機Ｂ２０の変換情報挿入部２１は、計算機Ａ１０から通信処理部２３を介してＸＭＬ署名が付与されたメッセージを受信し、当該メッセージに変換情報を挿入する（Ｓ３０３）。そして、変換情報挿入部２１は、変換規則を挿入したメッセージを、通信処理部２３を介して計算機Ｃ３０に送信する（Ｓ３０４）。
【００２２】
そして、計算機Ｃ３０の署名検証部３１は、計算機Ｂ２０から通信処理部３４を介して変換情報が挿入されたメッセージを受信する。そして、署名検証部３１は、受信したメッセージについて、計算機Ａ１０により付与されたＸＭＬ署名が有効か否かを検証する（Ｓ３０５）。そして、ＸＭＬ署名が有効な場合、変換情報適用部３２は、変換情報に基づいて、ＸＭＬ署名が付与されたメッセージにデータの追加または削除などの変更を加える（Ｓ３０６）。
【００２３】
次に、ＸＭＬ署名が付与されたメッセージについて説明する。
【００２４】
図４は、計算機Ａ１０の署名付与部１１により、記憶部１２に記憶されているメッセージに、ＸＭＬ署名を付与したメッセージの例を示した図である。なお、図示するメッセージには、説明を容易にするために、実際のメッセージには含まれない行番号（各行の先頭に記載された２桁の数字）を付与している。
【００２５】
図示するようにメッセージは、ルート要素としてEnvelope要素（行番号０２〜２９）を有する。Envelope要素は、ＳＯＡＰメッセージ全体を包む封筒の役割を有し、子要素としてHeader要素（行番号０２〜２２）と、Body要素（行番号２３〜２８）とを有する。
【００２６】
Header要素は、メッセージ管理に関する情報を記述するための要素であり、省略することができる。図４に示す例では、Header要素は、子要素としてＸＭＬ署名に関する情報を記述するためのSignature要素（行番号０４〜２１）を有する。そして、Signature要素は、子要素としてSignedInfo要素（行番号０５〜１９）およびSignaturevalue要素（行番号２０）を有する。SignedInfo要素は、正規化アルゴリズムのＵＲＬが指定されたCanonicalizationMethod（行番号０６、０７）と、暗号化アルゴリズムのＵＲＬが指定されたSignatureMethod（行番号０８、０９）と、ＸＭＬ署名の対象を指定するRefarence（行番号１０〜１８）と、を有する。そして、Signaturevalue要素（行番号２０）には、暗号化された値が設定される。
【００２７】
図４に示す例では、Referenceに記述された「ＵＲＩ＝“＃News”」（行番号１０）が、ＸＭＬ署名の対象であることを示している。すなわち、ＸＭＬ署名の対象は、Id属性が「News」の値を有する要素である。ここで、後述するBody要素の子要素であるNews要素（行番号２４〜２７）は、Id属性が「News」である（行番号２４）。したがって、ＸＭＬ署名の対象は、News要素であることを示している。なお、ＸＭＬ署名の対象をメッセージ全体とする場合は、「ＵＲＩ＝“  ”」とする。
【００２８】
Body要素は、送信するメッセージの内容を記述するための要素であり、Envelope要素の必須の構成要素である。図４に示す例では、Body要素は、子要素としてNews要素（行番号２４〜２７）を有する。そして、前述したように、News要素（行番号２４〜２７）は、「News」の値が設定されId属性（行番号２４）と、子要素として「○×チーム準決勝進出」の値が設定されたHeadLine要素（行番号２５）、および、「○×チームが２−０で勝ち，準決勝進出を決めた」の値が設定されたText要素（行番号２６）を有する。
【００２９】
なお、計算機Ａ１０の記憶部１２には、ＸＭＬ署名が付加される前のメッセージが記憶されている。すなわち、計算機Ａ１０の記憶部１２には、図４に示すHeader要素（行番号０２〜２２）を除いたメッセージが記憶されている。また、メッセージにＸＭＬ署名を付した後（すなわち、署名値を求めた後）、ＸＭＬ署名の対象であるNews要素に変更を加えた場合、ＸＭＬ署名の有効性は失われる。すなわち、メッセージが改ざんされていないことなどを検証することができなくなる。
【００３０】
次に、計算機Ｂ２０の記憶部２２に記憶されている変換情報について説明する。変換情報は、ＸＭＬ署名が付されたメッセージに対する情報の追加、削除などの変更操作を、所定の定義方法・定義規則により、明確かつ一義的に記述したものである。
【００３１】
図５は、変換情報を例示したものである。図示する例では、変換情報は、ルート要素としてModificationInfo要素（行番号０１〜０７）を有する。そして、ModificationInfo要素は、子要素としてType要素（行番号０２）と、Location要素（行番号０３）と、Content要素（行番号０４〜０６）と、を有する。Type要素（行番号０２）には、ＸＭＬ署名が付されたメッセージに対して行なう操作の種別、例えば、「AppendChild」（子要素の追加）、「Delete」（要素の削除）などが記述される。Type要素に「AppendChild」が記述された場合は、Location要素に記述された要素の末尾（最後）に、当該要素の子要素としてContent要素の内容を追加する操作を行うことを意味する。また、Type要素に「Delete」が記述された場合は、Location要素に記述された要素を削除する操作を行うことを意味する。なお、Type要素に「Delete」が記述された場合は、Content要素は省略することができる。また、Type要素には「AppendChild」および「Delete」以外の他の操作種別を記述することも考えられる。例えば、Location要素に記述された要素に、属性を追加する操作種別（「SetAttribute」）などを、記述することができる。
【００３２】
Location要素（行番号０３）には、操作の対象となるノードが記述される。そして、操作の対象は、メッセージのルート要素から操作対象のノードまでを「／」を区切り文字としたパス（要素の所在を示す文字列）を用いて記述される。図５に示すLocation要素の例では、図４に示すメッセージのルート要素（Envelope要素）の子要素（Body要素）の子要素（News要素）が操作の対象の要素である。なお、Type要素が「AppendChild」の場合、操作対象のノードは要素ノードでなくてはならない。一方、Type要素が「Delete」の場合、操作対象のノードは要素ノードである必要はなく、例えば、テキストノードを表す「text()」などを用いて操作対象のノードを記述することもできる。
【００３３】
Content要素（行番号０４〜０６）には、Type要素に記述された操作の種別が「AppendChild」（子要素の追加）の場合、追加する子要素が記述される。このContent要素に記述された子要素は、Location要素に記述された操作対象の要素の末尾（最後）に追加される。図５に示す変換情報の例では、操作対象のNews要素の子要素として「<RelatedInfo>準決勝の相手は△□チーム。</RelatedInfo>」をNews要素の末尾に追加することを示している。
【００３４】
なお、本実施形態では、上述した定義方法・定義規則により変換情報を記述している。しかしながら、本発明はこれに限定されず、複数の計算機間で送受信されるメッセージに対する操作を、明確かつ一義的に記述可能な方法であれば、他の定義規則を用いて変換情報を記述してもよい。
【００３５】
次に、計算機Ｂ２０の処理について説明する。
【００３６】
図６は、計算機Ｂ２０の処理の流れを示す処理フロー図である。まず、計算機Ｂ２０の変換情報挿入部２１は、通信処理部２３を用いて計算機Ａ１０から送信されたメッセージ（図４参照）を受信する（Ｓ６０１）。そして、変換情報挿入部２１は、受信したメッセージからＸＭＬ署名の対象の要素を特定する（Ｓ６０２）。すなわち、変換情報挿入部２１は、メッセージのSignature要素内の「Reference  URI＝」に設定された値をＩｄ属性とする要素を特定する。具体的には「Reference  URI＝“#News”」（図４：行番号１０）より、News要素（行番号２４〜２７）を特定する。
【００３７】
そして、変換情報挿入部２１は、記憶部２２に記憶された変換情報（図５参照）を読み出す（Ｓ６０３）。そして、変換情報挿入部２１は、読み出した変換情報を、受信したメッセージに挿入する（Ｓ６０４）。この場合、変換情報挿入部２１は、Ｓ６０２において特定したＸＭＬ署名の対象の要素以外のいずれかの場所に変換情報を挿入する。例えば、変換情報挿入部２１は、Header要素の先頭または末尾に、あるいは、Body要素の先頭または末尾に変換情報を挿入するなど、あらかじめ定めた挿入規則により、ＸＭＬ署名の対象要素以外の場所に変換情報を挿入する。そして、変換情報挿入部２１は、通信処理部２３を用いて、変換情報が挿入されたメッセージを計算機Ｃ３０に送信する（Ｓ６０５）。
【００３８】
図７に、変換情報挿入部２１により変換情報が挿入されたメッセージの例を示す。図示する例では、メッセージのHeader要素の最初の子要素としてModificationInfo要素（行番号０４〜１０）、すなわち、図５に示す変換情報が挿入されている。
【００３９】
このように、計算機Ｂ１０では、ＸＭＬ署名が付されたメッセージに対し、ＸＭＬ署名対象の要素以外の場所に変換情報を追加する。これにより、計算機Ｂ２０は、ＸＭＬ署名の対象要素に変更を加えることなく、計算機Ａ１０から受信したメッセージに変換情報を追加することができる。すなわち、計算機Ｂ２０は、計算機Ａ１０が付与したＸＭＬ署名の有効性を保持しつつ、情報の追加または削除などメッセージの変更を行うことができる。
【００４０】
次に、計算機Ｃ３０の処理について説明する。
【００４１】
図８は、計算機Ｃ３０の処理の流れを示す処理フロー図である。まず、計算機Ｃ３０の署名検証部３１は、通信処理部３４を用いて計算機Ｂ２０から送信されたメッセージ（図７参照）を受信する（Ｓ８０１）。そして、署名検証部３１は、受信したメッセージに付与されているＸＭＬ署名の有効性を検証する（Ｓ８０２）。このＸＭＬ署名の検証は、一般的なＸＭＬ署名の検証処理と同じである。すなわち、署名者である計算機Ａ１０の署名付与部１１は、自身の秘密鍵を用いて記憶部１２に記憶されたメッセージ（ＸＭＬ文書）の所定の署名対象部分を暗号化してＸＭＬ署名を生成し、当該メッセージに生成したＸＭＬ署名を付加して送信する。そして、計算機Ｃ３０の署名検証部３１は、署名者の公開鍵を用いて当該メッセージに付加されたＸＭＬ署名を復号し、復号結果と署名対象部分とを比較して正しい内容かどうかを検証する。このＸＭＬ署名を用いることにより、計算機Ａ１０が送信したメッセージが改ざんされていないこと、また、署名者が計算機Ａ１０であることを保証することができる。
【００４２】
復号結果と署名対象部分との比較結果が正しくない場合、すなわち、ＸＭＬ署名の有効性が検証できない場合（Ｓ８０３：ＮＯ）、表示部３３は出力装置９０５にＸＭＬ署名が有効でない旨のエラー情報を出力する（Ｓ８０４）。なお、本実施形態における計算機Ｂ２０の変換情報挿入部２１による変換情報の追加は、署名対象以外の要素に挿入されており、署名対象であるNews要素には何の変更も加えられていない。したがって、変換情報挿入部２１が変換情報を追加した場合、ＸＭＬ署名の有効性は保持され、署名検証部３１はＸＭＬ署名の検証に成功する。
【００４３】
復号結果と署名対象部分との比較結果が正しい場合、すなわち、ＸＭＬ署名が有効であると検証できた場合（Ｓ８０３：ＹＥＳ）、変換情報適用部３２は、受信したメッセージに挿入された変換情報を署名対象部分に適用する（Ｓ８０５）。すなわち、変換情報適用部３２は、受信したメッセージに含まれている変換情報（ModificationInfo要素）を取得し、当該要素に記述された変換情報に従ってメッセージの変換を行なう。
【００４４】
例えば図７に示すメッセージの場合、変換情報適用部３２は、ModificationInfo要素（行番号０４〜１０）を取得する。すなわち、変換情報適用部３２は、ModificationInfoのタグで囲まれた部分（＜ModificationInfo＞・・・＜／ModificationInfo＞）を検出する。そして、変換情報適用部３２は、ModificationInfo要素内のType要素に記述された操作種別（AppendChild）を参照し、Location要素に記述された操作対象要素であるNews要素の末尾に、News要素の子要素としてContent要素の内容(<RelatedInfo>準決勝の相手は△□チーム。</RelatedInfo>)を追加する。
【００４５】
図９は、変換情報適用部３２が、ＸＭＬ署名の対象であるNews要素に、変更情報であるModificationInfo要素を適用して、メッセージの変換を行なった結果である。なお、Header要素は、図７と同様であるため省略している。図示するように、News要素の最後の子要素として「<RelatedInfo>準決勝の相手は△□チーム。</RelatedInfo>」（行番号０８）が、追加されている。なお、変換情報適用部３２がメッセージを変換した後、表示部３３は変換後のNews要素を出力装置９０５に出力し、計算機Ｃ３０のユーザーに変換後のメッセージを表示することとしてもよい。また、変換情報適用部３２は、変換後のメッセージを外部記憶装置９０３に記憶することとしてもよい。
【００４６】
このように、計算機Ｃ３０は、ＸＭＬ署名の有効性を検証した後、受信したメッセージに対して変換情報に基づいた変更を行う。これにより、計算機Ｃ３０は、計算機Ａ１０が付与したＸＭＬ署名の有効性を保持しつつ、計算機Ｂ２０の変更情報が挿入されたメッセージを受信することができる。また、計算機Ｃは、変更情報に記述された変更操作を受信したメッセージに適用（反映）し、計算機Ｂ２０の変更情報を加味したデータを、取得することができる。
【００４７】
以上により、本発明の第１の実施の形態について説明した。本実施形態により、計算機Ｂ２０は、計算機Ａ１０のＸＭＬ署名の有効性を保持しつつ、署名対象の要素に対する情報の追加や削除などの変換情報をメッセージに追加することができる。また、計算機Ｃ３０は、計算機Ａ１０によるＸＭＬ署名の有効性を検証したうえで、計算機Ｂ２０により追加された変換情報を反映したメッセージを取得することができる。
【００４８】
次に、本発明の第２の実施の形態について説明する。
【００４９】
図１０は、本発明の第２の実施形態が適用されたメッセージ変換システムの全体構成図である。図示するように本実施形態のメッセージ変換システムは、計算機Ａ１０と、計算機Ｂ２０と、計算機Ｃ３０とを有し、それぞれがインターネットなどのネットワーク４０により接続されている。本実施形態における計算機Ａ１０は、図１に示す第１の実施形態の計算機Ａ１０と同様の機能を有し、記憶部１２に記憶されたメッセージにＸＭＬ署名を付与し、署名の付与されたメッセージを計算機Ｂ２０に送信する。
【００５０】
計算機Ｂ２０は、第１の実施形態の計算機Ｂ２０と同様に、計算機Ａ１０から受信したメッセージに対し情報の追加または削除などを行ない、計算機Ｃ３０にメッセージを転送（中継）する装置である。計算機Ｂ２０は、入力装置９０４からデータの入力を受け付ける入力受付部２４と、入力されたデータから変換情報を生成する変換情報生成部２５と、変換情報挿入部２１と、通信処理部２３と、を有する。本実施形態における計算機Ｂ２０は、入力受付部２４および変換情報生成部２５を有する点において、第１の実施形態における計算機Ｂ２０（図１参照）と異なる。また、本実施形態における計算機Ｂ２０は、変換情報を記憶した記憶部２２を有しない点において、第１の実施形態における計算機Ｂ２０と異なる。これら以外は、本実施形態における計算機Ｂ２０は、第１の実施形態における計算機Ｂ２０と同様である。
【００５１】
計算機Ｃ３０は、第１の実施形態の計算機Ｃ３０と同様に、計算機Ｂ２０を中継して計算機Ａ１０が送信したメッセージを受信する装置である。計算機Ｃ３０は、署名検証部３１と、変換情報適用部３２と、メッセージ内容およびエラー情報を表示する表示部３３と、通信処理部３４と、ＸＭＬ署名の有効な要素が記憶された署名有効リスト３５と、を有する。本実施形態における計算機Ｃ３０は、署名有効リスト３５を有する点、および、表示部３３がエラー情報のみならずメッセージの内容を表示する点、において第１の実施形態における計算機Ｃ３０（図１参照）と異なる。これら以外は、本実施形態における計算機Ｃ３０は、第１の実施形態における計算機Ｃ３０と同様である。なお署名有効リストについては、図１３において後述する。
【００５２】
以上説明した、本実施形態における計算機Ａ１０、計算機Ｂ２０および計算機Ｃ３０には、いずれも、例えば前述の図２に示すような汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、ＣＰＵ９０１がメモリ９０２上にロードされた所定のプログラムを実行することにより、各装置の各機能が実現される。また、計算機Ａ１０の記憶部１２には、計算機Ａ１０のメモリ９０２または外部記憶装置９０３が用いられ、また、計算機Ｃ３０の記憶部３５には、計算機Ｃ３０のメモリ９０２または外部記憶装置９０３が用いられる。なお、計算機Ａは、入力装置９０４または出力装置９０５を有しない場合もある。また、計算機Ｃは入力装置を有しない場合もある。
【００５３】
次に、計算機Ｂ２０の入力受付部２４が、出力装置９０５に出力する入力画面について説明する。
【００５４】
図１１は、入力受付部２４が、図４に示すメッセージを受信した場合、出力装置９０５に出力した入力画面を例示した図である。入力画面は、受信したメッセージ（Body要素）の内容を表示するメッセージ表示部分１１Ａと、変換情報を入力する変換情報入力部分１１Ｂと、送信ボタン１１Ｃとを有する。
【００５５】
図４に示すメッセージの場合、Body要素は子要素としてNews要素を有し、News要素はさらに子要素としてHeadline要素とText要素とを有する。そのため、入力受付部２４は、メッセージ表示部分１１Ａに、News要素の子要素であるHeadline要素とText要素の内容を表示する。具体的には、入力受付部２４は、Headline要素のテキストノード（「○×チーム準決勝進出」）を表示する表題テキストボックス１１１と、表題テキストボックス１１１の削除チェックボックス１１２と、Text要素のテキストノード（「○×チームが２−０で勝ち、準決勝進出を決めた。」）を表示する内容テキストボックス１１３と、内容テキストボックス１１３の削除チェックボックス１１４と、をメッセージ表示部分１１Ａに表示する。なお、テキストノードは、要素の内容を示したものである。また、削除チェックボックス１１２、１１４は、対応する子要素の削除指示を受け付けるためのチェックボックスである。入力受付部２４は、入力装置９０４から削除指示を受け付けると、削除チェックボックス１１２、１１４に例えば「レ」印を表示する。
【００５６】
また、入力受付部２４は、変換情報入力部分１１Ｂに入力ボックス１１５を表示する。計算機Ｂ２０のユーザーは、入力装置９０４を用いて、この入力ボックス１１５に追加したい情報を入力する。送信ボタン１１Ｃは、ユーザーが入力を完了した後に押下するボタンである。この送信ボタンが押下されると、変換情報生成部２５が、入力画面に基づいて変換情報を生成する。
【００５７】
次に、計算機Ｂ２０の処理について説明する。
【００５８】
図１２は、計算機Ｂ２０の処理の流れを示す処理フロー図である。なお、計算機Ａ１０から送信されるメッセージは、第１の実施形態と同様に、図４に示すメッセージとして以下に説明する。まず、計算機Ｂ２０の入力受付部２４は、通信処理部２３を用いて計算機Ａ１０から送信されたメッセージを受信する（Ｓ１２０１）。そして、入力受付部２４は、受信したメッセージのBody要素の内容と、変換情報の入力ボックスとを有する入力画面（図１１参照）を、出力装置９０５に表示する（Ｓ１２０２）。
【００５９】
そして、入力受付部２４は、ユーザーからの入力を受け付ける（Ｓ１２０３）。すなわち、入力受付部２４は、ユーザーが入力装置９０４を用いて入力ボックス１１５に入力した文字列を受け付ける。あるいは、入力受付部２４は、ユーザーが入力装置９０４を用いて削除チェックボック１１２、１１４に入力した削除指示を受け付ける。そして、入力画面への入力終了後にユーザーが入力する送信ボタンの押下を受け付けると、入力受付部２４は、入力画面にユーザーが入力した情報を変換情報生成部２５に受け渡す。
【００６０】
そして、変換情報生成部２５は、入力受付部２４が受け付けた情報に基づいて、変換情報を生成する（Ｓ１２０４）。例えば、入力ボックス１１５に「準決勝の相手は△□チーム。」が入力された場合の入力受付部２４の処理を、以下に説明する。この場合、変換情報生成部２５は、入力ボックス１１５に入力された前述の情報を、関連情報として受信したメッセージに追加する変換情報を生成する。
【００６１】
まず、変換情報生成部２５は、変換情報を表すModificationInfo要素を生成し、その子要素としてType要素と、Location要素と、Context要素とを生成する。そして、変換情報生成部２５は、入力ボックス１１５に情報が入力されていることから子要素の追加と判別し、Type要素に「AppendChild」を設定する。そして、変換情報生成部２５は、Location要素に、メッセージのBody要素の子要素、すなわちNews要素を設定する。具体的には、変換情報生成部２５は、Location要素にパスを用いて「/Envelope/Body/News」を設定する。  そして、変換情報生成部２５は、Content要素に子要素としてRelatedInfo要素を追加し、RelatedInfo要素の内容として、入力ボックス１１５に入力された情報（「準決勝の相手は△□チーム。」）を設定する。なお、変換情報生成部２５が生成した変換情報は、前述の図５に示す変換情報と同じである。
【００６２】
また、例えば、入力画面（図１１参照）の削除チェックボックス１１２、１１４に削除指示を示すチェック（「レ」）が入力されていた場合、変換情報生成部２５はType要素に「Delete」を設定し、Location要素には削除指示された削除チェックボックス１１２、１１４に対応する子要素を設定し、Context要素は省略する。
【００６３】
以上のように、変換情報生成部２５は、図１１に示す入力画面に入力された情報から、変換情報を生成する。そして、変換情報生成部２５は、生成した変換情報および計算機Ａ１０から受信したメッセージを、変換情報挿入部２１に受け渡す。
【００６４】
そして、変換情報挿入部２１は、計算機Ａ１０から受信したメッセージからＸＭＬ署名の対象となっている要素を特定する（Ｓ１２０５）。そして、変換情報挿入部２１は、ＸＭＬ署名対象の要素以外の部分に変換情報を挿入する（Ｓ１２０６）。なお、変換情報挿入部２１の署名対象の要素の特定、および、変換情報の挿入（Ｓ１２０５、Ｓ１２０６）は、第１の実施形態の処理（図６：Ｓ６０２、Ｓ６０４）と同様である。また、変換情報を挿入したメッセージの例は、前述の図７と同様である。そして、変換情報挿入部２１は、通信処理部２３を用いて、変換情報を挿入したメッセージを、計算機Ｃ３０に送信する（Ｓ１２０７）。
【００６５】
次に、計算機Ｃ３０の署名有効リストについて説明する。
【００６６】
署名有効リストは、改ざん等されていない有効なＸＭＬ署名が付与されているノードを一覧にしたものである。また、有効署名リストは、有効な署名が付与されているノードの情報を保持する。
【００６７】
図１３は、計算機Ｃ３０の署名検証部３１が、計算機Ｂ２０から受信したメッセージ（図７参照）のＸＭＬ署名の有効性を検証した後に生成する署名有効リストを、例示した図である。図７に示すメッセージのＸＭＬ署名の対象部分は前述のとおりNews要素である。したがって、署名有効リストは、News要素を構成する全てのノードの情報を保持する。すなわち、署名有効リストは、図示するように、News要素（エレメントノード）１３０１と、Headline要素（エレメントノード）１３０２と、Headline要素の内容（テキストノード）１３０３と、Text要素（エレメントノード）１３０４と、Text要素の内容（テキストノード）１３０５と、を有する。なお、図１３に示す例では、各ノードは変換情報（図５参照）のLocation要素と同様にパスを用いて記述している。
【００６８】
次に、計算機Ｃ３０の処理について説明する。
【００６９】
図１４は、計算機Ｃ３０の処理の流れを示す処理フロー図である。なお、計算機Ｂ２０から送信されるメッセージは、第１の実施形態と同様に、図７に示すメッセージとして以下に説明する。まず、署名検証部３１は、計算機Ｂ２０が送信したメッセージを、通信処理部３４を用いて受信し（Ｓ１４０１）、ＸＭＬ署名の有効性を検証する（Ｓ１４０２）。そして、ＸＭＬ署名の有効性の検証ができない場合（Ｓ１４０３：ＮＯ）、表示部３３はエラー情報を出力装置９０５に表示する（Ｓ１４０４）。なお、ここまでの処理は、第１の実施形態の処理（図８：Ｓ８０１〜Ｓ８０４）と同様である。
【００７０】
ここで、ＸＭＬ署名が有効であった場合（Ｓ１４０３：ＹＥＳ）、署名検証部３１は、前述の有効署名リスト（図１３参照）を生成する（Ｓ１４０５）。すなわち、署名検証部３１は、受信したメッセージのSignature要素の「Reference  URI=」（図７：行番号１７）からＸＭＬ署名の対象の要素を検知する。そして、署名検証部３１は、News要素（行番号３１〜３４）を読み出し、News要素に記述されたタグに基づいて、News要素に含まれる全てのノード（構成要素）を記述した有効署名リストを生成する。そして、署名検証部３１は、署名有効リストを記憶部３５に記憶する。
【００７１】
次に、変換情報適用部３２は、受信したメッセージに挿入された変換情報を署名対象部分に適用する（Ｓ１４０６）。なお、この処理は、第１の実施形態の処理（図８：Ｓ８０５）と同様である。そして、変換情報適用部３２は、記憶部３５に記憶された有効署名リストを読み出し、変換情報に基づいて有効署名リストを更新する（Ｓ１４０７）。すなわち、変換情報適用部３２は、変換情報の操作対象となる要素が有効署名リストにある場合、当該操作対象の要素（ノード）および当該要素の上位の要素（ノード）を署名対象リストから削除する。
【００７２】
例えば、変更情報のType要素に「AppendChild」が設定されている場合、新たな子要素が追加されることになるため、Location要素に設定された要素および当該要素の上位ノードは、有効署名リストから削除される。また、変更情報のType要素に「Delete」が設定された場合、Location要素に設定されたノードおよび当該ノードの上位のノードは有効署名リストから削除される。
【００７３】
図７に示すメッセージの場合、変換情報適用部３２は、News要素に対し、子要素としてRelatedInfo要素を追加する。そのため、変換情報適用部３２は、操作対象のRelatedInfo要素の上位の要素であるNews要素（エレメントノード）１３０１を、図１３に示す署名対象リストから削除する。
【００７４】
図１５は、変換情報適用部３２が図１３に示す有効署名リストを更新した後の有効署名リストの例を示したものである。この署名有効リストは、図示するように、News要素（エレメントノード）が削除され、Headline要素（エレメントノード）１５０１と、Headline要素の内容（テキストノード）１５０２と、Text要素（エレメントノード）１５０３と、Text要素の内容（テキストノード）１５０４と、を有する。Headline要素およびText要素の各ノード１５０１〜１５０４については変換情報の操作対象ではないため、有効署名リストに保持されている。なお、変換情報適用部３２は、更新後の有効署名リストを記憶部３５に記憶する。
【００７５】
変換情報適用部３２による有効署名リストの更新後、表示部３３は、変換情報を反映したメッセージを出力装置９０５に出力する（Ｓ１４０８）。すなわち、表示部３３は、変更情報を反映したメッセージ（図９参照）を参照して当該メッセージに含まれる各要素と、更新後の有効署名リストを参照して要素毎に有効なＸＭＬ署名が付されているか否かを示す署名情報と、を出力する。
【００７６】
図１６は、図１１に示す入力画面の入力ボックス１１５に「準決勝の相手は△□チーム」が入力された場合の出力画面を例示した図である。表示部３３は、変更情報を反映したメッセージ（図９参照）に基づいて、News要素の子要素であるHeadline要素と、Text要素と、入力画面から入力されたRelatedInfo要素と、を出力画面に表示する。すなわち、表示部３３は、Headline要素として、表題テキストボックス１６１と、ＸＭＬ署名の有無を示す署名情報１６２とを表示する。
【００７７】
そして、表示部３３は、表題テキストボックス１６１には、図９に示すメッセージのHeadline要素の内容（テキストノード）を表示する。そして、表示部３３は、更新後の有効署名リスト（図１５参照）を記憶部３５から読み出し、更新後の署名リストにHeadline要素が記憶されているか否かを判別する。そして、Headline要素のエレメントノード１５０１およびテキストノード１５０２が有効署名リストに記憶されているため、表示部３３は、署名情報１６２に「署名有り」と表示する。
【００７８】
また、表示部３３は、Text要素として、内容テキストボックス１６３、署名情報１６４とを表示する。そして、表示部３３は、Headline要素と同様に、内容テキストボックス１６３には、図９に示すメッセージのText要素の内容（テキストノード）を表示する。そして、表示部３３は、有効署名リストを読み出し、署名情報１６４に「署名有り」を表示する。
【００７９】
また、表示部３３は、RelatedInfo要素として、入力ボックス１６５と、署名情報１６６とを表示する。そして、表示部３３は、入力ボックス１６５には、図９に示すメッセージのRelatedInfo要素の内容（テキストノード）を表示する。そして、表示部３３は、更新後の有効署名リストを記憶部３５から読み出す。そして、RelatedInfo要素のエレメントノードおよびテキストノードが有効署名リストにないため、署名情報１６６に「署名無し」を表示する。
【００８０】
以上により、本発明の第２の実施の形態について説明した。本実施形態により、第１の実施形態と同様の効果を得ることができる。
【００８１】
また、本実施形態の計算機Ｂ２０は、入力画面を用いて、ユーザーから情報の入力を受け付け、変更情報を生成する。これにより、計算機Ｂ２０は、計算機Ａ１０から受信したメッセージを表示し、当該メッセージに対する変更指示の入力が可能なユーザーインターフェース（入力画面）を提供することができる。また、計算機Ｂ２０のユーザーは、受信したメッセージを確認したうえで、任意の情報の追加、削除等の変更指示を入力することができる。また、計算機Ｂ２０は、ユーザーが入力画面に入力した情報に基づいて、変換情報を自動生成する。これにより、変換情報を生成する際の作業負荷を軽減することができる。
【００８２】
また、本実施形態の計算機Ｃ３０は、変換情報を反映（適用）したメッセージを、署名情報と共に出力装置９０５に表示する。これにより、計算機Ｃ３０のユーザーは、表示されたメッセージのうち、どこの部分に有効なＸＭＬ署名が付与されているかを、容易に判断することができる。
【００８３】
なお、本発明は上記の第１および第２の実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
【００８４】
例えば、上記実施形態は、ネットワークを介したメッセージ交換を例に説明した。しかしながら、これ以外の他の用途、例えばワークフローによるＸＭＬ文書等の構造化文書の回覧などにも本発明を適用することができる。
【図面の簡単な説明】
【００８５】
【図１】図１は、本発明の第１の実施形態が適用されたメッセージ変換システムの全体構成図である。
【図２】図２は、各計算機のハードウエア構成例を示す図である。
【図３】図３は、メッセージ変換システムの処理概要を図である。
【図４】図４は、計算機Ａの送信メッセージの例を示す図である。
【図５】図５は、計算機Ｂの変換情報の例を示す図である。
【図６】図６は、計算機Ｂの処理フローを示す図である。
【図７】図７は、計算機Ｂの送信メッセージの例を示す図である。
【図８】図８は、計算機Ｃの処理フローを示す図である。
【図９】図９は、計算機Ｃが変換情報を適用した後のメッセージの例を示す図である。
【図１０】図１０は、本発明の第２の実施形態が適用されたメッセージ変換システムの全体構成図である。
【図１１】図１１は、計算機Ｂの入力画面の一例を示す図である。
【図１２】図１２は、計算機Ｂの処理フローを示す図である。
【図１３】図１３は、計算機Ｃの署名有効リスト（生成時）の一例を示す図である。
【図１４】図１４は、計算機Ｃの処理フローを示す図である。
【図１５】図１５は、計算機Ｃの署名有効リスト（更新後）の一例を示す図である。
【図１６】図１６は、計算機Ｃの出力画面の一例を示す図である。
【符号の説明】
【００８６】
１０：計算機Ａ、１１：署名付与部、１２：記憶部、１３：通信処理部、２０：計算機Ｂ、２１：変換情報挿入部、２２：記憶部、２３：通信処理部、３０：計算機Ｃ、３１：署名検証部、３２：変換情報適用部、３３：表示部、３４：通信処理部、４０：ネットワーク
【図１】
2005223390.tif 000003
【図２】
2005223390.tif 000004
【図３】
2005223390.tif 000005
【図４】
2005223390.tif 000006
【図５】
2005223390.tif 000007
【図６】
2005223390.tif 000008
【図７】
2005223390.tif 000009
【図８】
2005223390.tif 000010
【図９】
2005223390.tif 000011
【図１０】
2005223390.tif 000012
【図１１】
2005223390.tif 000013
【図１２】
2005223390.tif 000014
【図１３】
2005223390.tif 000015
【図１４】
2005223390.tif 000016
【図１５】
2005223390.tif 000017
【図１６】
2005223390.tif 000018