首页 > 解决方案 > XML 签名中 KeyInfo 的用途

问题描述

我正在阅读来自w3 页面的 XML 签名

据我了解,要签署 XML:

  1. 创建要签名的 XML 数据的规范 XML。
  2. 使用中提到的算法创建规范化 XML 数据的散列(摘要)<DigestMethod/>。哈希将进入<DigestValue>
  3. 上面的加密使用了<SignatureMethod/>. 该算法将 Sender 的私钥作为输入。签名会进去<SignatureValue>

验证(在接收者端):

  1. 使用发件人的公钥在内容上<SignatureValue>获取哈希。
  2. <Reference>使用算法计算数据的哈希值(可以在 中找到数据的 xPath/引用)<DigestMethod>
  3. 检查这是否与哈希匹配<DigestValue>

我的问题:

  1. 我的理解正确吗?
  2. <KeyInfo>鉴于发件人的公钥足以验证,验证签名的作用是什么?

标签: xmldigital-signaturexml-signature

解决方案


<KeyInfo>鉴于发件人的公钥足以验证,验证签名的作用是什么?

钥匙一定在某个地方,对吧?这就是地方。它将包含用于验证签名的密钥。如规范中所述,可以跳过该<KeyInfo>元素:

如果KeyInfo省略,则预计接收者能够根据应用程序上下文识别密钥。

因此,当<KeyInfo>丢失时,应用程序/用户必须从其他地方获取密钥。


推荐阅读