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

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