签名.jars毫无价值

2020-07-27 00:33:06

如果您尝试使用Leiningen部署新版本的Clojure库,它会提示您使用GPG对.jar文件进行签名。这种步态会造成混乱和破裂。我认为不值得花这么大力气让它运转起来。

据我所知,从来没有人对签名进行有系统的验证,有一大堆障碍:

目前还不清楚是否有任何验证签名的工具确实有效。例如,我刚刚尝试运行lein deps:对照几个项目进行验证,它报告的每个依赖项都是:unsign。我知道其中一些依赖项已签名,并且我验证了.asc文件是否存在于repo.clojars.org上。

很难找到图书馆维护人员的公钥。有时他们会把它们上传到密钥服务器上,有时不会。

没有既定的通信方式来确定应该使用哪些公钥。如果有新版本,并且是用新密钥制作的,最好的办法是给维护人员发电子邮件,询问是怎么回事。

在实践中,很难从签名中获得任何安全利益。可以在您的project.clj中将:Sign-Release设置为false,即使Leiningen的手册不推荐这样做。

原则上,系统地检查签名可以提供安全性,以抵御危险的供应链攻击:包裹管理员帐户的弱密码或泄露密码。例如,已经有几个RubyGems被这样攻击。最有可能的是签名密钥不会同时被泄露。

不过,还有其他解决方案,比如不允许没有多因素身份验证的发布包。也稍微使用一下Clojars的部署令牌搁置。

现在我们非常信任Clojars和Maven Central。如果他们中的任何一个暴露了,我们都会完蛋。包签名可能是缓解该风险的解决方案的一部分,但是一个全面的解决方案应该类似于使用更新框架。围棋的校验和数据库也值得一看。

最后,如果您要对此做些什么,请不要使用PGP构建任何新内容。引用Latacora的话:PGP很糟糕,需要离开。

我写这篇文章的部分原因是为了证明我错了。我热切地等待着你们的来信,关于你们是如何做的,事实上,系统地核实了签名。