XML暗号
XML暗号とは、XML文書の暗号化規約で、W3C勧告になっています。< /p>
XML文書は電子商取引で広く用いられています。また、通常のデータ通信での暗号化にはSSL/TLSが広く用いられています。XML文書での暗号化では商取引データの特徴に適合している必要があり、XML暗号が適しているのです。
通常は、後述の鍵合意などにより部分的な個所をXML暗号にしたXML文書全体をSSL/TLSで暗号化することになります。
- 商取引データの特徴
- 販売サイトに発注データを送信するとき、クレジット番号は販売サイトにも秘密にし、販売サイトから転送されるクレジット会社だけが解読するようにしたいことがあります。
また、メーカーが顧客に受注データを送る場合、流通センターに顧客先、商品、個数、金額の入ったXML文書を送り、流通センターで出荷処理をするとともに、XML文書に到着時刻なども加えて顧客に転送するとします。このとき、流通センターには金額を秘密にしておき、顧客だけが復号できる仕組みが必要になります。
すなわち、文書全体を暗号化するだけでなく、特定の項目だけをさらに暗号化して、転送先だけがその項目を復号できるようにしたいのです。
- SSL/TLSの限界
- SSL/TLSでは文書全体を一律に暗号化します。通信経路での秘密は保たれますが、送信先では文書全体が復元されます。クレジット番号だけについてはSETというプロトコルがありますが、対象がクレジット番号だけに限定されており、汎用性がありません。
- 鍵合意
- XML暗号では、鍵合意という仕組みによって、共通鍵暗号方式での鍵交換が安全にできる仕組みになっています。
関係者AとBがいる場合、AはAの秘密鍵とBの公開鍵により、新しい値Kを生成します。同様にBはBの秘密鍵とAの公開鍵により、同じ値Kを生成できます。それで、Kを共通鍵として利用できるのです。
共通鍵Kを用いてA・Bは特定のXML要素を暗号化・復号します。Aを発注者(メーカー)、Bをクレジット会社(顧客)とすれば、その中間にいる販売サイト(流通センター)はその要素を知ることができません。
- 暗号化要素の指定
- 暗号化した要素は、独特のタグをつけて示します。それにより、単体要素、指定要素全体など多様な暗号化個所の指定ができます。
XML署名
XMLデジタル署名とは、XML形式のデータに対してデジタル署名をする技術です。
通常のデジタル署名と同様に
データの改ざん防止
送信者の認証
を目的として、
ハッシュ値の生成
秘密鍵による署名
署名データの埋め込み
受信者による検証
のステップですが、XML文書に依存するいくつかの特徴があります。
記述方式
署名に必要な要素を、MXL文法に沿って<タグ>~</タグ>の形式で記述します。
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignatureValue>署名のハッシュ値</SignatureValue>
<KeyInfo>
<KeyValue>公開鍵情報</KeyValue>
</KeyInfo>
</Signature>
XML署名の種類
署名データと署名対象のXMLデータの関係により、次の3つの種類があります。
- デタッチ署名(Detached Signature)
XMLデータと署名データが独立したファイル
・XMLデータを変更せずに追加署名を適用できる
・複数の署名対象をまとめて署名できる
- エンベロープ署名(Enveloped Signature)
XMLデータの一部(封筒の中身)として署名データが埋め込まれる。
・1回の送信でXMLデータと署名データが送信できる。
- エンベローピング署名(Enveloping Signature)
署名が親要素になり、XMLデータが内包される。
・XML文書全体を署名の一部として扱うことができる
・改ざん等の認証がしやすい