【问题标题】:Performance of XML digital signature: enveloper vs enveloping vs detachedXML 数字签名的性能:封装 vs 封装 vs 分离
【发布时间】:2013-02-27 10:00:31
【问题描述】:

XML-DSig 描述了 XML 文档的签名可以相对于 XML 文档放置的 3 个位置:签名可以是 detached, enveloping, enveloped

这三个选项对性能有何影响?

【问题讨论】:

    标签: xml performance digital-signature xml-signature electronic-signature


    【解决方案1】:

    Detached 会更高效一些,但差别很小(当然,这取决于文档大小——对于 100Mb 的文档,与小的 XML 块相比,差别会更大)。

    【讨论】:

    • 我将不得不处理非常大的文件(在我的情况下,一个 100MB 的文件是 small)。您是否有参考资料来确认分离更有效?从理论的角度来看,我真的不明白当它在签名树旁边时,计算树的签名比在它下面时更快......
    • @rds 速度差异不是由计算签名值引起的,而是由应用的转换和渲染输出文档引起的。如果您使用基于 DOM 的签名者,它将加载整个文档,然后在包装或嵌入签名的情况下再次组合它。在分离签名的情况下,只会写入一个很小的签名块,这就是分离签名获胜的地方。此外,如果 100Mb 对您的数据来说很小,那么将其加载到 DOM 进行处理将会遇到严重问题。
    【解决方案2】:

    由于没有编写 XMLdSig,请记住性能或文件大小可能是一个问题;流式传输是不可能的。有大量数据要签名,这确实是个问题,因为 DOM 对象会占用大量内存,相信我。在这方面,包裹或被包裹并不重要。

    这就是分离式签名大放异彩的地方。签名本身并没有那么大,要签名的数据可以流式传输,因为您只需要它的哈希。

    【讨论】:

    • 我还没有开始,但我看到了一个XML Signature Streaming Profile,这听起来与“流媒体是不可能的”相矛盾。另外,我不明白您所说的“签名本身不是那么大”是什么意思。不能用相同的算法计算签名,不管它的位置是什么?
    • @rds 您所指的文档与加载 XML 文档以进行签名或应用转换无关 - 这两个仍然需要 DOM。
    • @EugeneMayevski'Callback 不正确,这正是流式 XML 签名的全部意义所在 - 能够计算参考哈希(包括节点选择和 c14n),因此可以创建/验证 XML 签名,完全避免 DOM。
    • @vond 实际上,我在表述评论时有点不正确。关键是要说明,最近版本的文档第 2.2 节中的引述强调:“请注意,并非总是可以一次性流式传输方式应用或验证 XML 签名。”。因此,Cigiller 的原始答案仍然适用。
    • 仍然不同意原始答案,因为可以完全避免使用 DOM 来创建和验证 XMLDsig。 SAX 就足够了。当然,我说的是信封签名。包络和分离更明显
    猜你喜欢
    • 2013-02-18
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 2022-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多