Host Identity Protocol                                          Varjonen
Internet-Draft                        Helsinki Institute for Information
Intended status: Informational                                Technology
Expires: September 1, 2009                             February 28, 2009


            HIP and Strong Password Authentication of Users
                       draft-varjonen-hip-srp-00

Status of this Memo

   This Internet-Draft is submitted to IETF in full conformance with the
   provisions of BCP 78 and BCP 79.  This document may not be modified,
   and derivative works of it may not be created, except to format it
   for publication as an RFC or to translate it into languages other
   than English.

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

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

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on September 1, 2009.

Copyright Notice

   Copyright (c) 2009 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents in effect on the date of
   publication of this document (http://trustee.ietf.org/license-info).
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.






Varjonen                Expires September 1, 2009               [Page 1]


Internet-Draft                   HIP SRP                   February 2009


Abstract

   This document specifies how to use Secure Remote Password (SRP)
   protocol in conjunction with Host Identity Protocol (HIP).  In order
   to conceive this conjunction this document specifies three new
   parameters to be used with HIP control packets.  These parameters are
   used to transport values related to the SRP protocol.  This document
   also specifies how peers should act when these SRP parameters are
   found from HIP control packets and how this affects middleboxes.

Requirements Language

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].


Table of Contents

   1.  Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . .  4

   2.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  5

   3.  SRP Parameters . . . . . . . . . . . . . . . . . . . . . . . .  7
     3.1.  SRP_CV parameter . . . . . . . . . . . . . . . . . . . . .  7
     3.2.  SRP_CV_M parameter . . . . . . . . . . . . . . . . . . . .  8
     3.3.  SRP_SV Parameter . . . . . . . . . . . . . . . . . . . . .  8
     3.4.  SRP_SV_M Parameter . . . . . . . . . . . . . . . . . . . .  9
     3.5.  SRP_E Parameter  . . . . . . . . . . . . . . . . . . . . . 10
     3.6.  SRP_E_M Parameter  . . . . . . . . . . . . . . . . . . . . 10

   4.  Handling of SRP Parameters . . . . . . . . . . . . . . . . . . 10

   5.  SRP and middleboxes  . . . . . . . . . . . . . . . . . . . . . 12

   6.  Extension to HIP Native API  . . . . . . . . . . . . . . . . . 13

   7.  Design Alternatives  . . . . . . . . . . . . . . . . . . . . . 14

   8.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 15

   9.  Security Considerations  . . . . . . . . . . . . . . . . . . . 15

   10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 16

   11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 16
     11.1. Normative References . . . . . . . . . . . . . . . . . . . 16
     11.2. Informative References . . . . . . . . . . . . . . . . . . 17



Varjonen                Expires September 1, 2009               [Page 2]


Internet-Draft                   HIP SRP                   February 2009


   Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 17


















































Varjonen                Expires September 1, 2009               [Page 3]


Internet-Draft                   HIP SRP                   February 2009


1.  Glossary

   Terminology and notation used in this document is in most parts
   borrowed from [RFC5054], [SRP-6] and from the original paper
   describing SRP ([Wu.SRP]).

   USER: Is the entity that is being authenticated in the SRP protocol.

   HOST: Denotes the hardware and is identified by its Host Identity.

   CLIENT: Host in a role of a client that initiate the connection.

   SERVER: Host in a role of a server that offers service that is
   protected with username-password tuple.

   USERNAME, C: String that identifies the USER uniquely to the SERVER
   and is used in similar fashion as a public key (aka "identity").

   PASSWORD, P: String that is user memorable and is used in a similar
   fashion as private key.

   VERIFIER: Is computed from PASSWORD in such fashion that it is hard
   to derive the PASSWORD from the VERIFIER.

   VERIFIER-BASED: SERVER stores verifiers instead of plain-text
   passwords.

   ZERO-KNOWLEDGE PROOF: PASSWORD is not sent on wire between CLIENT and
   SERVER.  SERVER computes VERIFIERs from the values given by the
   CLIENT.

   N, g: group parameters (prime and generator), defined in [RFC5054]
   appendix A.

   s: salt

   B, b: server's public and private values

   A, a: client's public and private values

   v: verifier, calculated from P.

   k: SRP-6 multiplier

   K: Session key

   M: evidence, calculated from public values and K.




Varjonen                Expires September 1, 2009               [Page 4]


Internet-Draft                   HIP SRP                   February 2009


   The | symbol indicates string concatenation, the ^ operator is the
   exponentiation operation, and the % operator is the integer remainder
   operation.  H() denotes hash function like SHA-1 (length 160 bits).
   Interleaved SHA is used in some parts of the protocol (Incorporates
   two SHA-1 hashes one for even bits and one for odd bits (length 320
   bits)).  Interleaved SHA is used to create the session key, see
   [RFC2945] for details.

   Conversion between integers and byte-strings assumes that the
   resulting byte-string is in network byte order.


2.  Introduction

   Host Identity Protocol (HIP) [RFC4423] offers a cryptographic
   namespace and a way to negotiate a creation of Security Association
   (SA) between hosts.  By default SAs are created by contacting the
   Responder.  With HIP firewalls administrators can access control the
   connection attempts.  In some cases access control based only on HITs
   is not enough.  Organizations can have mobile employees that need
   access to the organizations network from outside the network.  HIP
   can be used to authenticate the host but by default anyone possessing
   the machine and keys can create the tunnel.  By introducing Secure
   Remote Password protocol (SRP, [Wu.SRP]) to HIP we can extend the
   authentication of the host to include the authentication of the user.

   SRP [RFC2945] offers a strong zero-knowledge proof authentication of
   a user/client to a server without any need for trusted third party.
   The SRP protocol can be run in one-way or in two-way mode, in one-way
   mode only the client is authenticated and in two-way mode client and
   the server are authenticated.  Along with the authentication, peers
   run key negotiation and after the authentication peers share a
   session key.  Performance wise SRP is slower than Diffie-Hellman
   [RFC2631] but SRP's performance has been proven as adequate
   [Performance.SRP].  SRP standardization [RFC2945] defines the SRP in
   an abstract way leaving most of the details to the hands of the
   implementors.  This is one reason why this document borrows some
   parts from the other standardized solutions, like [RFC5054]

   SRP needs some preliminary values stored on the server requiring the
   authentication.  In SRP it is a triplet consisting of username,
   password verifier and salt.  Upon initialization of SRP, user gives a
   username, a password and SRP implementation takes a random salt.
   Verifier is calculated from these values (v = g^(SHA(salt|
   SHA(username)|":"|plain password) % N) and stored on the server
   requiring the authentication.  The prime (N) and generator (g) can be
   taken from Appendix A of [RFC5054]




Varjonen                Expires September 1, 2009               [Page 5]


Internet-Draft                   HIP SRP                   February 2009


   SRP authentication consists of four messages (see Figure 1, in the
   first of the messages user tells his/her identity in the manner of
   supplying a username.  The user also provides a public value that is
   calculated by raising the generator to the power of a random value a
   and taking the integer remainder of N from the result (A = g^a % N).
   For the second message the server finds the salt for the user and
   send its own public value calculated by raising generator to the
   power of random b, adding it to the verifier of the user and taking
   the integer remainder of N from the result (B = (v + g^b) % N).  By
   now the peers have enough information on for creation of a session
   key, for details see [RFC2945].  The third message is the evidence
   (M1), if verified, it tells if the user knew the password.  This is
   calculated by using the values sent in earlier messages and by using
   the newly formed session key, in other words the peers are verifying
   that they know the same key.  For the calculation of the evidence M
   see [RFC2945].

   If the negotiation is left to the three messages only the client/
   Initiator is authenticated.  If the server/responder needs to be
   authenticated, the server sends a fourth message containing its
   evidence (M2)

   The authentication does not need to be run endpoint-to-endpoint.
   There are cases where the middlebox along the way would be more
   interested in authenticating the user, for example a firewall on the
   edge of a corporate network could want to authenticate the user along
   side the equipment (identified by HIT) before letting the ESP flow
   through (see Section 5).























Varjonen                Expires September 1, 2009               [Page 6]


Internet-Draft                   HIP SRP                   February 2009


      Initiator                                       Responder
                                 C, A
                  -------------------------------->
                                 s, B
                  <--------------------------------
    Calculate the
    evidence
                                  M1
                  -------------------------------->
                                                       Verify evidence

                                                       Calculate the
                                                       evidence
                                  M2
                  <--------------------------------
    Verify evidence


                                 Figure 1

   While here, we talk of messages, in case of HIP these messages are
   converted to mean individual parameters transported in HIP control
   packets.


3.  SRP Parameters

   This section defines six parameters to be used when using SRP with
   HIP.  These packets are SRP_CV, SRP_SV, SRP_E and their middlebox
   counterparts.  The first parameter, named SRP_CV, is the initiating
   parameter for the SRP negotiation.  It contains the username of the
   user to be authenticated and its public value.  SRP_SV stands for
   server values which contains the salt and servers public value and
   SRP_E is a parameter to transport the evidence.  Parameters ending
   with _M are identical to the ones that end without _M, only
   difference is the type number which tells the receiver that _M
   parameters are not protected by sigantures.  Middleboxes are the most
   probable users of _M parameters, with the exception of pre-creation
   of R1s discussed in section Section 4.

3.1.  SRP_CV parameter

   The SRP_CV parameter is used to convey the users' username and the
   public value of the client to the server.  SRP_CV parameter is used
   in I1 control packet.  Servers can use SRP_CV parameter for access
   control by checking that the HIT in I1 control packet is valid and
   also that the user using it is also valid (see section Section 9 for
   further discussion about SRP_CV).  SRP_CV parameter is non-critical



Varjonen                Expires September 1, 2009               [Page 7]


Internet-Draft                   HIP SRP                   February 2009


   and so can be safely ignored if unknown.

   When mutual authentication is needed, a client can inform the server
   if it wants to authenticate the user (Administrator in practice) on
   server/responder by using field R. If field R is set client requires
   the server to authenticate by default the field R must not be set.


     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |             Type              |             Length            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |           Length C            |            Length A           |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |R|         Reserved            |                C              /
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     /                               |                A              /
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     /                               |             Padding           |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     Type          TBD-IANA (998)
     Length        Length in octets, excluding Type, Length, and Padding
     Length C      Length of field C in octets
     Length A      Length of field A in octets
     R             Server authentication required if set
     Reserved      Not in use, must be zeroed
     C             Username, length from 8 to 2^8-1 bytes (255)
     A             Public value of client, length from 1 to 2^16-1 bytes
                   (65535)
     Padding       Any Padding, if necessary, to make the TLV a multiple
                   of 8 bytes.


3.2.  SRP_CV_M parameter

   On-path middleboxes append this parameter to the control packets.
   This parameter is identical with SRP_CV differing only by its type
   number (TBD-IANA (632997)).

3.3.  SRP_SV Parameter

   The SRP_SV parameter is used to convey the group and server values to
   the client.  SRP_SV is used in R1 control packet.  The group values
   consist of a prime (N) and a primitive root modulo of N, called
   generator (g).  The server values are the public key of server and a
   salt found from servers passwd file.  Public key of server (B) is a



Varjonen                Expires September 1, 2009               [Page 8]


Internet-Draft                   HIP SRP                   February 2009


   service or application key and not the hosts HI.  See Section 4 for
   further discussion about the usage.


     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |             Type              |             Length            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |           Length N            |            Length g           |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |           Length s            |            Length B           |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                               N                               /
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                               g                               /
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                               s                               /
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                               B                               /
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                            Padding                            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     Type          TBD-IANA (998)
     Length        Length in octets, excluding Type, Length, and Padding
     Length N      Length of field N in octets
     Length g      Length of field g in octets
     Length s      Length of field s in octets
     Length B      Length of field B in octets
     N             Prime, length from 1 to 2^16-1 bytes (65535)
     g             Generator, length from 1 to 2^16-1 bytes (65535)
     s             Salt, length from 1 to 2^8-1 bytes (255)
     B             Public value of server, length from 1 to 2^16-1 bytes
                   (65535)
     Padding       Any Padding, if necessary, to make the TLV a multiple
                   of 8 bytes.


3.4.  SRP_SV_M Parameter

   On-path middleboxes append this parameter to the control packets.
   This parameter is identical with SRP_SV differing only by its type
   number (TBD-IANA (62998)).  See Section 4 for further discussion
   about the usage.






Varjonen                Expires September 1, 2009               [Page 9]


Internet-Draft                   HIP SRP                   February 2009


3.5.  SRP_E Parameter

   SRP_E parameter is used to convey the evidence between peers.  If
   this parameter is in I2 it is the clients evidence and if this
   parameter is in R2 it is the server's evidence.  Evidence is produced
   with interleaved SHA as described earlier and in [RFC2945].


     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |             Type              |             Length            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     |                               M                               |
     |                                                               |
     |                                                               |
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     Type          TBD-IANA (999)
     Length        Length in octets, excluding Type, Length, and Padding
     M             Evidence, length 320 bytes


3.6.  SRP_E_M Parameter

   On-path middleboxes append this parameter to the control packets.
   This parameter is identical with SRP_SV differing only by its type
   number TBD-IANA (62999).


4.  Handling of SRP Parameters

   This section defines how hosts should behave when SRP related
   parameters are present in HIP control packets.  In Figure 2 we
   present a BEX with one-way SRP parameters (Only relevant parameters
   are depicted).













Varjonen                Expires September 1, 2009              [Page 10]


Internet-Draft                   HIP SRP                   February 2009


       Initiator                              Responder

                   I1: SRP_CV
                  -------------------------------->
                                                   select precomputed R1
                   R1: puzzle, SRP_SV, key, sig
                  <--------------------------------
    check sig                                      remain stateless
    solve puzzle
                   I2: solution, SRP_E, {key}, sig
                  -------------------------------->
    calculate                                      check puzzle
    session key                                    check sig
                   R2: sig
                  <-------------------------------
                                                   calculate session key
    check sig                                      Verify evidence (M)


                                 Figure 2

   In the following we present a BEX with two-way SRP parameters.  The
   only difference to the previous one-way authentication is the SRP_E
   parameter in the R2 control packet.


       Initiator                              Responder

                   I1: SRP_CV
                  -------------------------------->
                                                   select precomputed R1
                   R1: puzzle, SRP_SV, key, sig
                  <--------------------------------
    check sig                                      remain stateless
    solve puzzle
                   I2: solution, SRP_E, {key}, sig
                  -------------------------------->
    calculate                                      check puzzle
    session key                                    check sig
                   R2: sig, SRP_E
                  <-------------------------------
                                                   calculate session key
    check sig                                      Verify evidence (M)


   HIP Responders pre-create R1s in order to minimize the expensive
   cryptographic operations before Responder has established state.
   Using SRP_SV will prevent this.  In order to use pre-created R1s,



Varjonen                Expires September 1, 2009              [Page 11]


Internet-Draft                   HIP SRP                   February 2009


   Responders can append SRP_SV_M parameter into the unsigned part of
   the message.

   In cases where server requires authentication receives I1 control
   packets that do not contain SRP_CV parameter, server MAY drop the I1
   packet or OPTIONALLY answer with NOTIFY control packet containing
   NOTIFICATION parameter with one of the following status types.


      NOTIFY MESSAGES - ERROR TYPES            Value
      ------------------------------           -----

      BLOCKED_BY_POLICY                         42

         The Responder is unwilling to set up an association
         for some policy reason (e.g., received HIT is NULL
         and policy does not allow opportunistic mode).

       SRP_AUTHENTICATION_REQUIRED              45

         The Responder is not willing to set up an association
         because required authentication data is not present.

   When endpoint receives the SRP_CV_M parameter it can notice that a
   middlebox on the way is performing authentication, but it may decide
   not to react to this parameter.  More about the middleboxes in
   section Section 5


5.  SRP and middleboxes

   In the following we depict the situation where a middlebox needs to
   authenticate the user.  The middle appends its parameters to the BEX
   packets traversing through it.

















Varjonen                Expires September 1, 2009              [Page 12]


Internet-Draft                   HIP SRP                   February 2009


    Initiator               Middlebox                        Responder
                       .-----------------.
     I1, SRP_CV_M      |                 | I1, SRP_CV_M
    -----------------> |                 |---------------------------->
                       |                 |
     R1, + SRP_SV_M    | Add SRP_SV_M    | R1
    <----------------- |                 |<----------------------------
                       |                 |
     I2, + SRP_E_M     | Verify SRP_E_M  | I2, SRP_E_M
    -----------------> | Let I2 through  |---------------------------->
                       |                 |
     R2                |                 | R2
    <----------------- |                 |<-----------------------------
                       '-----------------'

   Middleboxes can degrade or restrict service such as bandwidth
   limitation up to refusing connections and reporting access violations
   when it does not find SRP_E_M parameter from I1 control packet.

   The freshness of the authentication can be forced by using extensions
   defined in [HIP.Midauth]


6.  Extension to HIP Native API

   In this section we describe extensions to the HIP Native API defined
   in [Native.API].  The target readers of this section are application
   programmers.

   As this section specifies sockets API extensions, it is written so
   that the syntax and semantics are in line with the POSIX standard
   [POSIX] as much as possible.  The API specified in this section
   defines how to use socket options to set the used username and
   password so that the HIP layer can calculate the needed values and
   negotiate keys.  The definition of the API is presented in C language
   and data types follow the POSIX format; intN_t means a singed integer
   of exactly N bits (e.g. int16_t) and uintN_t means an unsigned
   integer of exactly N bits (e.g. uint32_t).













Varjonen                Expires September 1, 2009              [Page 13]


Internet-Draft                   HIP SRP                   February 2009


   +-----------------------------+-----+-----+-----------------+-------+
   | optname                     | get | set | description     | dtype |
   +-----------------------------+-----+-----+-----------------+-------+
   | HIP_USERINFO                |     | o   | Set the         | *     |
   |                             |     |     | username and    |       |
   |                             |     |     | the password    |       |
   |                             |     |     | corresponding   |       |
   |                             |     |     | to it.          |       |
   +-----------------------------+-----+-----+-----------------+-------+

   *: pointer to hip_userinfo data structure, defined below.



     struct hip_userinfo {
             uint8_t   username[256];  /* username null terminated */
             uint8_t   password[256];  /* password null terminated */
     };

   For example, a username and password can be specified as follows.


     struct hip_userinfo userinfo;
     char usern[] = "username";
     char passwd[] = "password";

     memset(&userinfo, 0, sizeof(userinfo));

     /* fill hip_userinfo data structure */
     memcpy(&userinfo.username, &usern, sizeof(usern));
     memcpy(&userinfo.password, &passwd, sizeof(passwd));

     setsockopt(fd, IPPROTO_HIP, HIP_USERINFO, &userinfo,
                sizeof(userinfo));


7.  Design Alternatives

   Most of the devices (phones, PDAs, laptops) are operated by single
   user so the main approach described in this document can be used.
   Problems arise when clients have multiple users.  For example, in
   case where machine A has users Aa and Ab.  When Aa connects to server
   B, he creates a tunnel between the HITs of A and B. The problem in
   this, related to the SRP, is that now user Ab can also communicate
   using the same tunnel.  Usage of Simultaneous Multi-Access extension
   [Hip.Sima] solves this multi-user to multi-user problem, because it
   allows HIP to use flow binding to identify and separate multiple
   ongoing upper layer data flows.



Varjonen                Expires September 1, 2009              [Page 14]


Internet-Draft                   HIP SRP                   February 2009


8.  IANA Considerations

   This document defines the SRP related parameters for the Host
   Identity Protocol [RFC5201].  These parameter are defined in
   Section 3.  A new status type for NOTIFICATION parameter is defined
   in section Section 4


9.  Security Considerations

   Parameter SRP_CV that is sent in I1 control packet can be used for
   access control but it also advertises the user that currently is
   using the machine.  This can be avoided with similar approach as in
   [BLIND].  In this approach the username is concatenated to the salt,
   hashed and so made unreadable to parties not knowing the salt (in
   [BLIND] nonce).  This approach has the disadvantage, that the user
   has to know his/her salt.  Better way would be to concatenate the HIT
   of the server with the username and hashing the result (UH = H(HIT-
   of-server | username)).  For this to work efficiently, the server
   needs to index its passwd by the UH and the identification of user
   should be done based on the UH.  While the attacker knows the HIT of
   the server it has to guess the username with brute force.  Still this
   has a drawback that the hash (UH) stays the same.  This could be
   avoided by sending a nonce with the username, but performance issues
   arise when the server needs to hash every username it knows with the
   nonce in order to identify the user.

   Another way to protect the privacy of the user is to encrypt the
   SRP_CV with servers public key by using ENCRYPTED parameter, defined
   in [RFC5201].  This poses a problem of getting the public key of the
   server.  The server can use DNS [RFC5205] or DHT [Opendht.Interface]
   in order to publish its public key.  While the public key is
   available it poses delays when querying the key.

   The above ways could be improved by using physical tokens that
   contain the required information, like the public key or the salt.
   With physical tokens One Time Passwords (OTP) could be introduced and
   so making the required authentication tuple into triple containing
   username, password verifier and OTP.

   Parameters that are added by the middlebox are not signed.  This
   should not pose any additional security problems.  Attacker could
   replace or alter the SRP_*_M parameters and so letting the
   authentication fail.  This can be done even without SRP parameters
   just by flipping random bits and so making the HMACs and signatures
   fail.





Varjonen                Expires September 1, 2009              [Page 15]


Internet-Draft                   HIP SRP                   February 2009


10.  Acknowledgements

   The authors would like to thank M. Komu J. Koskela, T. Heer and J.
   Heikkila of fruitful conversations on the subject.


11.  References

11.1.  Normative References

   [HIP.Midauth]
              Heer, T., "End-Host Authentication for HIP Middleboxes",
              <draft-heer-hip-middle-auth-01>.

   [Hip.Sima]
              Pierrel, S., Jokela, P., and J. Melen, "Simultaneous
              Multi-Access extension to the Host Identity Protocol",
              <draft-pierrel-hip-sima-00>.

   [Native.API]
              Komu, M. and T. Henderson, "Basic Socket Interface
              Extensions for Host Identity Protocol (HIP)",
              <draft-ietf-hip-native-api-05>.

   [Opendht.Interface]
              Ahrenholz, J., "HIP DHT Interface",
              <draft-ahrenholz-hiprg-dht-03>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC2631]  Rescorla, E., "Diffie-Hellman Key Agreement Method",
              RFC 2631, June 1999.

   [RFC2945]  Wu, T., "The SRP Authentication and Key Exchange System",
              RFC 2945, September 2000.

   [RFC4423]  Moskowitz, R. and P. Nikander, "Host Identity Protocol
              (HIP) Architecture", RFC 4423, May 2006.

   [RFC5054]  Taylor, D., Wu, T., Mavrogiannopoulos, N., and T. Perrin,
              "Using the Secure Remote Password (SRP) Protocol for TLS
              Authentication", RFC 5054, November 2007.

   [RFC5201]  Moskowitz, R., Nikander, P., Jokela, P., and T. Henderson,
              "Host Identity Protocol", RFC 5201, April 2008.

   [RFC5205]  Nikander, P. and J. Laganier, "Host Identity Protocol



Varjonen                Expires September 1, 2009              [Page 16]


Internet-Draft                   HIP SRP                   February 2009


              (HIP) Domain Name System (DNS) Extensions", RFC 5205,
              April 2008.

11.2.  Informative References

   [BLIND]    Ylitalo, J. and P. Nikander, "BLIND: A Complete Identity
              Protection Framework for End-points", Proc. Twelfth
              International Workshop on Security Protocols, Cambridge,
              England 04, April 2004.

   [POSIX]    Open group Technical Standard, "IEEE Std. 1003.1-2001
              Standard for Information Technology -- Portable Operating
              System Interface (POSIX)", Base Specifications, Issue 6,
              http://www.opengroup.org/austin 01, December 2001.

   [Performance.SRP]
              Hamalainen, P., Hannikainen, M., Niemi, M., and T.
              Hamalainen, "Performance evaluation of Secure Remote
              Password protocol>", In IEEE International Symposium on
              Circuits and Systems, ISCAS 2002  02, Aug 2002.

   [SRP-6]    Wu, T., "SRP-6: Improvements and Refinements to the Secure
              Remote Password Protocol", 2002,
              <http://grouper.ieee.org/groups/1363/>.

   [Wu.SRP]   Wu, T., "The Secure Remote Password Protocol", in
              Proceedings of the 1998 Internet Society Network and
              Distributed System Security Symposium, San Diego, CA,
              March 1998, pp. 97-111 98, 1998.


Author's Address

   Samu Varjonen
   Helsinki Institute for Information Technology
   Metsnneidonkuja 4
   Helsinki
   Finland

   Fax:   +35896949768
   Email: samu.varjonen@hiit.fi
   URI:   http://www.hiit.fi









Varjonen                Expires September 1, 2009              [Page 17]