是否无法验证网站是否正在生产中使用其公开发布的源代码?

时间:2018-08-28 20:28:58

标签: web-services open-source trust

这是一个奇怪的问题,我在互联网上的任何地方都没有看到类似的问题。

我想做什么

我想发布我的网站的源代码。除此之外,网站的性质(如下所述)使得我不仅要发布源代码,而且希望网站的用户能够明确地确认他们使用的是 exact 网站版本。

让我很难过的部分是,我的善良将不会被信任。 (显然,由于我要达到这个长度,所以可以,但是从用户的角度来看,它不能。)

我的(心理锻炼)尝试解决此问题

尝试1

所以,我想到的第一件事是对源代码进行哈希处理,甚至对正在运行的整个Docker容器进行哈希处理,并提供一个广播该哈希的端点,以便可以将其与公共源代码进行匹配。

尝试2

我考虑的第二件事是为用户提供只读的Shell登录名,以便他们能够哈希正在运行的docker映像。这里的问题是,(据我所知)没有办法验证Docker映像正在运行。我可以构建公共源代码的图像并将其放在其中以供用户哈希。

此外,出于安全考虑,我真的很讨厌将用户置于生产环境附近的想法。

尝试3

最后,我想知道如果我使用某种类型的区块链技术(例如分布式应用程序)是否可以解决问题。但这是如此复杂,我认为它不能提供额外的信任。

我为什么要这样做

我正在建立一个处理令人难以置信的个人数据的网站。如果其中任何一个泄漏,它可能会破坏人们的生命(不,TLD不是.xxx或类似的东西。实际上,此数据没有任何违法行为)。但是,与数据类型相关的社会污名严重,并且实际上(在某些国家/地区)有足够的证据来仔细研究对用户的死刑,如果有数据泄漏。

因此,除了制定非常明确(安全)的隐私权政策外,我还希望向我的用户做出开源承诺,以便志愿者可以找出问题并迅速消除。同样,以便他们能够验证我没有在正在运行的生产版本中添加代码以对他们进行额外的监视。

这种事情理论上可行吗?

2 个答案:

答案 0 :(得分:1)

只要服务器以它/您可以阅读的格式接收一些令人难以置信的个人用户数据,就没有完美的方法。您必须先让用户加密数据,然后再使用他们只知道的密钥对其进行加密。
如果不涉及数据传输,则用户可以在浏览器中检查代码并手动比较散列。也许有一种自动的方法可以做到这一点。无论如何,所有关于数据的工作都必须在客户端执行。

核心问题是用户必须信任整个环境,从编译器上的源代码到正在执行的OS和硬件。
即使您有可能确保在服务器上运行准确的代码,也不能通过密码确保不会例如在低层上拦截正在运行的程序并在其中读取数据。

答案 1 :(得分:0)

“信任”,您可以根据合法性和隐私权政策进行构建。

我们都愿意在许多应用程序/系统中保持敏感数据的在线状态,并且我们从不检查源代码或系统体系结构是否与他们最初承诺的相同。

正如@tystackoverflow所说,在代码中构建后门并不是确保系统用户其他人无法访问其数据的唯一方法。在这种情况下,您的系统体系结构还应该支持更高级别的数据加密,使得任何人(除非通过系统访问)都无法直接访问它。

我确实了解这些数据泄漏的风险,
这完全取决于您如何设计系统以防篡改和安全,以及将应用程序内置的安全措施背后的思想传达给用户。

祝项目顺利!