JAR 签名可以阻止某人修改 JAR,但是什么可以阻止某人用自己已签名或未签名的 JAR 进行交换呢?

问题描述 投票:0回答:2

我有一个 Java 桌面应用程序。我正在下载并动态运行 JAR 文件。 JAR 签名可防止有人修改我下载的 JAR 文件。我如何验证我的应用程序只运行我已签名的 JAR?

如果不确保我运行的所有 JAR 都经过我签名,那么 JAR 签名对于桌面使用来说不是仍然不安全吗?

java kotlin jarsigner jar-signing jpackage
2个回答
0
投票

JAR 签名是由运行应用程序的人验证自签名以来该应用程序未被修改。另外,根据证书,您可以检查签署了它。

它不能防止运行应用程序的人进行修改:他们可以删除签名,或者他们可以自己签名,如果您的应用程序中有代码来验证签名,他们也可以替换该代码以执行任何操作验证或验证其证书。

换句话说,是的,你是对的,它并不能保护你免受你所想到的情况的影响。它也不适合这种情况(例如,它不是 DRM 的一种形式)。

您是否认为桌面使用安全取决于运行应用程序的个人/公司。他们可以配置其安全策略以仅接受某些签名证书。

您可能还想阅读 Java 教程 签名和验证 JAR 文件,尤其是章节 了解签名和验证


0
投票

OpenWebStart 是一个开源项目,可以提供您寻求的安全类型。它由 Karkum AG 赞助,可在 Github 上获取:

https://github.com/karakun/OpenWebStart/

它的缓存管理器确保迄今为止下载的 jar 文件的完整性,并且它只会执行由系统证书存储信任的提供商签名的 jar 中的代码。作为 Oracle(通过 Sun Microsystems)原始 Java WebStart 的明显继承者,它包括对 OpenJDK 11 和 17 的支持。

要成功,您需要确保桌面应用程序以安全的方式部署:

  • 确保导入 PFX 格式的、受信任的提供商代码签名 密钥库的证书只能通过“普通”(非 管理员)用户帐户。这会阻止坏人 签署自己的恶意代码,然后将其配置为可信。
  • OpenWebStart 包括安装到所有系统的选项 用户。这可能比安装一个更安全 特定用户,即使只有一个用户。一旦你这样做了, 采取措施阻止用户至多拥有对 OpenWebStart 系统配置。

确定 OpenWebStart 是否满足您的需求的唯一方法是您投入时间来设置、配置它并在您支持的操作环境中进行测试。准备好做出一些权衡。您可能需要报告一两个缺陷,和/或您可能需要从源代码构建它并对其进行调整。

© www.soinside.com 2019 - 2024. All rights reserved.