假设我想使用开源软件,开发者说这个软件是开源的,并提供了源代码。
现在我的问题是,如何100%地确定给定的二进制文件是从给定的源代码编译的?
当然,我总是可以编译我想要使用的每个开源项目的源代码,但是如果我想使用不止一个程序,或者如果我想使用一个iPhone而没有macbook,这是相当耗时的。
那么,我是否必须信任开发人员,二进制文件确实来自该源代码,还是有其他方法?
例如:假设我想使用信使应用程序信号。如何确保二进制文件中没有内置的后门,而不是在提供的源代码中?
发布于 2021-01-11 09:39:33
如何100%确定给定的二进制文件是从给定的源代码编译的?
唯一的方法是自己编译它,使用与构建给定二进制文件完全相同的环境,并进行比较。如果开源项目设置了CI/CD链,这就更容易了。尽管如此,如果您能够编译,您就不再需要预先构建的二进制文件了。
那么,我是否必须信任开发人员,二进制文件确实来自该源代码,还是有其他方法?
不,您必须信任分发渠道,无论是源代码存储库的下载部分还是官方软件分发渠道(RedHat回购、苹果应用商店等等)。
如何确保二进制文件中没有内置的后门,而不是在提供的源代码中?
你不能,而且你也不能确定源代码本身没有内置的后门。我的意思是,你永远没有时间去检查你想要使用的所有开源软件。
发布于 2021-01-11 07:21:00
您想在这里的搜索引擎中添加的关键字是“可复制的构建”。这意味着,每当您在一个众所周知的配置下构建相同版本的软件时,构建输出总是完全相同的。任何人都可以重新构建软件,然后证明发布的构建是从同一个来源构建的。
有些安全敏感软件(如Torbrowser和OpenSSL )尝试了不同程度的可重复构建,一些Linux在其存储库中制造了很大一部分可复制的包,但要支持这一点通常需要对软件生态系统进行大量投资。
https://softwareengineering.stackexchange.com/questions/420880
复制相似问题