像99%的用户一样,我从现成的二进制文件中安装Ubuntu。
如何验证自己这些二进制文件实际上来自Ubuntu的原始源代码?
最好验证NSA /某人是否未与Ubuntu或Linode(我的VPS提供程序)合作以破坏二进制文件。如果我们可以验证二进制文件,那么他们一开始也不大可能尝试此操作,因为在二进制文件上调用它们很容易。
像99%的用户一样,我从现成的二进制文件中安装Ubuntu。
如何验证自己这些二进制文件实际上来自Ubuntu的原始源代码?
最好验证NSA /某人是否未与Ubuntu或Linode(我的VPS提供程序)合作以破坏二进制文件。如果我们可以验证二进制文件,那么他们一开始也不大可能尝试此操作,因为在二进制文件上调用它们很容易。
Answers:
您可以下载源代码并自己编译。但是,等等-首先,您必须检查该源代码,因为如果Canonical与NSA合作,他们可能已经在某个地方输入了一些代码以允许键盘记录程序或可以远程激活的代码。
所以...
但是,等等- 您可以信任编译器吗?
如果您不愿意接受“因为Ubuntu这样说”,那么您就不能接受。
Ubuntu提供了方便的方法来在自己的计算机上编译软件包。但是,无法检查是否已从该源代码获得下载的二进制程序包中的可执行文件。Ubuntu使用的签名过程大大降低了第三方篡改软件包的风险,但是您仍然必须相信,在未反映可下载源代码的编译之前,未添加任何有害代码。
原因是要获得与已编译软件包完全相同的二进制文件非常困难,因为它们取决于精确的编译器版本,其选项以及可能还会有一些路径或环境变量被编译到二进制文件中。因此,您在编译自己时将无法获得完全相同的二进制文件,这将“验证”下载的二进制文件。
实际上,恰好有一个小型研究社区围绕着这个问题-如何使编译可再现。
话虽这么说,对下载的二进制文件和自编译的二进制文件进行手动比较可以检测到添加/修改的代码,所以提供二进制文件和源代码的人将某些东西隐藏在二进制文件中是有风险的,因为这可以被检测到。
但是如上所述,还有一个信任编译器的问题。
正在使用Ubuntu的MD5进行检查。如果您从文件中获得的MD5与Ubuntu发布的文件匹配,则没有人篡改过它们之间的二进制文件。
apt-get source
使用它来编译自己的源代码。看到这个问题:askubuntu.com/questions/28372/…–