有没有一种方法可以对 Hex 包进行端到端的身份验证?
Is there a way of end-to-end authentication of Hex packages?
我一直在寻找一种方法来加密验证通过 Elixir 中的 Hex 包管理器下载的包的完整性和真实性。到目前为止我没有找到任何东西。
一些包管理器支持 OpenPGP 等数字签名系统,以确保安装在目标系统上的代码与包作者生成的代码完全相同,从而阻止试图更改中央数据存储上的数据的攻击其中包含数千个包裹。
Elixir 和 Erlang 的流行包管理器 Hex 对此有任何类型的支持吗?
Hex 当前不支持用户签名的包。一些不同的包管理器已尝试实施用户签名,但 none 已经完全成功,因为它很容易使用,所有发布者都需要签署他们的包,所有消费者都需要验证签名真实性。
信任网(类似 PGP)方法存在问题,因为您必须建立信任网络,这是一个很高的进入门槛——您是否必须亲自会见其他开发人员或以某种方式让他们验证您是谁这样他们就可以在发布您的第一个包之前签署您的密钥?
集中信任(类似于 X.509)的方法也存在问题。如果中央存储库 Hex.pm 颁发证书,那么妥协 Hex.pm 也会危及用户签名的包,这正是我们试图阻止的。
我们已经proposals for signing packages, we have evaluated other approaches and are following and participating in ongoing discussions解决了这个问题。
即使 Hex 不支持用户签名的包,我们也会做其他事情来验证包的真实性。包内容经过校验和包含在 package tarball and stored on the server. The package checksum is printed when the users builds the package and can be verified against the package in the repository. Checksums are included in the repository index which is signed by the Hex.pm private key 中。下载的包根据索引中的校验和进行验证,如果包被锁定,它也会根据锁中的校验和进行验证。
我一直在寻找一种方法来加密验证通过 Elixir 中的 Hex 包管理器下载的包的完整性和真实性。到目前为止我没有找到任何东西。
一些包管理器支持 OpenPGP 等数字签名系统,以确保安装在目标系统上的代码与包作者生成的代码完全相同,从而阻止试图更改中央数据存储上的数据的攻击其中包含数千个包裹。
Elixir 和 Erlang 的流行包管理器 Hex 对此有任何类型的支持吗?
Hex 当前不支持用户签名的包。一些不同的包管理器已尝试实施用户签名,但 none 已经完全成功,因为它很容易使用,所有发布者都需要签署他们的包,所有消费者都需要验证签名真实性。
信任网(类似 PGP)方法存在问题,因为您必须建立信任网络,这是一个很高的进入门槛——您是否必须亲自会见其他开发人员或以某种方式让他们验证您是谁这样他们就可以在发布您的第一个包之前签署您的密钥?
集中信任(类似于 X.509)的方法也存在问题。如果中央存储库 Hex.pm 颁发证书,那么妥协 Hex.pm 也会危及用户签名的包,这正是我们试图阻止的。
我们已经proposals for signing packages, we have evaluated other approaches and are following and participating in ongoing discussions解决了这个问题。
即使 Hex 不支持用户签名的包,我们也会做其他事情来验证包的真实性。包内容经过校验和包含在 package tarball and stored on the server. The package checksum is printed when the users builds the package and can be verified against the package in the repository. Checksums are included in the repository index which is signed by the Hex.pm private key 中。下载的包根据索引中的校验和进行验证,如果包被锁定,它也会根据锁中的校验和进行验证。