26

我很好奇是否有办法对文件(技术上是任何数据)进行数字签名,例如合同或照片,以便 10 年后,可以证明它们是从现在开始的,而不是 9 年后伪造的.

例如,我可以写一个对未来的预测,并用传统的方式对其进行签名以证明它是我写的,然后对其进行时间戳签名,以便当它实现时,我可以证明我预测它。

我想到的一种方法是可能有一个时间戳权威。您向他们发送数据,他们对数据 + 时间戳进行哈希处理,并使用他们的私钥使用 RSA 对哈希进行加密。因此存在的签名文档包括:数据、时间戳、加密哈希。

10 年后,我对数据 + 假定的时间戳进行哈希处理,并检查它是否与我使用授权的公共 RSA 密钥(我信任)解密的加密哈希匹配。如果是这样,我知道时间戳是有效的。

我可以看到两个问题:

  • 需要外部授权
  • 当局的私钥需要绝对保密,因为如果它被泄露,所有用它签名的文件都会失效。

你能想出一个没有(其中一个)这些问题的解决方案吗?

4

11 回答 11

12

这称为时间戳。最广泛使用的机制在 TSP 规范 ( RFC 3161 ) 和其他一些规范中定义。MS Authenticode 中使用了替代方法,但它没有记录并且与 TSP 不兼容。

TSP 在几个加密和数字签名标准中用作补充功能,例如 PDF、XAdES、CAdES、PAdES(AdES 代表“高级加密标准”)。PDF、XAdES 和 PAdES 标准适用于某些类型的数据。CAdES 是通用格式(因为它可以应用于任何通用数据)。

RFC 5544提供了一种将 TSP 应用于任何通用数据而不签署此数据的方法。

TSP 规范大量使用 PKI 和 X.509 证书。

时间戳服务由证书颁发机构作为补充服务提供。还存在独立的时间戳服务。

您可以运行自己的时间戳服务,但是时间戳需要使用特殊的证书(其密钥使用扩展将以特定方式设置),因此常规 SSL 或代码签名证书将不起作用。

谈论“时间戳权威”-您向他们发送哈希(在签名期间计算),然后他们使用他们的证书对该哈希进行签名。保护私钥是他们的事,而且他们通常会为此收费。

关于第三方权威的想法是它证明了时间。如果你在数据上签名,你可以在任何时候签名,没有办法检查它是否正确或者你是伪造的。只有受信任的第三方权威才能证明时间戳的正确性。

于 2011-07-17T21:32:58.127 回答
7

是的,您可以使用ProofOfExistence.com来做到这一点,它将您的文档的哈希放在比特币 区块链上。

(参见这个

于 2017-05-07T03:36:50.240 回答
3

这是一个自 1995 年以来一直在持续运行的时间戳服务。

http://www.itconsult.co.uk/stamper/stampinf.htm

您通过电子邮件发送数据(或数据的散列),并取回数据的签名以及带有序列号的时间戳。分离的签名(但不是数据本身)是公开发布的,任何人都可以自己存档,这样如果网站运营商试图篡改时间戳记录,人们就会知道。因此,原则上,您不必对服务本身寄予太多信任。

于 2014-05-02T05:13:47.507 回答
3

是的,有些商业服务可以安全地为文档或软件添加时间戳。

维基百科上有一篇文章解释了这一点。谷歌很快公布了一项这样的服务(我不隶属于),我相信还有更多。曾经也有免费的,但这都是信任问题(即法院是否会信任“互联网上的某人”与威瑞信)。

于 2011-07-17T20:08:20.573 回答
1

在过去,我会说“查找PublicTimeStamp.org ”,但它的过去有些曲折。它似乎仍在运行 - 但该网站只是勉强工作。如果您访问http://PublicTimeStamp.org/ptb,您会发现最近的值(今天)。但是系统的其他部分是不可见的。

于 2011-07-17T20:56:03.940 回答
1

RFC3161 不是安全时间戳的唯一方法。

当前的一个研究领域是开发计划,您必须减少对发布时间戳的第三方机构的信任。使用基于 RFC3161 的时间戳,您或多或少需要完全信任权威。本演示文稿概述了大多数基于链接方案的替代方案。这个想法非常有吸引力,因为时间戳将受到公众监督,并且不涉及可能泄露的密钥,因此提供了比当今标准 RFC 3161 时间戳更好的安全性。

于 2011-07-18T07:36:02.463 回答
1

查看easytimestamping.com。时间戳(基于 RFC3161)由欧盟认可的合格认证机构颁发,因此,在大多数欧盟国家,时间戳具有保证的法律有效性。

当局的私钥需要绝对保密,因为如果它被泄露,所有用它签名的文件都会失效。

合格的 CA 被证明符合(至少)符合标准,该标准ETSI TS 102 023强制实施各种物理和软件安全措施以保证对私钥的保护。

PS:我隶属于easytimestamping.com

于 2011-08-30T16:39:47.560 回答
0

我想这取决于你的控制。外部权威机构会起作用,但从技术上讲,这与内部认证是一回事。这仅取决于您信任谁。您是否正在考虑防止用户或您的开发人员错误地证明文件?

于 2011-07-17T19:59:20.313 回答
0

过去,人们保留未打开的通过挂号信发送的文件,并称其为“穷人的版权”。我想你可以对任何主要的、受人尊敬的电子邮件网站做同样的事情。通过 Gmail 或 Hotmail 或其他方式向自己发送一份文档副本,并将副本保存在您的帐户中 - 电子邮件上的日期/时间戳应该来自服务提供商(而不是来自您的计算机),所以这将是非常可靠的证据我想。

于 2011-07-17T20:03:36.957 回答
0

只要您不是在寻找可以持续很长时间的东西:

加密文档并将其发布到 Usenet 二进制组之一。任何人都可以检查标头并查看何时收到它,您可以解密文件(或视情况提供密钥)并证明它确实是有问题的数据。

由于一旦发布了文件,您就无法控制文件,因此仅显示有效的预测是不可能的。

于 2014-06-14T18:17:04.710 回答
0

可以使用符合 RFC 3161 的时间戳服务,它是一种标准,必须提供足够的证据证明特定文档在特定时间存在。更好的想法是将文档更改为 PDF,然后对其进行数字签名和时间戳,在 PDF 中,任何人都可以清楚地看到时间戳和签名或时间戳的其他属性。检查tecxoft tsa,你也可以在这里测试 pdf 数字签名。

于 2016-01-31T07:31:20.807 回答