TLS Working Group                                        Pascal Urien
  Internet Draft                                      Telecom ParisTech
  Intended status: Experimental                               July 2010
  Expires: January, 2011



                   TLS Tripartite Diffie-Hellman Key Exchange
                       draft-urien-tls-dh-tripartite-00



Abstract

   Most of privacy exchanges over the Internet rely on the TLS protocol.
   According to this protocol two entities the client and the server
   computes a master secret from which are deduced cryptographic keys
   used for data privacy and security. Digital transactions may deal
   with critical information (payments ...) that need to be recorded for
   traceability issues or for legal requirements. However messages are
   secured by the TLS protocol, so it is not possible for a third party
   that logs packets to perform decryption operations upon legitimate
   requests.

   The goal of this draft is to support a Trusted Third Party (TTP) that
   could recover the protected information when needed. The proposed
   protocol uses the Tripartite Diffie-Hellman (tdh) algorithm based on
   bilinear pairings over elliptic curves.

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

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


   Urien                   Expires January 2011            [Page 1]


          TLS tripartite Diffie-Hellman Key Exchange      June 2010

Copyright Notice

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









































   Urien                    Expires January 2011           [Page 2]


          TLS tripartite Diffie-Hellman Key Exchange      June 2010



Table of Contents

   Abstract........................................................... 1
   Requirements Language.............................................. 1
   Status of this Memo................................................ 1
   Copyright Notice................................................... 2
   Table of Contents.................................................. 3
   1 Overview......................................................... 4
   2 About Bilinear Pairing........................................... 5
      2.1 Symmetric Bilinear Pairing.................................. 5
      2.2 Asymmetric Bilinear Pairing................................. 6
      2.3 The Bilinear Diffie-Hellman (BDH) problem................... 6
      2.4 Practical properties........................................ 6
          2.4.1 Symmetric Pairing .................................... 6
          2.4.2 Asymmetric pairing ................................... 7
      3. Bilinear pairing operations overview......................... 8
   4. Bilinear Pairing Operations details............................. 9
      4.1 TLS Extension............................................... 9
          4.1.1 Supported Pairing Scheme ............................. 9
      4.2 Key Exchange................................................ 9
          4.2.1 Trusted-Third-Party list ............................. 9
          4.2.1 Server Key Exchange ................................. 10
          4.2.2 Client Key Exchange ................................. 10
      4.3 PreMasterSecret computing.................................. 10
          4.3.1 Hash function for the Weil pairing .................. 11
      4.4 CipherSuites............................................... 11
   5. Example of pairings............................................ 11
      5.1 Symmetric pairing.......................................... 11
   6. Security Considerations........................................ 12
   7. IANA Considerations............................................ 13
   8 References...................................................... 13
      8.1 Normative references....................................... 13
      8.2 Informative references..................................... 13
   Author's Addresses................................................ 13
















   Urien                    Expires January 2011           [Page 3]


          TLS tripartite Diffie-Hellman Key Exchange      June 2010

1 Overview

   Most of privacy exchanges over the Internet rely on the TLS protocol.
   According to this protocol two entities the client and the server
   computes a master secret from which are deduced cryptographic keys
   used for data privacy and security.

   Digital transactions may deal with critical information (payments
   ...) that need to be recorded for traceability issues or for legal
   requirements.

   However messages are secured by the TLS protocol, so it is not
   possible to a third party that logs packets to perform decryption
   operations upon legitimate requests.

   The idea of this proposal is to support a Trusted Third Party (TTP)
   that could recover the protected information when needed.

   The Tripartite Diffie-Hellman (tdh) idea was initially introduced in
   [TDH].

   Toady cryptography provides efficient software tools [PBC] computing
   bilinear pairing over elliptic curve. The [TLS-ECC] standard already
   supports cryptographic operations based on elliptic curves, mainly
   for key exchange based on ECDH (Elliptic Curve Diffie Hellman) or the
   ECDSA (Elliptic Curve Digital Signature Algorithm) signature.

   The Weil pairing for example works with classical elliptic curves;
   server and client are equipped with DH public and private keys.

   The classical TLS pre-master-secret is computed according to the
   relation

   pre-master-secret = abP (or g^ab with multiplicative notations)

   Where P is a point of an elliptic curve point (a generator) defined
   over a Fq field, aP and bP are respectively the server and client DH
   public keys, and a,b their private keys.

   If the client and the server agree to use a TTP, identified by an
   attribute ttp-name and owning a DH public key cP, the pre-master-
   secret is computing according to the following relation:

   Sclient = e(aP,cP)^b
   Sserver = e(bP,cP)^a
   Sttp    = e(aP,bP)^c,

   S = Sserver = Sclient = Sttp = shared-secret

   S is an element of F(q^k), with k integer


   Urien                    Expires January 2011           [Page 4]


          TLS tripartite Diffie-Hellman Key Exchange      June 2010

   pre-master-secret = h(S), h a hash function producing p bits

   In other words each entity (client, server, TTP) computes a shared
   secret S by using its private DH key and the two other public DH
   keys.

   The master-secret is thereafter produced:

   master_secret = PRF(pre-master-secret,
                       "master secret",
                        ClientHello.random + ServerHello.random).

   The master secret is computed by the client and the server without a
   dialog with the TTP. But the TTP will be able to recover the master
   secret from the TLS session logs.


                Client                       Server
             (ec, P, b, bP)              (ec, P, a, aP)
                                   <==aP
                            bP==>
              S= e(aP,cP)^b                S= e(bP,cP)^a
              master-secret                master-secret
                  !                               !
                  !<===Protected Data Exchange===>!
                  !                               !
                          TTP (ec, P, c, cP)
                            S= e(aP,bP)^c
                            master-secret
                           Data Decryption

   Figure 1. Illustration of TTP use in a TLS session

2 About Bilinear Pairing

2.1 Symmetric Bilinear Pairing

   Z is the set of integer.
   r is a prime integer

   Let (G1,+) be a cyclic group of order r, (with additive operation +)
   Let (G2,*) be a cyclic group of order r, (with multiplicative
   operation x).

   Let e a non-degenerate bilinear map, G1 x G1 -> G2

   A non-degenerate bilinear pairing satisfies the following conditions:

   - Bilinear:
     for P,Q elements of G1, a,b elements of Z, e(aP,bP)=e(P,Q)^ab


   Urien                    Expires January 2011           [Page 5]


          TLS tripartite Diffie-Hellman Key Exchange      June 2010

   - Non-Degenerate:
     e(P,P)#1 is a generator of G2

   The Weil pairing [ECC] has been defined for elliptic curve [ECC] over
   finite field of prime characteristic p (Fp)

   - ECC is an elliptic curve over Fp
   - G1 is a subgroup in ECC(Fp), whose order is r
   - G2 is a subgroup in F(p^k), k an integer

2.2 Asymmetric Bilinear Pairing

   In that case the bilinear map works with two different groups G1,
   whose order is r, and G1', where each element has order dividing r.

   e is a non-degenerate bilinear map, G1 x G1' -> G2

   For P elements of G1, Q element of G1', a,b elements of Z :
   e(aP,bQ)=e(P,Q)^ab

   The Tate pairing [ECC] has been defined for elliptic curve [ECC] over
   finite field of prime characteristic p (Fp).

   - ECC is an elliptic curve over Fp
   - G1  is a subgroup in ECC(Fp), whose order is r
   - G1' is a subgroup in ECC(Fp^k), with k integer (k is the elliptic
   curve embedding degree)
   - G2  is a subgroup in F(p^k)


2.3 The Bilinear Diffie-Hellman (BDH) problem.

   P is a generator of G1

   a,b,c are elements of Zr*

   BDH: Knowing P, aP, bP, cP the computation of e(P,P)^abc is
   'impossible'

   Furthermore the classical computational Diffie Hellman (CDH)
   assumption is assumed for the group G1.

   CDH: Knowing P, aP, bP the computation of abP is 'impossible'

2.4 Practical properties

  2.4.1 Symmetric Pairing

   We suppose three entities A (server), B (client), C (ttp) equipped
   with three pairs of public and private keys, associated with a group
   G1 and a generator P.

   Urien                    Expires January 2011           [Page 6]


          TLS tripartite Diffie-Hellman Key Exchange      June 2010


   aP and a, are respectively the public and the private keys for A
   bP and b, are respectively the public and the private keys for B
   cP and c, are respectively the public and the private keys for C

   A shared secret (S) may be computed by these three entities,
   according to the following scenario:

   - A computes S = e^a(bP,cP) = e(P,P)^abc
   - B computes S = e^b(aP,cP) = e(P,P)^abc
   - C computes S = e^c(aP,bP) = e(P,P)^abc

   In other word each entity computes a shared secret key, deduced from
   its private key and the two other public key.

   If A is a client, B a server and C a trusted party, all security
   properties such as encrypted packets exchanged between client and
   server may be recovered by the trusted party.

  2.4.2 Asymmetric pairing

   We suppose three entities A (server), B (client), C (ttp) equipped
   with pairs of public and private keys, associated with the group G1
   (generator P) and the group G1' (generator P').

   aP, aP' and a, are respectively the public and the private keys for A
   bP and b, are respectively the public and the private key for B
   cP, cP' and c, are respectively the public and the private keys for C

   A shared secret (S) may be computed by these three entities,
   according to the following scenario

   - A computes S = e^b(bP,cP') = e(P,P')^abc
   - B computes S = e^b(aP,cP') = e(P,P')^abc
   - C computes S = e^c(aP,bP') = e(P,P')^abc

















   Urien                    Expires January 2011           [Page 7]


          TLS tripartite Diffie-Hellman Key Exchange      June 2010


3. Bilinear pairing operations overview

              Client                                        Server
              ------                                        ------

               ClientHello          -------->
   extension {pairing-scheme}
   extension {elliptic-curves}
   extension {ec_point-formats}

                                                        ServerHello
                                         extension {pairing-scheme}
                                        extension {elliptic-curves}
                                       extension {ec_point-formats}

                                                       Certificate*

                                                 ServerKeyExchange*
                                    select (KeyExchangeAlgorithm)
                                    { case ec_bilinear-pairing:
                                        ServerECDHParams  params;
                                        Signature  signed_params;
                                        TTP-List         ttp-list
                                    } ServerKeyExchange;

                                               CertificateRequest*+
                                    <--------       ServerHelloDone


               Certificate*+
               ClientKeyExchange
               struct {
                 select (KeyExchangeAlgorithm)
                         { case ec_bilinear-pairing:
                           ClientECDiffieHellmanPublic;
                           TTP-Name: ttp-name
                         } exchange-keys;
                      } ClientKeyExchange;

               CertificateVerify*+
               [ChangeCipherSpec]
               Finished             -------->
                                                 [ChangeCipherSpec]
                                    <--------              Finished

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

   Figure 2. Overview of the TLS bilinear pairing operations.



   Urien                    Expires January 2011           [Page 8]


          TLS tripartite Diffie-Hellman Key Exchange      June 2010

   The TLS dialog is illustrated by figure 2. A new extension is used
   both by client and server in order to negotiate a pairing scheme. The
   TTP is selected thanks attributes exchanged in the ServerKeyExchange
   and ClientKeyExchange messages. Elliptic curve and DH parameter are
   specified according to [TLS-ECC].

4. Bilinear Pairing Operations details

4.1 TLS Extension

   A new TLS extension is defined in this specification: the pairing-
   scheme extension.

   The general structure of TLS extensions is described in [TLS 1.1],
   and this specification adds one new item to ExtensionType.

   enum { pairing-scheme(xx)} ExtensionType;

   The client negotiates the pairing-scheme via the corresponding
   extension inserted in the client hello message

   The server selects one of the proposed items and inserts it in the
   server hello message.


   Two other extensions are imported from [TLS-ECC]:

   - elliptic-curves(10),
   - ec_point-formats(11);

  4.1.1 Supported Pairing Scheme

   Supported Pairing Scheme
           enum {
                  Weil-Pairing (1)
                } NamedScheme;

4.2 Key Exchange

   A new KeyExchange Algorithm is defined: ec-bilinear-pairing

  4.2.1 Trusted-Third-Party list

   Each trusted third party (TTP) is identified by a name. A DH public
   key is implicitly deduced from its identifier.







   Urien                    Expires January 2011           [Page 9]


          TLS tripartite Diffie-Hellman Key Exchange      June 2010

   Structure of this message:

   opaque TTP-Name<1..2^24-1>;

   struct {
           TTP-Name ttp-name-list<0..2^24-1>;
          } TTP-List;


  4.2.1 Server Key Exchange

   The ServerKeyExchange message is extended as follows.

           enum { ec-bilinear-pairing } KeyExchangeAlgorithm;

           select (KeyExchangeAlgorithm) {
               case ec_bilinear-pairing:
                   ServerECDHParams    params;
                   Signature           signed-params;
                   TTP-List            ttp-list
           } ServerKeyExchange;

   The attributes ServerECDHParams and Signature are imported from [TLS-
   ECC]

  4.2.2 Client Key Exchange

   The ClientKeyExchange message is extended as follows.

           struct {
               select (KeyExchangeAlgorithm) {
                   case ec_bilinear-pairing:
                   ClientECDiffieHellmanPublic;
                   TTP-Name: ttp-name
                   } exchange-keys;
           } ClientKeyExchange;

   The attribute ClientECDiffieHellmanPublic is imported from [TLS-ECC].

4.3 PreMasterSecret computing

   aP and bP are respectively the server and the client DH public values
   (with additive notations)

   cP is the trusted third party (ttp) public value, (with additive
   notations).

   h is a digest function producing p bytes.




   Urien                    Expires January 2011           [Page 10]


          TLS tripartite Diffie-Hellman Key Exchange      June 2010

   On the server side:

   PreMasterSecret = h(e(bP,cP)^a)

   On client side:

   PreMasterSecret = h(e(aP,cP)^b)

   On the ttp side

   PreMasterSecret = h(e(aP,bP)^c)

  4.3.1 Hash function for the Weil pairing

   For the Weil pairing, G2 is a subgroup of Fq^2, if the output of e is
   expressed as the tuple (a0,a1) with x and y elements of Fq

   h = sha1(a0 || a1), a0 and a1 are values of exactly q bits.

4.4 CipherSuites

   To be done.

5. Example of pairings

   This example has been computed with the Pairing-Based Cryptography
   Library [PBC] [BL].

5.1 Symmetric pairing

   The elliptic curve (ECC) is chosen as:
   y^2 = x^3 + x, with x, y elements of a Field Fq

   q is a prime number, with q = 3 modulus 4
   G1 is a subgroup of ECC(Fq)
   G2 is a subgroup of Fq^2

   There are q+1 points on the ECC curve, i.e. #ECC(Fq) = q+1

   r = order of G1 = prime factor of q+1.
   h = cofactor = #ECC(Fq) / r

   q=8780710799663312522437781984754049815806883199414208211028653399266
   475630880222957078625179422662221423155858769582317459277713367317481
   324925129998224791.

   h=1201601226489114607938882136674053420480295440125131182291961513104
   7207289359704531102844802183906537786776

   r= 730750818665451621361119245571504901405976559617


   Urien                    Expires January 2011           [Page 11]


          TLS tripartite Diffie-Hellman Key Exchange      June 2010

   Generator P=
   764213932795790385166146156484628185710738246136731223594607305863197
   148904107335230752866953232919510098156557991388877251113225844051396
   9390781514106884,
   841053126166803064145349163706237513167951671763744795990943027230354
   098248702951019958048685849729494818612964151563063433969126677448023
   4634049031935396

   a = 321231739573260508064943282038854866624801566274

   aP =
   301901600464207748384853072909292823401500311348346356764859754747703
   064669197258898445749044213480292759568257999990157011471277891932048
   3502179821202747,
   622130912004388536645426112375868421081814378272661695953772580311048
   821974186212677634483766383564352093956376894422864585155448402243584
   2060112859040085

   b = 591069617759232948334516538341133684003963967541

   bP =
   489872625336582550697622917901310968712983470168986006826993590244144
   534124000070208650497397931419729729097601618783404569928023315742260
   1733989063260044,
   715768020641988338757762409522925702707172363082968385844449919698450
   610626853008028585471746136204506517503675925750751323255279155813951
   061482849469617

   c = 332790059747456431829511198714114673843901104395

   cP =
   361673235446634950587227148388584900737947568189969047494313829915613
   165227389313929815513580932571550613336307696480151992816947356553291
   3077259306029100,
   591927063716469042674124332635453987072498361375371305395310139261168
   079986151403557597760872949800149313292665777504365718007945299529892
   7247712148590792

   S= f(aP,bP)^c = f(bP,cP)^a= f(cP,aP)^b =
   411874021818983935494518378468671897765968395058497750231537284872046
   634607045530820852050427874577949368791925702115715036551400857093954
   2202145179250626,
   792272713616191570585463230096947246676587164343554480144379956667402
   825333387256294430771484207666103108581680992251414596583914923441539
   9681428439428268


6. Security Considerations

   To be done.


   Urien                    Expires January 2011           [Page 12]


          TLS tripartite Diffie-Hellman Key Exchange      June 2010

7. IANA Considerations

   To be done

8 References

8.1 Normative references

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

   [TLS 1.0] Dierks, T., C. Allen, "The TLS Protocol Version 1.0", RFC
   2246, January 1999

   [TLS 1.1] Dierks, T., Rescorla, E., "The Transport Layer Security
   (TLS) Protocol Version 1.1", RFC 4346, April 2006

   [TLS 1.2] Dierks, T., Rescorla, E., "The Transport Layer Security
   (TLS) Protocol Version 1.1", draft-ietf-tls-rfc4346-bis-10.txt, March
   2008

   [TLS-ECC] Blake-Wilson, S., Bolyard, N., Gupta, V., Hawk, C., and B.
   Moeller, "Elliptic Curve Cryptography (ECC) Cipher Suites for
   Transport Layer Security (TLS)", RFC 4492, May 2006.


8.2 Informative references

   [ECC] Joseph H.Silverman, "The Arithmetic of Elliptic Curves", Second
   Edition, Springer, 2008

   [PBC] http://crypto.stanford.edu/pbc/

   [TDH] A.Joux, "A one round protocol for tripartite Diffie-Hellman",
   Lecture Notes in Computer Science, Springer, Volume 1838, 2000

   [BL] Benn Lynn, "On the implementation of paring-based
   cryptosystems", PHD dissertation, Stanford University, 2007

Author's Addresses

   Pascal Urien
   Telecom ParisTech
   37/39 rue Dareau, 75014 Paris, France

   Email: Pascal.Urien@telecom-paristech.fr






   Urien                    Expires January 2011           [Page 13]