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
Performance 在客户机上执行第三方编译程序';s计算机_Performance_Security_Portable Executable - Fatal编程技术网

Performance 在客户机上执行第三方编译程序';s计算机

Performance 在客户机上执行第三方编译程序';s计算机,performance,security,portable-executable,Performance,Security,Portable Executable,我想征求您关于提高在客户端计算机上执行编译程序的安全性的建议。我们的想法是,我们向客户端发送一个编译后的程序,但该程序是由第三方编写和编译的。如何确保程序在运行时不会对客户端的操作系统造成任何损害?为了达到这个目标,并且不显著降低程序的执行性能,什么是最好的方法 更新: 我假设第三方不想伤害客户端的操作系统,但他们可能会犯一些错误,或者他们的程序被其他人感染。 程序可以编译成字节码或本机代码,这取决于第三方。签名。谷歌的“数字签名”或“代码签名”主要有两种选择,这取决于你是否信任第三方 如果你信

我想征求您关于提高在客户端计算机上执行编译程序的安全性的建议。我们的想法是,我们向客户端发送一个编译后的程序,但该程序是由第三方编写和编译的。如何确保程序在运行时不会对客户端的操作系统造成任何损害?为了达到这个目标,并且不显著降低程序的执行性能,什么是最好的方法

更新: 我假设第三方不想伤害客户端的操作系统,但他们可能会犯一些错误,或者他们的程序被其他人感染。

程序可以编译成字节码或本机代码,这取决于第三方。

签名。谷歌的“数字签名”或“代码签名”主要有两种选择,这取决于你是否信任第三方

如果你信任第三方,那么你只关心它实际上来自他们,并且在传输过程中没有改变。代码签名是一个很好的解决方案。如果第三方签署代码,并且检查签名,那么你可以检查中间没有发生任何变化,并证明是他们写的。
如果你不信任第三方,那么这是一个困难的问题。通常的解决方案是在“沙箱”中运行代码,允许它执行一组有限的操作。这个概念已经在很多语言中实现了——谷歌“沙盒”,你会发现很多关于它的东西。对于Perl,请参见SafePerl;对于Java,请参见。其他语言也存在变体。

根据所涉及的语言以及所需的权限类型,您可能能够使用该语言的内置沙箱功能。例如,早期版本的.NET有一个“信任级别”,可以设置该级别来控制程序运行时的访问权限(较新版本有一个类似的功能,称为代码访问安全性(CAS))。Java有控制同一事物的策略文件

另一种可能有用的方法是使用(Microsoft)Sysinternals process monitor运行程序,同时扫描程序正在执行的所有操作


如果它是由第三方开发的,那么在不检查代码的情况下很难准确地知道它将要做什么。这可能更像是一种合同解决方案——在与第三方签订的合同中增加罚款,并就第三方对任何损害的责任达成一致。

如果您有资源,请使用虚拟机。对于不受信任的应用程序来说,这通常是一个非常好的沙箱


如果这恰好是一个Unix系统,请检查您可以用chroot做什么

另一件事是不要低估彻底测试的价值。您可以运行应用程序(在非生产环境中)并验证以下内容(妄想症的升级!)

  • CPU/磁盘使用率是可以接受的
  • 不与任何不应与之通信的网络主机通信,即没有“呼叫总部功能”
  • 使用您选择的AV程序进行扫描
  • 你甚至可以连接pSpy或者其他什么东西来了解它在做什么
此外,如果可能,请使用低权限用户运行应用程序。这将提供某种程度的“沙箱”,即应用程序将无法干扰其他进程

…也不要忽视与供应商签订的法律合同的价值,如果出现问题,这些合同通常会给你一些补偿。当然,首先选择信誉良好的供应商也能提供一定程度的保证


-ace

您能否澄清您担心的威胁?你的问题中的“第三方”是否应该被认为是恶意的,或者仅仅是轻微的不称职?哪个操作系统?Java字节码还是本机?@thejh考虑到这个问题根本没有提到Java,我很难理解你的评论。@thejh我还是不明白。。。这个问题也没有提到字节码。(还有大量基于字节码的语言:.NET平台、OCaml以及@Pascal Cuoq、@thejh:question UpdatedErmm上的列表)。。。因为你担心机器会爆炸,所以你在上面贴了一个牌子,上面写着“这台机器永远不会爆炸,而且安全可靠”?好吧,在问题澄清之前,这可能是最符合OP预期的答案。没有否决权的要求。这更接近于机器制造商的保证,只要防篡改封条没有损坏,任何爆炸都是制造商的责任。@thejh:不,不是我的意思。不需要讽刺。