【问题标题】:Digital signature verification - WinVerifyTrust keeps returning true数字签名验证 - WinVerifyTrust 不断返回 true
【发布时间】:2015-04-06 07:57:35
【问题描述】:

我正在使用 WinTrust.dll 的 WinVerifyTrust 方法来验证我的 dll 的数字签名是否有效。但是,如果我创建自己的证书和自签名证书颁发机构并将其添加到我机器上的根存储中,WinVerifyTrust() 仍然返回 true。

是否有任何其他选项可以验证我的数字签名是否有效?

附:无法使用 X509Certificates.Verify() 方法。

【问题讨论】:

  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
  • 您正在向您的机器添加更多信任点,并且已经验证的内容仍然可以验证?这对我来说听起来很合乎逻辑。您需要删除信任点以使其失败。还是我们都误解了你?添加更多细节!
  • @JohnSaunders 为标题添加了更多细节。只是“数字签名验证”并不能真正说明问题的含义。

标签: c# cryptography digital-signature


【解决方案1】:

WinVerifyTrust 将始终检查存储以验证数字签名。将根和证书添加到 TRUSTED 根存储意味着您信任这些证书,因此信任签名。如果您要从 Trusted Store 中删除这些证书,则验证应该会失败(取决于您设置的标志)。试试看WinVerifyTrustEx

【讨论】:

  • 同意你的意见。但在这种情况下,如果任何黑客执行相同的操作,WinVerifyTrust 将返回成功。这就是我不想要的。我想检查文件是否由经过身份验证的源进行数字签名。
  • 您可以构建一个应用于信任验证的策略,以便它将限制为您定义的任何经过身份验证的源。
【解决方案2】:

如果您不介意使用外部工具,我建议使用 sysinternal 的sigcheck。它小巧、可靠且易于使用。如果您愿意,它可以将结果导出到 csv 文件。

【讨论】:

    猜你喜欢
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多