如果有人可以创建和上传任何密钥,maven的OpenPGP签名有什么意义?

时间:2015-06-04 11:55:18

标签: maven openpgp

Sonatype要求(非SNAPSHOT版本)工件进行GPG签名;应将公共OpenPGP密钥上传到(MIT)密钥服务器。

但任何人都可以使用任何名称创建任何OpenPGP密钥并将其上传到密钥服务器。有(据我所知;或者我错了?)没有自动机制将特定的软件项目/库与特定的公钥相关联。当然,如果有人想要检查工件的真实性,可以随时向软件作者请求公钥,或者密钥已经在某处发布(以某种方式将其与特定软件项目相关联);但由于这不能自动完成,几乎没有人会这样做。

因此,整个OpenPGP签名程序似乎也非常技术性和耗时,更多的是灌输虚假的安全感,而不是为普通用户提供更多的安全性。

那么不应该有一种自动/简化的方法将软件项目与OpenPGP密钥相关联,以使整个事情真正安全吗?

1 个答案:

答案 0 :(得分:2)

应用OpenPGP签名允许其他人通过信任网验证作者身份。因为这确实是一个相当复杂的方法,学习曲线相当陡峭,所以默认情况下不会强制执行。

Sander Mak写了excellent introduction about verification of OpenPGP signatures in Maven.。可悲的是,他没有表现出更好的方式来执行自动验证,而是使用商业软件作为Maven Central代理:

  

自动验证?

     

到现在为止,你必须考虑“只是为了验证一个依赖”这是一项非常多的工作。你是绝对正确的。应用程序通常使用许多依赖项,并且手动检查它们很快就变得乏味。在我看来,基于Maven的构建工具有很大的机会支持自动PGP签名验证。在此之前,您还可以使用Sonatype的Nexus存储库管理器作为Maven Central的代理。它可以自动检查代理工件的PGP签名,并在签名检查失败时拒绝为它们提供服务。不幸的是,这只能使用商业版Nexus Pro,而不能使用开源版本。

我最近遇到了一个相当新的项目Verify PGP signatures plugincode on GitHub),它是一个Maven工件,用于验证其他工件的OpenPGP签名,并允许您将允许签名的工具列入白名单。