W3C規格解説
XML Signature
(株)日本ユニテック
村上 泰介
XML Signatureとは、XMLでディジタル署名をどのように記述するのか、また、アプリケーションでそれをどのように処理するのかを規定しています。
(http://www.w3.org/TR/xmldsig-core/)
まず、ディジタル署名について説明します。ディジタル署名が分かれば、それをただXMLで決まったタグに記述するのがXML
Signatureということになります。
署名とは
ディジタル"署名"というくらいですから、手紙に最後に書く自筆のサインにたとえて考えてみましょう。AさんがBさんに手紙を書いたとします。BさんはAさんの筆跡を知っているので、最後のサインを見て、「ああ、これはAさんからだ。」と思うわけです。もっと重要な書類だとハンコを押しますが、それも署名の1つです。
それでは、Bさんに何かのデータを送る場合には、どうすればAさんは自分が送ったことをBさんに納得してもらうのでしょうか。もしかしたら、Aさんを名乗るニセモノかもしれません。このようなときにディジタル署名を使うわけです。そして、ディジタル署名を保証するのに使うのが公開鍵と秘密鍵です。
公開鍵と秘密鍵
公開鍵と秘密鍵とは何でしょうか。データに鍵をかける、つまり暗号化するのに両方とも使いますが、秘密鍵で鍵をかけると、公開鍵でしか鍵をはずせないようになっています。そこで、Aさんは自分だけの公開鍵と秘密鍵をつくって、秘密鍵は誰にも渡さないで大事に取っておいて、Bさんには公開鍵を渡すのです。
そして、AさんはBさんに、自分の署名に秘密鍵で鍵をかけたデータを送ります。Bさんが、Aさんの公開鍵でそのデータの鍵をはずせれば、めでたくAさんから来たんだと確認できます。Aさんを名乗るニセモノが別の鍵で鍵をかけたら、Aさんの公開鍵でははずせないので、ばれてしまうのです。また、公開鍵で鍵をはずすときに、そのデータが改ざんされているかもチェックできます。
XML Signature
ここまでの話は、一般にPKI(public key infrastructure)と呼ばれる認証の仕組みを説明したものです。それでは、なんでわざわざXML
Signatureというものが必要なのでしょうか。それは、第一にやり取りするデータがXMLデータであるときに、XMLデータの特定の部分だけを相手に送ったり、なんらかの変換をしたものを送るには、そのプロセスをXMLで記述する方が都合が良いということです。また、タグの中の空白や改行の数によって、XMLとして論理的には意味が同じである、2つのデータを同一と認定する仕組みが必要になります。そして、ディジタル署名そのものもXMLで記述できます。これらが、XML
Signatureが必要な理由です。
それでは、最後にXML Signatureのサンプルを示します。
<?xml version="1.0" encoding="UTF-8"?>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
…
</SignedInfo>
<SignatureValue>
<--ここにディジタル署名-->
</SignatureValue>
<KeyInfo>
<--ここに公開鍵の情報-->
</KeyInfo>
<Object>
<--ここに対象となるデータ-->
</Object >
</Signature> |
関連サービス
標準化仕様の動向調査
最新動向を伝えるDXメールニュース
(無料)
|