跳到主要内容
ecdsa.com

XML 签名(XML-DSig)

W3C 制定的 XML 签名标准(XML Signature Syntax and Processing 1.1,2013年):ds:Signature 元素通过 URI 引用被签名的数据并将其规范化,再对由各项摘要组成的 SignedInfo 块签名。
其他写法XML SignatureXML-DSigXMLDSigds:SignatureExclusive XML Canonicalization

签名包含 SignedInfo(规范化方法、签名方法,以及每个被签名项对应的一个 Reference,其中各含变换和摘要)、SignatureValue,通常还有带 X.509 证书的 KeyInfo。封内签名(enveloped)位于它所签名的元素内部(如 SAML 断言),分离签名则指向别处。排他 XML 规范化(http://www.w3.org/2001/10/xml-exc-c14n#)会对命名空间和空白字符做规范化处理,使语义相同的 XML 得到相同的哈希。

危险正来自这种灵活性:基于 ID 属性的引用、XPath 变换和规范化规则,都可能让验证者和应用对“签了什么”产生分歧。签名包装、注释处理缺陷和 XML 外部实体攻击曾多次攻破 SAML 和 SOAP 的实现。XAdES(ETSI EN 319 132)在 XML-DSig 之上构建长期电子签名。

标准与参考资料

全部术语