views:

176

answers:

1

Ok, here is my situation:

1) I've build a free c# compact framework application

2) I've got a webservice where i retrieve my data (trapfic related)

3) Anyone can download and use the application.

But the webservice that is being called should not be available to others. I've been looking into security and encryption, but haven't figured this question out:

I can use encryption to encrypt the data, and decrypt it in code, but decompiling my code would make it easy to read the algorithm or key that's being used decrypt the data.

So how can make my webservice secure so it can't be used by others? Is anything possible with strong name key's which require passwords?

I've been searching a lot on the internet, but without luck. So i hope there is someone with the knowledge here :)

A: 

You could issue unique authentication tokens when someone downloads your application, that they have to use with it to access the web service.

But there's no way of stopping them from writing their own application. If you give someone all the information needed to access the service, you can't make them use your code to do it (like you've noticed, they can always decompile your code and figure out how it works).

caf
Perhaps i'm going a bit off topic, but do you know of any other way this could be made possible? (for example not using webservices?)
Jeroen
You could distribute some tamperproof hardware, instead of software (but even that's harder than it sounds). It's just a logical impossibility to verify that your particular program, and not an impostor, is running on someone else's computer. Sorry.
caf
Not the answer i was hoping for ;), but that you for you input.Anyone with any other ideas or is obfuscating my encryption key the only way?
Jeroen