最近两次单独的讨论让我看到了一个我没有考虑过的问题——如何确认一个使用的开源二进制文件是基于已发布的源代码。
有一个基于 LeastAuthority.com 的创始人兼首席执行官 Zooko Wilcox-O'Hearn 给 Silent Circle 背后的两位负责人 Phil Zimmermann 和 Jon Callas 的公开信,关于密码学-随机比特的大型讨论线程,该公司运行 Silent Mail这触及了这个话题。此外,Dobbs 博士今天发表的一篇题为“ 将所有东西都放在版本控制中”的文章也谈到了它。
这个问题关注的问题是重新编译开源代码并获得与发布的二进制文件相同的结果的能力。换句话说,如果您重新创建相同的二进制文件并从源代码中对其进行哈希处理,则由于工具链的差异和编译器本身的一些随机化,它不太可能完全相同。
Dobbs 博士的文章建议出于可重复性的原因,甚至将工具链置于版本控制之下。Jon Callas 指出,在许多情况下,由于包括许可限制在内的各种原因,可能无法重新分发工具链。除非您自己编译代码,否则您将在假设集中添加一个信任步骤,因为其他人甚至无法以相同的结果重新创建二进制文件。
我现在明白这是一个可以接受的风险。我的问题是,是否有其他讨论或指示与在编译时使源代码字节可重复,从而消除了对甚至开源二进制文件提供者的信任的需要?正如 Jon Callas 的讨论中提到的,Ken Thompson 展示了“你不能相信不是完全由你自己创建的代码”。 关于这个主题的安全含义是什么?