Isn't the real risk in this type of setup not having your key snooped,
but having the return value hijacked? However complex and clever the
encryption is designed, if all it sends back is true/false, the return
value is the only thing that has to be compromised.

Or am I missing something?

-----Original Message-----
From: dotnet discussion [mailto:[EMAIL PROTECTED]] On Behalf Of
Peter Vertes
Sent: Monday, May 13, 2002 11:40 AM
To: [EMAIL PROTECTED]
Subject: Re: [DOTNET] Hide part of code from Developers


The original key doesn't get transmitted via the network nor does it get
hard coded.  Consider this: you have a remote machine that has a service
running on it waiting for someone to connect to it with a certain
string.
So Joe Developer makes a call to this service from his code, from his
workstation, like:

                bool authCheck = CheckKeyAuthenticity("strSecretKey");

        Now, method CheckKeyAuthenticity() will make a connection to the
remote
machine and pass in the string that was given to it as a parameter
(strSecretKey).  The service, on the remote machine, takes this string
and
compares it to a string that it has (this original key can reside in a
file,
registry, database, etc... depending on how you trust this remote
machine).
Now, if the strings match the service returns true (meaning the correct
key
was passed in to CheckKeyAuthenticity() or false if the keys didn't
match.
The original key was never transmitted through the network only the
result
of the authenticity check.  If one is worried about snooping then
encrypting
the key would be a wise idea before sending it off to the remote
machine,
but in that case the remote machine's key should be encrypted too.  That
way
only the encrypted string can be sniffed and not the plain-text string.
Still not a 100% tamper-proof solution but better then nothing.  If
someone
wants to get that key they would have to work hard for it.

-Pete

-----Original Message-----
From: dotnet discussion [mailto:[EMAIL PROTECTED]]On Behalf Of
Brad Wilson
Sent: Monday, May 13, 2002 12:21 PM
To: [EMAIL PROTECTED]
Subject: Re: [DOTNET] Hide part of code from Developers


Peter Vertes wrote:

> How about storing the key on a remote server ?  When you need it you
connect
> to it get it.  Or extending on this idea; you could store the key on a
> remote server, when you need to authenticate you call the
authentication
> code on the remote server side and have it spit back a bool (true =
user
is
> authenticated / false = user need to try again).  I haven't actually
> implemented this but in theory it should work.

You're still in an automated case. The code that calls the server is
subject
to snooping, and any authentication information would be contained
within
the code, so the bad guy could pick out that information and call the
remote
service manually to discover the key.

Until you put a human (who isn't the person you're trying to prevent
from
snooping) is put in the loop, any data is snoopable with enough effort.

Brad

--
Read my web log at http://www.quality.nu/dotnetguy/

You can read messages from the DOTNET archive, unsubscribe from DOTNET,
or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

You can read messages from the DOTNET archive, unsubscribe from DOTNET,
or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to