2

根据XML 签名规范(3.2.2“签名验证”),可以对KeyInfo元素进行签名:

“请注意,KeyInfo(或其某些转换版本)可以通过 Reference 元素进行签名。”

在这里,我们可以看到一个带有这种签名的 xml 示例。

是否有任何理由自行签署证书?

它消除了哪些安全风险?

4

1 回答 1

2

看看这个关于signingCertificateXAdES 中属性的澄清部分。ETSI XAdES 建立在 XMLDSig 之上,以建立长期有效的高级签名的要求

signingCertificateds:KeyInfo当不存在或不包含用于签名的证书时是强制性的,并且用于相同的目的

7.2.2 SigningCertificate 元素

在许多现实生活环境中,用户将能够从不同的 CA 甚至从同一个 CA 获得包含不同名称的相同公钥的不同证书。主要优点是用户可以将相同的私钥用于不同的目的。当使用智能卡保护私钥时,多次使用私钥是一个优势,因为智能卡的存储总是有限的。当涉及多个 CA 时,每个不同的证书可能包含不同的身份,例如作为国民或作为公司的雇员。因此,当私钥用于各种目的时,需要证书来阐明在生成签名时使用私钥的上下文。

当前的许多方案只是在签名数据后添加证书,因此容易受到各种替代攻击。替代攻击的一个示例是“坏”CA,它会使用其他人的公钥向某人颁发证书。如果来自签名者的证书只是简单地附加到签名中,因此不受签名保护,那么任何人都可以用另一个证书替换一个证书,并且该消息似乎是由其他人签名的。为了对抗这种攻击,证书的标识符必须受到签名者的数字签名的保护

于 2017-01-10T12:52:08.827 回答