S/key One-Time Passwords

Introduction

Panix supports s/key for one-time passwords (also known as challenge/ response authentication). One-time password (OTP) systems are based on a secret passphrase that the user is careful never to send over a computer network or to type in on an untrusted machine. Instead, when the user wants to log in, the remote computer sends a "challenge" consisting of a seed and a sequence number (see below), and the user runs a "calculator" on a trusted machine that, using the seed and sequence number from the challenge, together with the user's secret passphrase, produce a single-use password that can be safely sent over an untrusted network or typed in on an untrusted machine. The one-time password is only valid for the next login on that host - after that, it is useless.

The one-time password system has several parts -

Each time you use a one-time password, the sequence number decreases by one, so the next time you make the calculation you get a new set of six words.

Using a one-time password means that if someone is sniffing your entries on the user hosts they'll get only the password you're using this time-- and that's not going to work because it's already being used.

Keeping S/key secure

S/key is secure only if you are scrupulous about the following:
  1. You should never enter your passphrase into any of the Panix user hosts-- or, for that matter, into any multi-user machine or even a single-user machine that you cannot completely trust.
    If you are not going to have a secure machine available to calculate your next one-time password (OTP), you can print it (or several of them) out in advance from a trusted machine. Most S/key calculators will let you print out a list of passwords (with their corresponding sequence numbers). You need to keep the list secure, and you should cross off each OTP as you use it so that you will notice if someone else has managed to peek at your list.
  2. You must set up s/key on each of the Panix hosts. If we add a new user host you need to set up s/key on that host. We urge you to start the count at 9999, and to use the default seed that the machine presents. In any case, you absolutely must make sure that the seed is different on each machine (or your one-time passwords won't be "one-time").
    Remember, you still need your regular password for RADIUS (dialup) authentication, for POP, and to authenticate to the news server-- and to initialize your new s/key. Furthermore, your regular password can still be used to log into any of the userhosts, even if you've set up s/key on that host.
  3. You should watch the count. If you are presented with a sequence number that is decremented by more than one since the last time you used s/key on that host, then someone else may have your passphrase.
  4. You should re-initialize your s/key login when the count reaches 8000.
  5. If you like, you can use the same secret pass phrase on all the user hosts, but you must be sure to use a different seed on each and not to repeat a seed. (Using a different pass phrase for each host is more secure, but harder to keep track of.)

Setting up S/key on your Panix shell account

To initialize your Panix account for s/key, you need to do the following:

Using S/key at Panix

Once you're initialized for s/key, you can use your one-time password for telnet, ssh, or ftp.

If you use telnet or ftp, you will start to see s/key prompts when you log in, like this:

  patty@happyhouse: $ telnet panix2
  Trying 166.84.1.2...
  Connected to panix2.panix.com (166.84.1.2).
  Escape character is '^]'.
  
  NetBSD/i386 (panix2.panix.com) (ttyp9)
  
  login: joeuser
  Password [otp-md5 9998 pani58574]:  BUSH FOOL DICK FLY BOMB HARD
  Last login: Tue Oct 16 15:00:17 2001 from an.example.net
  Warning: no Kerberos tickets issued.
  Copyright (c) 1996, 1997, 1998, 1999, 2000
          The NetBSD Foundation, Inc.  All rights reserved.
If you use ssh, it may be a little harder. Your ssh client has to support Version 2 and s/key (openSSH), or Version 1 and "TIS-Auth" (Putty), and you may need to set it up properly. For example, if you are using the OpenSSH client and you don't get an s/key prompt when logging into Panix, try this:
   $ ssh -2 -l joeuser -o "PasswordAuthentication no" -o "ChallengeResponseAuthentication yes" panix2
   otp-md5 9997 pani58574
   S/Key Password: BOMB BIN LOT END SAY JOE
   Last login: Tue Oct 16 15:19:05 2001 from happyhouse.panix
   NetBSD 1.5.1 (PANIX-USER) #0: Fri Jul 20 21:52:41 EDT 2001
With Putty, before you log in, go to the "Settings" menu and look under "SSH", "Auth", and then turn on "Enable TIS Authentication". ("TIS" stands for Trusted Information Systems, an early computer security research and development company that used S/Key access in their products). You may want to save the settings to avoid having to change them every time you want to use S/Key.

Disabling S/key

If you no longer want to use S/key, you can turn it off entirely by running the "skeyinit -z" command on each host that you've set up for S/key. Again, you'll need your normal Unix password.

Important Reminders

References

The one-time password (OTP) standard

http://www.ietf.org/rfc/rfc2289.txt

Wikipedia articles on S/Key and one-time password schemes

http://en.wikipedia.org/wiki/One-time_password
http://en.wikipedia.org/wiki/S/KEY

Unix, PC, and Mac software for generating passwords

for Windows: http://www.panix.com/software/pub/win/OPIE-Winkey
for Mac OS X (GUI): http://www.orange-carb.org/SkeyCalc/
for Unix systems (and Mac OS X command-line): ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/skey-1.1.5.tar.bz2
Perl Crypt::SKey module: http://search.cpan.org/~kwilliams/Crypt-SKey-0.09/

More software (items below not yet reviewed by Panix staff)

for iPhone: http://www.mobclix.com/appstore/app/294055241
for Ruby: http://rubyforge.org/projects/ruby-otp/
for Python: http://labix.org/python-otp
for Java-capable mobile phones: http://otp-j2me.sourceforge.net/
for X-Windows GTK environments: http://original.killa.net/infosec/otpCalc/
for PalmOS devices: http://palmkey.sourceforge.net/

Other software that supports S/Key or OTP

Fetch, a well-liked FTP client for Macintosh: http://fetchsoftworks.com/
FTP Voyager, an FTP client for Windows: http://www.ftpvoyager.com/

Search for OTP software with Google

http://directory.google.com/Top/Computers/Security/Authentication/One_Time_Passwords/