【问题标题】:digital signature - detached Pkcs#7 to XML-DSIG数字签名 - 将 Pkcs#7 分离到 XML-DSIG
【发布时间】:2010-01-03 18:13:10
【问题描述】:

我正在努力应对以下情况:

  1. 在客户端创建 XML 消息并使用 mozilla 的 window.crypto.signText 进行数字签名。签名后,消息和签名通过网络服务 (.net) 传输到服务器。到目前为止一切都很好。

  2. 在服务器上,XML 应包含在另一个可公开访问的 XML 文档中。签名也应公开,以授予不可否认性。

问:是否有将分离的 Pkcs#7 转换为 XML-DSIG 的平滑选项(例如 .net 框架内的功能)?

Q2:或者是否可以在不使用外部插件的情况下在客户端创建 XML-DSIG?

Tnx 为您提供帮助!

阿洛伊斯·保林

【问题讨论】:

    标签: xml xml-signature pkcs#7


    【解决方案1】:

    由于数字签名格式 XML 和 PKCS#7 的性质,不可能从一种转换为另一种。

    在一个非常简单的解释中,PKCS#7 格式的签名除其他内容外,还包含一些称为 DigestInfo 的特定数据结构,其中包含数据摘要和 OID(对象标识符),并已使用用户的私钥加密. XML-Dsig 格式将加密算法的最后一步(同样使用用户的私钥)应用于通过消化原始 XML 数据和某些特定 XML-DSig 数据结构计算得出的不同数据值。因此,由于两个加密值不同,只能通过使用您无权访问的用户私钥对数据进行签名来生成 XML-DSig 签名(因此名称为 private)。

    根据该解释,您的第一个问题的答案是“不,没有平滑的选项,根本不可能”

    因此,唯一的选择是直接在客户端生成 XML-DSig。使用标准 Javascript 是不可能的,绝对不能使用 Firefox 的 window.crypto(它只生成 PKCS7 分离签名)。在我的公司(www.isigma.es),我们通过使用小程序解决了这个问题,这是数字签名行业的常见解决方案(有许多商业解决方案,也有一些开源解决方案)。如果您不想要浏览器插件,这可能不是您的选择。

    CAPICOM(您可以在 Microsoft 设置中使用的基于 Windows 的 Active/X 组件)也不会生成 XML-DSig,只会生成 CMS/PKCS7。

    【讨论】:

    • 评论你的旧答案 - 因为你似乎对 webapps 中的数字签名很了解,我想知道你是否对我的问题有任何建议 - stackoverflow.com/questions/17607604/…
    • 还有另一个问题 - 是否可以反过来 - 即将 XMLDSig 转换为 PKCS#7 签名?
    • 这就是我在第一段中的意思。您不能从其中一个转换为另一个。
    猜你喜欢
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多