XML署名(6)  XML署名の概要_1

2004年11月07日(日)更新


■XML署名の概要

たけち: 前回までで電子署名ってどんなものかを簡単にみてきたよね。

さらら: えぇ、元のデータ(メッセージ)といっしょに、元のデータのハッシュ値を秘密鍵で暗号化して渡すのだっだわね。

たけち: そうだったね。今回からは、元のデータ、つまりメッセージがXMLデータの場合には電子署名をどのようにするかを学んでいこう。

さらら: はい。でも、XMLの場合には、別のデータの場合と違うことがあるの?

たけち: うん。XMLデータは複数の要素から構成されているテキストデータだから、XMLデータへの署名では次のようなことができるんだ。

  • XMLデータ全体への署名
  • XMLデータの要素への署名
  • XMLデータ全体/要素への複数の署名
  • 複数のXMLデータへの署名

たけち: そうそう。XML署名については、W3Cの勧告になっている「XML-Signature Syntax and Processing」というのがあるんだよ。

さらら: へぇ〜。


■署名対象要素と署名要素の関係

たけち: XML-Signature Syntax and Processingでは、署名データは、"Signature"という名前の要素(以降、署名要素と呼びます。)で示されるんだ。そして、次のような署名の種類が定義されているんだよ。
あっ、そうそう。署名がされる元のXMLデータを署名対象要素って呼ぶね。

Detached(分離形式)
署名要素署名対象要素が独立した要素になっています。つまり、署名要素とは別のファイルだったり、署名要素との兄弟要素(sibling element)だったりします。署名要素では、署名対象要素をURI などで示します。
Enveloping(封筒形式)
署名要素署名対象要素の親要素となります。つまり、署名要素に署名値とともに、署名対象要素が含まれます。
Enveloped(書簡形式)
署名要素署名対象要素の子要素となります。Envelopingとは逆に、署名対象要素に署名要素が含まれます。

さらら: なっ、なんかよく分かんない。。。。

たけち: そっ、そうだね。じゃあ、図で違いを見てみようね。また、詳しいことは後でまた見ていくから、今回はだいたいのイメージがつかめればいいからね。

さらら: うん。

XML署名の種類

さらら: 署名要素と署名対象要素との関係が違うのね。

たけち: そうだね。ところで、署名の対象となるXMLデータは、そのまま使うんじゃなくって「XMLデータの正規化」ということをするんだ。

さらら: えっ? そのまま、っていうわけじゃないの?

たけち: うん。そのあたりのことも含めてもう少し詳しく見ていこうね。

さらら: はっ、はい!!

→次回はXMLデータの正規化です。 (^ ^;


■(注) 公開鍵証明書などについてはあとで学びます。