在这个问题中,我将使用Linux操作系统的例子,但我也对一般情况感兴趣。
Linux发行版以开源而闻名,因此相当安全。但是,如何确保您在PC上设置的Linux和您下载的安装程序所使用的代码与源代码中提供给每个人阅读的代码完全相同?其他操作系统项目也是这样吗?
发布于 2014-05-04 22:22:53
当您只下载二进制文件时,您就不能下载。您必须信任二进制文件的分发服务器,它确实是从已发布的源代码编译的。
当您认为开发人员值得信任但不确定是否可以信任下载镜像时,请注意许多开发人员发布二进制文件的散列表,所以当您从不受信任的镜像下载二进制文件时,可以通过检查哈希来验证它。但是,这假设1.二进制是由开发人员编译的二进制文件,而不是由分发服务器独立编译的二进制文件;2.开发人员并不是想通过发布与发布不同源代码编译的二进制代码来欺骗用户的开发人员。
当您想确保您获得的二进制文件确实是从源代码编译的时候,您必须获得源代码并自己编译它。对于更复杂的项目,这可能需要相当长的时间。
但从安全的角度来看,这是否值得怀疑,因为仅仅因为源代码是公开的,并不意味着它没有后门。黑手C代码竞赛有许多创造性的示例,说明如何在普通视图中隐藏恶意源代码。当您想要一个更真实的例子时:心血虫是一个漏洞,在一个非常广泛使用的开源软件中存在多年,没有人注意到它。没有理由相信这是一个有意的后门,但当它是故意的,它是在公开的灵魂,而不是走私成二进制的事实,将使它似乎有可能否认。
发布于 2014-05-05 02:53:21
有一个确定性构建的概念,多个当事方可以编译精确的、字节对字节的相同二进制文件。我知道的一个工具就是吉田。Gitian允许多个方编译完全相同的二进制文件并对其签名。这给您更多的信心,您将下载的二进制文件是合法的,因为不再有单一的失败点。
比特币和Tor是两个值得注意的项目,它们正在使用确定性的构建过程。
https://security.stackexchange.com/questions/57256
复制相似问题