【问题标题】:xades4j: how to produce an signature with a transform in the signedproperties referencexades4j:如何在 signedproperties 参考中生成带有转换的签名
【发布时间】:2014-09-11 14:17:00
【问题描述】:

我收到了一个示例 xades 签名,我必须使用 xades4j(“就像一个模板”)来复制它。

示例签名是这样的(摘录):

<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="xmldsig-qualifyingproperties-yada-yada">
    <ds:SignedInfo>
        <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
        <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
        <ds:Reference URI="#xmldsig-signedproperties-yada-yada">
            <ds:Transforms>
                <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
            </ds:Transforms>
            <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
            <ds:DigestValue>yada-yada-yada-yada-yada-yada-yada</ds:DigestValue>
        </ds:Reference>
(...)

我知道这个引用不符合 xades,因为那里没有属性 Type。

我的问题在于该参考中的转换。我无法找到如何使用 xades4j 设置此选项。这个可以吗?

另外,我不知道这是否有意义,因为在签名顶部,它说规范化方法是一种,然后在签名属性参考中它说规范化方法是另一种......我在读吗这对吗?

【问题讨论】:

    标签: xades4j xml-dsig


    【解决方案1】:

    您不能在已签名的属性引用上设置转换。这是出于以下两个原因:

    1. 不确定需要 - 被签名的资源(实际签名的属性元素)实际上是由 xades4j 生成的,因此允许外部控制没有多大意义。
    2. 安全性 - 不允许任意转换,因为库需要确保引用指向 SignedProperties 元素。

    可能唯一可以使用的转换是规范化,但 XML-DSIG 已经指定如果取消引用的资源是节点集,则必须在摘要之前使用 C14N 作为默认算法进行规范化,xades4j/santuario 将使用该算法。在您的示例中,算法是相同的,不同之处在于它在摘要生成中包含注释节点。

    至于有 2 种规范化算法,这是因为它们是不同的:引用转换中的一种应用于取消引用该数据对象的结果。另一方面,顶部的那个指定了在 SignedInfo 元素上使用的规范化算法,以获取实际的签名输入(八位字节流)

    【讨论】:

    • 完全同意第二点。从生产者的角度来看,也是第一个。但是,如果我是验证者,那(显然)希望验证在 signedProperties 引用中具有规范化转换的签名。我是否应该考虑转换?个性,为了简单明了,我宁愿在此参考中没有任何转换并使用指定的默认值。但我必须玩他们给我的东西......
    • 好吧,如果转换存在,xades4j 将在处理引用时使用它。您可以做的是分析验证输出上的数据对象并检查是否存在您认为不安全的任何转换。有点像白名单。
    • 这可能是一个愚蠢的问题,但是...您说规范化算法与包含的 cmets 差异相同。在示例中,它是“xml-exc-c14n”和“REC-xml-c14n-20010315”(忽略 cmets 部分)。这些是一样的吗?
    • 我的意思是 REC-xml-c14n-20010315#withComments 与 XML-DSIG 默认值 (REC-xml-c14n-20010315) 相同,但带有 cmets。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多