home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_n_r / draft-newman-pwchange-00.txt < prev    next >
Text File  |  1997-07-29  |  32KB  |  901 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                          C. Newman
  8. Internet Draft: Internet Password Change Protocol               Innosoft
  9. Document: draft-newman-pwchange-00.txt                        R. Gellens
  10.                                                                 Qualcomm
  11.                                                                July 1997
  12.                                                    Expires in six months
  13.  
  14.  
  15.                 Internet Password Change Protocol (IPCP)
  16.  
  17.  
  18. Status of this memo
  19.  
  20.      This document is an Internet-Draft.  Internet-Drafts are working
  21.      documents of the Internet Engineering Task Force (IETF), its areas,
  22.      and its working groups.  Note that other groups may also distribute
  23.      working documents as Internet-Drafts.
  24.  
  25.      Internet-Drafts are draft documents valid for a maximum of six
  26.      months and may be updated, replaced, or obsoleted by other
  27.      documents at any time.  It is inappropriate to use Internet-Drafts
  28.      as reference material or to cite them other than as "work in
  29.      progress."
  30.  
  31.      To view the entire list of current Internet-Drafts, please check
  32.      the "1id-abstracts.txt" listing contained in the Internet-Drafts
  33.      Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.net
  34.      (Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East
  35.      Coast), or ftp.isi.edu (US West Coast).
  36.  
  37.  
  38. Introduction
  39.  
  40.      As the Internet continues to migrate from using centralized login
  41.      servers to distributed client/server technology, the need for a
  42.      protocol to remotely change passwords increases.  Two protocols are
  43.      currently in use for this purpose.  Kerberos includes its own
  44.      password change protocol, although client support is relatively
  45.      limited.  A very simple ad-hoc protocol called "poppassd" has been
  46.      used in conjunction with POP [POP3] servers.  This protocol is
  47.      supported by many popular POP3 servers and clients but it has the
  48.      unfortunate property of sending the old and new passwords in plain
  49.      text over the network.
  50.  
  51.      This document specifies a new protocol for changing passwords or
  52.      passphrases.  It is based on the SASL [SASL] framework and intended
  53.      to be as simple as possible while also being fully extensible.
  54.      This is designed to work well with the APOP [POP3] command and
  55.  
  56.  
  57.  
  58. Newman                                                          [Page 1]
  59.  
  60. Internet Draft     Internet Password Change Protocol           July 1997
  61.  
  62.  
  63.      similar simple mechanisms to avoid sending plaintext passwords over
  64.      the network whenever feasible.
  65.  
  66.  
  67. 1. Conventions used in this document
  68.  
  69.      The key words "MUST", "MUST NOT", "SHOULD", "SHOULD NOT",
  70.      "OPTIONAL" and "MAY" in this document are to be interpreted as
  71.      defined in "Key words for use in RFCs to Indicate Requirement
  72.      Levels" [KEYWORDS].
  73.  
  74.      The formal grammar in this document uses Augmented BNF [ABNF].
  75.  
  76.      In examples, "C:" and "S:" indicate lines sent by the client and
  77.      server respectively.  If such lines are wrapped without a new "C:"
  78.      or "S:" label, then the wrapping is for editorial clarity and is
  79.      not part of the command.  Non-text information in examples is hex-
  80.      encoded and shown in angle-brackets (e.g., "<5F601D>") for
  81.      readability, although the actual exchange involves binary data
  82.      transmission.
  83.  
  84.  
  85. 2. Protocol Overview
  86.  
  87.      This protocol is a simple text-based protocol.  The basic concept
  88.      is to use the SASL [SASL] framework with the addition of
  89.      special-purpose password-change mechanisms.  A protocol-level
  90.      integrity service is optionally included to prevent active attacks
  91.      which alter the list of available mechanisms.
  92.  
  93.      The protocol consists of a server greeting, followed by client
  94.      commands and server responses.  Clients are permitted to send
  95.      multiple commands at once and will receive responses in order from
  96.      the server.  Commands and responses are sent as CRLF terminated
  97.      lines.
  98.  
  99.      The protocol is designed to be extensible so that more
  100.      sophisticated mechanisms can be added in the future.
  101.  
  102.      A simple exchange involves a server greeting, a client AUTHCHANGE
  103.      command and associated SASL exchange, followed by a server
  104.      acknowledgement, and a client LOGOUT command.
  105.  
  106.  
  107. 3. IPCP Protocol Framework
  108.  
  109.      This section contains the specification of the IPCP protocol.  When
  110.      IPCP is used over TCP/IP the server runs on port 586.  The SASL
  111.  
  112.  
  113.  
  114. Newman                                                          [Page 2]
  115.  
  116. Internet Draft     Internet Password Change Protocol           July 1997
  117.  
  118.  
  119.      service name for IPCP is "ipcp".
  120.  
  121.  
  122. 3.1. Protocol Elements
  123.  
  124.      This section specifies basic components of the protocol.
  125.  
  126.  
  127. 3.1.1. Protocol keywords
  128.  
  129.      Protocol keywords are short fixed strings used to describe client
  130.      commands and server responses.  They have the following formal
  131.      grammar:
  132.  
  133.      ALPHA          = %x41-5A / %x61-7A
  134.                       ;; A US-ASCII letter
  135.  
  136.      KCHAR          = %x21 / %x23-27 / %x2A-5B / %x5D-7A / %x7C-7E
  137.                       ;; All printable US-ASCII characters except SPACE,
  138.                       ;; <">, "(", ")", "\", and "{"
  139.  
  140.      keyword        = ALPHA *63KCHAR
  141.  
  142.  
  143. 3.1.2. Quoted Strings
  144.  
  145.      Data sent between client and server may be represented as a quoted
  146.      string.  Quoted strings are surrounded by double quotes, must not
  147.      exceed 1024 octets, and must not contain NUL, CR or LF.  The
  148.      characters <"> and "\" may be included by preceding them with "\".
  149.      When quoted strings are used to represent human readable text, they
  150.      are in the form of a "utf8-quoted" string [UTF8].  All other quoted
  151.      strings are in the form of a regular "quoted-string" as follows:
  152.  
  153.      QCHAR              = US-ASCII-SAFE / %x80-FF
  154.                           ;; UTF8 is used for text
  155.  
  156.      QCHAR-QUOTED       = QCHAR / QUOTED
  157.  
  158.      QUOTED             = "\" QUOTED-SPECIAL
  159.  
  160.      QUOTED-SPECIAL     = "\" / <">
  161.  
  162.      US-ASCII-SAFE      = %x01-09 / %x0B-0C / %x0E-21
  163.                           / %x23-5B / %x5D-7F
  164.                          ;; US-ASCII except QUOTED-SPECIALs, CR, LF, NUL
  165.  
  166.      UTF8-NON-NUL       = UTF8-SAFE / CR / LF / QUOTED-SPECIAL
  167.  
  168.  
  169.  
  170. Newman                                                          [Page 3]
  171.  
  172. Internet Draft     Internet Password Change Protocol           July 1997
  173.  
  174.  
  175.      UTF8-QUOTED        = UTF8-SAFE / QUOTED
  176.  
  177.      UTF8-SAFE          = US-ASCII-SAFE / UTF8-1 / UTF8-2 / UTF8-3
  178.                           / UTF8-4 / UTF8-5
  179.  
  180.      UTF8-CONT          = %x80-BF
  181.  
  182.      UTF8-1             = %xC0-DF UTF8-CONT
  183.  
  184.      UTF8-2             = %xE0-EF 2UTF8-CONT
  185.  
  186.      UTF8-3             = %xF0-F7 3UTF8-CONT
  187.  
  188.      UTF8-4             = %xF8-FB 4UTF8-CONT
  189.  
  190.      UTF8-5             = %xFC-FD 5UTF8-CONT
  191.  
  192.      quoted-string      = <"> *QCHAR-QUOTED <">
  193.                           ;; limited to 1024 octets
  194.  
  195.      utf8-qstring       = <"> *UTF8-QUOTED <">
  196.                           ;; limited to 1024 octets
  197.  
  198.  
  199. 3.1.3. Literal/Binary Strings
  200.  
  201.      Arbitrary data may be sent between the client and the server using
  202.      literal strings.  Literal strings begin with an unsigned 32 bit
  203.      number enclosed in braces ("{", "}") representing the length,
  204.      followed by a CRLF, followed by length octets, followed by the
  205.      remainder of the command line.  Note that non-text literal strings
  206.      MAY contain a 0 or NUL octet, so implementations MUST NOT use NUL-
  207.      terminated strings to store binary literal strings internally.
  208.      Text literal strings are interpreted according to UTF-8.  Literals
  209.      have the following formal grammar:
  210.  
  211.      DIGIT          = "0" / "1" / "2" / "3" / "4" / "5"
  212.                       / "6" / "7" / "8" / "9"
  213.  
  214.      OCTET          = %x00-FF
  215.  
  216.      OCTET-NZ       = %x01-FF
  217.  
  218.      number         = 1*DIGIT
  219.                       ;; limited to 0 <= number < 4,294,967,296
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226. Newman                                                          [Page 4]
  227.  
  228. Internet Draft     Internet Password Change Protocol           July 1997
  229.  
  230.  
  231.      literal        = "{" number "}" CRLF *OCTET
  232.                       ;; number indicates the number of OCTETs.
  233.                       ;; UTF-8 is used for text
  234.  
  235.      string         = literal / quoted-string
  236.  
  237.      Servers are required to skip client literals even if a command
  238.      contains a syntax error.
  239.  
  240.  
  241. 3.1.4. Groupings
  242.  
  243.      Parentheses are used to group related strings and keywords
  244.      together.
  245.  
  246.  
  247. 3.2. Server responses
  248.  
  249.      Each server response begins with a slash ("/") separated
  250.      hierarchical response code.  The first component of the code is
  251.      "OK", "NO", "BAD", "CONT" or "GOODBYE".  "OK" indicates successful
  252.      connection or successful completion of a client command.  "NO"
  253.      indicates the command failed for some reason.  "BAD" indicates a
  254.      protocol syntax error, usually the result of a client bug.  "CONT"
  255.      indicates the successful receipt of a partial command and includes
  256.      server data which the client may use to continue the command.  And
  257.      "GOODBYE" indicates some event forced the server to close the
  258.      connection.  Clients MAY interpret only the first one or two
  259.      hierarchical components of the response code, but MUST ignore any
  260.      response detail beyond those components recognized.
  261.  
  262.      For responses other than "CONT", the initial response code is
  263.      followed by an optional grouping of response-specific data.  This
  264.      is followed by a UTF-8 quoted string describing any status or
  265.      errors as human readable text.
  266.  
  267.      After a successful AUTHCHANGE command is received (see below), a
  268.      signature of the response line SHOULD be included with the response
  269.      if a shared secret is present.  This prevents active attacks which
  270.      alter the initial greeting line or the response code.  The
  271.      signature is computed by taking the AUTHCHANGE random number from
  272.      the client and appending the server greeting line and the current
  273.      response line up to and including the space before the signature,
  274.      then applying the requested signature mechanism using the original
  275.      shared secret.  The resulting signature is then attached as a
  276.      literal to the end of the response.
  277.  
  278.  
  279.  
  280.  
  281.  
  282. Newman                                                          [Page 5]
  283.  
  284. Internet Draft     Internet Password Change Protocol           July 1997
  285.  
  286.  
  287.      The formal grammar for server responses follows:
  288.  
  289.      response         = resp-continue / resp-done
  290.  
  291.      resp-continue    = "CONT" SPACE string
  292.  
  293.      response-data    = resp-group
  294.  
  295.      resp-detail      = *("/" keyword)
  296.                         ;; MUST be registered with IANA
  297.  
  298.      resp-done        = resp-status resp-detail [SPACE response-data]
  299.                         SPACE utf8-quoted [SPACE signature]
  300.  
  301.      resp-group       = "(" resp-extend *(SPACE resp-extend) ")"
  302.  
  303.      resp-status      = "OK" / "NO" / "BAD" / "GOODBYE"
  304.  
  305.      resp-extend      = keyword / number / string / resp-group
  306.  
  307.      signature        = literal
  308.                         ;; a signature computed over the response
  309.                         ;; using the algorithm specified in the AUTHCHANGE
  310.                         ;; command
  311.  
  312.  
  313. 3.3. Client Commands
  314.  
  315.      Client commands consist of a keyword followed by arguments.
  316.  
  317.  
  318. 3.4. Signature Mechanisms
  319.  
  320.      IPCP supports signature mechanisms for signing the server greeting
  321.      and protocol response lines.  The mechanism HMAC-SHA1 [HMAC, SHA1]
  322.      MUST be supported and additional mechanisms can be registered with
  323.      IANA.  The mechanism NONE MUST be supported if any mechanisms are
  324.      offered which don't involve a shared secret, but servers MAY reject
  325.      NONE in combination with any mechanism that includes a shared
  326.      secret.
  327.  
  328.  
  329. 4. Protocol Exchange
  330.  
  331.      This section documents the protocol exchange.
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338. Newman                                                          [Page 6]
  339.  
  340. Internet Draft     Internet Password Change Protocol           July 1997
  341.  
  342.  
  343. 4.1. Server Greeting
  344.  
  345.      The server greeting takes the form of a response.  A GOODBYE
  346.      greeting indicates the server is not available and MAY include
  347.      response detail indicating the reason.  An OK greeting indicates
  348.      the server is ready.
  349.  
  350.  
  351. 4.1.1. Server Referral
  352.  
  353.      If a server is unavailable, it may include a referral to a
  354.      different server.  It may be useful to run a referral-only server
  355.      on a less secure system which refers to a more secure system.  For
  356.      example, a POP3 [POP3] client should be able connect to the IPCP
  357.      port on a POP3 server and either change the password there or be
  358.      refered to a proper IPCP server.  This way clients don't need to be
  359.      configured with an additional server.  A referral is represented by
  360.      a NO/REFER response with one or more domain names for the
  361.      response-data.
  362.  
  363.      Example:
  364.        S: NO/REFER ("ipcp.server.domain") "IPCP not available here"
  365.  
  366.  
  367. 4.1.2. Server Ready
  368.  
  369.      A server ready greeting is an OK/IPCP response.  The response-data
  370.      includes a server random string followed by capability information
  371.      for the server.  The "SIG-MECH" capability MUST be included and is
  372.      followed by a list of signature mechanisms.  The "SASL" capability
  373.      MUST be included and is followed by a list of supported SASL
  374.      mechanisms.  Other capabilities MAY be defined by standards track
  375.      or IESG approved experimental extensions to this protocol.
  376.  
  377.      Example:
  378.        S: OK/IPCP ((SIG-MECH "HMAC-SHA1" "NONE") (SASL "SHA1-CHANGE"))
  379.           "Joe's IPCP server v1.0 Ready"
  380.  
  381.  
  382. 4.1.3. Server Too Busy
  383.  
  384.      The "GOODBYE/TOOBUSY" response indicates the server is too busy to
  385.      process the request at the current time.  GOODBYE with no
  386.      additional detail may also be used to indicate other conditions
  387.      which prevent the server from accepting client commands.
  388.  
  389.      Example:
  390.        S: GOODBYE/TOOBUSY "Server too busy at the present time"
  391.  
  392.  
  393.  
  394. Newman                                                          [Page 7]
  395.  
  396. Internet Draft     Internet Password Change Protocol           July 1997
  397.  
  398.  
  399. 4.2. AUTHCHANGE command
  400.  
  401.      An AUTHCHANGE command selects the IPCP signature mechanism, a
  402.      random challenge for the signature mechanism, a SASL authentication
  403.      and passphrase change mechanism and an optional sasl-data argument
  404.      for SASL mechanisms where the client sends the first non-empty
  405.      message.  The command is followed by a SASL exchange with server
  406.      data in the string following the "CONT" response, and client data
  407.      as a single string followed by a CRLF.  The authorization identity
  408.      included in the SASL exchange indicates the user whose passphrase
  409.      should be changed, the authentication identity indicates the user
  410.      whose credentials are being used to initiate the change.  This
  411.      allows IPCP to be used by an administrator to set passwords for
  412.      other users.
  413.  
  414.      The client MUST wait at least one minute for the server to issue
  415.      the final success or failure response.  This permits the server
  416.      limited time to perform a dictionary attack on the passphrase
  417.      verifier for those mechanisms which pass a one-way function applied
  418.      to the passphrase.
  419.  
  420.      AUTHCHANGE has the following syntax:
  421.  
  422.      command-authchg  = "AUTHCHANGE" SPACE sig-mech SPACE random
  423.                         SPACE sasl-mech [SPACE sasl-data] CRLF
  424.                         *(string CRLF)
  425.  
  426.      random           = literal
  427.                         ;; client-generated random data
  428.  
  429.      sasl-data        = string
  430.                         ;; A mechanism based client initial string.
  431.  
  432.      sasl-mech        = "PLAIN-CHANGE" / "SHA1-CHANGE" / keyword
  433.                         ;; MUST be registered with IANA according to
  434.                         ;; procedures in SASL and listed in server greeting
  435.  
  436.      sig-mech         = "HMAC-SHA1" / "NONE" / keyword
  437.                         ;; MUST be registered with IANA
  438.  
  439.      Example:
  440.        [TODO - use change mechanism]
  441.        S: OK/IPCP ((SIG-MECH "HMAC-SHA1" "NONE") (SASL "SHA1-CHANGE"))
  442.                   "Joe's IPCP server v1.0 Ready"
  443.        C: AUTHCHANGE HMAC-SHA1 {20}
  444.        C: <A745B67893026BC125397D4F6980D12B0402BB78> CRAM-MD5
  445.        S: CONT "<1896.697170952@postoffice.reston.mci.net>"
  446.        C: "tim b913a602c7eda7a495b4e6e7334d3890"
  447.  
  448.  
  449.  
  450. Newman                                                          [Page 8]
  451.  
  452. Internet Draft     Internet Password Change Protocol           July 1997
  453.  
  454.  
  455.        S: OK "Welcome, tim" {20}
  456.        S: <TODO>
  457.  
  458.  
  459. 4.3. Responses to AUTHCHANGE command
  460.  
  461.      An OK response indicates successful authentication and password
  462.      change, a NO response indicates a failure at some point in the
  463.      process.  The response line SHOULD be signed by the server as
  464.      requested by the client.  The client SHOULD verify the signature on
  465.      the server's response.  An initial set of failure responses are
  466.      listed in this section.  Not all responses are appropriate for all
  467.      change mechanisms.
  468.  
  469.  
  470. 4.3.1. NO/AUTH/FAILED response
  471.  
  472.      This indicates that no secret could be found for the specified user
  473.      or the client's authentication did not verify correctly.  There is
  474.      no response to indicate unknown user in order to avoid attacks
  475.      which probe for users on the system.
  476.  
  477.  
  478. 4.3.2. NO/AUTH/EXPIRED response
  479.  
  480.      This indicates that the passphrase has expired and the account
  481.      owner needs to contact the system administrator for new
  482.      credentials.  The human readable string MAY contain contact
  483.      information.
  484.  
  485.  
  486. 4.3.3. NO/AUTH/SUSPENDED response
  487.  
  488.      This indicates the account has been suspended until further notice
  489.      and no access to that account of any sort is permitted.
  490.  
  491.  
  492. 4.3.4. NO/AUTH/ENCRYPT response
  493.  
  494.      This indicates the requested mechanism is not permitted unless an
  495.      external encryption layer is applied.
  496.  
  497.  
  498. 4.3.5. NO/AUTH/TRANSITION-NEEDED response
  499.  
  500.      This indicates that the server has an entry for the user in a
  501.      legacy authentication database from which the secret can not be
  502.      recovered.  It also indicates that a one-time use of the SASL PLAIN
  503.  
  504.  
  505.  
  506. Newman                                                          [Page 9]
  507.  
  508. Internet Draft     Internet Password Change Protocol           July 1997
  509.  
  510.  
  511.      [SASL-PLAIN] mechanism MAY be used by the client to initialize an
  512.      entry in a newer authentication database so that future connections
  513.      and password change requests can be secure.
  514.  
  515.  
  516. 4.3.6. NO/AUTH/SECURE-TRANSITION-NEEDED response
  517.  
  518.      This indicates that the server has an entry for the user in a
  519.      legacy authentication database from which the secret can not be
  520.      recovered.  The client is required to use some secure mechanism to
  521.      change the passphrase (e.g., secure remote login, or an encryption
  522.      extension to this protocol) before future changes can be made.
  523.  
  524.  
  525. 4.3.7. NO/AUTH/UTF-8 response
  526.  
  527.      This indicates that the authentication or authorization user name
  528.      specified did not meet UTF-8 syntax.  Servers are encouraged to
  529.      enforce UTF-8 syntax as this is likely to prevent non-interoperable
  530.      use of non-US-ASCII characters in user names.  The "NO/AUTH/FAILED"
  531.      response MUST be used if the user name has valid syntax but does
  532.      not exist.
  533.  
  534.  
  535. 4.3.8. NO/SIG/WEAK response
  536.  
  537.      This indicates the signature mechanism requested was too weak to
  538.      meet server requirements for the specified SASL mechanism.
  539.  
  540.  
  541. 4.3.9. NO/SIG/NONE response
  542.  
  543.      This indicates the SASL mechanism specified does not support
  544.      signatures and that the NONE signature mechanism has to be used
  545.      instead.
  546.  
  547.  
  548. 4.3.9. NO/REFER response
  549.  
  550.      A server referral as defined in section 4.1.1. can occur in
  551.      response to an AUTHCHANGE command.
  552.  
  553.  
  554. 4.3.10. NO/NEWPASS response
  555.  
  556.      This indicates that the new password does not meet site policy,
  557.      syntax or authorization rules.
  558.  
  559.  
  560.  
  561.  
  562. Newman                                                         [Page 10]
  563.  
  564. Internet Draft     Internet Password Change Protocol           July 1997
  565.  
  566.  
  567. 4.3.11. NO/NEWPASS/AUTHORIZE response
  568.  
  569.      This indicates the authenticated user does not have permission to
  570.      change the password for the authorization user name specified.
  571.  
  572.  
  573. 4.3.12. NO/NEWPASS/UTF-8 response
  574.  
  575.      This indicates the new passphrase does not meet the syntax
  576.      requirements for UTF-8. Servers are encouraged to enforce UTF-8
  577.      syntax as this is likely to prevent non-interoperable use of non-
  578.      US-ASCII characters in passwords.
  579.  
  580.  
  581. 4.3.13. NO/NEWPASS/SHORT response
  582.  
  583.      This indicates the passphrase is too short for server requirements.
  584.      The minimum length is a number at the beginning of the included
  585.      response-data.
  586.  
  587.  
  588. 4.3.14. NO/NEWPASS/LONG response
  589.  
  590.      This indicates the passphrase is too long for server requirements.
  591.      The maximum length is a number at the beginning of the included
  592.      response-data.  Maximum lengths below 64 characters are strongly
  593.      discouraged.
  594.  
  595.  
  596. 4.3.15. NO/NEWPASS/SIMPLE response
  597.  
  598.      This indicates the new passphrase is too easy to guess.  For
  599.      example, entirely lower-case letters.
  600.  
  601.  
  602. 4.3.16. NO/NEWPASS/COMPLEX response
  603.  
  604.      This indicates the new passphrase is too complex.  Specifically, it
  605.      contains a character which is inappropriate for use with the
  606.      supported authentication mechanisms.  For example, use of the CR
  607.      and LF characters in a passphrase are usually not permitted in
  608.      plaintext mechanisms.
  609.  
  610.  
  611. 4.3.17. NO/NEWPASS/SAME response
  612.  
  613.      This indicates that the new passphrase is the same as the old
  614.      passphrase.  There is deliberately no failure error code to
  615.  
  616.  
  617.  
  618. Newman                                                         [Page 11]
  619.  
  620. Internet Draft     Internet Password Change Protocol           July 1997
  621.  
  622.  
  623.      indicate that an older passphrase is being reused.  Although this
  624.      may seem like a security measure, it has the effect of encouraging
  625.      users to write down a series of passphrases and thus reduces the
  626.      overall security of the system.
  627.  
  628.  
  629. 4.3.18. NO/NEWPASS/DICT response
  630.  
  631.      This indicates that the new passphrase was found in a server
  632.      dictionary and is therefore likely to be found by a dictionary
  633.      attack.  The dictionary MAY include static files such as
  634.      /usr/dict/words on Unix in addition to algorithms applied to the
  635.      username or personal information associated with the user.
  636.  
  637.  
  638. 4.4. LOGOUT command
  639.  
  640.      The LOGOUT command indicates the client is completed.  The client
  641.      MAY disconnect any time after LOGOUT is successfully sent, and the
  642.      server will disconnect immediately upon receipt of a LOGOUT command
  643.      after any other outstanding responses have been successfully sent.
  644.      The formal grammar is as follows:
  645.  
  646.      command-logout   = "LOGOUT" CRLF
  647.  
  648.  
  649. 4.5. AUTH command
  650.  
  651.      The AUTH command is syntactically identical to the AUTHCHANGE
  652.      command.  It is used with regular SASL mechanisms which activate an
  653.      encryption layer.  For the client, the encryption layer takes
  654.      effect on the first octet of the command immediately following a
  655.      successful AUTH command.  For the server, the encryption layer
  656.      takes effect immediately after the last octet of an OK response
  657.      line to the AUTH command.  The AUTH command fails with a
  658.      NO/AUTH/ENCRYPT error if negotiation of an encryption layer fails.
  659.      The authorization identity is ignored by the AUTH command.  Once an
  660.      encryption layer is active clients and servers MUST NOT request
  661.      another encryption layer.
  662.  
  663.  
  664. 5. Initial SASL mechanisms for IPCP
  665.  
  666.      The section defines some initial SASL change mechanisms for IPCP.
  667.      All implementations of IPCP MAY support the PLAIN-CHANGE mechanism,
  668.      but if supported, there MUST be a way to disable the mechanism.
  669.      All server implementations which support PLAIN-CHANGE SHOULD have a
  670.      way to disable the mechanism on a per-user basis in favor of
  671.  
  672.  
  673.  
  674. Newman                                                         [Page 12]
  675.  
  676. Internet Draft     Internet Password Change Protocol           July 1997
  677.  
  678.  
  679.      stronger mechanisms.  All server implementations of IPCP with
  680.      access to an authentication database which stores the plaintext
  681.      password itself (e.g., after applying invertible encryption) MUST
  682.      support the SHA1-CHANGE mechanism.  All client implementations of
  683.      IPCP MUST support the SHA1-CHANGE mechanism.
  684.  
  685.  
  686. 5.1. PLAIN-CHANGE SASL mechanism
  687.  
  688.      Support for the PLAIN-CHANGE mechanism is included only to support
  689.      legacy authentication systems.  Its use is strongly discouraged
  690.      since it exposes both the old and new passphrase to a network
  691.      evesdropper.  This mechanism has no shared secret because the
  692.      primary use of plaintext passwords is only when the server stores
  693.      the plaintext password after applying a one-way function.  For this
  694.      reason, the NONE signature mechanism is used with the PLAIN-CHANGE
  695.      SASL mechanism.
  696.  
  697.      The mechanism consists of a single message from the client to the
  698.      server including the user whose password is to be changed, the
  699.      authentication id, the passphrase for the authentication id and the
  700.      new passphrase for the user, separated by US-ASCII NUL characters.
  701.      The formal grammar for this mechanism is as follows:
  702.  
  703.      plain-change     = change-user NUL auth-user NUL auth-pass NUL new-pass
  704.  
  705.      change-user      = *UTF8-SAFE
  706.                         ;; if empty, then is same as auth-user
  707.  
  708.      auth-user        = 1*UTF8-SAFE
  709.  
  710.      auth-pass        = 1*256UTF8-SAFE
  711.  
  712.      new-pass         = 1*256UTF8-SAFE
  713.  
  714.      NUL              = %x00
  715.                         ;; zero octet, US-ASCII NUL
  716.  
  717.  
  718. 5.2. SHA1-CHANGE SASL mechanism
  719.  
  720.      This mechanism is suitable for changing the passphrase for any
  721.      mechanism which stores the passphrase on the server without
  722.      applying a one-way function; such as APOP [POP3] or some
  723.      implementations of CRAM-MD5 [CRAM-MD5].  Note that this mechanism
  724.      is susceptible to offline dictionary attacks.  Specifically, if an
  725.      evesdropper records a session, that evesdropper may run values for
  726.      the old password through the HMAC-SHA1 process until matching
  727.  
  728.  
  729.  
  730. Newman                                                         [Page 13]
  731.  
  732. Internet Draft     Internet Password Change Protocol           July 1997
  733.  
  734.  
  735.      output results.  For this reason, it is vital to use longer and
  736.      more complex passphrases.  The shared secret for use with the
  737.      signature mechanism is the old plaintext passphrase unencrypted.
  738.  
  739.      This mechanism begins with an initial server challenge.  The client
  740.      responds with the user whose password is to be changed, the
  741.      authentication user name, a client challenge and an HMAC-SHA1
  742.      [HMAC] signature computed over the server challenge using the old
  743.      passphrase. If the client's signature verifies, the server signs a
  744.      string consisting of the client's challenge appended to the
  745.      server's initial challenge, using the old passphrase. If the
  746.      server's signature verifies, the client transmits the new
  747.      passphrase using the following algorithm:
  748.  
  749.      (1) First, an octet representing the length of the new passphrase
  750.      is pre-pended to the passphrase and this is placed in a buffer
  751.      rounded up to a 20 octet boundary with arbitrary padding octets.
  752.  
  753.      (2) Apply HMAC-SHA1 to the server's signature using the old
  754.      passphrase.
  755.  
  756.      (3) The output of step (2) is exclusive-ored with the first 20
  757.      octets of the buffer.  If the passphrase is less than 20 octets the
  758.      process completes.
  759.  
  760.      (4) If the buffer is longer than 20 octets, then the 20 octet
  761.      output of step (3) is re-signed with the old passphrase using
  762.      HMAC-SHA1.
  763.  
  764.      (5) The output of step (4) is exclusive ored with the next 20 octet
  765.      segment of the buffer.  Repeat steps (4) and (5) until done.
  766.  
  767.      The formal grammar for the exchange follows:
  768.  
  769.      server-message-1 = challenge
  770.  
  771.      client-message-1 = change-user NUL auth-user NUL
  772.                         challenge NUL signature
  773.  
  774.      server-message-2 = signature
  775.  
  776.      client-message-2 = sha1-new-pass
  777.  
  778.      signature        = 20OCTET
  779.                         ;; 20 octet output of HMAC-SHA1
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786. Newman                                                         [Page 14]
  787.  
  788. Internet Draft     Internet Password Change Protocol           July 1997
  789.  
  790.  
  791.      challenge        = 20*OCTET-NZ
  792.                         ;; randomly generated challenge with no NUL
  793.                         ;; octets.  MUST be at least 20 octets long
  794.  
  795.      sha1-new-pass    = 1*13xor-sig-block
  796.  
  797.      xor-sig-block    = 20OCTET
  798.                         ;; signature exclusive ored with new passphrase
  799.                         ;; buffer as described above
  800.  
  801.  
  802. 6. Examples
  803.  
  804.      TODO
  805.  
  806.  
  807. 7. Security Considerations
  808.  
  809.      Security considerations are discussed throughout this document.
  810.  
  811.      Clients are encouraged to record the occurance of a successful
  812.      authentication for a given user and server combination and refuse
  813.      to use plain text passwords for that user and that server in the
  814.      future.  This will prevent a man in the middle or a spoof server
  815.      from aquiring the user's password by pretending a transition is
  816.      needed.
  817.  
  818.      Use of password change SASL mechanisms with protocols other than
  819.      this one is discouraged, since general purpose application servers
  820.      may not be treated with the same level of security analysis a
  821.      system administrator is likely to apply to a server running a
  822.      password change protocol.
  823.  
  824.  
  825. 8. References
  826.  
  827.      [ABNF] Crocker, D., "Augmented BNF for Syntax Specifications:
  828.      ABNF", Work in progress: draft-ietf-drums-abnf-xx.txt
  829.  
  830.      [CRAM-MD5] Klensin, Catoe, Krumviede, "IMAP/POP AUTHorize Extension
  831.      for Simple Challenge/Response", RFC 2095, MCI, January 1997.
  832.  
  833.          <ftp://ds.internic.net/rfc/rfc2095.txt>
  834.  
  835.      [HMAC] Krawczyk, Bellare, Canetti, "HMAC: Keyed-Hashing for Message
  836.      Authentication", RFC 2104, IBM, UCSD, February 1997.
  837.  
  838.          <ftp://ds.internic.net/rfc/rfc2104.txt>
  839.  
  840.  
  841.  
  842. Newman                                                         [Page 15]
  843.  
  844. Internet Draft     Internet Password Change Protocol           July 1997
  845.  
  846.  
  847.      [KEYWORDS] Bradner, "Key words for use in RFCs to Indicate
  848.      Requirement Levels", RFC 2119, Harvard University, March 1997.
  849.  
  850.          <ftp://ds.internic.net/rfc/rfc2119.txt>
  851.  
  852.      [POP3] Myers, J., Rose, M., "Post Office Protocol - Version 3", RFC
  853.      1939, Carnegie Mellon, Dover Beach Consulting, Inc., May 1996.
  854.  
  855.              <ftp://ds.internic.net/rfc/rfc1939.txt>
  856.  
  857.      [SASL] Myers, J., "Simple Authentication and Security Layer
  858.      (SASL)", Work in progress: draft-myers-auth-sasl-xx.txt
  859.  
  860.      [SASL-PLAIN] Newman, "Plaintext Password SASL Mechanism and
  861.      Transition Strategy", Work in progress: draft-newman-sasl-
  862.      plaintrans-xx.txt.
  863.  
  864.      [SHA1] NIST, FIPS PUB 180-1: Secure Hash Standard, April 1995.
  865.  
  866.      [UTF8] Yergeau, F. "UTF-8, a transformation format of Unicode and
  867.      ISO 10646", RFC 2044, Alis Technologies, October 1996.
  868.  
  869.          <ftp://ds.internic.net/rfc/rfc2044.txt>
  870.  
  871.  
  872. 9. Authors' Addresses
  873.  
  874.      Chris Newman
  875.      Innosoft International, Inc.
  876.      1050 East Garvey Ave. South
  877.      West Covina, CA 91790 USA
  878.  
  879.      Email: chris.newman@innosoft.com
  880.  
  881.      Randall Gellens
  882.      Qualcomm, Inc.
  883.      6455 Lusk Blvd.
  884.      San Diego, CA 92121-2779 USA
  885.  
  886.      Email: Randy@Qualcomm.Com
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898. Newman                                                         [Page 16]
  899.  
  900.  
  901.