In addition to the great info that
tinman has provided, a
semi-popular way of making doing this is called S/Key.
With S/Key, the person makes a request to the server, the
server makes a challenge to them based on the number of
S/Key challenges and a secret that they have already
securely put into the machine to begin with. Using this
secure secret information and the sequence number, the S/Key
challenge is calculated by the server. The client then
enters the S/Key challenge and the shared secret into
their S/Key calculator (several are available as open source),
which generates the response to their challenge.
If they respond correctly, the server authenticates them.
If not, it doesn't.
This is one of many shared-secret types of authentication.
Pretty nifty, too. The downside is, there has to be
a way of getting the secret securely to you, and storing
it securely which may
present unique challenges all of their own.
If you're interested still, an implementation of S/Key called
OPIE (Onetime Passwords In Everything) has Perl modules
available on CPAN called
Authen::OPIE. Give it a look. :)
Hope this helps!
--
jwest
-><- -><- -><- -><- -><-
All things are Perfect
To every last Flaw
And bound in accord
With Eris's Law
- HBT; The Book of Advice, 1:7
Update: Fixed link...