ホーム > X-Plus > XML Square >  スタンダーズ

この記事を送る はてなブックマークに追加する BuzzurlにブックマークBuzzurlにブックマーク Yahoo!ブックマークに登録
テキストリンクコードを取得する

スタンダーズコーナー:W3C規格解説 「XML Signature」

2002年01月31日作成 

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メールニュース (無料)



この記事と関連の高い記事

関連キーワード:XML関連規格




ページトップへ戻る