Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 运行中的nodejs应用程序能否以加密方式证明它与已发布的源代码版本相同?_Node.js_Security_Cryptography - Fatal编程技术网

Node.js 运行中的nodejs应用程序能否以加密方式证明它与已发布的源代码版本相同?

Node.js 运行中的nodejs应用程序能否以加密方式证明它与已发布的源代码版本相同?,node.js,security,cryptography,Node.js,Security,Cryptography,运行中的nodejs程序能否以一种不可篡改的方式以加密方式证明它与已发布的源代码版本相同 换句话说,有没有办法确保nodejs程序执行的命令/代码都是公开的存储库中指定的命令和代码 这个问题的动机如下:在一个高度复杂的黑客时代,以及政府机构对“后门”的压力下,允许他们窥探私人交易和交易所,我们能否确保应用程序既没有被黑客攻击,也没有添加后门 作为一个例子,考虑一个基于开源的NoDEJS应用程序,如LISSPASS(GISTHUB上的LASSPASS/LASSPASS),用于管理密码并可用于这里(

运行中的nodejs程序能否以一种不可篡改的方式以加密方式证明它与已发布的源代码版本相同

换句话说,有没有办法确保nodejs程序执行的命令/代码都是公开的存储库中指定的命令和代码

这个问题的动机如下:在一个高度复杂的黑客时代,以及政府机构对“后门”的压力下,允许他们窥探私人交易和交易所,我们能否确保应用程序既没有被黑客攻击,也没有添加后门

作为一个例子,考虑一个基于开源的NoDEJS应用程序,如LISSPASS(GISTHUB上的LASSPASS/LASSPASS),用于管理密码并可用于这里() 或用于类似用途的Encryptor(github上的SpiderOak/Encryptor)的替代程序,以及其可下载版本()

是否有办法确保其站点上可供下载/使用/安装的版本运行的代码与开源代码中显示的代码完全相同

即使我们对这些应用程序背后的团队的完整性有100%的信心,我们如何确保他们并没有被任何人强迫改变其程序的运行/下载版本以创建后门呢


感谢您在这个重要问题上的帮助。

您可以通过在运行任何代码之前检查签名的运行时以加密方式完成此操作。当然,您还必须信任该运行时环境。除非您有这样一个环境,否则您就不走运——也就是说,除非您进行完整的代码审查

此外,您可以通过在生成系统中放置签名来对生成进行签名。可以依次审核构建系统和开发人员访问权限。这通常是构建安全开发环境的方式。但最终你需要相信一些东西

如果您只是担心某个特定的下载被破坏,您可以针对在一个或多个受信任的位置发布的官方哈希进行测试。

遗憾的是,没有

就这么简单

长版本:

您正在处理一个程序的输出,并希望确保输出由一个特定程序的特定版本生成

让我们检查几件事:

攻击者能否预测所述程序的输出

如果我们谈论的是开源程序,是的,攻击者可以预测您期望看到的内容,甚至可以根据原始源代码或所述程序的所有内部状态复制所有底层加密检查

想象一下,在一个虚拟机中运行这个程序,并提供完全的调试支持,比如在代码中的某些点触发事件,直接读取内存以提取加密密钥等等。攻击者甚至不必修改程序,就能以明文形式保存您所做的一切的副本

所以。。。即使你能以加密的方式确保代码本身不被篡改,那也毫无价值:环境本身可能被设计成有害的东西,正如马丁·博德威斯所写:最终你需要相信一些东西


有人可能会说TPM可以解决这个问题,但我担心这个世界会导致:最终。。。您仍然必须信任某个制造商,或者更糟糕的是,信任某个公共办公室为胎压监测系统签名的密钥。。。正如我们所知,这些永远不会。。。你听到了吗除了对你有好处之外,永远不要有其他的意图。。。因此,基本上,使用基于TPM的集中式基础架构,您不会赢得任何东西

,除非您具有对相关服务器的文件系统的物理访问权限,否则您无法访问它正在运行的代码。因此,从服务器外部,您无法判断它正在运行什么代码(有充分的理由)。谢谢。您的漏洞示例很清楚。请注意,TPM指的是受信任的平台模块?另外一个原因是“…如果有一个集中的基于TPM的基础架构,您将不会赢得任何东西…”