I've been toying with a project idea for a while now but can't quite settle on one important detail. The plan is to write a client that can author and upload WebMs to a server for global viewing (should the user wish), however, I only want to allow WebMs made with the official application for the sake of consistency.

My first thought was to embed a secret key into the exported .webm file that the server also knows about, but I worry it'd be easily extractable with the right tools.

Do securer strategies exist, if not at all?

Thanks in advance!

  • They exist, but they are complex and falible.
    – Ewan
    Sep 29 '16 at 8:12

You can write a client that knows a secret which is necessary to perform the upload. However, what you can write, someone else can reverse-engineer, so you can deter casual attackers, but not dedicated attackers.

Reverse engineering is harder than programming, so if you're willing to put perpetual effort into maintaining and adapting your upload mechanism, it's possible that you can keep ahead of attackers. But it doesn't sound as if your project is so important that it would justify perpetual effort.


No, this is not possible.

In order for your users to be able to upload content, you need to give them your key. You can try to hide the key, but ultimately, your client needs to be able to find the key, and if your software can find the key, then so can the user.

You can try to obfuscate and hide the code that finds the key, but again: in order for your client to be able to run at all, the CPU needs to understand it. CPUs are much, much, much, much, much dumber than humans, so if the CPU can understand the code, then so can a human. This is the route taken by a lot of expensive commercial software, and all of them can and have been cracked.

You can try to put the code into a hermetically sealed, tamper-proof box, i.e. give appliances to your users instead of just software. But then you just shift the problem around: instead of attacking your software, they are now attacking your hardware, and again, whatever techniques you used to build your tamper-proof hardware, there is usually another technique to take it apart again. This is the route taken by gaming consoles, mobile phones, and at the extreme end, smartcards, and all of them can and have been cracked.

Really, the only thing that reliably works is to not give your users the code at all. Implement the authoring tool as a webservice which you host on your premises in an environment that you control.

The other alternative is to not treat your users as criminals and dispense with all those technological restrictions, and work with your users on a basis of mutual respect and trust.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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