Internet DRAFT - draft-jay-tls-psk-identity-extension

draft-jay-tls-psk-identity-extension



 



TLS Working Group                                            J Kuppannan
INTERNET-DRAFT                                                   Juniper
Intended Status: Standard Track                                  R Ashok
Expires: June 15, 2017                                            Huawei
                                                       December 15, 2016


                    TLS/DTLS PSK Identity Extension 
                draft-jay-tls-psk-identity-extension-02


Abstract

   Pre-Shared Key (PSK) based Key Exchange Mechanism is primarily used
   in constrained environments where resource intensive Asymmetric
   Cryptography cannot be used. In the Internet of Things (IoT)
   deployments, constrained devices are commonly used for collecting
   data via sensors for use in home automation, smart energy etc. In
   this context, DTLS is being considered as the primary protocol for
   communication security at the application layer and in some cases, it
   is also being considered for network access authentication.

   This document provides a specification for a new extension for
   Optimizing DTLS and TLS Handshake when the Pre-Shared Key (PSK) based
   Key Exchange is used. This extension is aimed at reducing the number
   of messages exchanged and the RTT of the TLS & DTLS Handshakes.

Status of this Memo

   This Internet-Draft is submitted to IETF in full conformance with the
   provisions of BCP 78 and BCP 79.

   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/1id-abstracts.html

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

 


J Kuppannan & R Ashok    Expires June 15, 2017                  [Page 1]

INTERNET DRAFT      TLS/DTLS PSK Identity Extension    December 15, 2016


Copyright and License Notice

   Copyright (c) 2016 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
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document. Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document. Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.



Table of Contents

   1  Introduction  . . . . . . . . . . . . . . . . . . . . . . . . .  3
     1.1  Applicability Statement . . . . . . . . . . . . . . . . . .  3
     1.2  Terminology . . . . . . . . . . . . . . . . . . . . . . . .  3
   2  PSK based (D)TLS Handshake  . . . . . . . . . . . . . . . . . .  4
   3  Existing Mechanism of [D]TLS Cipher Negotiation . . . . . . . .  4
   4  Drawbacks in existing PSK handshake . . . . . . . . . . . . . .  5
     4.1  Drawback in existing PSK Cipher Negotiation . . . . . . . .  5
     4.2  Scope of reducing RTT in PSK handshake  . . . . . . . . . .  6
   5 Optimized PSK handshake  . . . . . . . . . . . . . . . . . . . .  6
     5.1 PSKIdentityExtention Type  . . . . . . . . . . . . . . . . .  6
     5.2 PSK Identity Extension Data Specification  . . . . . . . . .  6
     5.3 Abbreviated Handshake  . . . . . . . . . . . . . . . . . . .  8
     5.4 Benefits of Abbreviated Handshake  . . . . . . . . . . . . .  8
   6  Security Considerations . . . . . . . . . . . . . . . . . . . .  9
     6.1 Identity Privacy . . . . . . . . . . . . . . . . . . . . . .  9
   7  IANA Considerations . . . . . . . . . . . . . . . . . . . . . .  9
   8  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . .  9
   9  References  . . . . . . . . . . . . . . . . . . . . . . . . . .  9
     9.1  Normative References  . . . . . . . . . . . . . . . . . . .  9
     9.2  Informative References  . . . . . . . . . . . . . . . . . . 10
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 10








 


J Kuppannan & R Ashok    Expires June 15, 2017                  [Page 2]

INTERNET DRAFT      TLS/DTLS PSK Identity Extension    December 15, 2016


1  Introduction

   RFC 4279 describes the usage of Pre-Shared Key (PSK) based Cipher
   Suites in TLS. PSK cipher suite can avoid the need for public key
   operations. This is useful for all those cases where TLS or DTLS are
   used in resource constrained environments with limited CPU power and
   memory. The advancements in Internet of Things (IoT) domain where
   many constrained devices are involved has brought more limelight on
   DTLS and particularly on the usage of PSK based cipher suites in
   DTLS. CoAP (RFC 7252), which is one among the preferred application
   layer protocols for IoT, mandates the use of DTLS for communication
   security and specifies Pre-Shared Key among others as the preferred
   key exchange mechanism.

   Generally both Client and Server may have multiple Pre-Shared Keys
   configured for communicating with different parties. As part of PSK
   handshake, PSK ID send in client key exchange helps both the entity
   to negotiate the Pre-Share Key which needs to be used. This document
   defines a new Hello message extension for proposing and finalizing
   the Pre-Shared key to be used between Client and Server. This new
   extension helps in reducing the number of independent messages
   exchanged and also in reducing the RTT for the entire handshake
   routine.

   This document currently focuses only on [D]TLS 1.2 and prior protocol
   versions(TLS 1.1, TLS 1.0 and DTLS 1.0). TLS 1.3 (work in-progress)
   also considers including a similar extension as the one proposed
   here. But that TLS 1.3 extension cannot be used in lower version. So
   a similar extension is proposed in this document, which is totally a
   new and different extension compared to the PreSharedKey extension in
   TLS 1.3. In future also not all system in world will be running
   [D]TLS 1.3. So proposing this new extension in older version of
   [D]TLS is beneficial.

   The reader is expected to be familiar with TLS PSK based Handshake
   though an overview is given in the below sections.

1.1  Applicability Statement

   The idea proposed in this document is applicable for all types of PSK
   cipher suites (PSK, DHE_PSK, RSA_PSK and ECDHE_PSK) defined in RFC
   4279, RFC 4785 and RFC 5489. 

1.2  Terminology

   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 [KEYWORDS].
 


J Kuppannan & R Ashok    Expires June 15, 2017                  [Page 3]

INTERNET DRAFT      TLS/DTLS PSK Identity Extension    December 15, 2016


2  PSK based (D)TLS Handshake

   PSK Key Exchange Algorithm and handshake sequence is listed in
   section 2 of RFC "Pre-Shared Key Cipher suites for Transport Layer
   Security" [RFC4279]. A basic overview is listed below for reference.

   Incase of a PSK based handshake, the client indicate its willingness
   to use pre-shared Key authentication by including one or more PSK
   cipher suites in the Client Hello message. If the Server also wants
   to use pre-shared keys, it selects one of the PSK cipher suites and
   places the selected cipher suite in the Server Hello Message.

   Both Client and Server may have pre-shared keys with several
   different parties. The client indicates which key to use by including
   a "PSK Identity" in the ClientKeyExchange message. To help the client
   in selecting which key to use, server can provide a "PSK Identity
   Hint" in the ServerKeyExchange message. If no hint is provided, the
   ServerKeyExchange message can be omitted.

   The (D)TLS PSK Handshake is shown below. "*" indicates situation
   dependent messages.

      Client                                      Server
      ------                                      ------
      ClientHello             -------->

                                              ServerHello
                                              (Certificate)
                                              ServerKeyExchange*
                                              [with PSK Identity Hint]
                                              (CertificateRequest)
                              <--------       ServerHelloDone

      (Certificate)
      ClientKeyExchange
      [with PSK Identity]
      (CertificateVerify)
      ChangeCipherSpec
      Finished                -------->

                                              ChangeCipherSpec
                              <--------       Finished





3  Existing Mechanism of [D]TLS Cipher Negotiation
 


J Kuppannan & R Ashok    Expires June 15, 2017                  [Page 4]

INTERNET DRAFT      TLS/DTLS PSK Identity Extension    December 15, 2016


   In [D]TLS a cipher suite represents authentication algorithm, key
   exchange algorithm and data protection algorithm (Encryption and
   MAC). Client Hello and Server Hello message of TLS handshake
   negotiates the cipher suite for a connection. At first client sends
   the list of supported ciphers in its "Client Hello" message. On
   receiving this message, server selects one among them and sends back
   in its "Server Hello" message. At this stage, server selects cipher
   based on its priority and its supportability. Here server checks the
   supportability of a cipher, based on the availability of that
   algorithm and the credential required for that algorithm.

   Server does the below task to find out the supportability of a cipher
   before selecting it.
      a) Authentication algorithm : If it is certificate (RSA, DSA,
      ECDSA) based authentication, it checks whether it can support that
      crypto algorithm and it has a X509 certificate and private key. If
      it is PSK based authentication, it checks whether it supports PSK
      based authentication for its client.
      b) Key exchange algorithm : If it is a Diffie-Hellman (DHE, ECHDE)
      based key exchange, it checks whether it can support that crypto
      algorithm. If it is RSA certificate based key exchange, it checks
      whether it supports RSA data encryption and decryption.
      c) Data protection algorithm : It checks whether it can support
      that crypto algorithm (Encryption with MAC or AEAD). 



4  Drawbacks in existing PSK handshake

4.1  Drawback in existing PSK Cipher Negotiation

   Consider a client and a server can support both PSK based cipher and
   Certificate based cipher. In this case client sends PSK based and
   Certificate based cipher in its client hello message. If a server
   selects PSK cipher then during 2nd RTT client reveals its PSK
   Identity in Client Key exchange message. At this time if that PSK ID
   is not known to server, then it fails. So selecting PSK cipher
   without knowing Client's PSK Identity is not beneficial if both
   entity can support other types of cipher.

   Similar problem is there in certificate based cipher, which has been
   solved by "trusted_ca_keys" extension. Server might be holding
   multiple certificates issued by different CA. Server can choose any
   one of them and send it to client. But if client is not having that
   corresponding CA certificate, then handshake fails. For preventing
   this late failure, there is a "trusted_ca_keys" extension specified
   in RFC6066. In this extension, client can send the details about all
   the CA certificate which it possess. Based on that server selects
 


J Kuppannan & R Ashok    Expires June 15, 2017                  [Page 5]

INTERNET DRAFT      TLS/DTLS PSK Identity Extension    December 15, 2016


   certificate based cipher only if it holds any end entity certificate
   issued by any one of the CA known to client. So basically this
   "trusted_ca_keys" extension provides additional information about the
   client's capability, this helps server to take right decision  in
   cipher selection. 

   Similar feasibility is not there for PSK cipher, because of this we
   are not able to prevent the late handshake failure. So if a client
   can sends its PSK ID in a new extension in its client hello message,
   then it would be more helpful for cipher selection in server.

4.2  Scope of reducing RTT in PSK handshake

   If a client can send its PSK ID (or list of PSK ID) in its client
   hello, then server can respond back the selected PSK ID in its server
   hello. So no need of sending client key exchange message. This can
   make the [D]TLS handshake as 1 RTT. This is applicable only for the
   PSK cipher which performs both authentication and key exchange using
   PSK (not for DHE_PSK, RSA_PSK and ECDHE_PSK). 


5 Optimized PSK handshake

   To avoid the drawbacks mentioned in the above section and also to
   reduce the number of messages exchanged and the round trip time for
   the handshake, it will be better if both the Client and Server have
   the ability to negotiate in the hello message, about which pre-shared
   Key to use among the set of pre-shared keys available with them. This
   document proposes a new extension for providing this ability to
   clients and servers.

5.1 PSKIdentityExtention Type

   This document defines a new extension type (psk_identity(TBD)), which
   is used in the ClientHello and ServerHello messages. The extension
   type is specified as follows:

      enum {
         psk_identity(TBD), (65535)
      }ExtensionType;


   This psk_identity extension is similar to the PreSharedKeyExtension
   proposed in TLS 1.3, but not same.

5.2 PSK Identity Extension Data Specification

   PSK Identity extension allows the client and server to negotiate the
 


J Kuppannan & R Ashok    Expires June 15, 2017                  [Page 6]

INTERNET DRAFT      TLS/DTLS PSK Identity Extension    December 15, 2016


   PSK Identity which needs to be used for the current session. Clients
   supporting this extension should include it in their client hello
   message and list all the PSK Identities they possess as a part of
   this extension. Clients MAY alternately list only a subset of
   identities they possess.

   Server on receiving this extension should parse through the
   identities in the list, select one among them depending upon it's own
   list of identities and include it as a part of PSK Identity extension
   in the Server Hello. If none of identities sent by client match with
   the list available at the server, it SHOULD choose a Non-PSK cipher
   or abort the connection with "No Shared Ciphers" alert.

   Clients and Servers wishing to use this extension should include an
   extension of type "psk_identity" in their extended Client and Server
   Hellos. Please note that, Server MUST include this extension only if
   the received Client Hello had this extension, else the same MUST not
   be included. And server MUST include this extension only if it
   selects any PSK cipher. Similarly, a Server not wishing to negotiate
   the PSK Identity as a part of Hello Messages can ignore this
   extension. If server wishes to include this extension as a part of
   server hello message, then it MUST include only one psk_identity in
   the extension data.

   The extension data field for this extension SHALL contain the
   following:

      opaque psk_identity<1..2^16-1>;

      struct{
         select (Role){
            case client:
               psk_identity identity_list<1..2^16-1>;
            case server:
               psk_identity identity;
         }
      }PSKIdentityExtension;


   If client receives a server hello with PSK cipher and without PSK ID
   extension, then it MUST perform the legacy PSK handshake as specified
   in RFC 4279. If client receives a server hello message with Non-PSK
   cipher but with PSKIdentity Extension or if the server hello contains
   a psk identity not from the list sent by client, then it MUST fail
   the handshake with illegal parameter alert.

   The PSK identity send in identity_list MUST be UTF-8 [UTF8] format,
   as specified in Section 5.1 of RFC 4279.
 


J Kuppannan & R Ashok    Expires June 15, 2017                  [Page 7]

INTERNET DRAFT      TLS/DTLS PSK Identity Extension    December 15, 2016


5.3 Abbreviated Handshake

   Once the client and server have negotiated the Pre-Shared Key Cipher
   and Identity to be used through the Client Hello and Server Hello
   message extensions as discussed in the previous section, server can
   directly send the Change Cipher Spec and Finished Messages.
   ServerKeyExchange and ClientKeyExchange messages can be avoided
   completely as the information exchanged in those messages are now
   already exchanged using hello extensions.

   The handshake flow, similar to that of session resumption can be used
   here. On receiving the client hello, the server responds with a
   server hello, followed by change cipher spec and finished message.
   Client on receiving server hello, change cipher spec and finished
   message, responds with its own change cipher spec and finished
   messages.

   The abbreviated handshake is presented below:

      Client                                  Server
      ------                                  ------
      ClientHello
      (with list of PSK
      Identities in extn)     -------->

                                              ServerHello
                                              with selected PSK
                                              Identity in extn)
                                              ChangeCipherSpec
                              <--------       Finished

      ChangeCipherSpec
      Finished                -------->

   This abbreviated  handshake is not applicable for cipher which uses
   PSK only for authentication (DHE_PSK, RSA_PSK, ECDHE_PSK). Because
   here server key exchange and client key exchange messages are
   required to exchange the parameters of DHE, RSA or ECDHE. 

5.4 Benefits of Abbreviated Handshake

   The above flow effectively reduces the round trip time for PSK Cipher
   handshake from 2 to 1. The number of messages exchanged is also
   reduced from 9 to 6. For DHE_PSK, RSA_PSK and ECDHE_PSK cipher this
   extension gives more information about the PSK key it possess during
   cipher selection.

   Incase of unmatched pre-shared key scenario, earlier the error gets
 


J Kuppannan & R Ashok    Expires June 15, 2017                  [Page 8]

INTERNET DRAFT      TLS/DTLS PSK Identity Extension    December 15, 2016


   discovered by server only after receiving the Client Key Exchange
   message. This procedure helps in early detection of pre-shared key
   mismatch and helps the server in making an informed decision about
   cipher selection.

6  Security Considerations

   General security considerations for DTLS and TLS are covered in
   [RFC5246] and [RFC6347].

6.1 Identity Privacy

   All (or subset of) the PSK Identities held by the client are sent in
   the clear text. It should be noted that this doesn't introduce any
   new security concern as an attacker who has the capacity to sniff the
   traffic sent by client can get the list of all identities possessed
   by it by capturing and analyzing the traffic flowing from client to
   various servers.

7  IANA Considerations

   IANA is requested to add an entry to the existing TLS ExtensionType
   registry, defined in TLS [RFC5246], for the new psk_identity
   extension defined in this document.

   we recommend to IANA to consider the value of 10015 for the
   psk_identity extension.


8  Acknowledgements

   We would like to thank Nikos Mavrogiannopoulos and David Woodhouse
   for their inputs towards this document.

9  References

9.1  Normative References

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

   [RFC4279]  Eronen, P., Ed., and H. Tschofenig, Ed., "Pre-Shared Key
              Ciphersuites for Transport Layer Security (TLS)",
              RFC 4279, December 2005.

   [RFC4785]  Blumenthal, U. and P. Goel, "Pre-Shared Key (PSK)
              Ciphersuites with NULL Encryption for Transport Layer
              Security (TLS)", RFC 4785, January 2007.
 


J Kuppannan & R Ashok    Expires June 15, 2017                  [Page 9]

INTERNET DRAFT      TLS/DTLS PSK Identity Extension    December 15, 2016


   [RFC5485]  Housley, R., "Digital Signatures on Internet-Draft
              Documents", RFC 5485, March 2009.

   [RFC6066]  Eastlake 3rd, D., "Transport Layer Security (TLS)
              Extensions: Extension Definitions", RFC 6066, January
              2011.


9.2  Informative References

   [RFC5246]  Dierks, T. and E. Rescorla, "The Transport Layer Security
              (TLS) Protocol Version 1.2", RFC 5246, August 2008.


   [RFC6347]  E. Rescorla and N. Modadugu, "Datagram Transport Layer
              Security Version 1.2", RFC 6347, January 2012.


Authors' Addresses


   Jayaraghavendran Kuppannan
   Juniper Networks
   Elnath-Exora Business Park,
   Prestige Tech Park, Marathalli,
   Bengaluru, India

   EMail: jayaraghavendran.ietf@gmail.com



   Raja Ashok V K
   Huawei Technologies
   Divyasree Tech Park,
   Whitefield,
   Bengaluru, India

   EMail: raja.ashok@huawei.com













J Kuppannan & R Ashok    Expires June 15, 2017                 [Page 10]