如何确保源代码与应用程序匹配?

时间:2014-08-11 20:46:03

标签: software-design

Preword:
我在一个虚构的场景中遇到过这个问题。想象一下,X公司希望与其客户的潜在敏感数据合作。他们如何证明他们只做他们声称要做的事情?

示例:公司X希望匹配具有相似习惯的用户,而不会进一步篡改数据。

我的部分解决方案:
公司X将发布其应用程序的源代码,这将确认该公司仅匹配数据(并且不搜索模式,创建个性化广告等)。

剩下的问题:
X公司如何证明发布的源代码与它们运行的​​代码相匹配?我的要求是没有人应该信任任何实例,X公司或任何第三方。只需雇佣第三方来“认证”#34;公司X'实践不是证据,只是另一种说法。

附注:如果在使用之前不需要编译应用程序(例如PHP),它会产生重大影响吗?

这有什么解决方案吗?任何可证明的"确保某个源代码正在运行的方法?

1 个答案:

答案 0 :(得分:1)

确保二进制文件与源匹配的唯一方法是自己编译或者至少将它与在完全相同的情况下自己编译的二进制文件进行比较。 但是,你必须对所涉及的每一个软件做同样的事情(编译器可以改变代码,库可以做坏事等)。

即使没有编译软件,也必须以这种方式验证解释器,因为它解释并运行源代码(即可以任何方式修改它)

对于您的场景,数据也可以在特定软件之外使用和处理,因此必须以这种方式审核和构建整个系统,然后锁定。选择你的偏执狂水平。

所以,如果不相信某人,答案就不现实。这是在几个Linux系统(包括android)中签名包背后的想法是某些方面,如开发人员或存储库维护者签署二进制文件来验证它是他编译的(并匹配已发布的源)。

此外,在上一步验证来源:很容易证明程序具有某种功能,但(通常)无法显示它没有它。

所以基本上选择你自己的偏执程度,但如果他们真的跟着你,那你就搞砸了。

太好了,我会去找一些锡纸......