XML (Extenxible Markup Language: 拡張可能なマーク付け言語) は, World Wide Web Consortium (W3C)で定義された構造化文書および半構造データを表現する言語の枠組みである. この XML文書にセキュリティ機能 (署名と暗号機能)を組み込むための仕様が XML セキュリティである.
XML は,構造化文書を定義する言語であるが,データ構文を定義する記述言語としても有用である.XML文書は HTMLに変換してブラウザに表現できるため,Webとも極めて親和性が高く,電子商取引や電子政府における電子申請に必須のツールとなっている.このような Webサービスでは,ディジタル署名や暗号などのセキュリティ機能の実装が必須である.
W3C は, XMLセキュリティとして次の XML署名および XML暗号の仕様 (W3C勧告)を規定している.
XML Signature Syntax and Processing (Second Edition), W3C Recommendation, 10 June 2008.
XML Encryption Syntax and Processing, W3C Recommendation, December 10, 2002.
XML 署名は,XML文書にディジタル署名を埋め込むための規格であり,署名アルゴリズムや署名等のタグを定め,任意のデータに対する署名の他,XML文書の指定したエレメントやコンテンツに対して署名を付けることを可能にしている.
<document> <Signature Id=”sign”> <SingedInfo> <Reference URI=”targetURI1”/> </SignedInfo> <SignatureValue> ………. </SignatureValue> </Signature> </document>
<Signature Id=”sign”> <SignedInfo> <Reference URI=”#target”/> </SignedInfo> <SignatureValue> ………. </SignatureValue> <object Id=”target”> ………… </object> </Signature>
<Signature Id=”sign”> <SignedInfo> <Reference URI=”targetURI”/> <SignedInfo> <SignatureValue>………. </SignatureValue> </Signature>
W3C で策定した XMLによる暗号の構文と処理方式の標準であり,任意のデータの暗号化も含めてXML文書全体の暗号化,XML文書の特定の要素の暗号化,要素内のコンテンツの暗号化などが可能である.XML 暗号では必要な部分のみを暗号化できる特徴がある.また,暗号化対象は 1 つだけではなく複数の対象も指定できるなど柔軟な暗号化が可能である.
<?xml version='1.0'?> <PaymentInfo xmlns='http://example.org/paymentv2'> <Name>John Smith</Name> <EncryptedData Type='http://www.w3.org/2001/04/xmlenc#Element' xmlns='http://www.w3.org/2001/04/xmlenc#'> <CipherData> <CipherValue>A23B45C56</CipherValue> </CipherData> </EncryptedData> </PaymentInfo>