首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是在XML签名(XMLDsig)中签名?

什么是在XML签名(XMLDsig)中签名?
EN

Stack Overflow用户
提问于 2022-09-26 13:19:44
回答 1查看 46关注 0票数 0

我想解析一个XML文件及其内容。我在维基百科上读过关于它的结构和一些RFC的文章。但是我想不出一些事情,比方说这是一个XML示例:

代码语言:javascript
复制
<?xml version="1.0"?>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
  <SignedInfo>
    <CanonicalizationMethod Algorithm="urn:xml-dsig:transformation:v1.1"/>
    <SignatureMethod Algorithm="some-algo"/>
    <Reference URI="#KeyInfo">
      <Transforms>
        <Transform Algorithm="urn:xml-dsig:transformation:v1.1"/>
      </Transforms>
      <DigestMethod Algorithm="some-algo-256"/>
      <DigestValue>some-hash-256</DigestValue>
    </Reference>
    <Reference URI="#Object">
      <Transforms>
        <Transform Algorithm="urn:xml-dsig:transformation:v1.1"/>
      </Transforms>
      <DigestMethod Algorithm="some-algo-256"/>
      <DigestValue>some-hash-256</DigestValue>
    </Reference>
  </SignedInfo>
  <SignatureValue>signature-value-in-base-64</SignatureValue>
  <KeyInfo Id="KeyInfo">
    <X509Data>
      <X509Certificate>x509-cert-in-base-64</X509Certificate>
    </X509Data>
  </KeyInfo>
  <Object Id="Object">
    <Result>
      ...Initial XML I was signing...
    </Result>
  </Object>
</Signature>

我的问题是:

  1. 如果#KeyInfo<Reference>标记中,这意味着<KeyInfo>部分也被签名了?(因为wiki说“一个或多个引用元素指定由URI引用签名的资源”)。这就引出了第二个问题
  2. 如果签名值在标记<KeyInfo><Object>中同时对数据进行签名,那么实际要签名的是什么?这仅仅是在<DigestValue>标记中计算的xml的这两个部分的散列,还是从<KeyInfo开始到</KeyInfo>结束标记之间的数据的整个标记?(与<Object>相同的问题)。

Wiki没有具体说明这样的事情,我在RFC中迷失了方向,找不到这些问题的答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-27 10:02:13

  1. 是的,KeyInfo将包括在签名中。
  2. SignedInfo元素的内容是实际得到签名的内容。首先使用指定的转换将其规范化,然后将序列化元素的字节输入到所选的签名算法中。实际内容(KeyInfoObject)包含在签名中,因为DigestValue元素存在于SignedInfo中,而不是直接签名。因此,在签名验证期间验证这些哈希值是正确的是至关重要的。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73854761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档