在客户端安全地执行代码

时间:2014-12-07 03:15:15

标签: javascript encryption distributed-computing

在接受采访时,我被问到有关分布式计算的问题。

记者:

  

“Sam在客户端的计算机上运行了一些代码来获取其输出。但是   客户端修改代码,因此代码返回不同的输出。

     

现在Sam想知道是否可以检测代码是否存在   已更改或修改了返回值。这可能吗?“

我认为不可能阻止客户端在计算机上修改代码。或者我错了?如果没有,我们可以检测代码是否已被更改或做些什么使客户端难以操作代码和输出?

1 个答案:

答案 0 :(得分:2)

客户端是否操作代码并不重要,唯一真正重要的是服务器从中接收的结果。毕竟,客户端可能根本没有运行代码,它可能只返回硬编码响应。

所以问题就变成了:您的服务器能否信任客户发送的答案? 一般答案是:不。

更复杂的答案是:它取决于你想要它做什么。也许你正在做的事情是proof-of-work concept的顺从,客户必须在数学上证明它做了某些事情。也许您可以包含一些签名过程,该过程在数学上证明某些数据来自某些其他数据,并使客户端的数据可以验证。也许服务器可以要求两个不同的客户端执行相同的工作或重叠的工作部分,这些部分可以相互验证,这需要攻击者一次操作两个(或更多)客户端,这可能是不可行的客户的回应是个人值得信赖的。