有哪些好的、标准的数字签名/时间戳验证客户端被广泛或容易地部署?

信息安全 密码学 电子签名 工具 时间戳
2021-08-19 10:35:31

我正在寻找一种发布数据以及数字签名(理想情况下是时间戳)的好方法,这种方法可以通过在公共数据上本地运行的软件尽可能容易地进行验证。

例如,假设一位选举管理员想要发布要审计的选举数据(按选区按候选人统计的总数)。理想情况下,我们不希望公众必须购买很多特殊或专有软件。符合开放标准、可在 PC、Mac、Linux 上验证并可由开源软件生成的签名是首选。

数据必须保持机器可读,因此不适合使用 pdf ,因此如果使用 pdf,则数据将在 pdf 的附件中。

例如,如果我们生成 XML 签名(例如,用于选举的IEEE 1622-2011选举标记语言 (EML) 文件),是否有任何常见浏览器或操作系统中的标准功能来验证签名?用户界面是否足够清晰,可以让用户清楚地了解数据什么时候看起来不错,什么时候可疑,以及如何处理常见问题?

替代方案(和担忧):

  • RFC 3161 - Internet X.509 公钥基础设施时间戳协议 (TSP) - 哪些跨平台客户端是友好的?
  • OriginStamp,由比特币区块链支持(快速周转收费)
  • 带有附加数据文件的签名 PDF 概述:时间戳是否可以验证和信任?用户是否可以通过伪造的证书被欺骗进入
  • 通过各种带时间戳的社交网络发布指向数据及其哈希的链接:Keybase(由良好的加密规范支持),Twitter(流行),...
  • XML 签名
  • 在报纸上发布 SHA-256 哈希(如何向用户描述验证步骤?)
  • 使用 jar(签名的 zip)和 jarsigner(是否有一个很好的 GUI 来验证 jar 签名?X.509 PATH 验证?)
  • 使用 OpenOffice(安装麻烦)
  • CMS或 S-MIME(我们如何发布带有附件的 S-MIME 消息 - 公共 IMAP?)
  • 使用 gpg(但管理员需要进入 PGP 信任网络,用户需要学习理解它)
  • 使用 s-http(可惜https://www.rfc-editor.org/rfc/rfc2660一直没有起飞......)
  • 使用 Excel(是否有可以检查签名的免费客户端?开源软件通过脚本生成它?)
  • “仅从安全网站提供服务”(不处理各种攻击)

2019 年更新

  • 用一些较新的选项更新了选项列表,并阐明了我的目标(在云时代),即可以通过本地运行的软件验证的方法。我们越来越多地了解到 Web 服务器容易受到攻击,而分发签名数据也有优势。
  • 请注意,如今 EML 甚至 XML 正在失去青睐
4个回答

一种选择是使用 S/MIME 对带有 XML 附件的消息进行数字签名。使用在线页面,用户可以在该页面上输入将发送副本的电子邮件地址。

另一种选择是使用签名的 PDF。PDF 标准允许对 PDF 文档进行数字签名并支持附加文档。XML 可以作为附件附加到 PDF。将签署包括附件在内的完整 PDF。

如果您想让最终用户更容易检查签名,您应该确保使用普遍受信任的 x.509 证书,或者使用您自己的证书并在某处发布证书的指纹。

马丁·布林克斯

客户?那反而没有抓住重点。它实际上与文件格式和协议有关。

x509 是加密实现的基石。虽然它只是实现软件的起点,但它可能应该是您寻找软件的起点。

大约 10 年前,我需要为当时的雇主实施 PKI。我采取的路线是使用 openSSL 设置根证书颁发机构。那时 x509 验证可用于 MSOutlook Express 和 Eudora 所需的电子邮件插件(但不适用于 Bat!)。IIRC,这些现在已作为标准内置。Wincrypt(文件加密)可以免费下载,而 Stunnel 刚刚被移植到 MSWindows。

当然,10 年在加密领域是一段很长的时间——但 x509 的好处在于它可以容纳不同的算法/密钥大小。它还建立在与 LDAP 相同的基础上。

最近有更多使用 SSL 类型加密实现的工具 - 例如 Gnu Anubis(好吧,它实际上并没有添加 sigs - 但提供了调用 openssl 的钩子)、智能卡

遵循开放标准的签名可以在 [...] Mac [...]

在 Mac 上,到处都有内置的证书、密钥和信任服务。这意味着您可以向他们发送 S/MIME 数据,他们将能够检查证书及其在邮件客户端中的信任路径。另一方面,UI 看起来就像消息上方条形中的一个小勾号或十字。这也是使用 TLS 的问题 - 它可以工作,但它可以静默工作,并且在某些情况下它也会静默失败。介于两者之间的一切都需要特殊的知识才能理解。

Apple Mail中有 GPG 的第三方插件,但正如您在问题注册和随后正确使用 OpenPGP 中所观察到的那样,很难

如果该示例是一个常见用例(选举官方发布),那么您可能需要考虑一个官方网页,该网页提供服务器端加密哈希验证以及让公民自己离线验证的选项。选举办公室将在提供结果消息的页面上发布结果,所述消息的哈希,以及确认哈希对服务器端消息有效的功能(按钮操作或自动检查页面结果)。该方案将通过将站点解析为合法的政府机构 URL 来解决信任链问题。攻击面将是消息和哈希以及 DNS 的服务器端工件。