我正在使用Java applet在Web浏览器中签名XML文件。 除了签名XML中包含的X509密钥之外,我应该保留哪些信息以确保不可否认性? 我看到applet传输私钥(使用相同的私钥加密)或只是公钥。
答案 0 :(得分:0)
在XMLDsig
/ XAdES
签名中,签名本身提供了不可否认性(证据的完整性和数据来源)。
提供完整性是因为如果您更改签名的任何字节,您将破坏它(签名无法验证),数据的来源由<xmldsig:keyInfo>
元素提供,它为您提供必要的证书验证签名(但是这个元素是可选的,所以如果它不存在则假定应用程序上下文足以获得该证书),如果签名使用此证书验证,则您具有签名作者的身份。除了在XAdES标准中,还定义了<xades:SigningCertificate>
属性,该属性是强制性的,并且它还引用了验证签名所需的证书。
希望这有帮助,
答案 1 :(得分:0)
除非可能用于备份,否则永远不会传输私钥。保持私钥安全的最安全方法是在需要私钥的位置创建密钥对,然后使用证书请求传输公钥。
要验证和验证证书,以及签名,您需要执行以下操作:
一系列证书,以用于签名的密钥对的证书开头,最多为一些可信证书。该链可以存在1个自签名证书,但通常更长。通常您信任某个根证书,拥有1或2个CA证书,以执行签名的叶证书结束。
验证链中的任何证书未被撤销的一些方法。通常这是一个频繁分发的CRL或OCSP。
一个时钟。如果没有可信时钟,则无法验证证书是否已过期。
这些都是验证所必需的。签名时,您不必保留任何内容。当然,您通常会保留私钥和证书。