home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / e / id-tn-tls-05.txt < prev    next >
Text File  |  2020-01-01  |  52KB  |  1,168 lines

  1. Internet Engineering Task Force                             Michael Boe
  2. INTERNET-DRAFT draft-ietf-tn3270e-telnet-tls-05.txt      Jeffrey Altman
  3. expires April 2001
  4.                                                        October 24, 2000
  5.  
  6.                         TLS-based Telnet Security
  7.  
  8. Status of this memo
  9.  
  10. This document is an Internet-Draft and is in full conformance with all
  11. provisions of Section 10 of RFC2026. Internet-Drafts are working
  12. documents of the Internet Engineering Task Force (IETF), its areas, and
  13. its working groups. Note that the other groups may also distribute
  14. working documents as Internet-Drafts.
  15.  
  16. Internet-Drafts are draft documents valid for a maximum of six months
  17. and may be updated, replaced or obsoleted by other documents at any time.
  18. Its is inappropriate to use Internet-Drafts as reference material or to
  19. cite them other than as "work in progress."
  20.  
  21. The list of current Internet-Drafts can be accessed at
  22. http://www.ietf.org/ietf/1id-abstracts.txt
  23.  
  24. The list of Internet-Draft Shadow Directories can be accessed at
  25. http://www.ietf.org/shadow.html.
  26.  
  27. Copyright Notice
  28.  
  29. Copyright (C) The Internet Society (1998 - 2000). All Rights Reserved.
  30.  
  31. Abstract
  32.  
  33. Telnet service has long been a standard Internet protocol. However, a
  34. standard way of ensuring privacy and integrity of Telnet sessions has
  35. been lacking. This document proposes a standard method for Telnet
  36. servers and clients to use the Transport Layer Security (TLS) protocol.
  37. It describes how two Telnet participants can decide whether or not to
  38. attempt TLS negotiation, and how the two participants should process
  39. authentication credentials exchanged as a part of TLS startup.
  40.  
  41. Changes since -04 Draft
  42.  
  43.   Incorporated changes submitted by Eric Rescorla and Russ Housley.
  44.   Mostly minor in nature except for an expansion of the text in 
  45.   section 4.1.1 on how certificate verification should be performed.
  46.   This section was taken almost verbatim from RFC 2818.
  47.  
  48.   Minor changes include:
  49.  
  50.   . change MUST to SHOULD in section 3.2
  51.  
  52.   . clarification to reference to Kerberos cipher suites in 4.1.1
  53.  
  54.   . expansion of discussion on mutual authentication via Telnet
  55.     AUTH in section 4.1.3.
  56.  
  57.   . both client and server should shutdown connection upon error
  58.     detection in section 4.1.3
  59.  
  60.   . correction to name of PKIX Working Group in section 5.1
  61.  
  62.   . expansion of discussion of finished message discussion in 5.2.
  63.   
  64.   . TLS 3.1 replaced by TLS 1.0 in section 6.1
  65.  
  66.   . removal of "dangerous to encrypt twice" comment from 7.0
  67.  
  68.   . expansion of references.
  69.  
  70. Changes since -03 Draft
  71.  
  72.   Major changes to sections describing authentication of clients 
  73.   and servers.
  74.  
  75. Changes since -02 Draft
  76.  
  77.    o Clarify server actions in response to client initiating the TLS
  78.      negotiation.
  79.  
  80.    o Replace the parochial term "mainframe" with "application-server."
  81.  
  82.    o Nuke explicit references to RFC1416, since there's a new RFC in the
  83.      works for this and the reference isn't normative anyway.
  84.  
  85.    o Use dNSName language similar to that used in the most recent HTTP TLS
  86.      draft.
  87.  
  88.    o Delete beginning paragraph describing server-authentication in TLS.
  89.      Unclear and possibly wrong.
  90.  
  91.    o Delete explicit references to SASL, since we don't actually describe
  92.      ways of using SASL.
  93.  
  94.    o Add section describing interaction between AUTH and STARTTLS option
  95.      negotiations.
  96.  
  97. Changes since -01 Draft
  98.    o Drop possibility of a continuing a Telnet session if the TLS
  99.      negotiation fails.
  100.  
  101.    o Assert that server sending DO STARTTLS must be willing to negotiate
  102.      a TLS session
  103.  
  104.    o Change SHOULD to MUST with respect to a server requesting a client
  105.      certificate.
  106.  
  107.    o Add paragraph on commonName to section on check of X.509
  108.      certificate.
  109.  
  110.    o Sharpen language concerning notification of possible
  111.      server-certificate mismatch.
  112.  
  113.    o drop place-holder section on Kerberos 5 security; replace with
  114.      section on non-PKI-based authentication (after TLS negotiation).
  115.  
  116.    o Prohibit fallback to SSL 2.0.
  117.  
  118.    o Give more details about how authentication-after-TLS-negotiation
  119.      can be achieved.
  120.  
  121.    o Simplify post-TLS Telnet negotiation state-assumptions by resetting
  122.      them to initial-state.
  123.  
  124. Changes since -00 Draft
  125.    o Add local authentication/authorization operational model.
  126.  
  127.    o Change behavior of Telnet machine to reset at start of TLS
  128.      negotiation.
  129.  
  130.    o Insert narrative questioning the utility of allowing continuation of
  131.      Telnet session after TLS has ended.
  132.  
  133.    o change examples to reflect the above changes.
  134.  
  135.    o Fix several typos.
  136.  
  137. Contents
  138.  
  139. 1    Introduction
  140.  
  141. 2    Command Names and Codes (assigned by IANA)
  142.  
  143. 3    Command Meanings
  144.  
  145.      3.1  Usage of commands and interactions with other Telnet options
  146.  
  147.      3.2  TLS Negotiation Failure
  148.  
  149. 4    Authentication and Authorization
  150.  
  151.      4.1     Authentication of the Client by the Server
  152.  
  153.      4.1.1   PKI-based Authentication via TLS handshake
  154.  
  155.      4.1.2   Non-PKI Authentication via TLS handshake
  156.  
  157.      4.1.3   Telnet AUTH option
  158.  
  159.      4.1.4   Traditional Username and Password
  160.  
  161.      4.2     Authentication of the Server by the Client
  162.  
  163.      4.2.1   PKI-based Authentication via TLS handshake
  164.  
  165.      4.2.2   Non-PKI based authentication via TLS handshake 
  166.  
  167.      4.2.3   Authentication by Telnet AUTH option
  168.      
  169. 5    Security
  170.  
  171.      5.1     PKI-based certificate processing      .    .    .
  172.  
  173.      5.2     Client and Server authentication of anonymous TLS connections
  174.  
  175.      5.3     Display of security levels      .    .    .    .    .    .
  176.  
  177.      5.4     Trust Relationships and Implications    .    .    .    .
  178.  
  179.      5.5     Telnet negotation handling
  180.  
  181. 6    TLS Variants and Options
  182.  
  183.      6.1     Support of previous versions of TLS      .    .    .    .
  184.  
  185.      6.2     Using Kerberos V5 with TLS       .    .    .    .    .    .
  186.  
  187. 7    Protocol Examples
  188.  
  189.      7.1     Successful TLS negotiation      .    .    .    .    .    .
  190.  
  191.      7.2     Successful TLS negotiation, variation   .    .    .    .
  192.  
  193.      7.3     Unsuccessful TLS negotiation    .    .    .    .    .    .
  194.  
  195.      7.4     Authentication via Telnet Auth Kerberos 4 after TLS negotiation
  196.  
  197. 8    References 
  198.  
  199. 9    Authors
  200.  
  201.  
  202. 1    Introduction
  203.  
  204. This document describes the START_TLS Telnet option.  It allows TLS
  205. to be activated at the beginning of a Telnet connection to provide
  206. authentication and confidentiality of the Telnet session.  This document
  207. also defines a set of advisory security policy response codes for use
  208. when negotiating TLS from within Telnet.
  209.  
  210. We are interested in addressing the interaction between the Telnet
  211. client and server that will support this secure requirement with the
  212. knowledge that this is only a portion of the total end-user to
  213. application path. Specifically, it is often true that the Telnet server
  214. does not reside on the target machine (it does not have access to a list
  215. of identities which are allowed to access to that application-server),
  216. and it is often true (e.g. 3270 access) that the telnet server can not
  217. even identify that portion of the emulation stream which contains user
  218. identification/password information. Additionally, it may be the case
  219. that the Telnet client is not co-resident with the end user and that it
  220. also may be unable to identify that portion of the data stream that deals
  221. with user identity. We make the assumption here that there is a trust
  222. relationship and appropriate protection to support that relationship
  223. between the Telnet Server and the ultimate application engine such that
  224. data on this path is protected and that the application will authenticate
  225. the end user via the emulation stream as well as use this to control
  226. access to information. We further make the assumption that the path
  227. between the end user and the client is protected.
  228.  
  229. To hold up the Telnet part of the overall secure path between the user
  230. and the application-server, the Telnet data stream must appear
  231. unintelligible to a third party. This is done by creating a shared
  232. secret between the client and server. This shared secret is used to
  233. encrypt the flow of data and (just as important) require the client to
  234. verify that it is talking to correct server (the one that the
  235. application-server trusts rather than an unintended man-in-the-middle)
  236. with the knowledge that the emulation stream itself will be used by the
  237. application-server to verify the identity of the end-user. Rather than
  238. create a specialized new protocol which accomplishes these goals we
  239. instead have chosen to use an existing IETF protocol, Transport Layer
  240. Security (TLS) (formerly known as Secure Sockets Layer (SSL)).  
  241.  
  242. The Telnet [TELNET] application protocol can certainly benefit from the
  243. use of TLS. Since 1992 Telnet has supported over a dozen forms of 
  244. end user authentication and DES encryption via the AUTH and ENCRYPT
  245. options.  Since 1995, TLS (as SSL) has been used to provide privacy and
  246. integrity protection to Telnet data streams via Telnet AUTH and via
  247. dedicated IANA assigned port numbers (telnets 992).  TLS offers a broad 
  248. range of security levels that allow sites to proceed at an "evolutionary"
  249. pace in deploying authentication, authorization and confidentiality
  250. policies, databases and distribution methods.
  251.  
  252. This document describes how TLS can be used to provide the following:
  253.  
  254.    o creation and refresh of a shared secret;
  255.  
  256.    o negotiation and execution of data encryption and optional
  257.      compressesion;
  258.  
  259.    o primary negotiation of authentication; and, if chosen
  260.  
  261.    o execution of public-key or symmetric-key based authentication.
  262.  
  263. TLS at most offers only authentication of the peers conducting the TLS
  264. dialog. In particular, it does not offer the possibility of the client
  265. providing separate credentials for authorization than were presented for
  266. authentication.  After the establishment of peer to peer trust based
  267. on TLS, other forms of end user authentication including Telnet AUTH
  268. may be used to provide credentials for use in determining end user
  269. authorization.
  270.  
  271. Traditional Telnet servers have operated without such early presentation
  272. of authorization credentials for many reasons (most of which are
  273. historical). However, recent developments in Telnet server technology
  274. make it advantageous for the Telnet server to know the authorized
  275. capabilities of the remote client before choosing a communications link
  276. (be it `pty' or SNA LU) and link-characteristics to the host system (be
  277. that "upstream" link local or remote to the server). Thus, we expect to
  278. see the use of client authorization to become an important element of the
  279. Telnet evolution. Such authorization methods may require certificates
  280. presented by the client via TLS, or by the use of Telnet AUTH option, or
  281. some other as yet unstandardized method.
  282.  
  283. This document describes the START_TLS telnet option which allows TLS to
  284. be activated at the beginning of a Telnet connection using the standard
  285. "telnet" port (IANA tcp\23). It also defines a set of advisory security-
  286. policy response codes for use when negotiating TLS over Telnet.
  287.  
  288. Conventions Used in this Document
  289. The key words "REQUIRED", "MUST", "MUST NOT", "SHOULD", "SHOULD NOT" and
  290. "MAY" in this document are to be interpreted as described in [KEYWORDS].
  291.  
  292. Formal syntax is defined using ABNF [ABNF].
  293.  
  294. In examples, "C:" and "S:" indicate lines sent by the the client and
  295. server, respectively.
  296.  
  297.  
  298. 2  Command Names and Codes (assigned by IANA)
  299.  
  300.    START_TLS   46 (decimal)
  301.  
  302.    FOLLOWS      1 (decimal)
  303.  
  304. 3 Command Meanings
  305.  
  306.    This document makes reference to a "server" and a "client".  For the
  307.    purposes of this document, the "server" is the side of the connection
  308.    that did the passive TCP open (TCP LISTEN state), and the "client" is
  309.    the side of the connection that did the active open.
  310.  
  311.    IAC DONT START_TLS
  312.  
  313.      The sender is either not a server or is not interested in 
  314.      negotiating a TLS connection.
  315.  
  316.    IAC WONT START_TLS
  317.  
  318.      The sender is either not a client or is not interested in
  319.      negotiating a TLS connection.
  320.  
  321.    IAC DO START_TLS
  322.  
  323.      The server side of the connection sends this command to indicate
  324.      a desire to negotiate a TLS connection.  This command MUST NOT 
  325.      be sent by the client and if received by the server MUST be refused
  326.      with IAC WONT START_TLS.
  327.  
  328.    IAC WILL START_TLS
  329.  
  330.      The client side of the connection sends this command to indicate
  331.      a desire to negotiate a TLS connection.  This command MUST NOT
  332.      be sent by the server and if received by the client MUST be refused
  333.      with IAC DONT START_TLS.
  334.  
  335.    IAC SB START_TLS FOLLOWS IAC SE
  336.  
  337.      The FOLLOWS sub-command when sent indicates that the next byte of
  338.      data received after this command MUST be a TLS negotiation as 
  339.      described in [TLS].  This sub-command is sent by both the client and
  340.      the server.  After this sub-command has been sent, the sender MUST NOT
  341.      respond to nor initiate any additional telnet commands or 
  342.      sub-commands.  When this sub-command has been sent and received the
  343.      TLS negotiation will commence.  When sent by a client this sub-
  344.      command will be followed by a TLS ClientHello.  When sent by a server
  345.      this sub-command will be followed by a TLS ServerHello.
  346.  
  347. 3.1  Usage of commands and interactions with other Telnet options
  348.  
  349. The START_TLS option is an asymmetric option, with the server side 
  350. allowed to send IAC DO START_TLS and the client allowed to send
  351. IAC WILL START_TLS. Sub-commands are used to synchronize the link
  352. in preparation for negotiating TLS. This synchronization takes
  353. the form of a three-way handshake:
  354.  
  355.  1.  As per normal Telnet option processing rules, the client MUST
  356.      respond to the server's IAC DO START_TLS with either IAC WONT
  357.      START_TLS or IAC WILL START_TLS (if it hasn't already done so). 
  358.      Once the client has sent IAC WILL START_TLS and received
  359.      IAC DO START_TLS, it MUST immediately send a FOLLOWS sub-command
  360.      (IAC SB START_TLS FOLLOWS IAC SE) to indicate it is ready to begin
  361.      a TLS negotiation.  Once the FOLLOWS sub-command has been sent, the
  362.      client MUST ignore all telnet negotiations except for the FOLLOWS
  363.      sub-command.  When the FOLLOWS sub-command has been received the
  364.      client MUST halt use of the telnet protocol, reset the telnet state
  365.      machine and begin a TLS negotiation by sending a ClientHello message.
  366.  
  367.  2.  If the client initiates by sending IAC WILL START_TLS, the server
  368.      MUST respond with either IAC DO START_TLS or IAC DONT START_TLS.
  369.  
  370.  3.  The server SHOULD NOT send additional Telnet data or commands after
  371.      sending IAC DO START_TLS except in response to client Telnet options
  372.      received until after it receives either a negative response from the
  373.      client (IAC WONT START_TLS) or a successful negotiation of TLS has 
  374.      occurred.  If the client's START_TLS option response is negative, the
  375.      server is free to send additional Telnet data or commands. If the
  376.      client's response is affirmative (IAC WILL START_TLS), then the server
  377.      MUST send the FOLLOWS sub-command (IAC SB START_TLS FOLLOWS IAC SE)
  378.      and await the FOLLOWS sub-command from the client.  When the FOLLOWS
  379.      sub-command has been sent and received the server MUST halt use of the
  380.      telnet protocol, reset the telnet state machine, and begin a TLS
  381.      negotiation by sending a TLS ServerHello message.
  382.  
  383.  4.  If both START_TLS and AUTH [AUTH] are offered, START_TLS SHOULD be sent
  384.      first and MUST take precedence if both are agreed to. AUTH MAY be
  385.      renegotiated after successful establishment of the TLS session if
  386.      end-user authentication via a supported method is desired.
  387.  
  388.  5.  If a TLS session has been established, the ENCRYPT [ENCRYPT] option
  389.      MUST NOT be negotiated in either direction.
  390.  
  391.  6.  When the FOLLOWS sub-command has been sent and received the Telnet
  392.      state machine is reset.  This means that the state of all telnet 
  393.      options is reset to the WONT/DONT state and any data received via
  394.      subcommands is forgotten.  After a sucessful TLS negotiation the 
  395.      Telnet negotiations will be restarted as if a new connection had
  396.      just been established with one exception.  Since TLS is already in
  397.      use, the START_TLS option MUST NOT be negotiated.
  398.  
  399. 3.2   TLS Negotiation Failure
  400.  
  401. The behavior regarding TLS negotiation failure is covered in [TLS], and
  402. does not indicate that the TCP connection be broken; the semantics are
  403. that TLS is finished and all state variables cleaned up. The TCP connection
  404. may be retained.
  405.  
  406. However, it's not clear that either side can detect when the last of the
  407. TLS data has arrived. So if TLS negotiation fails, the TCP connection
  408. SHOULD be reset and the client MAY reconnect. To avoid infinite loops of
  409. TLS negotiation failures, the client MUST remember to not negotiate
  410. START_TLS if reconnecting due to a TLS negotiation failure.
  411.  
  412.  
  413. 4    Telnet Authentication and Authorization
  414.  
  415. Telnet servers and clients can be implemented in a variety of ways that
  416. impact how clients and servers authenticate and authorize each other.
  417. However, most (if not all) the implementations can be abstracted via the
  418. following four communicating processes:
  419.  
  420. SES  Server End System. This is an application or machine to which client
  421.      desires a connection. Though not illustrated here, a single Telnet
  422.      connection between client and server could have multiple SES
  423.      terminations.
  424.  
  425. Server  The Telnet server.
  426.  
  427. Client  The Telnet client, which may or may not be co-located with the
  428.      CES. The Telnet client in fact be a gateway or proxy for downstream
  429.      clients; it's immaterial.
  430.  
  431. CES  Client End System. The system communicating with the Telnet Client.
  432.      There may be more than one actual CES communicating to a single
  433.      Telnet Client instance; this is also immaterial to how Client and
  434.      Server can sucessfully exchange authentication and authorization
  435.      details. However, see Section 5.4 for a discussion on trust
  436.      implications.
  437.  
  438. What is of interest here is how the Client and Server can exchange
  439. authentication and authorization details such that these components can
  440. direct Telnet session traffic to authorized End Systems in a reliable,
  441. trustworthy fashion.
  442.  
  443. What is beyond the scope of this specification are several related
  444. topics, including:
  445.  
  446.    o How the Server and SES are connected, and how they exchange data or
  447.      information regarding authorization or authentication (if any).
  448.  
  449.    o How the Client and CES are connected, and how they exchange data or
  450.      information regarding authorization or authentication (if any).
  451.  
  452. System-to-system communications using the Telnet protocol have
  453. traditionally used no authentication techniques at the Telnet level.
  454. More recent techniques have used Telnet to transport authentication
  455. exchanges (RFC 2941). In none of these systems, however, is a remote system
  456. allowed to assume more than one identity once the Telnet preamble
  457. negotiation is over and the remote is connected to the application-
  458. endpoint. The reason for this is that the local party must in some way
  459. inform the end-system of the remote party's identity (and perhaps
  460. authorization). This process must take place before the remote party
  461. starts communicating with the end-system. At that point it's too late
  462. to change what access a client may have to an server end-system: that
  463. end-system has been selected, resources have been allocated and
  464. capability restrictions set. 
  465.  
  466. This process of authentication, authorization and resource allocation
  467. can be modeled by the following simple set of states and transitions:
  468.  
  469. `unauthenticated'    The local party has not received any credentials
  470.      offered by the remote. A new Telnet connection starts in this state.
  471.  
  472.      The `authenticating' state will be entered from this state if the
  473.      local party initiates the authentication process of the peer. The
  474.      Telnet START_TLS negotiation is considered an initiation of the
  475.      authentication process.
  476.  
  477.      The `authorizing' state will be entered from this state either if
  478.      the local party decides to begin authorization and resource
  479.      allocation procedures unilaterally...or if the local party has
  480.      received data from the remote party destined for local end-system.
  481.  
  482. `authenticating'    The local party has received at least some of the
  483.      credentials needed to authenticate its peer, but has not finished
  484.      the process.
  485.  
  486.      The `authenticated' state will be entered from this state if the
  487.      local party is satisfied with the credentials proferred by the
  488.      client.
  489.  
  490.      The `unauthenticated' state will be entered from this state if the
  491.      local party cannot verify the credentials proffered by the client or
  492.      if the client has not proffered any credentials. Alternately, the
  493.      local party may terminate the Telnet connection instead of returning
  494.      it to the `unauthenticated' state.
  495.  
  496. `authenticated'   The local party has authenticated its peer, but has not
  497.      yet authorized the client to connect to any end-system resources.
  498.  
  499.      The `authenticating' state will be entered from this state if the
  500.      local party decides that further authentication of the client is
  501.      warranted.
  502.  
  503.      The `authorizing' state will be entered from this state if the local
  504.      party either initiates authorization dialog with the client (or
  505.      engages in some process to authorize and allocate resources on
  506.      behalf of the client), or has received data from the remote party
  507.      destined for a local end-system.
  508.  
  509. `authorizing'   The local party is in the process of authorizing its peer
  510.      to use end-system resources, or may be in the process of allocating
  511.      or reserving those resources.
  512.  
  513.      The `transfer-ready' state will be entered when the local party is
  514.      ready to allow data to be passed between the local end-system and
  515.      remote peer.
  516.  
  517.      The `authenticated' state will be entered if the local party
  518.      determines that the current authorization does not allow any access
  519.      to a local end-system. If the remote peer is not currently
  520.      authenticated, then the `unauthenticated' state will be entered
  521.      instead.
  522.  
  523. `transfer-ready'    The party may pass data between the local end-system to
  524.      its peer.
  525.  
  526.      The `authorizing' state will be entered if the local party (perhaps
  527.      due to a request by the remote peer) deallocates the communications
  528.      resources to the local-end system. Alternately, the local party may
  529.      enter the `authenticated' or the `unauthenticated' state.
  530.  
  531. In addition to the "orderly" state transitions noted above, some
  532. extraordinary transitions may also occur:
  533.  
  534.  1.  The absence of a guarantee on the integrity of the data stream
  535.      between the two Telnet parties also removes the guarantee that the
  536.      remote peer is who the authentication credentials say the peer is.
  537.      Thus, upon being notified that the Telnet session is no longer using
  538.      an integrity layer, the local party must at least deallocate all
  539.      resources associated with a Telnet connection which would not have
  540.      been allocable had the remote party never authenticated itself.
  541.  
  542.      In practice, this deallocation-of-resources restriction is hard to
  543.      interpret consistently by both Telnet endpoints. Therefore, both
  544.      parties MUST return to the initial Telnet state after negotiation of
  545.      TLS. That is, it is as if the Telnet session had just started.
  546.  
  547.      This means that the states may transition from whatever the current
  548.      state is to `unauthenticated'. Alternately, the local party may
  549.      break the Telnet connection instead.
  550.  
  551.  2.  If the local party is notified at any point during the Telnet
  552.      connection that the remote party's authorizations have been reduced
  553.      or revoked, then the local party must treat the remote party as being
  554.      unauthenticated. The local party must deallocate all resources
  555.      associated with a Telnet connection which would not have been
  556.      allocable had the remote party never authenticated itself.
  557.  
  558.      This too may mean that the states may transition from whatever the
  559.      current state is to `unauthenticated'. Alternately, the local party
  560.      may break the Telnet connection instead.
  561.  
  562. The above model explains how each party should handle the authentication
  563. and authorization information exchanged during the lifetime of a Telnet
  564. connection. It is deliberately fuzzy as to what constitutes internal
  565. processes (such as "authorizing") and what is meant by "resources" or
  566. "end-system" (such as whether an end-system is strictly a single entity
  567. and communications path to the local party, or multiples of each, etc).
  568.  
  569. Here's a state transition diagram, as per [RFC2360]:
  570.  
  571.              0       1          2        3            4
  572. Events     | unauth   auth'ing  auth'ed   authorizing   trans-ready
  573. -----------+--------------------------------------------------------
  574. auth-needed| sap/1    sap/1     sap/1     sap/1        der,sap/1
  575. auth-accept| -       ain/2     -        -            -
  576. auth-bad   | -       0         wa/0     wa,der/0     der,sap/1
  577. authz-start| szp/3    -         szp/3     -            -
  578. data-rcvd  | szp/3    qd/1      szp/3     qd/3         pd/4
  579. authz-ok   | -       -         -        4            -
  580. authz-bad  | -       -         -        der/2        wa,der,szp/3
  581.  
  582. Action | Description
  583. -------+--------------------------------------------
  584. sap    | start authentication process
  585. der    | deallocate end-system resources
  586. ain    | authorize if needed
  587. szp    | start authorization process
  588. qd     | queue incoming data
  589. pd     | process data
  590. wa     | wipe authorization info
  591.  
  592. Event       |    Description
  593. -------------+---------------------------------------------------
  594. auth-needed  | authentication deemed needed by local party
  595. auth-accept  | remote party's authentication creds accepted
  596. auth-bad     | remote party's authentication creds rejected or expired
  597. authz-start  | local or remote party starts authorization proceedings
  598. data-rcvd    | data destined for end-system received from remote party
  599. authz-ok     | authorization and resource allocation succeeded
  600. authz-bad    | authorization or resource allocation failed or expired
  601.  
  602. 4.1    Authentication of the Server by the Client
  603.  
  604. A secure connection requires that the client be able to authenticate the
  605. identity of the server.  How the authentication is performed depends 
  606. upon the TLS cipher agreed upon during the negotiation.  As of this
  607. writing there are three categories of cipher suites supported by TLS:
  608. ciphers supporting X.509 certificates (PKI), non-PKI ciphers, and 
  609. anonymous ciphers.  The following sections detail how Server authentication
  610. should be performed by the client for each cipher category.
  611.  
  612. 4.1.1  PKI-based Authentication via TLS handshake
  613.  
  614. When a PKI based cipher is negotiated during the TLS negotiation, the
  615. server will deliver an X.509 certificate to the client.  Before the 
  616. certificate MAY be used to determine the identity of the server, the
  617. certifiicate MUST be validated as per RFC 2459.
  618.  
  619. Once validated the identity of the server is confirmed by matching the DNS 
  620. name used to access the host with the name stored in the certificate.  If the 
  621. certificate includes the `subjectAltName' extension and it contains a 
  622. `dNSName' object, then the client MUST use this name as the identity of the 
  623. server.  Otherwise, the (most specific) commonName field in the Subject field 
  624. if the certificate MUST be used. Note that although the commonName field 
  625. technique is currently in wide use, it is deprecated and Certification 
  626. Authorities are encourage to use the dnsName instead.
  627.  
  628. Matching is performed using the matching rules specified by [RFC 2459].  If 
  629. more than one identity of a given type is present in the certificate (e.g., 
  630. more than one dnsName name, a match in any one of the set is considered 
  631. acceptable.)  Names may contain the wildcard character '*' which is considered 
  632. to match any single domain name component or component fragment. E.g., 
  633. "*.a.com" matches "foo.a.com" but not "bar.foo.a.com.  "f*.com" matches 
  634. "foo.com" but not "bar.com".
  635.  
  636. In some cases, an IP address is used to access the host instead of a DNS name. 
  637.  In these cases, a 'subjectAltName' object of type 'iPAddress' MUST be present 
  638. in the certificate and MUST exactly match the IP address provided by the end 
  639. user.
  640.  
  641. If the hostname does not match the identity in the certificate, user oriented 
  642. clients MUST either notify the user (clients MAY give the user the opportunity 
  643. to continue with the connection in any case) or terminate the connection with 
  644. a bad certificate error.  Automated clients MUST log the error to an 
  645. appropriate audit log (if available) and SHOULD terminate the connection (with 
  646. a bad certificate error.)  Automated clients MAY provide a configuration 
  647. setting that disables this check, but MUST provide a setting which enables it.
  648.  
  649. 4.1.2  Non-PKI based authentication via TLS handshake
  650.  
  651. As of this writing TLS only supports one class of non-PKI cipher suites 
  652. which are based on Kerberos 5.  Regardless, any non-PKI cipher suite
  653. incorporated into TLS will provide for mutual authentication.  Authentication
  654. of the server is therefore implied by a successful TLS credential exchange.
  655.  
  656. 4.1.3  Authentication by Telnet AUTH option (RFC 2941)
  657.  
  658. If the TLS exchange used an anonymous cipher such as Anonymous-Diffie-
  659. Hellman (ADH) or if the X.509 certificate could not be validated, then
  660. the session MUST be protected from a man in the middle attack.  This can
  661. be accomplished by using a Telnet AUTH [AUTH] method that provides for
  662. mutual authentication(*) of the client and server; and which allows the
  663. TLS Finished messages sent by the client and the server to be verified.
  664. A failure to successfully perform a mutual authentication with Finished
  665. message verification via Telnet AUTH MUST result in termination of the
  666. connection by both the client and the server.
  667.  
  668. (*) The Telnet AUTH option supports both unilateral and mutual authentication
  669. methods.  The distinction being that mutual authentication methods confirm
  670. the identity of both parties at the end of the negotiation.  A unilateral
  671. authentication method cannot be used to verify the contents of the TLS client
  672. and server finished messages.  It is worth noting that TLS usually 
  673. authenticates the server to the client; whereas, Telnet AUTH usually 
  674. authenticates the client to the server when unilateral methods are used.
  675.  
  676. 4.2    Authentication of the Client by the Server
  677.  
  678. After TLS has been successfully negotiated the server may not have the
  679. client's identity (verified or not) since the client is not required to
  680. provide credentials during the TLS exchange.  Even when the client does
  681. provide credentials during the TLS exchange, the server may have a policy
  682. that prevents their use.  Therefore, the server may not have enough
  683. confidence in the client to move the connection to the authenticated state.
  684.  
  685. If further client, server or client-server authentication is going to
  686. occur after TLS has been negotiated, it MUST occur before any
  687. non-authentication-related Telnet interactions take place on the link
  688. after TLS starts. When the first non-authentication-related Telnet
  689. interaction is received by either participant, then the receiving
  690. participant MAY drop the connection due to dissatisfaction with the
  691. level of authentication.
  692.  
  693. If the server wishes to request a client certificate after TLS is
  694. initially started (presumably with no client certificate requested), it
  695. may do so. However, the server MUST make such a request immediately
  696. after the initial TLS handshake is complete.
  697.  
  698. No TLS negotiation outcome, however trustworthy, will by itself provide
  699. the server with the authorization identity if that is different from the
  700. authentication identity of the client.
  701.  
  702. The following subsections detail how the client can provide the server
  703. with authentication and authorization credentials.
  704.  
  705. 4.2.1   PKI-based Authentication via TLS handshake
  706.  
  707. PKI-based authentication is used by the client transmitting an X.509
  708. certificate to the host during the TLS handshake.  There is no standard
  709. mechanism defined for how a client certificate should be mapped to a
  710. authorization identity (userid).  There are several methods currently
  711. in wide practice.  A telnet server compliant with this document may
  712. implement zero, one or more than one of them.
  713.  
  714. The first method is to use information stored within the certificate
  715. to determine the authorization identity.  If the certificate contains
  716. an Common Name object then portions of it can be used as the
  717. authorization identity.  If the Common Name contains an UID member, 
  718. then it can be used directly.  If the Common Name contains an Email
  719. member, then it can be used if the specified domain matches the domain
  720. of the telnet server.
  721.  
  722. The second method is to use the entire Subject Name as a entry to 
  723. lookup in a directory.  The directory provides a mapping between the 
  724. subject name and the authorization identity.
  725.  
  726. The third method is to use the entire certificate as a entry to lookup
  727. in a directory with the directory providing a mapping between the 
  728. certificate and the authorization identity.
  729.  
  730. The first method is only practical if the certificates are being 
  731. issued by certificate authority managed by the same organization as
  732. the server performing the authorization.
  733.  
  734. The second and third methods can be used with certificates issued
  735. by public certificate authorities provided the certificates are 
  736. delivered to the organization performing the authorization in advance
  737. via an authenticated method.  The second and third methods have the
  738. added benefit that the certificates, if issued by the authorizing
  739. organization, do not require that any personal information about the
  740. subject be included in the certificate.  The Subject line could be
  741. filled only with gibberish to establish its uniqueness in the
  742. directory.
  743.  
  744. 4.2.2   Non-PKI Authentication via TLS handshake
  745.  
  746. TLS supports non-PKI authentication methods which can be used for
  747. securely establishing authentication identities.  As of this writing,
  748. TLS supports only one non-PKI authentication method, Kerberos 5.
  749. However, it is not unlikely that other authentication methods might be
  750. incorporated into TLS ciphers in the future.
  751.  
  752. 4.2.3   Telnet AUTH option
  753.  
  754. The Telnet AUTH option implements a variety of authentication methods
  755. which can be used to establish authentication and authorization 
  756. identities.  Some methods (e.g., KERBEROS_IV and KERBEROS_V) allow
  757. separate authentication and authorization identities to be provided.
  758. Details on the use of the Telnet AUTH option and its authentication
  759. methods can be found in RFC1416 (about to be obsoleted) and its related
  760. documents.  For a current list of Telnet AUTH methods see IANA.
  761.  
  762. 4.2.4   Traditional Username and Password
  763.  
  764. When all else fails the authorization identity may be provided over
  765. the secure TLS connection in the form of a username and password.
  766.  
  767. The Username MAY be transmitted to the host via the Telnet New 
  768. Environment option's USER variable.
  769.  
  770.  
  771. 5    Security
  772.  
  773. Security is discussed throughout this document. Most of this document
  774. concerns itself with wire protocols and security frameworks. But in this
  775. section, client and server implementation security issues are in focus.
  776.  
  777. 5.1   PKI-based certificate processing
  778.  
  779. A complete discussion of the proper methods for verifying X.509 certificates
  780. and their associated certificate chains is beyond the scope of this 
  781. document.  The reader is advised to refer to the RFCs issued by the PKIX
  782. Working Group.  However, the verification of a certificate MUST include,
  783. but isn't limited to, the verification of the signature certificate
  784. chain to the point where the a signature in that chain uses a known good
  785. signing certificate in the local key chain. The verification
  786. SHOULD then continue with a check to see if the fully qualified host name
  787. which the client connected to appears anywhere in the server's
  788. certificate subject (DN). 
  789.  
  790. If the certificate cannot be verified then either:
  791.  
  792.    o the end user MUST see a display of the server's certificate and be
  793.      asked if he/she is willing to proceed with the session; or,
  794.  
  795.    o the end user MUST NOT see a display of server's certificate, but the
  796.      certificate details are logged on whatever media is used to log
  797.      other session details. This option may be preferred to the first
  798.      option in environments where the end-user cannot be expected to make
  799.      an informed decision about whether a mismatch is harmful. The
  800.      connection MUST be closed automatically by the client UNLESS the
  801.      client has been configured to explicitly allow all mismatches.
  802.  
  803.    o the connection MUST be closed on the user's behalf, and an error
  804.      describing the mismatch logged to stable storage.
  805.  
  806. If the client side of the service is not interactive with a human
  807. end-user, the Telnet connection SHOULD be dropped if this host check
  808. fails.
  809.  
  810. 5.2   Client and Server authentication of anonymous-TLS connections
  811.  
  812. When authentication is performed after the establishment of a TLS session
  813. which uses an anonymous cipher, it is imperative that the authentication
  814. method protect against a man in the middle attack by verifying the
  815. contents of the client's and server's TLS finished messages.  Without
  816. the verification of both the client and server's TLS finished messages
  817. it is impossible to confirm that there is not a man in the middle 
  818. listening and perhaps changing all the data transmitted on the 
  819. connection.  
  820.  
  821. Verification of the TLS finished messages can be performed as part 
  822. of a Telnet AUTH option mutual authentication exchange (when using the
  823. ENCRYPT_START_TLS flag.) This can be done at the same time the 
  824. verification of the authentication-type-pair is performed.
  825.  
  826. 5.3    Display of security levels
  827.  
  828. The Telnet client and server MAY, during the TLS protocol negotiation
  829. phase, choose to use a weak cipher suite due to policy, law or even
  830. convenience. It is, however, important that the choice of weak cipher
  831. suite be noted as being commonly known to be vulnerable to attack. In
  832. particular, both server and client software should note the choice of
  833. weak cipher-suites in the following ways:
  834.  
  835.    o If the Telnet endpoint is communicating with a human end-user, the
  836.      user-interface SHOULD display the choice of weak cipher-suite and
  837.      the fact that such a cipher-suite may compromise security.
  838.  
  839.    o The Telnet endpoints SHOULD log the exact choice of cipher-suite as
  840.      part of whatever logging/accounting mechanism normally used.
  841.  
  842. 5.4    Trust Relationships and Implications
  843.  
  844. Authentication and authorization of the remote Telnet party is useful,
  845. but can present dangers to the authorizing party even if the connection
  846. between the client and server is protected by TLS using strong
  847. encryption and mutual authentication. This is because there are some
  848. trust-relationships assumed by one or both parties:
  849.  
  850.    o Each side assumes that the authentication and authentication details
  851.      proferred by the remote party stay constant until explicitly changed
  852.      (or until the TLS session is ended).
  853.  
  854.    o More stringently, each side trusts the other to send a timely
  855.      notification if authentication or authorization details of the other
  856.      party's end system(s) have changed.
  857.  
  858. Either of these assumptions about trust may be false if an intruder has
  859. breached communications between a client or server and its respective
  860. end system. And either may be false if a component is badly implemented
  861. or configured. Implementers should take care in program construction to
  862. avoid invalidating these trust relationships, and should document to
  863. configuring-users the proper ways to configure the software to avoid
  864. invalidation of these relationships.
  865.  
  866. 5.5  Telnet negotation handling
  867.  
  868. There are two aspects to Telnet negotiation handling that affect the
  869. security of the connection.  First, given the asynchronous nature
  870. of Telnet option negotiations it is possible for a telnet client or
  871. server to allow private data to be transmitted over a non-secure 
  872. link.  It is especially important that implementors of this telnet
  873. option ensure that no telnet option subnegotiations other than those
  874. related to authentication and establishment of security take place over
  875. an insecure connection.
  876.  
  877. The second item is related to the most common error when implementing
  878. a telnet protocol state machine.  Most telnet implementations do not
  879. check to ensure that the peer responds to all outstanding requests
  880. to change states: WILL, DO, WONT, DONT.  It is important that all 
  881. telnet implementations ensure that requests for state changes are
  882. responded to.
  883.  
  884.  
  885. 6    TLS Variants and Options
  886.  
  887. TLS has different versions and different cipher suites that can be
  888. supported by client or server implementations. The following
  889. subsections detail what TLS extensions and options are mandatory. The
  890. subsections also address how TLS variations can be accommodated.
  891.  
  892. 6.1    Support of previous versions of TLS
  893.  
  894. TLS has its roots in SSL 2.0 and SSL 3.0. Server and client
  895. implementations may wish to support for SSL 3.0 as a fallback in case TLS
  896. 1.0 or higher is not supported. This is permissible; however, client
  897. implementations which negotiate SSL3.0 MUST still follow the rules in
  898. Section 5.3 concerning disclosure to the end-user of transport-level
  899. security characteristics.
  900.  
  901. Negotiating the use of SSL 3.0 is done as part of the TLS negotiation; it
  902. is detailed in [TLS].  SSL 2.0 MUST NOT be negotiated.
  903.  
  904. 6.2    Using Kerberos V5 with TLS
  905.  
  906. If the client and server are both amenable to using Kerberos V5, then
  907. using non-PKI authentication techniques within the confines of TLS may
  908. be acceptable (see [TLSKERB]). Note that clients and servers are under
  909. no obligation to support anything but the cipher-suite(s) mandated in
  910. [TLS]. However, if implementations do implement the KRB5 authentication
  911. as a part of TLS ciphersuite, then these implementations SHOULD support
  912. at least the TLS_KRB5_WITH_3DES_EDE_CBC_SHA ciphersuite.
  913.  
  914. 7    Protocol Examples
  915.  
  916. The following sections provide skeletal examples of how Telnet clients
  917. and servers can negotiate TLS.
  918.  
  919. 7.1    Successful TLS negotiation
  920.  
  921. The following protocol exchange is the typical sequence that starts TLS:
  922.  
  923. // typical successful opening exchange
  924.   S: IAC DO START_TLS
  925.   C: IAC WILL START_TLS IAC SB START_TLS FOLLOWS IAC SE
  926.   S: IAC SB START_TLS FOLLOWS IAC SE
  927. // server now readies input stream for non-Telnet, TLS-level negotiation
  928.   C: [starts TLS-level negotiations with a ClientHello]
  929.   [TLS transport-level negotiation ensues]
  930.   [TLS transport-level negotiation completes with a Finished exchanged]
  931. // either side now able to send further Telnet data or commands
  932.  
  933. 7.2    Successful TLS negotiation, variation
  934.  
  935. The following protocol exchange is the typical sequence that starts TLS,
  936. but with the twist that the (TN3270E) server is willing but not
  937. aggressive about doing TLS; the client strongly desires doing TLS.
  938.  
  939. // typical successful opening exchange
  940.   S: IAC DO TN3270E
  941.   C: IAC WILL START_TLS IAC
  942.   S: IAC DO START_TLS
  943.   C: IAC WILL START_TLS IAC SB START_TLS FOLLOWS IAC SE
  944.   S: IAC SB START_TLS FOLLOWS IAC SE
  945. // server now readies input stream for non-Telnet, TLS-level negotiation
  946.   C: [starts TLS-level negotiations with a ClientHello]
  947.   [TLS transport-level negotiation ensues]
  948.   [TLS transport-level negotiation completes with a Finished
  949.                  exchanged]
  950. // note that server retries negotiation of TN3270E after TLS
  951. // is done.
  952.   S: IAC DO TN3270E
  953.   C: IAC WILL TN3270E
  954. // TN3270E dialog continues....
  955.  
  956. 7.3    Unsuccessful TLS negotiation
  957.  
  958. This example assumes that the server does not wish to allow the Telnet
  959. session to proceed without TLS security; however, the client's version
  960. of TLS does not interoperate with the server's.
  961.  
  962. //typical unsuccessful opening exchange
  963.   S: IAC DO START_TLS
  964.   C: IAC WILL START_TLS IAC SB START_TLS FOLLOWS IAC SE
  965.   S: IAC SB START_TLS FOLLOWS IAC SE
  966. // server now readies input stream for non-Telnet, TLS-level negotiation
  967.   C: [starts TLS-level negotiations with a ClientHello]
  968.   [TLS transport-level negotiation ensues]
  969.   [TLS transport-level negotiation fails with server sending
  970.                ErrorAlert message]
  971.   S: [TCP level disconnect]
  972. //  server (or both) initiate TCP session disconnection
  973.  
  974. This example assumes that the server wants to do TLS, but is willing to
  975. allow the session to proceed without TLS security; however, the client's
  976. version of TLS does not interoperate with the server's.
  977.  
  978. //typical unsuccessful opening exchange
  979.   S: IAC DO START_TLS
  980.   C: IAC WILL START_TLS IAC SB START_TLS FOLLOWS IAC SE
  981.   S: IAC SB START_TLS FOLLOWS IAC SE
  982. // server now readies input stream for non-Telnet, TLS-level negotiation
  983.   C: [starts TLS-level negotiations with a ClientHello]
  984.   [TLS transport-level negotiation ensues]
  985.   [TLS transport-level negotiation fails with server sending
  986.                ErrorAlert message]
  987.   S: [TCP level disconnect]
  988. // session is dropped
  989.  
  990. 7.4    Authentication via Kerberos 4 after TLS negotiation
  991.  
  992. Here's an implementation example of using Kerberos 4 to authenticate the
  993. client after encrypting the session with TLS. Note the following
  994. details:
  995.  
  996.    o The client strictly enforces a security policy of proposing Telnet
  997.      AUTH first, but accepting TLS. This has the effect of producing a
  998.      rather verbose pre-TLS negotiation sequence; however, the
  999.      end-result is correct. A more efficient pre-TLS sequence can be
  1000.      obtained by changing the client security policy to be the same as the
  1001.      server's for this connection (and implementing policy-aware
  1002.      negotiation code in the Telnet part of the client).
  1003.  
  1004.      A similar efficient result can be obtained even in the absence of a
  1005.      clear client security policy if the client has cached server
  1006.      security preferences from a previous Telnet session to the same
  1007.      server.
  1008.  
  1009.    o The server strictly enforces a security policy of proposing TLS
  1010.      first, but falling back to Telnet AUTH.
  1011.  
  1012.   C: IAC WILL AUTHENTICATION
  1013.   C: IAC WILL NAWS
  1014.   C: IAC WILL TERMINAL-TYPE
  1015.   C: IAC WILL NEW-ENVIRONMENT
  1016.   S: IAC DO START_TLS
  1017.   C: IAC WILL START_TLS
  1018.   C: IAC SB START_TLS FOLLOWS IAC SE
  1019.   S: IAC DO AUTHENTICATION
  1020.   S: IAC DO NAWS
  1021.   S: IAC WILL SUPPRESS-GO-AHEAD
  1022.   S: IAC DO SUPPRESS-GO-AHEAD
  1023.   S: IAC WILL ECHO
  1024.   S: IAC DO TERMINAL-TYPE
  1025.   S: IAC DO NEW-ENVIRONMENT
  1026.   S: IAC SB AUTHENTICATION SEND
  1027.     KERBEROS_V4 CLIENT_TO_SERVER|MUTUAL|ENCRYPT_REQ
  1028.     KERBEROS_V4 CLIENT_TO_SERVER|MUTUAL
  1029.     KERBEROS_V4 CLIENT_TO_SERVER|ONE_WAY
  1030.     SSL CLIENT_TO_SERVER|ONE_WAY   IAC SE
  1031.   S: IAC SB TERMINAL-TYPE SEND  IAC SE
  1032.   S: IAC SB NEW-ENVIRONMENT SEND  IAC SE
  1033.   S: IAC SB START_TLS FOLLOWS  IAC SE
  1034.   [TLS - handshake starting]
  1035.   [TLS - OK]
  1036.   C: IAC WILL AUTHENTICATION
  1037.   C: IAC WILL NAWS
  1038.   C: IAC WILL TERMINAL-TYPE
  1039.   C: IAC WILL NEW-ENVIRONMENT
  1040.   <wait for outstanding negotiations>
  1041.   S: IAC DO AUTHENTICATION
  1042.   S: IAC DO NAWS
  1043.   S: IAC WILL SUPPRESS-GO-AHEAD
  1044.   C: IAC DO SUPPRESS-GO-AHEAD
  1045.   S: IAC DO SUPPRESS-GO-AHEAD
  1046.   C: IAC WILL SUPPRESS-GO-AHEAD
  1047.   S: IAC WILL ECHO
  1048.   C: IAC DO ECHO
  1049.   S: IAC DO TERMINAL-TYPE
  1050.   S: IAC DO NEW-ENVIRONMENT
  1051.   S: IAC SB AUTHENTICATION SEND
  1052.     KERBEROS_V4 CLIENT_TO_SERVER|MUTUAL
  1053.     KERBEROS_V4 CLIENT_TO_SERVER|ONE_WAY   IAC SE
  1054.   C: IAC SB AUTHENTICATION NAME jaltman IAC SE
  1055.   C: IAC SB AUTHENTICATION IS
  1056.     KERBEROS_V4 CLIENT_TO_SERVER|MUTUAL AUTH
  1057.     04 07 0B "CC.COLUMBIA.EDU" 00 "8(" 0D 9E 9F AB A0 "L" 15 8F A6
  1058.     ED "x" 19 F8 0C "wa" CA "z`" 1A E2 B8 "Y" B0 8E "KkK" C6 AA "<" FF
  1059.     FF 98 89 "|" 90 AC DF 13 "2" FC 8E 97 F7 BD AE "e" 07 82 "n" 19 "v"
  1060.     7F 10 C1 12 B0 C6 "|" FA BB "s1Y" FF FF 10 B5 14 B3 "(" BC 86 "`"
  1061.     D2 "z" AB "Qp" C4 "7" AB "]8" 8A 83 B7 "j" E6 "IK" DE "|YIVN"
  1062.     IAC SE
  1063.   S: IAC SB TERMINAL-TYPE SEND  IAC SE
  1064.   S: IAC SB NEW-ENVIRONMENT SEND  IAC SE
  1065.   S: IAC SB AUTHENTICATION REPLY
  1066.    KERBEROS_V4 CLIENT_TO_SERVER|MUTUAL ACCEPT  IAC SE
  1067.   C: IAC SB AUTHENTICATION IS
  1068.    KERBEROS_V4 CLIENT|MUTUAL CHALLENGE "[" BE B7 96 "j" 92 09 "~" IAC SE
  1069.   S: IAC SB AUTHENTICATION REPLY
  1070.    KERBEROS_V4 CLIENT_TO_SERVER|MUTUAL RESPONSE "df" B0 D6 "vR_/"  IAC SE
  1071.   C: IAC SB TERMINAL-TYPE IS VT320 IAC SE
  1072.   C: IAC SB NEW-ENVIRONMENT IS VAR USER VALUE jaltman VAR SYSTEMTYPE \\
  1073.            VALUE WIN32 IAC SE
  1074.   C: IAC SB NAWS 162 49 IAC SE
  1075.  
  1076. Here are several things to note about the above example:
  1077.  
  1078.    o After TLS is successfully negotiated, all non-TLS Telnet settings
  1079.      are forgotten and must be renegotiated.
  1080.  
  1081.    o After TLS is successfully negotiated, the server offers all
  1082.      authentication types that are appropriate for a session using TLS.
  1083.      Note that the server, post TLS-negotiation, isn't offering Telnet
  1084.      ENCRYPT or AUTH SSL, since (a) it's useless to encrypt twice, and 
  1085.      (b) TLS and/or SSL can be applied only once to a Telnet session.
  1086.  
  1087. 8  References
  1088.  
  1089. [ANBF]       D. Crocker, Ed., P. Overell, "Augmented BNF for Syntax
  1090.              Specifications: ABNF", RFC2235, November 1997.
  1091.  
  1092. [AUTH]       T.Ts'o, Ed,. J. Altman, "Telnet Authentication Option",
  1093.              RFC2941, September 2000.
  1094.  
  1095. [ENCRYPT]    T.Ts'o, "Telnet Encryption Option", RFC2946, September 2000.
  1096.  
  1097. [KEYWORDS]   Bradner, S. "Key words for use in RFCs to Indicate
  1098.              Requirement Levels", RFC2119, March 1997.
  1099.  
  1100. [RFC927]     Brian A. Anderson. "TACACS User Identification Telnet
  1101.              Option", RFC927, December 1984
  1102.  
  1103. [RFC2360]    G. Scott, Editor. "Guide for Internet Standard Writers",
  1104.              RFC2360, June 1998.
  1105.  
  1106. [RFC2459]    Housley, R., Ford, W., Polk, W. and D.Solo, "Internet 
  1107.              Public Key Infrastructure: Part I: X.509 Certificate and
  1108.              CRL Profile", RFC2459, January 1999.
  1109.  
  1110. [TELNET]     J. Postel, J. Reynolds. "Telnet Protocol Specifications",
  1111.              RFC854, May 1983.
  1112.  
  1113. [TLS]        Tim Dierks, C. Allen. "The TLS Protocol", RFC2246, January
  1114.              1999.
  1115.  
  1116. [TLSKERB]    Ari Medvinsky, Matthew Hur. "Addition of Kerberos Cipher
  1117.              Suites to Transport Layer Security (TLS)", RFC2712, October
  1118.              1999.
  1119.  
  1120. 9   Authors
  1121.  
  1122.   Michael Boe                                  Jeffrey Altman
  1123.   Cisco Systems Inc.                           Columbia University
  1124.   170 West Tasman Drive                        612 West 115th Street
  1125.   San Jose CA 95134 USA                        New York NY 10025 USA
  1126.  
  1127.   Email: mboe@cisco.com                        jaltman@columbia.edu
  1128.  
  1129. 10  Mailing list
  1130.  
  1131.   General Discussion:tn3270e@list.nih.gov
  1132.   To Subscribe: listserv@list.nih.gov
  1133.   In Body: sub tn3270e <first_name>
  1134.   Archive: listserv@list.nih.gov 
  1135.  
  1136.   Associated list: telnet-wg@bsdi.com
  1137.  
  1138. Full Copyright Statement
  1139.  
  1140. Copyright (c) The Internet Society (1998, 2000). All Rights Reserved.
  1141.  
  1142. This document and translations of it may be copied and furnished to
  1143. others, and derivative works that comment on or otherwise explain it or
  1144. assist in its implementation may be prepared, copied, published and
  1145. distributed, in whole or in part, without restriction of any kind,
  1146. provided that the above copyright notice and this paragraph are included
  1147. on all such copies and derivative works. However, this document itself
  1148. may not be modified in any way, such as by removing the copyright notice
  1149. or references to the Internet Society or other Internet organizations,
  1150. except as needed for the purpose of develop- ing Internet standards in
  1151. which case the procedures for copyrights defined in the Internet
  1152. Standards process must be followed, or as required to translate it into
  1153. languages other than English.
  1154.  
  1155. The limited permissions granted above are perpetual and will not be
  1156. revoked by the Internet Society or its successors or assigns.
  1157.  
  1158. This document and the information contained herein is provided on an "AS
  1159. IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK
  1160. FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
  1161. LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
  1162. INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
  1163. FITNESS FOR A PARTICULAR PURPOSE.
  1164.  
  1165. Acknowledgement
  1166. Funding for the RFC Editor function is currently provided by the
  1167. Internet Society.
  1168.