如何保护他人服务器上的知识产权

时间:2019-11-26 20:31:42

标签: c++ reverse-engineering disassembly decompiling copy-protection

人员A拥有一台服务器(特别是Amazon EC2实例)。

我必须将二进制文件(用C ++编写)上载到该服务器,该服务器会定期从第三方服务器接收数据,然后定期并有策略地向其他第三方服务器发送HTTP请求。

这些通过策略发送的HTTP请求最终会产生财务收益,这将在​​个人A和我之间共享。

我编写了二进制文件的源代码,其中包含许多商业秘密。

由于各种原因,二进制文件必须在人员A的服务器(而不是我自己的服务器)上运行。

因此,我要确保两件事:

1)人A无法以某种方式对二进制文件进行反向工程来获得上述商业秘密。

2)人A无法复制此二进制文件并由他自己永久运行。

如果我不能同时确保这两个方面,那么A人将能够使我脱离流程,让A人自己获得全部的经济收益。

财务收益可能非常大,因此,甲方可能愿意花费大量时间和资源来完成此任务。

关于如何实现我上述内容的任何想法?非常感谢!

3 个答案:

答案 0 :(得分:2)

购买您自己的EC 2实例。

将程序分为两个部分,一个存根和一个服务器。

存根连接到服务器并中继请求,服务器做出决定,存根响应。

如果服务器已关闭,则存根将不起作用;它没有重要的IP。

答案 1 :(得分:2)

如果仅是您存储在不受信任的服务器上的数据,则解决方案将很简单:加密(尽管A将有足够的机会尝试破解加密,选择A的强度时必须将其考虑在内)表示加密)。

但是您希望A能够执行“秘密”程序,这使问题更加棘手。总结您的要求:

  1. 如何防止逆向工程?
  2. 如何防止软件盗版?换句话说:如何实施版权保护?

这些是相关的。如果A成功地对程序进行了逆向工程,那么他们应该能够创建一个“被篡改的”版本,从而避免了您尝试采用的任何复制保护方案。

没有办法阻止A-或更确切地说A的CPU-准确地查看程序的功能。这些任务从理论上讲是不可能实现的。有关理论分析,请参见例如关于混淆程序的(Im)可能性(Barak,2001)

通过混淆可以实现的最好结果是(或多或少)使反向工程变得更加困难。关于迷惑技术的研究很多。我相信您可以找到一本有关该主题的书。


如果可以选择要求程序可以访问Internet,则可以使分布式二进制文件成为无任何商业秘密的空心外壳。然后,可以将商业秘密存储在您自己的服务器上,而分布式二进制文件可以向该受信任的服务器发出请求,该服务器执行该秘密工作并响应结果。

这当然会对性能产生影响,并有维护自己的公共服务器的责任。

如果您的秘密足够有价值,那么您可能不希望信任云提供商来托管服务器-更安全地购买自己的硬件。再说一次,您对英特尔有多信任?设计自己的CPU甚至可能更安全。再说一次,您对自己的工程师有多信任...

答案 2 :(得分:0)

我没有对此进行详细研究,但是乍一看它看起来像是解决方案:Software Guard Extensions