XML 签名 (XMLDsig) 中的签名是什么?

问题描述 投票:0回答:1

我想解析 XML-DSIG 文件及其内容。我在 Wikipedia 上阅读了有关它的结构和一些

xmldsig-core
规范 的内容。但我无法弄清楚一些事情,假设这是我得到的 XML-DSIG 示例:

<?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 说“一个或多个 Reference 元素指定由 URI 引用签名的资源”)。这就引出了第二个问题
  2. 如果签名值对标签
    <KeyInfo>
    <Object>
    中的数据进行签名,那么实际上签名的是什么?它只是计算出的 xml 的这两部分的哈希值并且位于
    <DigestValue>
    标签中,还是从
    <KeyInfo
    开始到
    </KeyInfo>
    结束标签及其之间的数据的整个标签? (与
    <Object>
    同样的问题)。

Wiki 没有指定此类内容,我迷失在 RFC 中并且找不到这些问题的答案。

cryptography certificate digital-signature xml-signature xml-dsig
1个回答
1
投票
  1. 是的,
    KeyInfo
    将包含在签名中。
  2. SignedInfo
    元素的内容是实际被签名的内容。首先使用指定的转换对其进行规范化,然后将该序列化元素的字节输入到您选择的签名算法中。实际内容(
    KeyInfo
    Object
    )通过
    DigestValue
    中存在
    SignedInfo
    元素包含在签名中,而不是直接签名。因此,在签名验证过程中验证这些哈希值是否正确至关重要。
© www.soinside.com 2019 - 2024. All rights reserved.