A few observations/thoughts in no particular order:

If you make it secure by being obscure, all you really do is fool yourself
into thinking it is secure and have no way to work out when it has been
broken.

If you use one secret for all instances/installs, then they are all broken
the moment one is broken.

If you generate a key per install via registration which you check later,
you will then have the overhead of keeping these safe and secure.

there is no way of securing software from reverse engineering by a talented
enough hacker who has control of the machine, but you can limit the damage
to just that machine with a per install/registration key that uses host
computer information to generate it, but then you are into a whole world of
privacy pain if it is personally identifiable information. Also if it is a
licence key, then it is possible to change the calls that do the checks
anyway.  Once it is on their machine , it is "0wned" totally by them :)

security is about balancing the cost of implementing and maintaining
security measures vs. the cost of someone exploiting that which you are
trying to protect, which is why there is no straight answer.  But there are
standard counter measures to the different types of threat.

Bottom line: if it has to be 100% secure, don't write it.   if it has to be
reasonably secure, threat model the app, use standard counter measures,
detection and reaction; if it is an ongoing product, continuously review
it.  That way you can work out what "reasonably" is. The book "security
development lifecycle" [1] has some threat model trees and the counter
measures to go with them and makes a good staring point.  If anything more
than security by obfuscation is to expensive, your app will not be secure
and didn't need to be anyway, just harder to reverse engineer.

and Frans is right, a shared secret is no secret at all (especially if the
other person writes it down!) :)

HTH
James

[1] http://www.microsoft.com/mspress/books/8753.aspx

===================================
This list is hosted by DevelopMentorĀ®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to