How do I protect exposed webGL buffers?



This question continues the security discussion from

Let’s say, you have protected your files from being directly downloaded (by encryption or another technic), there is still the possibility for someone to get the objects geometries from webGL buffers.

What can I do to protect geometries from being copied?

To my knowledge, it exists no standard solution to this problem, but it exists approaches to alter the data and make it unsuable if stolen; almost like protecting an image file with watermarks.

Here are 3 of these approaches, each having its own level of protection, performance and implementation/integration difficulty and they can be combined to improve in overall protection:

  • Bind/merge a signature geometry to the geometry you wish to protect. The signature geometry should share as many vertices with the original one in order to make it difficult to remove if copied. Multiple signatures could be used to increase in protection.

  • Inject the geometry with vertices at specific positions (around the geometry you wish to protect) containing the factor of 2 large prime numbers, pass one of the prime to the shader. If the division of the prime with the vertex position returns an interger then don’t display the vertex.

  • Tag the geometry by shifting the vertices with a unique signature number (with a proprietary algorythm) that could be retrieved if the object is stolen (sort of legal proof).

There are certainly many more ways to secure your objects and the risk of having your work stolen still exists, but by using these methods, you could say that you have at least done something about the problem.

Best Practise: Hide 3D Models, so no one can download and reuse this models
Is there a way to not allow the user to publicly download the 3d model and texture files that i'm showing?