标签: trusted-timestamp

如何使用时间戳安全地签名数据?

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

我应该考虑哪些方法或协议?RFC 3161?我发现声称提供该服务的大多数网站对我来说并不是非常有信誉.

你可以自己动手吗?

security digital-signature trusted-timestamp rfc3161

6
推荐指数
1
解决办法
2927
查看次数

加密时间

是否存在加密机制,通过该机制可以使用日期对文档进行签名,以便以后不可能伪造相同的签名?也许某种服务器发布每日加密密钥(但你怎么能信任它们?;-).

对于不可避免的刺激实用主义者,我不是想完成一些任务.我只是好奇解决方案空间是什么样的.

time cryptography digital-signature trusted-timestamp

6
推荐指数
1
解决办法
238
查看次数

如何部署自己的Authenticode时间戳服务?

我想用我自己的Authenticode时间戳服务为我的DLL文件加上时间戳.这可能吗?我怎么能实现这个目标?

c# dll code-signing trusted-timestamp

6
推荐指数
2
解决办法
3889
查看次数

Signtool.exe /dg /ds /di 选项和时间戳

我们正在努力使用signtool.exe 摘要选项来优化数字签名过程。到目前为止,工作流程如下所示:

  1. 在客户端上创建摘要:signtool.exe sign /f cert /fd sha256 /dg 。我的文件.dll
  2. MyFile.dll.dig摘要发送到我们的签名服务器。
  3. 在签名服务器上签名摘要:signtool.exe sign /f cert /fd sha256 /ds MyFile.dll.dig
  4. 将签名MyFile.dll.dig.signed发送回客户端。
  5. 在客户端创建签名:signtool.exe sign /di .MyFile.dll
  6. 在客户端添加时间戳:signtool.exe timestamp /tr http://some_timestamp_server /td sha256 MyFile.dll

有没有办法在签名服务器上执行时间戳?

code-signing digital-signature trusted-timestamp signtool

6
推荐指数
1
解决办法
1578
查看次数

带时间戳的pkcs7

我现在看了一天,还是一头雾水。我想将数字签名添加到带有来自TSA(TimeStamp Authority)的时间戳的 PDF 中。

我可以将请求发送到 TSA 并接收二进制响应,但是如何将该时间戳附加到我的 pkcs7 数字签名中。

我正在使用带有 TCPDF 和openssl_pkcs7_sign()函数的PHP 。我需要添加时间戳作为额外的证书吗?谢谢!

php tcpdf trusted-timestamp pkcs#7

5
推荐指数
1
解决办法
1772
查看次数

如何将时间戳证书添加到Linux上已签名的PE文件?

我需要在Linux上对PE文件(实际上是EFI)进行数字签名和时间戳.我发现签名PE文件3个工具:pesign,osslsigncodesigncode(单声道),但似乎没有一个很适合我的需要.问题是,密钥在硬件令牌上,无法导出.因此,我必须创建一个证书数据库,在那里添加令牌驱动程序条目并通过此DB工作.只pesign允许这样,但它不支持时间戳.osslsigncodesigncode支持时间戳,但他们无法使用数据库.

Windows signttool.exe可以作为单独的步骤执行签名和时间戳.所以我想,我可能会pesign用来签名文件,然后只用其他工具加盖时间戳.但是正如我发现的那样,osslsigncode并且signcode不支持单独的时间戳(在osslsigncode项目中它列在TODO文件中,但在存储库中没有它的迹象).

我错过了一些工具吗?有没有太低级别的库可以让我自己编写这样的程序吗?(最好是C/C++/Perl/Python.)我试图从中获取时间戳代码osslsigncode,但未能轻易地从之前的步骤中删除它(删除现有签名并添加新签名).

PS我也尝试signtool.exe在葡萄酒下运行,但1)未能使它运转,2)我不确定它是否合法允许(我不擅长分析EULA).

linux code-signing portable-executable trusted-timestamp

5
推荐指数
1
解决办法
780
查看次数

我必须传递来自 CMSSignedData 对象的哪些数据才能生成有效的时间戳?

我有一个有效的 PKCS7 文件加载到 CMSSignedData 对象中。此 PKCS7 文件包括纯文本消息和有效的附加数字签名(都在同一个文件中)。

现在我想给这个文件加上时间戳。这是我正在使用的代码(源代码):

 private static CMSSignedData addTimestamp(CMSSignedData signedData)
throws Exception {
        Collection ss = signedData.getSignerInfos().getSigners();
        SignerInformation si = (SignerInformation) ss.iterator().next();

        TimeStampToken tok = getTimeStampToken();

        ASN1InputStream asn1InputStream = new ASN1InputStream
(tok.getEncoded());
        DERObject tstDER = asn1InputStream.readObject();
        DERSet ds = new DERSet(tstDER);

        Attribute a = new Attribute(new
DERObjectIdentifier("1.2.840.113549.1.9.16.2.14"), ds);
        DEREncodableVector dv = new DEREncodableVector();
        dv.add(a);
        AttributeTable at = new AttributeTable(dv);
        si = SignerInformation.replaceUnsignedAttributes(si, at);
        ss.clear();
        ss.add(si);
        SignerInformationStore sis = new SignerInformationStore(ss);

        signedData = CMSSignedData.replaceSigners(signedData, sis);
        return …
Run Code Online (Sandbox Code Playgroud)

java validation bouncycastle trusted-timestamp pkcs#7

5
推荐指数
1
解决办法
1788
查看次数

使用 PHP 将时间戳添加到 PDF 签名

使用 tcpdf 库,我可以向 pdf 添加签名,但时间戳(RFC3161)尚未在该库(applyTSA)中实现,我需要此功能。

根据 ISO 32000-1:2008:

作为无符号属性的时间戳信息 (PDF 1.6):时间戳令牌应符合 RFC3161,并应按照 RFC3161 附录 A 中的描述进行计算并嵌入到 PKCS#7 对象中。时间戳的具体处理及其处理留给特定的签名处理程序来定义。

来自 RFC3161 附录 A

以下对象标识符标识签名时间戳属性:

id-aa-timeStampToken 对象标识符 ::= { iso(1) 成员主体(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) aa(2) 14 }

Signature 时间戳属性值具有 ASN.1 类型 SignatureTimeStampToken:

SignatureTimeStampToken ::= TimeStampToken

TimeStampToken 中的 messageImprint 字段的值应为带有时间戳的签名数据的 SignerInfo 中的签名字段值的哈希值。

使用 openssl 生成时间戳非常容易,但我不清楚如何将其嵌入到 PKCS#7 对象中。我的问题是:

  1. 如何在我的签名中添加时间戳?
  2. 或者,有任何开源库(php 或其他)具有此功能?

举个例子将不胜感激

php pdf timestamp trusted-timestamp rfc3161

5
推荐指数
0
解决办法
2814
查看次数

在PDF签名中包含时间戳的步骤

美好的一天,

我正在尝试将时间戳信息嵌入到pdf签名中,以便adobe会向我报告签名是时间戳.目前,我所获得的只是Adobe报告"签名包含嵌入式时间戳,但无法验证",当您查看日期/时间属性时,它表示"时间戳授权"不可用和"显示证书"是灰色的.

显然,我在构建PKCS#7消息时做错了.但我现在不知道.有人可以通过描述我需要采取的步骤来帮助我,以便我的签名有时间戳吗?或者建议一个可以帮我找到问题的工具?

我正在使用Crypto API.我目前遵循的步骤如下:

  1. 使用CryptHashMessage函数(SHA256)创建pdf数据的摘要.
  2. 使用CryptRetrieveTimeStamp函数将此摘要发送到TSA .我已设置*TIMESTAMP_DONT_HASH_DATA*标志,以便不再对哈希值进行哈希处理.
  3. 来自TSA的repsonse被添加到*CRYPT_SIGN_MESSAGE_PARA*结构中作为未经身份验证的属性,并且签名时间被添加为经过身份验证的属性.
  4. 然后我使用CryptSignMessage函数来签署使用上述结构的原始数据.

如何检查数据是否正确,以便adobe可以告诉我签名已被加上时间戳?

此致,玛格达

pdf cryptoapi digital-signature trusted-timestamp

4
推荐指数
1
解决办法
5454
查看次数

Java时间戳协议的实现

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

java trusted-timestamp rfc3161

3
推荐指数
2
解决办法
4347
查看次数

证书过期后,Java Web Start应用程序(无时间戳签名)会发生什么?

我们有一个使用CA(Thawte)证书签名的Java Web Start应用程序.该应用程序分发给数百名客户.他们在服务器上托管它,在客户端计算机上通过互联网或内联网运行.现在它完美无缺.问题是应用程序是在没有时间戳的情况下签名的.证书到期后客户会怎样?他们应该能够启动应用程序吗?如果没有,我们如何帮助他们?将他们的服务器URL添加到例外站点列表是否有帮助?

我们尝试更改本地时间以假装证书过期.然后,由于安全性,应用程序被阻止 将URL添加到例外站点列表没有帮助:

java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Response is unreliable: its validity interval is out-of-date
at com.sun.deploy.security.RevocationChecker.checkOCSP(Unknown Source)
at com.sun.deploy.security.RevocationChecker.check(Unknown Source)
at com.sun.deploy.security.TrustDecider.checkRevocationStatus(Unknown Source)
at com.sun.deploy.security.TrustDecider.getValidationState(Unknown Source)
at com.sun.deploy.security.TrustDecider.validateChain(Unknown Source)
at com.sun.deploy.security.TrustDecider.isAllPermissionGrantedInt(Unknown Source)
at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(Unknown Source)
at com.sun.javaws.security.AppPolicy.grantUnrestrictedAccess(Unknown Source)
at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResourcesHelper(Unknown Source)
at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResources(Unknown Source)
at com.sun.javaws.Launcher.prepareResources(Unknown Source)
at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.launch(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main.access$000(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Suppressed: com.sun.deploy.security.RevocationChecker$StatusUnknownException
    at com.sun.deploy.security.RevocationChecker.checkCRLs(Unknown Source) …
Run Code Online (Sandbox Code Playgroud)

java sign code-signing trusted-timestamp thawte

3
推荐指数
1
解决办法
2071
查看次数

时间戳响应

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

提前致谢。

.net c# bouncycastle trusted-timestamp rfc3161

2
推荐指数
1
解决办法
2164
查看次数