问题标签 [rfc3161]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6549 浏览

java - 时间戳响应不正确 - BouncyCastle

尝试通过使用 BouncyCastle 并连接到http://timestamping.edelweb.fr/service/tsp来请求时间戳 (RFC 3161) 。我确实从服务器收到了 TimestampResponse,但它似乎没有实际日期。

这是代码:

这是问题:有没有人使用 Bouncycastle 的时间戳库并碰巧知道不同的状态代码及其含义?或者只是一般来说为什么这似乎不起作用。

我希望看到日期的这一行只抛出一个 NullPointer:

有谁知道任何其他免费的符合 RFC 3161 的时间戳服务器?

如果您想运行代码,您需要可以从这里下载的 bouncycastle jars 。您将需要:提供者、邮件、tsp。

谢谢

0 投票
2 回答
3213 浏览

security - 如何使用时间戳安全地签署数据?

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

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

是否可以自己滚动?

0 投票
2 回答
1611 浏览

python - Python中的时间戳服务器rfc3161响应令牌生成

我正在尝试使用 twisted 在 python 上实现 tsa 服务器。目前我正在使用 openssl 二进制文件来生成响应,但这对我来说似乎很难看,这就是为什么我试图弄清楚如何使用 m2crypto 制作响应令牌。

提前感谢您的帮助!

马里斯。

编辑:

如何使用 m2crypto 实现?:

0 投票
1 回答
4883 浏览

trusted-timestamp - 可信时间戳 - 了解格式 (rfc3161)

[编辑:我写了一篇博文,详细解释了一切:看这里]

你好!

我正在拼命地尝试为基于 rfc3161 的可信时间戳构建服务。我决定在zeitstempel.dfn.de使用免费的可信时间戳服务。

我的问题是我将如何联系该服务以获得有效的回复。关于请求格式,RFC 告诉:

在哪里

我找到了一个对我有点帮助的客户。

尽管如此,我仍然不知道我应该如何构造时间戳服务的请求。

问候!

0 投票
1 回答
2206 浏览

c# - 时间戳响应

我正在使用 Bouncy Castle 从 .NET 中的时间戳服务器读取响应。现在我想向客户端显示时间戳服务器证书,如何从响应中读取时间戳服务器证书?

提前致谢。

0 投票
2 回答
4995 浏览

java - 时间戳协议的Java实现

我们目前使用 openssl 进行时间戳。我想知道,是否有时间戳协议(RFC 3161)的 Java 实现。

0 投票
5 回答
4317 浏览

git - 如何使用 RFC3161(可信)时间戳来证明我的 Git 存储库中提交的年龄?

更新

我已将我用于此的脚本发布到 StackExchange 代码审查网站。

我最初的问题是有没有办法可以用 X.509 证书和时间戳签署 Git 提交?. 有一段时间,我以为我只能得到我用我的 X.509 证书签名的东西,由受信任的第三方加盖时间戳。不是这种情况。带有 X.509 证书的数字签名和受信任的时间戳是相互排斥的。我已经更新了我的问题以反映这一点。

正如 VonC 所指出的,使用 X.509 证书签署 Git 提交不会增加任何价值。由于 Git 的内置支持,使用 GPG 密钥是一个更好的选择。

我接受了 Greg 的回答,因为它最接近我的要求,尽管我最初的问题有点模棱两可。正如 Greg 指出的那样,如果您可以证明您在某个时间点知道提交哈希,则可以保证您知道当时哈希所针对的存储库内容,并且无需在存储库中存储任何额外的数据。时间戳数据可以存储在任何地方。

可以使用openssl(v1.0.0+) 并curl为提交哈希请求 RFC3161 时间戳。

请求时间戳

您需要为此提供一些信息:

  • URL - 一个 RFC3161 时间戳服务
  • REV - 您想要时间戳记的修订版(哈希)。必须是完整的哈希。

以上会将签名的时间戳输出到stdout. 如果时间戳服务拒绝请求,它也可能会输出错误。

验证时间戳

这与请求时间戳非常相似,但您还需要:

  • CAFILE - 从时间戳服务返回根 CA 的证书链

时间戳服务应该使用由受信任的机构颁发的证书对时间戳进行签名。如果没有,您的时间戳就没有多少可信度。如果您无法找到或创建合适的证书链,请尝试使用cacert.pemcurl. 它在这里

下面的代码片段假设一个现有的、签名的时间戳回复被传递给stdin. 应该可以将上述请求直接传送到下面的验证命令中。如果您将请求的响应存储在变量中,则可能需要对其进行 base64 编码/解码 ( man base64)。

如果您检查回复,您会注意到请求摘要与使用的 Git 修订相匹配。您可以使用此命令检查纯文本版本的回复。

这是一个回复示例,我在顶部添加了 Git 修订。

其他注意事项

许多时间戳服务要求用户为脚本签名请求添加延迟。确保您了解您计划使用的服务是否需要它。在撰写本文时,我使用的 Comodo 要求脚本请求之间有 15 秒的延迟。我选择使用 Comodo 的唯一原因是我从那里购买了我的代码签名证书。

Git 笔记似乎是存储签名时间戳回复的明显选择,但我并没有完整的解决方案来发布。我现在被困在这个问题上。

我的原始问题和更新如下。


我希望能够证明我的 Git 提交何时发生并且我的存储库的历史没有被重写。它不必是每个提交。一天一次或一周一次就足够了。有推荐的方法吗?

我知道我可以使用 GPG 密钥签署 Git 提交,但我想知道是否有一种方法可以使用 X.509 证书和使用在线时间戳服务(如http://timestamp.comodoca)签署我的提交.com/rfc3161

如果不是,是否每天一次将当前修订版转储git rev-parse --verify HEAD到文本文件中,签署该文件并提交足以证明(大致)何时编写我的代码?

为清晰添加信息

我知道 Git 可以保证存储库的完整性,但是据我所知,如果我控制了存储库,第三方将不得不相信我没有重写存储库的历史或回滚我的时钟并且创建一个完全伪造的存储库只是为了“证明”我的代码比实际旧?我也不想公开发布我的存储库。

这是一个虚构的用例,应该可以更好地了解我想要做什么。

我在网上发布了一些代码。一年后,有人复制并在一本书或文章中发布了相同的代码,并声称我是复制它们的人。那时,我希望能够使用我的存储库并证明我在一年前提交了该代码,然后他们重新发布了它。

通过使用带有时间戳服务的 X.509 证书,我可以证明签名发生的时间。只要我能证明我知道一年前提交的哈希值,Git 就可以保证存档的完整性。

或者,有没有办法使用 GPG 密钥签署提交,但带有经过验证的时间戳?是否有受信任的第三方提供与 X.509 证书可用的时间戳服务类似但适用于 GPG 的时间戳服务?

也许我可以使用 GPG 密钥和 X.509 证书的组合。假设我在存储库中保留了我的(公共)GPG 密钥的副本,如果我在每天结束时执行以下操作,是否会起作用?

  1. 使用我的 X.509 证书和在线时间戳服务签署我的(公共)GPG 密钥。
  2. 使用我的(私有)GPG 密钥的签名将更改提交到存储库。
0 投票
3 回答
15135 浏览

digital-signature - 验证 RFC 3161 可信时间戳

在我的构建过程中,我想包含来自符合 RFC-3161 的 TSA 的时间戳。在运行时,代码将验证这个时间戳,最好不需要第三方库的帮助。(这是一个 .NET 应用程序,因此我可以随时使用标准哈希和非对称加密功能。)

RFC 3161 依赖于 ASN.1 和 X.690 等等,实现起来并不简单,所以至少现在,我使用 Bouncy Castle 来生成 TimeStampReq(请求)并解析 TimeStampResp(响应)。我只是无法弄清楚如何验证响应。

到目前为止,我已经弄清楚了如何提取签名本身、公共证书、创建时间戳的时间以及我发送的消息印记摘要和随机数(用于构建时验证)。我不知道如何将这些数据放在一起以生成经过散列和签名的数据。

这是我正在做什么以及我正在尝试做什么的粗略想法。这是测试代码,所以我采取了一些捷径。一旦我得到一些有用的东西,我将不得不清理一些东西并以正确的方式做它们。

构建时生成时间戳:

运行时的时间戳验证(客户端站点):

正如您可能猜到的那样,我认为我被卡住的地方是MagicallyCombineThisStuff功能。

0 投票
1 回答
4215 浏览

pdf - 如何使用 Bouncy Castle 构建 RFC 3161 时间戳

我们需要基于 X509 证书(当然包括私钥)和 RFC 3161 实现我们自己的 PDF 时间戳机制。我已经用谷歌搜索并在这里询问了 SO,正确的解决方案是重新实现 TSAClient 类为我们在本地做时间戳(没有在线 TSA)。但是,除了 SecureBlackbox 组件,我没有找到 RFC 3161 的任何实现。Bouncy Castle 图书馆应该可以,但我不知道怎么做。

你能指出我正确的方向吗?

0 投票
1 回答
502 浏览

c# - Saving rfc5544 structure to file

I successfully obtained a Timestamp from a tsa server (RFC 3161) and i've created the following Object using bouncyCastle:

How can i save this structure to a file (.tsr or .tsd) with RFC 5544 specifications?

I've looked for this all over the bouncycaste wiki and also asked in their forum but i received no answer.

Thank you