根据XML Signature Specification(3.2.2"签名验证"), KeyInfo 元素可能会被签名:
"注意,KeyInfo(或其某些转换版本)可以通过参考元素签名。"
Here我们可以看到带有这种签名的xml示例。
有没有理由单独签署证书?
它消除了哪些安全隐患?
答案 0 :(得分:2)
在XAdES中查看关于属性signingCertificate
的澄清部分。 ETSI XAdES构建于XMLDSig之上,以建立长期保持有效的高级签名要求
signingCertificate
不存在或者不包含用于签名的证书时, ds:KeyInfo
是强制性的,并且用于相同目的
7.2.2 SigningCertificate元素
在许多现实生活环境中,用户将能够从不同的CA或甚至来自相同的CA获取不同的证书,这些证书包含用于不同名称的相同公钥。主要优点是用户可以将相同的私钥用于不同目的。当使用智能卡来保护私钥时,多次使用私钥是有利的,因为智能卡的存储总是有限的。当涉及多个CA时,每个不同的证书可以包含不同的身份,例如,作为公司的国民或员工。因此,当私钥用于各种目的时,需要证书来阐明在生成签名时使用私钥的上下文。在存在多次使用私钥的可能性的情况下,签名者必须向验证者指示要使用的精确证书。
许多当前的方案只是在签名数据之后添加证书,因此受到各种替代攻击。替代攻击的一个例子是“坏”" CA将向拥有其他人公钥的人颁发证书。如果签名者的证书只是附加到签名上,因此不受签名保护,任何人都可以用另一个证书替换另一个证书。消息似乎是由其他人签署的。 为了应对此类攻击,证书的标识符必须受签名者的数字签名保护。