Network Working Group                                  D. Borman, Editor
Request for Comments: 1416                           Cray Research, Inc.
Obsoletes: 1409                                            February 1993


                     Telnet Authentication Option

Status of this Memo

  This memo defines an Experimental Protocol for the Internet
  community.  Discussion and suggestions for improvement are requested.
  Please refer to the current edition of the "IAB Official Protocol
  Standards" for the standardization state and status of this protocol.
  Distribution of this memo is unlimited.

Note

  This RFC 1416 replaces RFC 1409, which has an important typographical
  error in the example on page 6 (one occurance of "REPLY" should be
  "IS").

1.  Command Names and Codes

  AUTHENTICATION  37
      IS               0
      SEND             1
      REPLY            2
      NAME             3

      Authentication Types
      NULL             0
      KERBEROS_V4      1
      KERBEROS_V5      2
      SPX              3
      RSA              6
      LOKI            10

      Modifiers
      AUTH_WHO_MASK        1
      AUTH_CLIENT_TO_SERVER    0
      AUTH_SERVER_TO_CLIENT    1
      AUTH_HOW_MASK        2
      AUTH_HOW_ONE_WAY         0
      AUTH_HOW_MUTUAL          2







Telnet Working Group                                            [Page 1]

RFC 1416              Telnet Authentication Option         February 1993


2.  Command Meanings

  This document makes reference to a "server" and a "client".  For the
  purposes of this document, the "server" is the side of the connection
  that did the passive TCP open (TCP LISTEN state), and the "client" is
  the side of the connection that did the active open.

  IAC WILL AUTHENTICATION

     The client side of the connection sends this command to indicate
     that it is willing to send and receive authentication information.

  IAC DO AUTHENTICATION

     The servers side of the connection sends this command to indicate
     that it is willing to send and receive authentication information.

  IAC WONT AUTHENTICATION

     The client side of the connection sends this command to indicate
     that it refuses to send or receive authentication information; the
     server side sends this command if it receives a DO AUTHENTICATION
     command.

  IAC DONT AUTHENTICATION

     The server side of the connection sends this command to indicate
     that it refuses to send or receive authentication information; the
     client side sends this command if it receives a WILL
     AUTHENTICATION command.

  IAC SB AUTHENTICATION SEND authentication-type-pair-list IAC SE

     The sender of this command (the server) requests that the remote
     side send authentication information for one of the authentication
     types listed in "authentication-type-pair-list".  The
     "authentication-type-pair-list" is an ordered list of
     "authentication-type" pairs.  Only the server side (DO
     AUTHENTICATION) is allowed to send this.

  IAC SB AUTHENTICATION IS authentication-type-pair <auth data> IAC SE

     The sender of this command (the client) is sending the
     authentication information for authentication type
     "authentication-type-pair".  Only the client side (WILL
     AUTHENTICATION) is allowed to send this.





Telnet Working Group                                            [Page 2]

RFC 1416              Telnet Authentication Option         February 1993


  IAC SB AUTHENTICATION REPLY authentication-type-pair <auth data> IAC
  SE

     The sender of this command (the server) is sending a reply to the
     the authentication information received in a previous IS command.
     Only the server side (DO AUTHENTICATION) is allowed to send this.

  IAC SB AUTHENTICATION NAME remote-user IAC SE

     This optional command is sent to specify the account name on the
     remote host that the user wishes to be authorized to use.  Note
     that authentication may succeed, and the authorization to use a
     particular account may still fail.  Some authentication mechanisms
     may ignore this command.

  The "authentication-type-pair" is two octets, the first is the
  authentication type (as listed in Section 1, additions to this list
  must be registered with the Internet Assigned Numbers Authority
  (IANA)), and the second is a modifier to the type.  There are
  currently two one bit fields defined in the modifier, the
  AUTH_WHO_MASK bit and the AUTH_HOW_MASK bit, so there are four
  possible combinations:

     AUTH_CLIENT_TO_SERVER
     AUTH_HOW_ONE_WAY

        The client will send authentication information about the local
        user to the server.  If the negotiation is successful, the
        server will have authenticated the user on the client side of
        the connection.

     AUTH_SERVER_TO_CLIENT
     AUTH_HOW_ONE_WAY

        The server will authenticate itself to the client.  If the
        negotiation is successful, the client will know that it is
        connected to the server that it wants to be connected to.

     AUTH_CLIENT_TO_SERVER
     AUTH_HOW_MUTUAL

        The client will send authentication information about the local
        user to the server, and then the server will authenticate
        itself to the client.  If the negotiation is successful, the
        server will have authenticated the user on the client side of
        the connection, and the client will know that it is connected
        to the server that it wants to be connected to.




Telnet Working Group                                            [Page 3]

RFC 1416              Telnet Authentication Option         February 1993


     AUTH_SERVER_TO_CLIENT
     AUTH_HOW_MUTUAL

        The server will authenticate itself to the client, and then the
        client will authenticate itself to the server.  If the
        negotiation is successful, the client will know that it is
        connected to the server that it wants to be connected to, and
        the server will know that the client is who it claims to be.

3.  Default Specification

  The default specification for this option is

     WONT AUTHENTICATION
     DONT AUTHENTICATION

  meaning there will not be any exchange of authentication information.

4.  Motivation

  One of the deficiencies of the Telnet protocol is that in order to
  log into remote systems, users have to type their passwords, which
  are passed in clear text through the network.  If the connections
  goes through untrusted networks, there is the possibility that
  passwords will be compromised by someone watching the packets as they
  go by.

  The purpose of the AUTHENTICATION option is to provide a framework
  for the passing of authentication information through the TELNET
  session.  This means that: 1) the users password will not be sent in
  clear text across the network, and 2) if the front end telnet process
  has the appropriate authentication information, it can automatically
  send the information, and the user will not have to type any
  password.

  It is intended that the AUTHENTICATION option be general enough that
  it can be used to pass information for any authentication system.

5.  Security Implications

  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.




Telnet Working Group                                            [Page 4]

RFC 1416              Telnet Authentication Option         February 1993


6.  Implementation Rules

  WILL and DO are used only at the beginning of the connection to
  obtain and grant permission for future negotiations.

  The authentication is only negotiated in one directions; the server
  must send the "DO", and the client must send the "WILL".  This
  restriction is due to the nature of authentication; there are three
  possible cases; server authenticates client, client authenticates
  server, and server and client authenticate each other.  By only
  negotiating the option in one direction, and then determining which
  of the three cases is being used via the suboption, potential
  ambiguity is removed.  If the server receives a "DO", it must respond
  with a "WONT".  If the client receives a "WILL", it must respond with
  a "DONT".

  Once the two hosts have exchanged a DO and a WILL, the server is free
  to request authentication information.  In the request, a list of
  supported authentication types is sent.  Only the server may send
  requests ("IAC SB AUTHENTICATION SEND authentication-type-pair-list
  IAC SE").  Only the client may transmit authentication information
  via the "IAC SB AUTHENTICATION IS authentication-type ... IAC SE"
  command.  Only the server may send replys ("IAC SB AUTHENTICATION
  REPLY authentication-type ... IAC SE").  As many IS and REPLY
  suboptions may be exchanged as are needed for the particular
  authentication scheme chosen.

  If the client does not support any of the authentication types listed
  in the authentication-type-pair-list, a type of NULL should be used
  to indicate this in the IS reply.  Note that in this case, the server
  may choose to close the connection.

  The order of the authentication types MUST be ordered to indicate a
  preference for different authentication types, the first type being
  the most preferred, and the last type the least preferred.

  The following is an example of use of the option:

      Client                           Server
                                       IAC DO AUTHENTICATION
      IAC WILL AUTHENTICATION
      [ The server is now free to request authentication information.
        ]
                                       IAC SB AUTHENTICATION SEND
                                       KERBEROS_V4 CLIENT|MUTUAL
                                       KERBEROS_V4 CLIENT|ONE_WAY IAC
                                       SE
      [ The server has requested mutual Kerberos authentication, but is



Telnet Working Group                                            [Page 5]

RFC 1416              Telnet Authentication Option         February 1993


        willing to do just one-way Kerberos authentication.  The client
        will now respond with the name of the user that it wants to log
        in as, and the Kerberos ticket.  ]
      IAC SB AUTHENTICATION NAME "joe"
      IAC SE
      IAC SB AUTHENTICATION IS
      KERBEROS_V4 CLIENT|MUTUAL AUTH 4
      7 1 67 82 65 89 46 67 7 9 77 0
      48 24 49 244 109 240 50 208 43
      35 25 116 104 44 167 21 201 224
      229 145 20 2 244 213 220 33 134
      148 4 251 249 233 229 152 77 2
      109 130 231 33 146 190 248 1 9
      31 95 94 15 120 224 0 225 76 205
      70 136 245 190 199 147 155 13
      IAC SE
      [ The server responds with an ACCEPT command to state that the
        authentication was successful.  ]
                                       IAC SB AUTHENTICATION REPLY
                                       KERBEROS_V4 CLIENT|MUTUAL ACCEPT
                                       IAC SE
      [ Next, the client sends across a CHALLENGE to verify that it is
        really talking to the right server.  ]
      IAC SB AUTHENTICATION IS
      KERBEROS_V4 CLIENT|MUTUAL
      CHALLENGE xx xx xx xx xx xx xx
      xx IAC SE
      [ Lastly, the server sends across a RESPONSE to prove that it
        really is the right server.
                                       IAC SB AUTHENTICATION REPLY
                                       KERBEROS_V4 CLIENT|MUTUAL
                                       RESPONSE yy yy yy yy yy yy yy yy
                                       IAC SE

  It is expected that any implementation that supports the Telnet
  AUTHENTICATION option will support all of this specification.

7.  References

  [1] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1340,
      USC/Information Sciences Institute, July 1992.

Security Considerations

  Security issues are discussed in Section 5.






Telnet Working Group                                            [Page 6]

RFC 1416              Telnet Authentication Option         February 1993


Author's Address

  David A. Borman, Editor
  Cray Research, Inc.
  655F Lone Oak Drive
  Eagan, MN 55123

  Phone: (612) 452-6650
  EMail: [email protected]

  Mailing List: [email protected]

Chair's Address

  The working group can be contacted via the current chair:

  Steve Alexander
  INTERACTIVE Systems Corporation
  1901 North Naper Boulevard
  Naperville, IL 60563-8895

  Phone: (708) 505-9100 x256
  EMail: [email protected]




























Telnet Working Group                                            [Page 7]