Internet DRAFT - draft-wang-tls-eccsi

draft-wang-tls-eccsi







Internet Engineering Task Force                             H. Wang, Ed.
Internet-Draft                                                   Y. Yang
Intended status: Standards Track             Huawei Technology Pte. Ltd.
Expires: January 4, 2018                                    July 3, 2017


       Using ECCSI Public Keys in Transport Layer Security (TLS)
                        draft-wang-tls-eccsi-00

Abstract

   This document specifies a new certificate type and a TLS extension
   for authentication with ECCSI public keys in Transport Layer Security
   (TLS).  The new certificate type allows ECCSI public keys to be used
   for mutual authentication over TLS protocol.

Status of This Memo

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

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   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."

   This Internet-Draft will expire on January 4, 2018.

Copyright Notice

   Copyright (c) 2017 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.




Wang & Yang              Expires January 4, 2018                [Page 1]

Internet-Draft            TLS-ECCSI-Public-Key                 July 2017


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . .   4
   3.  Structure of the ECCSI Public Key Extension . . . . . . . . .   4
   4.  Key Exchange Algorithm  . . . . . . . . . . . . . . . . . . .   6
   5.  TLS Client and Server Handshake Behaviour . . . . . . . . . .   7
     5.1.  Client Hello  . . . . . . . . . . . . . . . . . . . . . .   7
     5.2.  Server Hello  . . . . . . . . . . . . . . . . . . . . . .   8
     5.3.  Client Authentication . . . . . . . . . . . . . . . . . .   8
     5.4.  Server Authentication . . . . . . . . . . . . . . . . . .   8
   6.  Examples  . . . . . . . . . . . . . . . . . . . . . . . . . .   8
     6.1.  TLS Client and Server Use ECCSI Public Keys . . . . . . .   9
   7.  Security Considerations . . . . . . . . . . . . . . . . . . .  10
   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  10
   9.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  10
   10. References  . . . . . . . . . . . . . . . . . . . . . . . . .  10
     10.1.  Normative References . . . . . . . . . . . . . . . . . .  10
     10.2.  Informative References . . . . . . . . . . . . . . . . .  10
   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  10
     11.1.  Normative References . . . . . . . . . . . . . . . . . .  10
     11.2.  Informative References . . . . . . . . . . . . . . . . .  10
   Appendix A.  Examples . . . . . . . . . . . . . . . . . . . . . .  11
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  11

1.  Introduction

   DISCLAIMER: This is a personal draft and has not yet seen significant
   security analysis.

   Traditionally, TLS client and server exchange public keys based on
   [PKIX] certificates.  It is considered complicated and may cause
   security weakness [Defeating-SSL].  To simplify the public key
   exchange, a light weight public key exchange protocol for TLS, using
   RAW public key in TLS/DTLS, has been standardized in [RFC7250].
   However, using RAW public key requires out of band mechanisms to bind
   the public key to the entity presenting the key.  This may require
   additional mechanism to resolve the binding relationship for each raw
   public key.

   3GPP SA3 has adopted the EAP for 5G authentication framework and EAP-
   TLS is considered as authentication method for IOT devices.  For use
   cases such as authentication between IOT devices and networks,
   identity of an entity provide the public key is necessary.

   To simplify the binding between the public key and entity presenting
   the key, this document proposes to use ECCSI public key for
   authentication.  Different from the X.509 certificate and raw public



Wang & Yang              Expires January 4, 2018                [Page 2]

Internet-Draft            TLS-ECCSI-Public-Key                 July 2017


   key, the ECCSI public key takes the identity itself as a public key,
   which simplify the binding between public key and entity presenting
   the public key.

   ECCSI public key can be used by IOT devices to perform mutual
   authentication.  Comparing to the PKIX based certificate, the ECCSI
   public key is shorter and requires less computation, and CA signing
   required by PKIX certificate is unnecessary for identity-based public
   key.  Comparing to the RAW public key, ECCSI public key inherently
   provides entity authentication, which is required in many IOT network
   since IOT devices and networks need mutual authentication; the
   client/server does not need to have an out of band mechanism to bind
   the public key with the entity presenting the public key as required
   by raw public key.

   Elliptic Curve-Based Certificateless Signatures for Identity-Based
   Encryption (ECCSI) public key in [RFC6507] specifies an identity-
   based signature scheme.  The scheme is defined over Elliptic Curves.

   According to the RFC6507, to use the ECCSI public key, a Key
   Management System (KMS) is required to generate private keys and then
   distribute the generatedkeys to clients thereafter.  The
   functionality of the KMS is similar to a Certificate Authority (CA).
   A KMS owns a KMS Secret Authentication Key (KSAK), which is the root
   trust for all other keys.  A KMS Public Authentication Key (KPAK)
   derived from this KSAK is globally public, and can be used to verify
   signatures.

   To get an ECCSI-based private key for generating signatures, an
   entity need to provide its identity to the KMS, and then the KMS
   generates a Signer Secret Key (SSK) and a Public Validation Token
   (PVT), with the received Identity, the KSAK, the KPAK, and the pre-
   configured Elliptic curve as input.  KMS delivers the SSK and PVT to
   the requestor who sends in the identity.  For each identity, the
   generated SSK and PVT are specific to it.  The identity and the PVT
   are used together with the KPAK to verify the signatures generated
   with the corresponding SSK.  The signature generation and
   verification algorithms have been specified in [RFC6507].

   To support ECCSI public key over TLS protocol, this document further
   extends the Certificate structure defined in [RFC7250] by including a
   type for ECCSI public key.  The SubjectPublicKeyInfo structure
   defined in [PKIX] is extended since additional information for ECCSI
   public keys is required.  The client_certificate_type and
   server_certificate_type defined in the RFC7250 are reused for ECCSI
   public key negotiation.





Wang & Yang              Expires January 4, 2018                [Page 3]

Internet-Draft            TLS-ECCSI-Public-Key                 July 2017


   Section 3 defines structure for ECCSI public key; Section 4 defines
   key exchange algorithm over TLS with the ECCSI public key.  Section 5
   specifies TLS client and server handshake behaviour; Section 6 give
   examples.

2.  Terms

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

3.  Structure of the ECCSI Public Key Extension

   This section defines the structures for using ECCSIpublic keys over
   TLS protocols.  To carry the Identity-based public key within the TLS
   handshake messages, the Certificate payload is used as a container,
   as shown in Figure 1.  The shown Certificate structure is an
   adaptation of its original form [RFC7250].

   opaque ASN.1Cert<1..2^24-1>;

   struct {
   select(certificate_type){
   // certificate type defined in this document.
   case IdentityBasedPublicKey:
   opaque ASN.1_subjectIdentityBasedPublicKeyInfo<1..2^24-1>;

   // certificate type defined in RFC 7250.
   case RawPublicKey:
   opaque ASN.1_subjectPublicKeyInfo<1..2^24-1>;

   // X.509 certificate defined in RFC 5246
   case X.509:
   ASN.1Cert certificate_list<0..2^24-1>;

   // Additional certificate type based on
   // "TLS Certificate Types" subregistry
   };
   } Certificate;

   Figure 1: Certificate Payload as a Container for the Raw Public Key.

   The structure SubjectIdentityBasedPublicKeyInfo is defined in this
   document.  It contains AlgorithmIdentifier, identity and parameters.
   The structure of Algorithm identifer is defined in RFC 5280 [PKIX].
   Identity is a string provided by client or server.  Parameters are
   specific to the chosen identity-based public key algorithm.  In this




Wang & Yang              Expires January 4, 2018                [Page 4]

Internet-Draft            TLS-ECCSI-Public-Key                 July 2017


   document, structure for ECCSI-based public key is specified.  It
   contains an PVT field.

subjectECCSIPublicKeyInfo  ::=  SEQUENCE  {
           algorithm                    AlgorithmIdentifier,
           identity                     BIT STRING,
           PVT                        BIT STRING,
           parameters                   ANY DEFINED BY algorithm OPTIONAL }


AlgorithmIdentifier   ::=  SEQUENCE  {
           algorithm               OBJECT IDENTIFIER,
           parameters              ANY DEFINED BY algorithm OPTIONAL  }

            Figure 2: SubjectECCSIPublicKeyInfo ASN.1 Structure

   The algorithm identifiers are Object identifiers (OIDs).  It is
   defined in the following table.

   +-------------------------------------+----------+------------------+
   |               Key Type              | Document |       OID        |
   +-------------------------------------+----------+------------------+
   |  Elliptic Curve-Based Signatureless |   This   | 1.3.xxx.xxx.x.x  |
   |    For Identitiy-based Encryption   | document | (need to apply)  |
   |               (ECCSI)               |          |                  |
   +-------------------------------------+----------+------------------+

                   Table 1: Algorithm Object Identifiers

   PVT is an ECPoint.  The encoding of the PVT has the following syntax:

   PVT ::= OCTET STRING

   The PVT (a value of type ECPoint that is an OCTET STRING) is mapped
   to a subjectPublicKey (a value of type BIT STRING) as follows: the
   most significant bit of the OCTET STRING value becomes the most
   significant bit of the BIT STRING value, and so on; the least
   significant bit of the OCTET STRING becomes the least significant bit
   of the BIT STRING.  [From RFC 5480]

   The first octet of the OCTET STRING indicates whether the key is
   compressed or uncompressed.  The uncompressed form is indicated by
   0x04 and the compressed form is indicated by either 0x02 or 0x03 (see
   2.3.3 in [SEC1]).  The public key MUST be rejected if any other value
   is included in the first octet.

   Similar to the certificate negotiation specified for raw public key,
   the 'extension_data' field in the client and server hello fields are



Wang & Yang              Expires January 4, 2018                [Page 5]

Internet-Draft            TLS-ECCSI-Public-Key                 July 2017


   used to carry the ClientCertTypeExtension and ServerCertTypeExtension
   structures, which are defined in [RFC7250] for raw public key
   negotiation.  According to RFC7250, the CertificateType structure is
   an enum with values taken from the 'TLS Certificate Types'
   subregistry of the 'Transport Layer Security (TLS) Extensions'
   registry [TLS-Ext-Registry].

      struct {
              select(ClientOrServerExtension) {
                  case client:
                    CertificateType client_certificate_types<1..2^8-1>;
                  case server:
                    CertificateType client_certificate_type;
              }
      } ClientCertTypeExtension;

      struct {
              select(ClientOrServerExtension) {
                  case client:
                    CertificateType server_certificate_types<1..2^8-1>;
                  case server:
                    CertificateType server_certificate_type;
              }
      } ServerCertTypeExtension;

                   Figure 3: CertTypeExtension Structure

4.  Key Exchange Algorithm

   In addition to [RFC4492], this document introduces one new ECC-based
   key exchange algorithm for TLS.  It uses ephemeral ECDH keys to
   compute the TLS premaster secret, while the ECCSI scheme is used to
   authenticate them.  The derivation of the TLS master secret from the
   premaster secret and the subsequent generation of bulk encryption/MAC
   keys and initialization vectors is independent of the key exchange
   algorithm and not impacted by the use of the ECCSI scheme.

   Below shows the new key exchange algorithm:

     +------------------------+--------------------------------------+
     | Key Exchange Algorithm |             Description              |
     +------------------------+--------------------------------------+
     |      ECDHE_ECCSI       | Ephemeral ECDH with ECCSI signatures |
     +------------------------+--------------------------------------+

                   Table 2: ECC Key Exchange Algorithms





Wang & Yang              Expires January 4, 2018                [Page 6]

Internet-Draft            TLS-ECCSI-Public-Key                 July 2017


   The ECDHE_ECCSI key exchange mechanism requires the verifier to
   acquire the KPAK.

   To support the ECDHE_ECCSI key exchange mechanism, the following new
   Cipher suites are specified:

   a.  CipherSuite TLS_ECDHE_ECCSI_WITH_AES_128_CBC_SHA = {0xXX, 0xXX}

   b.  CipherSuite TLS_ECDHE_ECCSI_WITH_AES_256_CBC_SHA = {0xXX, 0xXX}

5.  TLS Client and Server Handshake Behaviour

   The exchange of the TLS hello message with Identity-based public key
   is the same as the procedure specified in RFC 7250[RFC7250], but with
   an appropriate Cipher suite being chosen if the ECCSI public key is
   used.

   New Cipher suites specific to ECCSI public key are required.

   client_hello,
       client_certificate_type,
       server_certificate_type   ->

                                 <-  server_hello,
                                     client_certificate_type,
                                     server_certificate_type,
                                     certificate,
                                     server_key_exchange,
                                     certificate_request,
                                     server_hello_done
       certificate,
       client_key_exchange,
       certificate_verify,
       change_cipher_spec,
       finished                  ->

                                 <- change_cipher_spec,
                                    finished

      Application Data        <------->     Application Data

               Figure 4: Basic ECCSI Public Key TLS Exchange

5.1.  Client Hello

   To indicate the support of ECCSI public keys, clients include the
   client_certificate_type and/or the server_certificate_type extensions
   in an extended client hello message.  The usage of



Wang & Yang              Expires January 4, 2018                [Page 7]

Internet-Draft            TLS-ECCSI-Public-Key                 July 2017


   client_certificate_type and server_certificate_type are specified in
   the RFC7250.  At the meantime, an appropriate cipher_suites needs to
   be specified too if it is to support ECCSI public keys.

5.2.  Server Hello

   If the server receives a client hello that contains the
   client_certificate_type extension and/or the server_certificate_type
   extension, then three outcomes are possible:

   a.  The server does not support the extension.  In this case, the
       server returns the server hello without the extensions defined in
       this document.

   b.  The server supports the extension, but it does not have any
       certificate type in common with the client.  Then, the server
       terminates the session with a fatal alert of type
       "unsupported_certificate".

   c.  The server supports the extensions and has at least one
       certificate type in common with the client.  In this case, the
       processing rules described below are followed.

   The details for the server in processing the client_certificate_type
   and server_certificate_type are specified in section 4.2 of RFC7250.
   Meanwhile, an appropriate cipher_suites needs to be specified too if
   it is to support ECCSI public keys.

5.3.  Client Authentication

   When the TLS server has specified an ECCSI public key type, e.g. as
   the client_certificate_type, authentication of the TLS client to the
   TLS server is supported through authentication of the received client
   subjectECCSIPublicKeyInfo and signature.

5.4.  Server Authentication

   When the TLS server has specified ECCSIPublicKey as the
   server_certificate_type, authentication of the TLS server to the TLS
   client is supported only through authentication of the received
   client SubjectPublicKeyInfo via an out-of-band method.

6.  Examples

   Figures 6 illustrates example exchanges.  Note that TLS ciphersuites
   using a Diffie-Hellman exchange offering forward secrecy can be used
   with ECCSI public key, although this document does not show the
   information exchange at that level with the subsequent message flows.



Wang & Yang              Expires January 4, 2018                [Page 8]

Internet-Draft            TLS-ECCSI-Public-Key                 July 2017


6.1.  TLS Client and Server Use ECCSI Public Keys

   This section shows an example where the TLS client as well as the TLS
   server use ECCSI public keys.  This is one of the use cases
   envisioned for IOT devices authenticate with networks.  The TLS
   client in this case is an IOT device that is configured with a ECCSI
   public/private keys for use with TLS and is also able to process
   ECCSI public key sent by the server.  Therefore, it indicates these
   capabilities in (1).  The server fulfills the client's request,
   indicates this via the ECCSIPublicKey value in the
   server_certificate_type payload (2), and provides an ECCSI public key
   with the ECCSIPublicKeyInfo structure in the Certificate payload back
   to the client (see (3)).  The TLS server demands client
   authentication, and therefore includes a certificate_request (4).
   The client_certificate_type payload in (5) indicates that the TLS
   server accepts an ECCSI public key.  The TLS client, which has an
   ECCSI public key pre-provisioned, returns it in the Certificate
   payload (6) to the server in the form of ECCSIPublicKeyInfo
   structure.

           client_hello,
client_certificate_type=(ECCSIPublicKey) // (1)
server_certificate_type=(ECCSIPublicKey) // (1)
                         ->
                         <-  server_hello,
                             server_certificate_type=ECCSIPublicKey // (2)
                             certificate, // (3)
                             client_certificate_type=ECCSIPublicKey // (5)
                             certificate_request, // (4)
                             server_key_exchange,
                             server_hello_done

certificate, // (6)
client_key_exchange,
change_cipher_spec,
finished                  ->

                         <- change_cipher_spec,
                            finished

Application Data        <------->     Application Data

    Figure 5: Example with ECCSI Public Key provided by the TLS Server
                              and the Client







Wang & Yang              Expires January 4, 2018                [Page 9]

Internet-Draft            TLS-ECCSI-Public-Key                 July 2017


7.  Security Considerations

8.  IANA Considerations

9.  Acknowledgements

10.  References

10.1.  Normative References

10.2.  Informative References

11.  References

11.1.  Normative References

   [PKIX]     Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
              Housley, R., and W. Polk, "Internet X.509 Public Key
              Infrastructure Certificate and Certificate Revocation
              List(CRL) Profile", June 2008.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <http://www.rfc-editor.org/info/rfc2119>.

   [RFC5480]  Turner, S., Brown, D., Yiu, K., Housley, R., and T. Polk,
              "Elliptic Curve Cryptography Subject Public Key
              Information", RFC 5480, DOI 10.17487/RFC5480, March 2009,
              <http://www.rfc-editor.org/info/rfc5480>.

   [RFC6507]  Groves, M., "Elliptic Curve-Based Certificateless
              Signatures for Identity-Based Encryption (ECCSI)",
              RFC 6507, DOI 10.17487/RFC6507, February 2012,
              <http://www.rfc-editor.org/info/rfc6507>.

   [RFC7250]  Wouters, P., Ed., Tschofenig, H., Ed., Gilmore, J.,
              Weiler, S., and T. Kivinen, "Using Raw Public Keys in
              Transport Layer Security (TLS) and Datagram Transport
              Layer Security (DTLS)", RFC 7250, DOI 10.17487/RFC7250,
              June 2014, <http://www.rfc-editor.org/info/rfc7250>.

11.2.  Informative References








Wang & Yang              Expires January 4, 2018               [Page 10]

Internet-Draft            TLS-ECCSI-Public-Key                 July 2017


   [Defeatting-SSL]
              Marlinspike, M.,, "New Tricks for Defeating SSL in
              Practice", Feb 2009,
              <http://www.blackhat.com/presentations/bh-dc-
              09/Marlinspike/
              BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf>.

Appendix A.  Examples

Authors' Addresses

   Haiguang Wang (editor)
   Huawei Technology Pte. Ltd.
   20 Secience Park Road, #3-30/31
   Singapore  117687
   SG

   Phone: +65 6825 4200
   Email: wang.haiguang1@huawei.com


   Yanjiang Yang
   Huawei Technology Pte. Ltd.
   20 Secience Park Road, #3-30/31
   Singapore  117687
   SG

   Phone: +65 6825 4200
   Email: yang.yanjiang@huawei.com






















Wang & Yang              Expires January 4, 2018               [Page 11]