2014-03-04 44 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的代碼是應用內的靜態弦,它就會受到保護。但是,聰明的攻擊者也許能夠把它弄出來。

的最佳方式是預編譯和分發的內核二進制文件,但是這將是乏味的任務,它可能被攻擊者逆轉爲好。