【问题标题】:How do I securely sign data with a timestamp?如何使用时间戳安全地签署数据?
【发布时间】:2011-01-02 15:30:28
【问题描述】:

我想用安全的时间戳对数据库中的记录进行签名,以证明在该日期之后它们没有被任何人更改。

我应该考虑哪些方法或协议? RFC 3161?我发现的大多数声称提供该服务的网站在我看来都不是很有名气。

是否可以自己滚动?

【问题讨论】:

标签: security digital-signature trusted-timestamp rfc3161


【解决方案1】:

如果您正在寻找一个可以工作的 RFC3161 服务器,那么 http://time.certum.pl/ 是我所知道并且一直存在的一个。

如果您正在寻找不依赖于单个基于秘密的时间戳框的更大解决方案(基本上可以很好地扩展),请查看http://www.guardtime.com

从技术上讲,时间戳是 UNIX 时间戳 :) 但是您似乎分配给时间戳的属性是哈希和“签名”(可以验证某个哈希在某个时间存在的声明)。

任何与“信任”有关的事情都是您可以自己动手做的。就像您可以推出自己的 CA、推出自己的基于标准的服务或发明自己的方案一样。但是说服其他方“信任”你自己推出的东西可能会更棘手。

这就是人们为 CA 证书付费的原因 - 它们受到浏览器供应商的预先信任。这就是为什么当您需要一个其他人必须信任的解决方案或者如果您有义务为您的数据添加时间戳时,您需要一个经过认证的时间戳源。

【讨论】:

  • 您似乎可以从 certum 获得一个用于非商业目的的简单免费 RFC3161 tsr,只需获取您自己的文档 sha1 总和并发出这样的“GET”请求:time.certum.pl/?sha1=da39a3ee5e6b4b0d3255bfef95601890afd80709 If您将其保存为“download.tsr”,您可以在 Linux 上使用“openssl asn1parse -inform DER
  • @nealmcb - 回复旧帖子 - 如果我使用 time.certum.pl - 我从哪里获得 time.certum.pl 的证书/公钥。即当我取回时间戳数据时 - 我需要 TSA 的公钥来验证它,对 - 我从哪里得到这个?
【解决方案2】:

简单的方法是附加您要确保未被篡改的值,向其添加盐,然后将其全部 md5,并保存 md5 哈希。

因此,如果您有一个包含以下列的表:用户名、名字、姓氏、哈希

您执行 md5(Username+Firstname+Lastname+"MySuperSecretSalt") 并将值保存在 Hash 中。

但我必须说,这听起来很奇怪。

【讨论】:

    猜你喜欢
    • 2012-09-13
    • 2021-11-24
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2015-06-19
    相关资源
    最近更新 更多