W3C規格解説
XML Encryption
(株)日本ユニテック
村上 泰介
XML Encryptionとは、XMLデータの暗号化のための規格で、現在は勧告候補です。
(http://www.w3.org/TR/2002/CR-xmlenc-core-20020304/)
XML Encryptionとは
以前にXML Signature というXMLでディジタル署名を記述するための規格について解説しましたが、XML EncryptionとXML
Signatureの2つが、XMLデータのセキュリティに関する主要な規格です。
XML Signatureを利用することで、XMLデータが改ざんされたり、別の人になりすましてデータを送ったり、送っておきながら後でそれを否認したりということが防げます。つまり、データの「完全性」、「真正性」、「非否認性」が確保されるのですが、XML
Signatureでは、データの「機密性」は守られません。つまり、第三者がデータの内容を盗み見することを防げないのです。そこで、XML
Encryptionが利用されるのです。
XMLデータのセキュリティ
XML Encryptionのサンプル
XML Encryptionでは、対象となるXMLデータの特定の部分だけを暗号化することができます。たとえば、次のサンプルのようなデータがあったとします。name要素の内容は誰に見られても構いませんが、creditcard要素の内容は、データの受信者だけにだけ分かるようにしたいので、暗号化することにします。
暗号化の対象となるXMLのサンプル
<?xml version="1.0"?>
<personaldata>
<name>Taro Yamada</name>
<creditcard>
<number>8745 1236 7593 0417</number>
</creditcard>
</personaldata> |
暗号化されたデータは、次のようになります。creditcard要素の部分が、EncryptedData要素に置き換わっています。EncryptedData要素以下のタグの記述の仕方がXML
Encryptionで定義されているのです。
EncryptedData要素には、受信者側の鍵情報と、暗号化した値(ここでは、"ABC789PQR")があるので、受信者は自分しか持っていない秘密鍵で、暗号化した値を復号化して、元のXMLデータ(ここではcreditcard要素)の内容を知ることができるのです。
暗号化したXMLのサンプル
<?xml version='1.0'?>
<personaldata>
<name>Taro Yamada</name>
<--ここから暗号化データ-->
<EncryptedData Type='…'xmlns='http://www.w3.org/2001/04/xmlenc#'>
<ds:KeyInfo xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>
<--ここに受信者側の鍵情報-->
</ds:KeyInfo>
<CipherData><CipherValue>
ABC789PQR
</CipherValue></CipherData>
</EncryptedData>
</personaldata>
|
このサンプルでは、creditcard要素を暗号化しましたが、number要素などの別の要素を暗号化することもできますし、また、暗号化したXMLデータをもう一回暗号化することもできます。
まとめ
XML Encryptionは、XML Signatureと同様に、XMLデータのセキュリティを担う重要な規格ですが、製品の実装はまだあまり進んでいないようです。ただ、これからWebサービスが普及するようになれば、必須の技術として採用が進んでいくことでしょう。最近では、IBM
とMicrosoftが提唱するWS-Securityという規格においても、両規格の準拠を表明しています。いずれは、暗号化あるいはディジタル署名をせずに、XMLデータをやり取りすることはなくなるかもしれません。
関連サービス
標準化仕様の動向調査
最新動向を伝えるDXメールニュース
(無料)
|