views:

222

answers:

4

I know there is already present similar questions on SO. But my question is more theoretical.

I'm wondering, is it possible to design a foolproof trial system? By foolproof I mean such a system which cannot be cracked even if a cracker knows the algorithm of such a system?

Sorry if it is not a programming question.

Edit: I think I should make my question more practical. I'm asking about a whole system, not standalone application. System consists of PC with Linux OS and some hardware connected to it. Maybe I can use an HDD encryption?

+2  A: 

Probably the only way is an Internet-based "software as a service" application. If you don't provide access, they're not using the software. If it is a desktop-based application, then some key piece of functionality would still have to be on an online server somewhere.

If the hacker has the entire application on their local machine, it can be reverse engineered and "cracked" in some fashion. The only way to overcome this is to assure that some part of the functionality is never on their machine.

Robert Cartaino
A: 

You could design your application to be dependent on a remote server of which anyone but you have control over.

Sani Huttunen
A: 

No. You can make it very hard, but your question amounts to "how can I let someone run the code but not let them run the code."

For example, you could leave out a small but key part of the code and require that code to be downloaded from a server that you control. This allows you to track trial activity and shut down specific users. However, once they receive the code once they could capture it and build an unencumbered version of your product given enough work.

Darron
I think it amounts to "how can I let someone run the code but not let them copy or modify it".
Vanuan
I suppose so. Or "how can I let someone run all of the code, but not a subset that they select."
Darron
+1  A: 

The only (theoretical) way to have crack-proof software is to have a completely closed system. If you controlled everything from the hardware to the OS to the applications and development tools, you could prevent tampering.

Note how I said that this was theoretical. Inevitably, you will find a hardware hacker who will figure out a way to modify the hardware (See modchips). From there, they can load whatever software they want and modify the software that is already there.

The same model that applies to physical security (safes, vaults, etc) applies to software. The point is to make stealing/copying the goods more expensive that obtaining them through legitimate means. You can never create a foolproof system, but you can easily prevent script kiddies and hobby hackers from cracking your product. The pros, on the other hand, live to crack. They WILL find a way.

Jason Z