■正しく署名されたか検証するでは、今度は署名されたXML文書を検証してみよう。同様に、検証するためのバッチファイルを準備して稼働させる。署名されたXML文書を検証するためのバッチファイル(改行個所には↓マークを付加した)実行結果は、下記のようにコンソールに表示されると同時にウィンドウとしても表示される。OK」と表示されており、電子署名が問題ないことを示している。■データ改ざんを発見できるか?電子署名されたXML文書は、改ざんを検知することができる。署名された文書は改ざんが許されていないためだ。そこで、改ざんが本当に検知できるかどうかを実験してみる。次の2つの方法で、データに手を加えてみよう。データ部分を書き換えてみよう。署名付き文書「signature.xml」をコピーして、以下のように書き換えてみる。「yonemochi」が「yonemochi-kun」などに書き換えられており、これを検証すれば当然のことながら「NG」が出る。内容が改ざんされているからだ。今度は次のように書き換えてみる。firstタグとlastタグの後ろに空白を入れた。これは、このXML文書をテキストとしてみたら改ざんだが、タグの後ろの空白は無視され、XML文書としてはまったく同じ意味を示す。そのため、この改変は改ざんされたと見なされない。このため、署名検査は「OK」となる。前述した、XML文書の改ざんについては、XML文書の「正規化」処理が関連している。XML文書の電子署名の処理では、下記に示すように必ず正規化が行われているのだ。正規化は、XML文書の電子署名において非常に重要な処理だ。そこで今度は、XSS4Jの正規化ライブラリで、正規化処理を実際に行ってみよう。以下のXML文書を準備する。正規化を行うため、わざと書式を崩したXML文書これを正規化してみよう。正規化を実行するための「C14nSAX」で処理してみる。正規化を実行するプログラムを呼び出すバッチファイルすると以下のような結果が得られる。正規化されたXML文書。タグの中の空白の扱いや改行など、細かいところがいくつも変更されている正規化後、(1)の<person>エレメント以下とまったく同じ形になるのは、(3)と(5)である。(1)(3)(5)の3つは、正規化前はそれぞれ正規化後とは違う表現で記述されていたのだが、正規化前、後のいずれも、XML文書としては同じ内容を示していることになる。(2)はデータの前後に改行が含まれているが、これはテキスト・エレメントに含まれるデータとして扱われる。(4)では<name>エレメントと<address>エレメントの間に改行のテキスト・エレメントが含まれていない、と判断されているのがお分かりいただけるだろうか。したタグの整理などが、正規化と呼ばれる処理である。正規化後に同じXML文書になるのであれば2つは本質的に同一であり、両者の間に改ざんされた形跡はない、と判断できるのだ。以上、ざっくりとXMLの暗号化、電子署名について実際の方法を紹介してきた。Toolkit(WSTK)」なども提供されている。したツールで実際にXMLの高度な暗号化機能を試してみていただきたい。DTDで記述され、XSLTによって生成されている。(2005/8/16)セキュリティ関連のXML仕様に進展あり。