本文へスキップ
ecdsa.com

XML 署名(XML-DSig)

XML に署名するための W3C 標準(XML Signature Syntax and Processing 1.1、2013年)で、ds:Signature 要素が署名対象のデータを URI で参照して正規化し、ダイジェストをまとめた SignedInfo ブロックに署名します。
別表記XML SignatureXML-DSigXMLDSigds:SignatureExclusive XML Canonicalization

署名には、SignedInfo(正規化方式、署名方式、および署名対象の項目ごとに 1 つずつあり、変換とダイジェストを持つ Reference)、SignatureValue、そして通常は X.509 証明書を含む KeyInfo が含まれます。エンベロープ署名(enveloped)は署名対象の要素の内部に置かれ(SAML アサーション)、分離署名(detached)は別の場所を指します。排他的 XML 正規化(http://www.w3.org/2001/10/xml-exc-c14n#)は名前空間と空白を統一し、意味的に等しい XML が同じハッシュ値になるようにします。

柔軟性こそが危険の源です。ID 属性による参照、XPath による変換、正規化の規則によって、何が署名されたかについて検証者とアプリケーションの解釈が食い違う可能性があります。署名ラッピング、コメントの処理に関するバグ、XML 外部エンティティ攻撃は、SAML や SOAP の実装を繰り返し破ってきました。XAdES(ETSI EN 319 132)は、XML-DSig の上に長期保存可能な電子署名を構築します。

規格と参考文献

すべての用語