我在程序中使用OpenCL,我需要保护opencl代码不被其他用户阅读。将代码编译为二进制可能是选项,但如果以某种方式对其进行反编译,则此选项无用。我不能允许有人窃取我的opencl代码。我怎么做opencl保护?谢谢!
答案 0 :(得分:2)
这实际上取决于你需要防范的攻击者的确定程度。通常,任何充分确定的攻击者如果能够访问已编译的代码,就可以对代码进行反向工程,但这可能不值得。
这可能会影响性能,但您可以做一些事情,例如让二进制映像在运行时使用一些自解压加密,例如与许可证服务器通信,并且只有在许可证有效时才解密其余代码。这可能会受到中间人或重放攻击等的影响(特别是如果底层硬件可以虚拟化),除非你特别防范这种情况。大概你没有硬件的合作来保证你的代码安全,但是你需要考虑运行时漏洞,还是只考虑存储?
编译的机会足以防止随意的IP盗窃;混淆是稍微高一点,然后选项逐渐变得越来越昂贵。
答案 1 :(得分:1)
使用动态编译方法授权使用具有原始opencl字符串的facebook帐户,以便知道谁至少窃取了它。甚至可能使用你自己的加密来将字符串混合成无意义的破坏字符数组。
答案 2 :(得分:0)
你永远不能防止反编译。
答案 3 :(得分:0)
今天,您可以编译和发送二进制文件,但每种平台的格式都不同,甚至可能是该平台中的设备,因此您需要发送大量二进制文件。
将来,您可以使用SPIR。它今天刚刚起步,但将来会成为您的解决方案。
答案 4 :(得分:0)
如果您的应用已经有一些保护(篡改等),那么只要OpenCL代码是您应用内的静态字符串,它就会受到保护。但是,聪明的攻击者也可以把它拿出来。
最好的方法是预编译和分发内核二进制文件,但这将是一项繁琐的任务,攻击者也可能会逆转它。