2014-03-04 42 views
1

我在程序中使用OpenCL,我需要保护opencl代码免受其他用户阅读。将代码编译为二进制也许是选项,但如果存在某种反编译方式,则此选项无用。我不能允许有人窃取我的opencl代码。我可以做opencl保护?谢谢!如何保护OpenCL代码免遭窃取?

+0

不要交给任何人吗? – crashmstr

回答

2

这真的取决于如何确定你需要防范的攻击。一般来说,任何充分确定的攻击者都可以对代码进行逆向工程,只要他们能够访问编译后的代码即可,但这可能不值得。

这可能是性能问题,但您可以像在二进制映像运行时使用一些自解压加密一样,比如与许可证服务器通信,并且只有在许可证有效时才解密其余代码。这可能会受到中间人攻击或重放攻击等的影响(特别是如果底层硬件可以虚拟化),除非您特别警惕这一点。假设你没有硬件合作来保证你的代码安全,但是你是否需要考虑运行时漏洞,或者只是在存储中?

机会是编译是针对休闲IP盗用充分的保护;混淆是一个稍高一点的酒吧,然后选项逐步实施成本更高。

+0

我也需要保护运行时,但也许没有办法从GPU获取OpenCL二进制代码?或者没有办法做到这一点? – lebron2323

+1

好吧,如果硬件不安全,攻击者可能会看公共汽车看到内存请求去GPU,所以他们可能会看你上传你的程序。不过,这还有很多努力。一些GPU的可能有:调试钩子将允许整个状态转储到主机,以及,这意味着你在理论上需要在任何时候,以保护你的程序在运行了。总之,没有什么是完全安全的,但有些事情比其他事情更难打破。 –

0

你永远不能防止反编译。

1

使用,授权使用具有原始OpenCL的绳子,让你几乎知道是谁,至少偷走了Facebook帐户动态编译方法。也许甚至使用你自己的加密技术将字符串混合成无意义的破坏字符数组。

0

今天,你可以编译和船舶的二进制文件,但格式是平台内为每个平台不同,甚至设备,所以你可以运送大量的二进制文件。

在未来,你可以使用SPIR。它今天刚刚起步,但将来会是您的解决方案。

0

如果您的应用程序已经有一些保护(ofuscation,等..)然后只要OpenCL的代码是应用内的静态弦,它就会受到保护。但是,聪明的攻击者也许能够把它弄出来。

的最佳方式是预编译和分发的内核二进制文件,但是这将是乏味的任务,它可能被攻击者逆转为好。