T. Wu
Internet-Draft                                       Stanford University
Expire in six months                                           June 1997


                       Telnet Authentication: SRP
                   <draft-wu-telnet-auth-option-00.txt>

Status of this Memo

     This document is an Internet-Draft.  Internet-Drafts are working
     documents of the Internet Engineering Task Force (IETF), its
     areas, and its working groups.  Note that other groups may also
     distribute working documents as Internet-Drafts.

     Internet-Drafts are draft documents valid for a maximum of six
     months and may be updated, replaced, or obsoleted by other
     documents at any time.  It is inappropriate to use Internet-
     Drafts as reference material or to cite them other than as
     "work in progress."

     To view the entire list of current Internet-Drafts, please check
     the "1id-abstracts.txt" listing contained in the Internet-Drafts
     Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.net
     (Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East
     Coast), or ftp.isi.edu (US West Coast).

1. Command Names and Codes

   Authentication Types

      SRP          5

   Suboption Commands

      AUTH         0
      REJECT       1
      ACCEPT       2
      CHALLENGE    3
      RESPONSE     4
      EXP          5
      PARAMS       6

2.  Command Meanings

   IAC SB AUTHENTICATION IS <authentication-type-pair> AUTH IAC SE

      This command indicates that the client has supplied the
      username and is ready to receive that user's field parameters.
      There is no authentication information to be sent to the remote
      side of the connection yet.  This should only be sent after the
      IAC SB AUTHENTICATION NAME command has been issued.

   IAC SB AUTHENTICATION REPLY <authentication-type-pair> PARAMS
   <values of modulus, generator, and salt> IAC SE

      This command is used to pass the three parameter values used
      in the exponentiation to the client.

   IAC SB AUTHENTICATION IS <authentication-type-pair> EXP
   <client's exponential residue> IAC SE

      This command is used to pass the client's exponential residue,
      computed against the parameters exchanged earlier.

   IAC SB AUTHENTICATION REPLY <authentication-type-pair> EXP
   <server's exponential residue> IAC SE

      This command is used to pass the server's exponential residue,
      computed against the same parameters.  Note that the same
      sub-option is used for both sides of the transmission.

   IAC SB AUTHENTICATION REPLY <authentication-type-pair> CHALLENGE
   <challenge from server> IAC SE

      This command presents the server's challenge to the client.
      This is usually 128 bits (16 bytes) long.

   IAC SB AUTHENTICATION IS <authentication-type-pair> RESPONSE
   <response from client and optional counterchallenge> IAC SE

      This command answers the server's challenge with a 128-bit
      (16 bit) response.  The client is also permitted to issue its
      own challenge, which follows the response.

   IAC SB AUTHENTICATION REPLY <authentication-type-pair> ACCEPT
   <server's response to counterchallenge> IAC SE

      This command indicates that the authentication was successful.
      If the client included a counterchallenge in its response,
      the server will construct a response to that challenge and
      include it as sub-option data.

   IAC SB AUTHENTICATION REPLY <authentication-type-pair> REJECT
   <optional reason for rejection> IAC SE

      This command indicates that the authentication was not successful,
      and if there is any more data in the sub-option, it is an ASCII
      text message of the reason for the rejection.

   For the PARAMS command, since three pieces of data are being
   transmitted, each parameter is preceded by a byte count, two bytes
   long with the high-order byte first.  The EXP commands do not have
   a count in front of the data because there is only one piece of data
   in that suboption.  The CHALLENGE, RESPONSE, and ACCEPT data also
   do not have a count because they are all fixed in size.


3.  Implementation Rules

   Currently, only AUTH_CLIENT_TO_SERVER mode is supported.
   Although the SRP protocol can effectively perform mutual
   authentication through its counterchallenge, only the
   AUTH_HOW_ONE_WAY authentication mode is currently defined.
   The AUTH_HOW_MUTUAL setting is being reserved for an explicit
   mutual-authentication variant of the SRP protocol which has
   yet to be defined.

4.  Examples

   User "tjw" may wish to log in on machine "foo".  The client would
   send IAC SB AUTHENTICATION NAME "tjw" IAC SE IAC SB AUTHENTICATION
   IS SRP AUTH IAC SE.  The server would look up the field and salt
   parameters for "tjw" from its password file and send them back
   to the client.  Client and server would then exchange exponential
   residues and calculate their session keys (after the client prompted
   "tjw" for his password).  Then, the server would send a challenge,
   the client would respond to it with both a response and an optional
   counterchallenge, and the server would either send back an ACCEPT
   or a REJECT.  If the server accepts authentication, it also responds
   to the client's counterchallenge if one was issued.

       Client                           Server
                                        IAC DO AUTHENTICATION
       IAC WILL AUTHENTICATION
       [ The server is now free to request authentication information.
         ]
                                        IAC SB AUTHENTICATION SEND
                                        SRP CLIENT|ONE_WAY IAC SE
       [ The server has requested SRP authentication.  This is the
         only mode currently supported.
         The client will now respond with the name of the user that it
         wants to log in as.  ]
       IAC SB AUTHENTICATION NAME
       "tjw" IAC SE
       IAC SB AUTHENTICATION IS
       SRP CLIENT|ONE_WAY AUTH
       IAC SE
       [ The server looks up the appropriate information for "tjw" and
         sends back the parameters in a PARAMS command. ]
                                        IAC SB AUTHENTICATION REPLY
                                        SRP CLIENT|ONE_WAY PARAMS
                                        ss ss nn nn nn nn ...
                                        ss ss gg gg gg gg ...
                                        ss ss tt tt tt tt ...
                                        IAC SE

       [ Both sides send their exponential residues.  The ordering
         of the two EXP messages may vary with the relative speeds
         of the two computers. ]
       IAC SB AUTHENTICATION IS
       SRP CLIENT|ONE_WAY EXP
       ww ww ww ww ww ww ww ww ...
       IAC SE
                                        IAC SB AUTHENTICATION REPLY
                                        SRP CLIENT|ONE_WAY EXP
                                        yy yy yy yy yy yy yy yy ...
                                        IAC SE
       [ The server sends a 16-byte challenge to the client. ]
                                        IAC SB AUTHENTICATION REPLY
                                        SRP CLIENT|ONE_WAY CHALLENGE
                                        xx xx xx xx xx xx xx xx ...
                                        IAC SE

       [ The client sends its response along with a counterchallenge
         to the server. ]
       IAC SB AUTHENTICATION IS
       SRP CLIENT|ONE_WAY RESPONSE
       rr rr rr rr rr rr rr rr ...
       zz zz zz zz zz zz zz zz ...
       IAC SE
       [ The server accepts the response and answers the counterchallenge. ]
                                        IAC SB AUTHENTICATION REPLY
                                        SRP CLIENT|ONE_WAY ACCEPT
                                        aa aa aa aa aa aa aa aa ...
                                        IAC SE





Security Considerations

   The ability to negotiate a common authentication mechanism between
   client and server is a feature of the authentication option that
   should be used with caution.  When the negotiation is performed, no
   authentication has yet occurred.  Therefore, each system has no way
   of knowing whether or not it is talking to the system it intends.  An
   intruder could attempt to negotiate the use of an authentication
   system which is either weak, or already compromised by the intruder.

Author's Address

   Thomas Wu
   Stanford University
   Stanford, CA 94305

   Phone: (415) 725-6969
   EMail: tjw@cs.Stanford.EDU