如何证明我写了某篇博文?

信息安全 密码学 电子签名
2021-08-12 16:33:26

我希望能够证明我写的文章位于其他人博客的给定 URL 上。有没有办法用公钥加密来做到这一点?我对该主题有所了解,并且我认为我可以:

  • 使用我的私钥生成一个公钥,我将在我自己的网站上显示以供参考
  • 使用我的私钥(以博客的 URL 为种子)为我写的每个新博客 URL 创建一个新的公钥
  • 要求读者通过以某种方式比较两个公钥来验证我的工作的真实性

我在正确的轨道上吗?这是我需要帮助的方式。

3个回答

事后(并将答案限制在可行的技术解决方案上),可能没有办法证明你写了一些东西。我将假设内容尚未发布。

一个合理的“证明”有两个部分,首先是内容与数字身份的关联,即对内容进行签名,以便可以使用可识别且易于获得的公钥对其进行验证。第二个(可能不需要,取决于你的偏执程度)证明你首先创建了它(即证明或反驳抄袭)。数字签名提供完整性真实性(发件人证明)。作者身份证明(与不可否认性有关)是一个更难解决的问题

最简单的方法是使用公钥解决方案,正如您所建议的那样:在您发布之前,您会得到一个受信任的第三方,该第三方提供安全的时间戳服务来为您的签名内容的摘要添加时间戳和签名。时间戳服务将使用 X.509 证书,您可以在此处自由使用 PGP 或 X.509 签署您的内容。

您“可证明”的已发布数据应该是:内容(由您签名)和签名(如果不是内联)、您的公钥或其位置、摘要方法和第三方的时间戳签名(摘要)。

这个关于签署代码提交的问题几乎涵盖了技术细节: https ://stackoverflow.com/questions/11913228/how-can-i-use-rfc3161-trusted-timestamps-to-prove-the-age-of-commits -在我的 git 中

这里可能存在的问题是如何以规范格式表示您的内容,以便其他人可以验证签名。您应该考虑以可以“完整”下载且不受服务器端博客软件意外重新格式化或更改的格式签署内容。提供文章的 PDF 版本将是一种解决方案,您还可以选择在 PDF 本身 (PDF)中使用 X.509 签名和时间戳。

如果你是老派,有一个免费的 21 世纪,相当于通过挂号信给自己寄一份副本,这可能有用也可能没有用,并且可能具有与法律一样多的重要性(即可以忽略不计): http://www .itconsult.co.uk/stamper.htm


现在Programmers.SE 上有一个类似的问题,其中一个有趣的答案涉及使用比特币对一个不存在的地址(你的内容哈希值)进行牺牲性小额支付。一旦你的交易进入区块链,你就有了你的“证明”(尽管时间戳分辨率降低了,它可能需要几十分钟)。

您可以做的是使用PGP 对您的文本进行签名此处的另一篇文章)。然后,您将需要发布您的公钥,以便人们可以验证您是否已“编写”此文本。请注意,他们无法真正验证是否编写了文本(您自己也可以从某个地方复制文本并签名,即使您没有编写它)。

  • 使您的公钥可用(最好您亲自将密钥提供给每个人,实际上使其在完全由您控制的页面上可用)
  • 使用您的 PGP 私钥签署您的帖子,并在博客帖子或个人网站上提供
  • 如果人们想验证您是否写过这篇博文,他们会获取您的公钥并验证该帖子。如果他们成功了,他们就知道帖子是用你的私钥签名的。这意味着唯一可以加密消息的人是拥有私钥的人。考虑到它是你的私钥(你永远不会把它给任何人),他们知道它一定是你。

我认为除了谁,什么时候也很重要。这带来了时间戳。这些是第三方服务,它们对文本的哈希进行签名并添加时间戳。这证明文本在那一刻之前就已经存在。因此,即使有副本,您的副本也是第一个(或不是)。

与 gpg 不同,时间戳服务可能不是免费的。