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

What is the point of maven's OpenPGP signatures if anyone can create and upload any keys?

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

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

所以看起来整个 OpenPGP 签名过程,也是相当技术和耗时的,更多地是在灌输一种错误的安全感,而不是实际为普通用户提供很多安全性。

那么,难道不应该有一种 automatic/streamlined 方法将软件项目与 OpenPGP 密钥相关联,从而使整个事情真正安全吗?

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

Sander Mak 写了一篇 excellent introduction about verification of OpenPGP signatures in Maven.。遗憾的是,他没有展示更好的自动验证方法,而是使用商业软件作为 Maven Central 代理:

Automatic verification?

By now, you must be thinking 'that is an awful lot of work just to verify a single dependency'. And you're absolutely right. Applications typically use many dependencies, and checking them all by hand quickly becomes tedious. In my opinion, there is a huge opportunity for Maven-based build tools to support automatic PGP signature verification. Until that is the case though, you can also use Sonatype's Nexus repository manager as a proxy to Maven Central. It can automatically check the PGP signatures for proxied artifacts and refuse to serve them when the signature check fails. Unfortunately, this is only possible using the commercial version Nexus Pro, not with the open source version.

我最近遇到了一个相当新的项目,Verify PGP signatures plugin (code on GitHub),它是一个 Maven 工件,用于验证其他工件的 OpenPGP 签名,并使您能够将允许签署给定工件的密钥列入白名单。