【问题标题】:Speed up jarsigner with hardware token?使用硬件令牌加速 jarsigner?
【发布时间】:2017-09-26 20:36:54
【问题描述】:

我以前使用本地安装的密钥库作为自动构建的一部分对 jar 文件进行签名。由于最近对最低代码签名要求的更改,我现在不得不使用基于硬件的设备,虽然我已经知道如何做到这一点,但我发现速度非常慢。

举个例子,一个包含 180 个类的 jar 文件,我以前可以登录大约半秒,现在大约需要 30 秒。在此过程中,我看到我的令牌设备的访问指示灯每秒闪烁几次,大概是 jar 文件中的每个类一次。

有什么办法可以加快速度,例如有什么方法可以将令牌访问减少为对整个 jar 文件的单一访问?

【问题讨论】:

  • 由于签名实际上是在处理能力非常低的电子令牌中进行的,因此您可能无能为力。如果您的密钥是可导出的,您可以将其导出为 PKCS#12 pfx 文件并用于签名。
  • @ares 谢谢。唉,我的密钥不可导出。显然,m*soft 现在需要的部分内容。

标签: java pkcs#11 jarsigner


【解决方案1】:

这不是一个答案,但是评论太长了:

如果您对任何文件的令牌访问权限的假设是正确的,那么这意味着设备中也在计算文件的哈希值,而不仅仅是签名。

您的 PKCS11 设备是否有一个日志记录选项,可以显示设备正在接收哪些 pkcs11 调用(散列操作在 PKCS11 中称为 C_Digest)以进行确认? 可能有java keytool with opensc pkcs#11 provider only works with debug option enabled中提到的选项(我没试过)

由于我不知道有没有办法告诉 jarsigner 通过软件进行哈希并通过硬件进行签名,如果您找不到更好的答案,也许您可​​以编写自己的提供程序:(http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/HowToImplAProvider.html):

  • 实现软件哈希(MessageDigestSpi,只是将调用转发给默认的软件 java 提供者)
  • 和设备签名(SignatureSpi,只是将调用转发到在 java 中配置的 PKCS11 提供程序)。我认为是Signature signature = Signature.getInstance("SHA1withRSA", "SunPKCS11") 等等。和 KeyStoreSpi 的模拟。

然后以您的提供者作为参数调用 jarsigner。

【讨论】:

  • 感谢您的建议。我的令牌确实具有日志记录功能,但它需要管理访问权限,而我没有。谢谢指点,我去看看。
  • 正如你所说,你的回答并不是真正的答案,但它似乎是我很快就会得到的最接近的答案,所以现在我会给你答案。谢谢!
  • 我不知道什么是 jarsigner 许可证。但也许,如果许可证允许,您可以修改 jarsigner 源代码以使用来自 jarsigner 命令行参数的密码提供程序来制作软件摘要(我的意思是始终是软件)和签名。
  • stackoverflow.com/questions/44761149/… 的评论中,@vlp cmets 提供了两个用于记录 pkcs11 库的工具
【解决方案2】:

尝试将 -sigalg SHA512withRSA 添加到您的 jarsigner 选项中。

如需更多信息,请查看我的answer 相关问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-30
    • 2013-01-04
    • 2014-11-05
    • 1970-01-01
    • 2011-06-05
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多