Rationale: I need to figure out ways to protect Intellectual Property contained in NVIDIA CUDA/GPU code.

That said, I'm surprised that there are literally zero GPU code obfuscators.

On stack overflow, I found a single question: https://stackoverflow.com/questions/39311606/does-any-graphics-api-implement-shader-obfuscation

Is there something specific about GPU's that makes obfuscation difficult? I can find loads of solutions for C#/C/java....

[I'm interested in obfuscating SASSM code, not PTX code in case that impacts these answers]

  • 1
    GPU code is often significantly simpler, which makes RE far easier.
    – forest
    Jan 9 '19 at 3:17
  • Some obfuscation methods have a negative performance impact of some sort, which might be unacceptable in GPU applications. Probably isn't the only reason, but could be that there have been attempts but they had a too great performance impact, so were abandoned.
    – Matthew
    Jan 9 '19 at 15:11

It is simply extremly rare to need that, so noone made any solutions for it. GPU code is rare on its own and when it exists, it usually does tasks where there is no networking or security, just some expensive computations.

  • I'd assumed with the gaming industry driving so much innovation in the GPU space, and with it's deep pockets, there'd be GPU obfuscation available for "critical" algorithms in their code? That's the only counter example I can think of to your well reasoned post.
    – John
    Jan 8 '19 at 20:11
  • 1
    @John I am not a game developer so take this as not too well informed opinion, but when I made a simple game for a class in OpenGL, the only GPU code in there were shaders. The rest is simply handled by graphics drivers. And the shaders were very small fractions of the code, maybe 100 lines total. Furthermore, these are likely simillar in each game, there is not that much creative stuff to do there (there is some, just not much). Jan 9 '19 at 6:52


I've linked a paper on the subject of protecting IP in CUDA codebases.

Per this paper: "we recommend that developers do not distribute platform-independent binaries and instead distribute a set of GPU-architecture specific binaries with the PTX section stripped"

  • I'm familiar with this paper. This is why we distribute SASSM, and not PTX. I'm interested in increasing the level of difficulty in reverse engineering, and obfuscation seems an obvious first step.
    – John
    Jan 8 '19 at 20:09
  • 1
    @John I haven't written CUDA code in a couple years so I'm no authority but I've heard of no tools for obfuscation. This isn't surprising as this is a niche area...if you really need it you may get the fun of making your own script to do it :)
    – DarkMatter
    Jan 8 '19 at 20:16

Not the answer you're looking for? Browse other questions tagged or ask your own question.