Internet DRAFT - draft-jj-tls-private-key-hiding

draft-jj-tls-private-key-hiding



Network Working Group                                  Seung Wook Jung
Internet Draft                                     Soongsil University
Intended status: Standards Track                          Souhwan Jung
Expires: April 5, 2014                             Soongsil University
                                                      October 15, 2013



           Private Key Hiding for Transport Layer Security (TLS)
                 draft-jj-tls-private-key-hiding-01


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), 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 April 15, 2014.

Copyright Notice

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



Jung & Jung            Expires April 15, 2014                 [Page 1]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


Abstract

   This document describes a private key hiding protocol and a joint
   private key operation protocol for Transport Layer Security (TLS)
   without needing to modify existing TLS.

Table of Contents


   1. Introduction ................................................ 3
   2. Conventions used in this document............................ 4
   3. Private Key Hiding Setup Protocol for TLS .................... 4
      3.1. Private Key Hiding Setup Protocol Overview .............. 4
      3.2. Private Key Hiding Setup Message ........................ 5
   4. Joint Private Key Operation Protocol for TLS ................. 6
      4.1. Joint Private Key Operation Protocol Overview ........... 6
      4.2. Joint Private Key Operation Message ..................... 7
   5. Private Key Hiding Setup Protocol and Joint Private Key Operation
   Protocol for the RSA [RSA] Key Exchange Algorithm ............... 8
      5.1. Private Key Hiding Setup Protocol for the RSA Key Exchange
      Algorithm ................................................... 9
      5.2. Joint Private Key Operation for the RSA Key Exchange
      Algorithm .................................................. 10
   6. Private Key Hiding Setup Protocol and Joint Private Key Operation
   Protocol for the DHE_RSA [TLS] Key Exchange Algorithm .......... 11
      6.1. Private Key Hiding Setup Protocol for the DHE_RSA Key
      Exchange Algorithm ......................................... 11
      6.2. Joint Private Key Operation Protocol for the DHE_RSA Key
      Exchange Algorithm ......................................... 12
   7. Private Key Hiding Setup Protocol and Joint Private Key Operation
   Protocol for the DHE_DSS [TLS] Key Exchange Algorithm .......... 13
      7.1. Private Key Hiding Setup Protocol for the DHE_DSS Key
      Exchange Algorithm ......................................... 13
      7.2. Joint Private Key Operation Protocol for DHE_DSS Key Exchange
      Algorithm .................................................. 14
   8. Private Key Hiding Setup Protocol and Joint Private Key Operation
   Protocol for the DH_RSA [TLS] and the DH_DSS [TLS] Key Exchange
   Algorithm ..................................................... 16
      8.1. Private Key Hiding Setup Protocol for the DH_RSA and the
      DH_DSS Key Exchange Algorithm............................... 16
      8.2. Joint Private Key Operation Protocol for the DH_RSA and the
      DH_DSS Key Exchange Algorithm............................... 17
   9. Private Key Hiding Setup Protocol and Joint Private Key Operation
   Protocol for the ECDHE_ECDSA [TLSECC] Key Exchange Algorithm.... 18
      9.1. Private Key Hiding Setup Protocol for the ECDHE_ECDSA Key
      Exchange Algorithm ......................................... 18



Jung & Jung            Expires April 15, 2014                 [Page 2]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


      9.2. Joint Private Key Operation Protocol for the ECDHE_ECDSA Key
      Exchange Algorithm ......................................... 19
   10. Private Key Hiding Setup Protocol and Joint Private Key Operation
   Protocol for the ECDH_ECDSA [TLSECC] and the ECDH_RSA [TLSECC] Key
   Exchange Algorithm ............................................ 21
      10.1. Private Key Hiding Setup Protocol for the ECDH_ECDSA and the
      ECDH_RSA Key Exchange Algorithm............................. 21
      10.2. Joint Private Key Operation Protocol for the ECDH_ECDSA and
      the ECDH_RSA Key Exchange Algorithm ......................... 21
   11. Security Considerations.................................... 22
   12. IANA Considerations........................................ 22
   13. References ................................................ 23
      13.1. Normative References.................................. 23
      13.2. Informative References................................ 23
   14. Acknowledgments ........................................... 23

1. Introduction

   The most web services, including cloud computing, take advantage of
   [TLS] for secure communication. In the case of cloud computing, a
   Service Provider (later called SP) hosted in a Cloud Service Provider
   (later called CSP) has to store SP's private key for [TLS] in the
   computer machines of CSP. However, in the case of the public cloud
   computing model, CSP is a third-party and not trustworthy. Therefore,
   mechanisms that SP can hide SP's private key from untrustworthy
   entity (later called UTE), CSP, are required, but the private key
   operations for [TLS] can be properly conducted without changing TLS
   protocols.

   This document describes a private key hiding setup protocol for TLS.
   The purpose of the private key hiding setup protocol is that SP sends
   a Piece of Private Key for UTE (PPKU) derived from the private key of
   SP to UTE. At the end of the private key hiding setup protocol, SP
   has a Piece of Private Key for SP (PPKS), and UTE has PPKU. It is
   infeasible that UTE makes the private key from PPKU. This document
   only considers the non-anonymous key exchanges defined in [TLS]. In
   addition to the private key hiding setup protocol, a joint private
   key operation protocol is described in this document. UTE cannot
   properly conduct private key operations only with his/her secret,
   PPKU. Therefore, the purpose of the joint private key operation
   protocol between SP and UTE is that SP and UTE conduct private key
   operations in a cooperative way for TLS using PPKS and PPKU,
   respectively. The advantages of using the private key hiding setup
   protocol and the joint private key operation protocol are:





Jung & Jung            Expires April 15, 2014                 [Page 3]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


   o Security level is higher than traditional TLS from the point of
      view of key management, because the attack has to subvert both SP
      and UTE in order to get the private key information.

   o SP can know when the private key information is used by UTE.

   The goals of this document are:

   1. Security: the secure private key hiding setup protocol and the
      secure joint private key operation protocol for TLS should be
      defined, and the private key hiding setup protocol and the joint
      private key operation protocol should not reduce the security of
      TLS.

   2. Compatibility: the private key hiding setup protocol and the joint
      private key operation protocol should not require changing TLS
      handshake protocols.

   3. Interoperability: Independent programmers should be able to
      develop applications utilizing the private key hiding setup
      protocol and the joint private key operation protocol that can
      successfully conduct without the knowledge of one another's code.

2. Conventions used in this document

   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. Private Key Hiding Setup Protocol for TLS

3.1. Private Key Hiding Setup Protocol Overview

   The overview of the private key hiding setup protocol is depicted in
   following diagram.

   UTE                                                                SP

                                <--     PrivateKeyHidingSetupRequest
   PrivateKeyHidingSetupResponse -->

           Figure 1 <Private Key Hiding Setup Protocol Overview>

   At the setup phase, SP generates the keying material, and generates
   the Piece of Private Key for UTE (later called PPKU) using some
   secret sharing mechanisms. SP sends a PrivateKeyHidingSetupRequest



Jung & Jung            Expires April 15, 2014                 [Page 4]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


   which includes PPKU to UTE. UTE sends a PrivateKeyHidingSetupResponse
   to SP after receiving the PrivateKeyHidingSetupRequest.

3.2. Private Key Hiding Setup Message

   This section shows the structure of messages for the private key
   hiding setup protocol. The used representation language is the same
   as that used in [TLS]. These messages will be sent for keying
   material setup between SP and UTE.

    enum{
          private_key_hiding_setup_request(0),
          private_key_hiding_setup_response(1)
   } PrivateKeyHidingSetupType;

   enum {rsa(0), dss(1), dh(2), ecdsa(3), ecdh(4)} KeyType;

    struct {
             PrivateKeyHidingSetupType msg_type;
             unit8 version;
             unit24 length;                      /* bytes in message */
              KeyType keyType;
              select (PrivateKeyHidingSetupType){
                   case private_key_hiding_setup_request :
                   PrivateKeyHidingSetupRequest;
                   case private_key_hiding_setup_response :
                       SetupResult result;
              };
           } PrivateKeyHidingSetup;

   A PrivateKeyHidingSetup message with the
   private_key_hiding_setup_request type means a
   PrivateKeyHidingSetupRequest and A PrivateKeyHidingSetup message with
   the private_key_hiding_setup_response type means a
   PrivateKeyHidingSetupResponse.

    struct {
        select (KeyType){
                case rsa : RSA_setup;
                case dss : DSS_setup;
                case dh  : DH_setup;
                case ecdsa :
                case ecdh : EC_setup;
          };
   } PrivateKeyHidingSetupRequest;




Jung & Jung            Expires April 15, 2014                 [Page 5]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


   KeyType means a long-term key type such as RSA, DSA [DSS], DH, ECDSA,
   and ECDH. Each message structure for each key type will be described
   throughout this document.

   enum {success(0), fail(1)} SetupResult;

   SetupResult indicates the success or the failure of the private key
   hiding setup request message.

4. Joint Private Key Operation Protocol for TLS

4.1. Joint Private Key Operation Protocol Overview

   The overview of the joint private key operation protocol is depicted
   in following diagram.

   Client                         UTE                                 SP
   |                              |                                    |
   |                              |                                    |
   |   TLS Client Hello      ---->|                                    |
   |                              |                                    |
   |                              |-->JointPrivateKeyOperationRequest  |
   |                              |                                    |
   |                              |<--JointPrivateKeyOperationResponse |
   |                              |                                    |
   |   TLS Finished Message    <--|                                    |
   |                              |                                    |

          Figure 2 <Joint Private Key Operation Protocol Overview>



   After a TLS handshake protocol is started by a TLS client hello
   message, UTE sends a joint private key operation request to SP at
   some point of the TLS handshaking which depends on the cipher suites
   of [TLS].

   UTE conducts private key operations with PPKU and the result of
   private key operations with PPKU is inserted into the joint private
   key operation request message. UTE sends the joint private key
   operation request message to SP.

   Upon the private key operation request, SP conducts private key
   operations, and then inserts the result of private key operation
   using PPKS into a joint private key operation response. SP sends the
   joint private key operation response to UTE.



Jung & Jung            Expires April 15, 2014                 [Page 6]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


   After that, UTE and the client send to each other the Finished
   Message for finishing TLS handshaking.

   The protocol between the client and UTE is the same as the TLS
   handshake protocol exactly defined in [TLS] and the client does not
   know that there exists SP.

4.2. Joint Private Key Operation Message

   This section shows the structure of messages for the joint private
   key operation protocol.

    enum{
          private_key_operation_request(0),
          private_key_operation_response(1)
   } JointPrivateKeyOperationProtocolType;

    enum {
           RSA(0), DHE_RSA(1), DHE_DSS(2), DH_RSA(3), DH_DSS(4),
           ECDHE_RSA(5), ECDHE_ECDSA(6), ECDH_ECDSA(7), ECDH_RSA(8)
   } JointPrivateKeyOperationType;

    struct {
             JointPrivateKeyOperationProtocolType msg_type;
             unit8 version;
             unit24 length;                      /* bytes in message */
             JointPrivateKeyOperationType pko_type;
              select (JointPrivateKeyOperationProtocolType) {
                    case private_key_operation_request :
                     PreComputedMessage pre_computed_message;
                    case private_key_operation_response :
                  ComputedMessage computed_message;
              };
            } JointPrivateKeyOperation;

   The JointPrivateKeyOperation message with the
   private_key_operation_request type means a
   JointPrivateKeyOperationRequest and the JointPrivateKeyOperation
   message with the private_key_operation_response type means a
   JointPrivateKeyOperationResponse.

    struct {
            select (JointPrivateKeyOperationType) {
                case RSA : RSA_pre_computed;
                case DHE_RSA : DHE_RSA_pre_computed;
                case DHE_DSS : DHE_DSA_pre_computed;
                case DH_RSA :


Jung & Jung            Expires April 15, 2014                 [Page 7]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


                case DH_DSS :
                       DH_pre_computed;
                case ECDHE_RSA : ECDHE_RSA_pre_computed;
                case ECDHE_ECDSA : ECDHE_ECDSA_pre_computed;
                case ECDH_ECDSA :
                case ECDH_RSA:
                        ECDH_pre_computed;
               };
    } PreComputedMessage;

   The JointPrivateKeyOperationType means key exchange algorithms
   defined in Section 7.4.2 of [TLS]. UTE sends these messages as
   request for conducting private key operations to SP. Each message
   structure for each JointPrivateKeyOperationType will be described
   throughout this document.

    struct {
            select (JointPrivateKeyOperationType) {
                case RSA : PreMasterSecret;
                case DHE_RSA : DHE_RSA_computed;
                case DHE_DSS : DHE_DSA_computed;
                case DH_RSA :
                case DH_DSS :
                       DH_computed;
                case ECDHE_RSA : ECDHE_RSA_computed;
                case ECDHE_ECDSA : ECDHE_ECDSA_computed;
                case ECDH_ECDSA :
                case ECDH_RSA :
                        ECDH_computed;
               };
    } ComputedMessage;

   After receiving the JointPrivateKeyOperationRequest, SP conducts
   private key operations and generates a ComputedMessage. SP sends then
   the ComputedMessage to UTE.

5. Private Key Hiding Setup Protocol and Joint Private Key Operation
   Protocol for the RSA [RSA] Key Exchange Algorithm

   This section describes a private key hiding setup protocol and a
   joint private key operation protocol for the RSA key exchange
   algorithm of which key to be used for encryption. The connection
   between SP and UTE must be secure such as [TLS].






Jung & Jung            Expires April 15, 2014                 [Page 8]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


5.1. Private Key Hiding Setup Protocol for the RSA Key Exchange
   Algorithm

   For setup, SP generates RSA private keying material and public keying
   material as following.

   p, q : a random or pseudorandom prime number of which bit length is
   longer than 1024 bits

   N = p * q

   e = encryption key

   d = private key which satisfies e*d = 1 mod (p-1)(q-1)

   SP then requests a certificate to a trusted Certificate Authority as
   the part of the X.509 protocol [PKIX]. Upon the certificate, SP
   selects a random or pseudorandom number (d_1) as a Piece of Private
   Key for UTE (PPKU). SP computes a Piece of Private Key for SP (PPKS)
   as following.

   d_1: a random or pseudorandom number in the interval [1, (p-1)*(q-1)-
   1]

   d = d_1 * d_2 mod (p-1)*(q-1)

   PPKU: d_1

   PPKS: d_2

   SP generates a RSA_setup message as following.

    struct {
              opaque e<1..2^16-1>;
              opaque N<1..2^16-1>;
              opaque d_1<1..2^16-1>;
              Certificate certificate;
   } RSA_setup;

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

    struct {
             ASN.1Cert certificate_list<0..2^24-1>;
   } Certificate;

   Then, SP sends a PrivateKeyHidingSetup request with the
   private_key_hiding_setup_request type as the


Jung & Jung            Expires April 15, 2014                 [Page 9]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


   PrivateKeyHidingSetupType and the rsa as the KeyType. UTE sends a
   PrivateKeyHidingSetup response with the
   private_key_hiding_setup_response type for the
   PrivateKeyHidingSetupType and the rsa type as the KeyType. The
   Certificate message is defined in Section 7.4.2 of [TLS].

   UTE securely stores d_1. Also, UTE stores e, N, and certificate. SP
   stores d_2, e, N, and the certificate. SP should securely store d_2.

5.2. Joint Private Key Operation for the RSA Key Exchange Algorithm

   When UTE received a ClientKeyExchange message in Section 7.4.7.1 of
   [TLS] which includes a EncryptedPreMasterSecret in Section 7.4.7.1 of
   [TLS], UTE computes m_1 =
   (EncryptedPreMasterSecret.pre_master_secret)^d_1 mod N, where d_1 is
   PPKU. Then, UTE generates a RSA_pre_computed message as following.

    struct {
         opaque m_1<1..2^16-1>
    } RSA_pre_computed;

   The EncryptedPreMasterSecret message is defined in Section 7.4.7.1 of
   [TSL] as following.

    struct {
     ProtocolVersion client_version;
     opaque random[46];
    } PreMasterSecret;

    struct {
      public-key-encrypted PreMasterSecret pre_master_secret;
    } EncryptedPreMasterSecret;

   UTE inserts the RSA_pre_computed message into a
   JointPrivateKeyOperation request message. UTE sends the
   JointPrivateKeyOperation request with the
   private_key_operation_request type as the
   JointPrivateKeyOperationProtocolType and the RSA type as the
   JointPrivateKeyOperationType.

   When SP receives the JointPrivateKeyOperation request which includes
   the RSA_pre_computed message, SP computes a PreMasterSecret = m_1^d_2
   mod N, where d_2 is PPKS. SP inserts the PreMasterSecret into a
   JointPrivateKeyOperation response message. SP sends the
   JointPrivateKeyOperation response with the
   private_key_operation_response type as the



Jung & Jung            Expires April 15, 2014                [Page 10]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


   JointPrivateKeyOperationProtocolType and the RSA type as the
   JointPrivateKeyOperationType.

   The procedure of the joint private key operation protocol for the RSA
   key exchange algorithm is as following.

   1. A TLS client and UTE start a TLS handshake Protocol.

   2. The client securely generates a random or pseudorandom premaster
      secret, PreMasterSecret.random.

   3. The client generates a ClientKeyExchange message in Section 7.4.3
      of [TLS] which includes the EncryptedPreMasterSecret.

   4. The client sends the ClientKeyExchange message to UTE.

   5. UTE generates a RSA_pre_computed message using d_1.

   6. UTE generates a JointPrivateKeyOperation request and send it to SP.

   7. SP generates a PreMasterSecret message and generates a
      JointPrivateKeyOperation response using the PreMasterSecret
      message.

   8. SP sends the JointPrivateKeyOperation response to UTE.

   9. UTE sends a ChangeCipherSpec message to the client.

   This mechanism and protocol may be extended for RSA_PSK defined in
   [TLSPSK]

6. Private Key Hiding Setup Protocol and Joint Private Key Operation
   Protocol for the DHE_RSA [TLS] Key Exchange Algorithm

   This section describes a private key hiding setup protocol and a
   joint private key operation protocol for the DHE_RSA key exchange
   algorithm where DHE represents Ephemeral Diffie-Hellman. RSA is used
   for signing DHE parameters. The connection between SP and UTE must be
   secure such as [TLS].

6.1. Private Key Hiding Setup Protocol for the DHE_RSA Key Exchange
   Algorithm

   SP generates RSA private keying material and public keying material
   as described in Section 4.1. Also, PPKU and PPKS are the same in
   Section 4.1. The RSA_setup message and the PrivateKeyHidingSetup
   message also are the same in Section 4.1.


Jung & Jung            Expires April 15, 2014                [Page 11]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


6.2. Joint Private Key Operation Protocol for the DHE_RSA Key Exchange
   Algorithm

   Before UTE sends a ServerKeyExchange in Section 7.4.3 of [TLS], UTE
   generates a ServerDHParams in Section 7.4.3 of [TLS]. UTE computes
   s_1 = H(signed_params)^d_1 mod N, where d_1 is PPKU. Finally UTE
   generates a DHE_RSA_pre_computed message and inserts the
   DHE_RSA_pre_computed message into a JointPrivateKeyOperation message.
   UTE sends the JointPrivateKeyOperation with the
   private_key_operation_request type as the
   JointPrivateKeyOperationProtocolType, and the DHE_RSA as the
   JointPrivateKeyOperationType.

    struct {
         opaque s_1<1..2^16-1>
    } DHE_RSA_pre_computed;

    struct {
         opaque ClientHello.random;
         opaque ServerHello.random;
         ServerDHParams params;
    } signed_params;

    struct {
          opaque dh_p<1..2^16-1>;
          opaque dh_g<1..2^16-1>;
          opaque dh_Ys<1..2^16-1>;
    } ServerDHParams

   When SP receives the JointPrivateKeyOperation request message, SP
   computes s = s_1^d_1 mod N and generates a DHE_RSA_computed message.
   SP inserts the DHE_RSA_computed message into a
   JointPrivateKeyOperation response message. SP sends the
   JointPrivateKeyOperation message with the
   private_key_operation_response type as the
   JointPrivateKeyOperationProtocolType and the DHE_RSA type as the
   JointPrivateKeyOperationType.

    struct {
         opaque s<1..2^16-1>
   } DHE_RSA_computed;

   The procedure of the joint private key operation protocol for the
   DHE_RSA key exchange algorithm is as following.

   1. A TLS client and UTE start a TLS handshake Protocol.



Jung & Jung            Expires April 15, 2014                [Page 12]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


   2. UTE generates the ServerDHParams message defined in Section 7.4.3
      of [TLS].

   3. UTE generates a DHE_RSA_pre_computed message and insert it into a
      JointPrivateKeyOperation request message. UTE sends the
      JointPrivateKeyOperation request message with the
      private_key_operation_request type and the DHE_RSA type to SP.

   4. SP generates a DHE_RSA_computed and inserts it into a
      JointPrivateKeyOperation response message. SP sends the
      JointPrivateKeyOperation response message with the
      private_key_operation_response type and the DHE_RSA type to UTE.

   5. UTE generates a ServerKeyExchange message using the
      DHE_RSA_computed message.

   6. UTE sends the ServerKeyExchange message to the client.

7. Private Key Hiding Setup Protocol and Joint Private Key Operation
   Protocol for the DHE_DSS [TLS] Key Exchange Algorithm

   This section describes a private key hiding setup protocol and a
   joint private key operation protocol for the DHE_DSS key exchange
   algorithm where DSS stands for digital signature Standard [DSS]. DSA
   [DSS] is used for signing DHE parameters with the hash algorithm. The
   connection between SP and UTE is secure such as [TLS].

7.1. Private Key Hiding Setup Protocol for the DHE_DSS Key Exchange
   Algorithm

   For setup, SP generates DSA private keying material and public keying
   material as following.

   p: a random or pseudorandom prime number where 2^(L-1) < p < 2^L for
   512 <=L<=1024 and L a multiple of 64.

   q: a prime divisor of (p-1), where 2^159 < q < 2^160.

   g = h^((p-1)/q) mod p, where h is any integer with 1 < h < (p-1) such
   that h^((p-1)/q) mod p > 1.

   x : a random or pseudorandom private key with 0 < x < q.

   y = g^x mod p.





Jung & Jung            Expires April 15, 2014                [Page 13]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


   SP then requests a certificate to a trusted Certificate Authority as
   the part of the X.509 protocol [PKIX]. Upon the certificate, SP
   generates a Piece of Private Key for UTE (PPKU) and a Piece of
   Private Key for SP (PPKS) as following.

   x = x_1 + x_2 mod q, where x_1 is a random or pseudorandom number
   with x_1 < q

   PPKU: x_1

   PPKS: x_2

   SP generates a DSS_setup message as following.

    struct {
        opaque x_1<1..2^16-1>;
        opaque p<1..2^16-1>;
        opaque q<1..2^16-1>;
        opaque g<1..2^16-1>;
        Certificate certificate;
    } DSS_setup;


   Then, SP inserts the DSS_setup message into a PrivateKeyHidingSetup
   request message. SP sends the PrivateKeyHidingSetup request message
   with the private_key_hiding_setup_request type as the
   PrivateKeyHidingSetupType and the dss type as KeyType. UTE responses
   a PrivateKeyHidingSetup response message with the
   private_key_hiding_setup_response type as the
   PrivateKeyHidingSetupType and the dss type for the KeyType.

   SP stores x_2, p, q, g, and the certificate. SP should securely store
   x_2. UTE securely stores x_2. Also, UTE stores p, q, g, and
   certificate.

7.2. Joint Private Key Operation Protocol for DHE_DSS Key Exchange
   Algorithm

   Before UTE sends the ServerKeyExchange in Section 7.4.3 of [TLS], UTE
   generates the ServerDHParams in Section 7.4.3 of [TLS]. UTE selects a
   random or pseudorandom value k in the interval [1, q-1]. Then UTE
   generates a DHE_DSS_pre_computed as following.

    struct {
        opaque s_1<1..2^16-1>;
        opaque r<1..2^16-1>;
        opaque k<1..2^16-1>;


Jung & Jung            Expires April 15, 2014                [Page 14]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


   } DHE_DSS_pre_computed;

   s_1 = (k^(-1)*(H(signed_params) + x_1*r)) mod q

   r = (g^k mod p) mod q

   x_1 is PPKU, H() is a secure one-way hash function, and the
   signed_params is defined in Section 6.1.

   Finally, UTE inserts the DHE_DSS_pre_computed into a
   JointPrivateKeyOperation request message. UTE sends the
   JointPrivateKeyOperation request message with the
   private_key_operation_request type as the
   JointPrivateKeyOperationProtocolType and the DHE_DSS type as the
   JointPrivateKeyOperationType.

   When SP receives the JointPrivateKeyOperation request, SP computes s
   = s_1 + k^(-1) * x_2 * r mod q and generates a DHE_DSS_computed
   message as following.

    struct {
         opaque s<1..2^16-1>
   } DHE_DSS_computed;

   SP inserts the DHE_DSS_computed message into a
   JointPrivateKeyOperation response message. SP sends the
   JointPrivateKeyOperation response message with the
   private_key_operation_response type as the
   JointPrivateKeyOperationProtocolType and the DHE_DSS type as the
   JointPrivateKeyOperationType.

   The procedure of the joint private key operation protocol for the
   DHE_DSS key exchange algorithm is as following.

   1. A TLS client and UTE start a TLS handshake Protocol.

   2. UTE generates a ServerDHParams message.

   3. UTE generates a DHE_DSS_pre_computed using x_1.

   4. UTE inserts the DHE_DSS_pre_computed into a
      JointPrivateKeyOperation request message. UTE sends the
      JointPrivateKeyOperation request to SP.

   5. SP computes s using x_2 and generates a DHE_DSS_computed message.




Jung & Jung            Expires April 15, 2014                [Page 15]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


   6. SP inserts the DHE_DSS_computed message into a
      JointPrivateKeyOperation response message and sends the
      JointPrivateKeyOperation resopnse message to UTE.

   7. UTE generates a ServerKeyExchange message using the
      DHE_DSS_computed message.

   8. UTE sends the ServerKeyExchange message to the client.

8. Private Key Hiding Setup Protocol and Joint Private Key Operation
   Protocol for the DH_RSA [TLS] and the DH_DSS [TLS] Key Exchange
   Algorithm

   This section describes a private key hiding setup protocol and a
   joint private key operation protocol for the DH_DSS and the DH_RSA
   key exchange algorithm. The connection between SP and UTE must be
   secure such as [TLS].

8.1. Private Key Hiding Setup Protocol for the DH_RSA and the DH_DSS Key
   Exchange Algorithm

   For setup, SP generates Diffie-Hellman private keying material and
   public keying material as following.

   dh_p : The prime modulus used for the Diffie-Hellman operation

   dh_g : The generator used for the Diffie-Hellman operation

   dh_X : The server's Diffie-Hellman private value

   dh_Ys : The server's Diffie-Hellman public value (dh_g^dh_X mod dh_p)

   SP then requests a certificate to a trusted Certificate Authority as
   the part of the X.509 protocol [PKIX]. Upon the certificate, SP
   generates a Piece of Private Key for UTE (PPKU) and a Piece of
   Private Key for SP (PPKS) as following.

   dh_X = x_1 * x_2 mod p-1, where x_1 is a random or pseudorandom
   number with x_1 < p-1 and GCD(x_1, p-1) = 1

   PPKU: x_1

   PPKS: x_2

   SP generates a DH_setup message as following.

    struct {


Jung & Jung            Expires April 15, 2014                [Page 16]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


        opaque x_1<1..2^16-1>;
        opaque dh_p<1..2^16-1>;
        opaque dh_g<1..2^16-1>;
        Certificate certificate;
   } DH_setup;

   SP inserts the DH_setup into a PrivateKeyHidingSetup request message.
   SP then sends the PrivateKeyHidingSetup request message with the
   private_key_hiding_setup_request type as the
   PrivateKeyHidingSetupType and the dh type for KeyType. UTE generates
   a PrivateKeyHidingSetup response message with the
   private_key_hiding_setup_response type as the
   PrivateKeyHidingSetupType and the dh type as the KeyType, and sends
   it to SP.

   SP stores x_2, dh_p, dh_g, and the certificate. SP should securely
   store x_2. UTE securely stores x_1. Also, UTE stores dh_p, dh_g, and
   certificate.

8.2. Joint Private Key Operation Protocol for the DH_RSA and the DH_DSS
   Key Exchange Algorithm

   After UTE receives a CertificateVerify message in Section 7.4.8 of
   [TLS], UTE computes k_1 = dh_Yc^x_1 mod p, where x_1 is PPKU. UTE
   generates a DH_pre_computed message as following.

    struct {
        opaque k_1<1..2^16-1>;
   } DH_pre_computed;

   UTE inserts the DH_pre_computed message into a
   JointPrivateKeyOperation request message. UTE sends the
   JointPrivateKeyOperation request message with the
   private_key_operation_request type as the
   JointPrivateKeyOperationProtocolType, and the DH_RSA or the DH_DSS
   type as the JointPrivateKeyOperationType.

   When SP receives the JointPrivateKeyOperation request, SP computes k
   = k_1^x_2 mod p, where x_2 is PPKS. SP generates a DH_computed
   message as following.

    struct {
         opaque k<1..2^16-1>
   } DH_computed;

   SP inserts the DH_computed into a JointPrivateKeyOperation response
   message. SP sends the JointPrivateKeyOperation response message with


Jung & Jung            Expires April 15, 2014                [Page 17]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


   the private_key_operation_response type as the
   JointPrivateKeyOperationProtocolType. Also, the
   JointPrivateKeyOperation response message is set with the DH_RSA type
   or the DH_DSS type as the JointPrivateKeyOperationType.

   The procedure of the joint private key operation protocol for the
   DH_RSA and the DH_DSS key exchange algorithm is as following.

   1. A TLS client and UTE start a TLS handshake Protocol.

   2. Upon the CertificateVerify message defined in Section 7.4.8 of
      [TLS], UTE computes a DH_pre_computed message and inserts it into
      a JointPrivateKeyOperation request message. SP sends the
      JointPrivateKeyOperation request message to SP.

   3. SP generates a DH_computed message and inserts it into a
      JointPrivateKeyOperation response message. SP sends in the
      JointPrivateKeyOperation response message to UTE.

   4. UTE sends the ChangeCipherSpec message in Section 7.1 of [TLS] to
      the client.

9. Private Key Hiding Setup Protocol and Joint Private Key Operation
   Protocol for the ECDHE_ECDSA [TLSECC] Key Exchange Algorithm

   This section describes a private key hiding setup protocol and a
   joint private key operation protocol for the DHE_ECDSA key exchange
   algorithm. The connection between SP and UTE must be secure such as
   [TLS].

9.1. Private Key Hiding Setup Protocol for the ECDHE_ECDSA Key Exchange
   Algorithm

   For setup, SP generates ECDSA private keying material and public
   keying material as following.

   d: a random or pseudorandom integer in the interval [1, n-1], where n
   is the order of the base point G; d is a private key

   Q = d X G: Q is the public key, where X is the elliptic curve point
   multiplication by a scalar

   SP then requests a certificate to a trusted Certificate Authority as
   the part of the X.509 protocol [PKIX]. Upon the certificate, SP
   generates a Piece of Private Key for UTE (PPKU) and a Piece of
   Private Key for SP (PPKS) as following.



Jung & Jung            Expires April 15, 2014                [Page 18]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


   d = d_1 + d_2 mod n, where d_1 is a random or pseudorandom number in
   the interval [1, n-1].

   PPKU: d_1

   PPKS: d_2

   SP generates a EC_setup as following.

    struct{
      opaque d_1<1..2^16-1>;
       ECParameters ecParam;
       Certificate certificate;
   } EC_setup;

   The ECParameters is defiend in Section 5.3 of [TLSECC].

   SP inserts the EC_setup into a PrivateKeyHidingSetup request message.
   SP then sends the PrivateKeyHidingSetup request message with the
   private_key_hiding_setup_request type as the
   PrivateKeyHidingSetupType and the ecdsa type as the KeyType. UTE
   sends a PrivateKeyHidingSetup response message with the
   private_key_hiding_setup_response type as the
   PrivateKeyHidingSetupType and the ecdsa type as the KeyType.

   SP stores d_2, the ECParameters, and the certificate. SP should
   securely store d_2. UTE securely stores d_1. Also, UTE stores ecParam
   and certificate.

9.2. Joint Private Key Operation Protocol for the ECDHE_ECDSA Key
   Exchange Algorithm

   Before UTE sends the ServerKeyExchange defined in Section 7.4.3 of
   [TLS], UTE generates a ServerECDHParams in Section 5.4 of [TLSECC].
   UTE selects a random or pseudorandom integer k in the interval [1, n-
   1]. Then UTE generates a ECDHE_ECDSA_pre_computed as following.

    struct {
        opaque k<1..2^16-1>;
        opaque r<1..2^16-1>;
        opaque s_1<1..2^16-1>;
   } ECDHE_ECDSA_pre_computed;

   r = x_1 mod n, where (x_1, y_1) = k X G





Jung & Jung            Expires April 15, 2014                [Page 19]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


   s_1 = k^(-1)*(e + r*d_1) mod n, where e= H(ClientHello.random +
   serverHello.random + ServerECDHParams), d_1 is PPKU, and H() is a
   cryptographically secure one-way hash function.

   UTE inserts the ECDHE_ECDSA_pre_computed into a
   JointPrivateKeyOperation request message. UTE sends the
   JointPrivateKeyOperation request message with the
   private_key_operation_request type as the
   JointPrivateKeyOperationProtocolType and the ECDHE_ECDSA type as the
   JointPrivateKeyOperationType.

   When SP receives the JointPrivateKeyOperation request, SP computes s
   = s_1 + k^(-1) * d_2 * r mod n and generates a ECDHE_ECDSA_computed
   message as following.

    struct {
         opaque s<1..2^16-1>
   } ECDHE_ECDSA_computed;

   SP sends a JointPrivateKeyOperation which includes the
   ECDHE_ECDSA_computed message with the private_key_operation_response
   type as the JointPrivateKeyOperationProtocolType, and the ECDHE_ECDSA
   as the JointPrivateKeyOperationType.

   The procedure of the joint private key operation protocol for the
   ECDHE_ECDSA key exchange algorithm is as following.

   1. A TLS client and UTE start a TLS handshake Protocol.

   2. Immediately after UTE sends a Server Certificate message in
      Section 7.4.2 of [TLS], UTE generates a ECDHE_ECDSA_pre_computed
      message.

   3. UTE inserts the ECDHE_ECDSA_pre_computed message into a
      JointPrivateKeyOperation request message. UTE sends the
      JointPrivateKeyOperation request message to SP.

   4. When SP receives the JointPrivateKeyOperation request message, SP
      generates a ECDHE_ECDSA_computed.

   5. SP inserts the ECDHE_ECDSA_computed into a
      JointPrivateKeyOperation response message. SP sends the
      JointPrivateKeyOperation response to UTE.

   6. UTE generates a ServerKeyExchange message in Section 4.3 of
      [TLSECC] using the ECDHE_ECDSA_computed and sends it to the client.



Jung & Jung            Expires April 15, 2014                [Page 20]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


10. Private Key Hiding Setup Protocol and Joint Private Key Operation
   Protocol for the ECDH_ECDSA [TLSECC] and the ECDH_RSA [TLSECC] Key
   Exchange Algorithm

   This section describes a private key hiding setup protocol and a
   joint private key operation protocol for the ECDH_ECDSA and the
   ECDH_RSA key exchange algorithm. The connection between SP and UTE
   must be secure such as [TLS].

10.1. Private Key Hiding Setup Protocol for the ECDH_ECDSA and the
   ECDH_RSA Key Exchange Algorithm

   SP generates ECDH private keying material and public keying material
   as described in Section 9.1. The EC_setup message is the same in
   Section 9.1 except PPKU and PPKS.

   d = d_1 * d_2 mod n, where d_1 is a random or pseudorandom number in
   the interval [1, n-1].

   PPKU: d_1

   PPKS: d_2

   The PrivateKeyHidingSetup request message and the response message
   are the same as Section 9.1 except the KeyType. The KeyType SHOULD be
   the ecdh.

10.2. Joint Private Key Operation Protocol for the ECDH_ECDSA and the
   ECDH_RSA Key Exchange Algorithm

   After UTE receives a CertificateVerify message in Section 7.4.8 of
   [TLS], UTE computes (x_1, y_1) = ecdh_Yc X d_1, where ecdh_Yc is the
   client's public ECDH value. UTE generates a ECDH_pre_computed message
   as following.

    struct {
        opaque x_1<1..2^8-1>;
        opaque y_1<1..2^8-1>;
   } ECDH_pre_computed;

   UTE inserts the ECDH_pre_computed into a JointPrivateKeyOperation
   request message. UTE sends the JointPrivateKeyOperation with the
   private_key_operation_request type as the
   JointPrivateKeyOperationProtocolType. Also, the
   JointPrivateKeyOperationType should be the ECDH_RSA or the ECDH_ECDSA.




Jung & Jung            Expires April 15, 2014                [Page 21]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


   When SP receives the JointPrivateKeyOperation request, SP computes (x,
   y) = (x_1, y_1) X d_2, where d_2 is PPKS. SP generates a
   ECDH_computed message as following.

    struct {
        opaque x<1..2^8-1>;
        opaque y<1..2^8-1>;
   } ECDH_computed;

   SP inserts the ECDH_computed into a JointPrivateKeyOperation response
   message. SP sends the JointPrivateKeyOperation response with the
   private_key_operation_response type as the
   JointPrivateKeyOperationProtocolType and the ECDH_RSA or the
   ECDH_ECDSA as the JointPrivateKeyOperationType.

   The procedure of the joint private key operation protocol for the
   ECDH_ECDSA and the ECDH_RSA key exchange algorithm is as following.

   1. A TLS client and UTE start a TLS handshake Protocol.

   2. When UTE receives a CertificateVerify message, UTE generates a
      ECDH_pre_computed message.

   3. UTE inserts the ECDH_pre_computed message into a
      JointPrivateKeyOperation request message.

   4. UTE sends the JointPrivateKeyOperation request to SP

   5. SP generates a ECDH_computed message and inserts the ECDH_computed
      message into a JointPrivateKeyOperation response message.

   6. SP sends the JointPrivateKeyOperation response to UTE.

   7. UTE sends a ChangeCipherSpec message in Section 7.1 of [TLS] to
      the client

11. Security Considerations

   Security issues are discussed throughout this memo.

   The security considerations are related to the security consideration
   of [TLS] and [TLSECC]. The security considerations in [TLS] and
   [TLSECC] should be applied properly.

12. IANA Considerations

   This document includes request to IANA.


Jung & Jung            Expires April 15, 2014                [Page 22]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


13. References

13.1. Normative References

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

   [DSS]    NIST FIPS PUB 186-2, "Digital Signature Standard", National
             Institute of Standards and Technology, U.S. Department of
             Commerce, 2000.

   [RSA]    R. Rivest, A. Shamir, and L. M. Adleman, "A Method for
             Obtaining Digital Signatures and Public-Key Cryptosystems",
             Communications of the ACM, v. 21, n. 2, Feb 1978, pp. 120-
             126.

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

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

13.2. Informative References

   [DSS-3]  NIST FIPS PUB 186-3, "Digital Signature Standard (DSS)",
             National Institute of Standards and Technology, U.S.
             Department of Commerce, June 2009.

   [PKIX]   Housley, R., Polk, W., Ford, W., and D. Solo, "Internet
             X.509 Public Key Infrastructure Certificate and Certificate
             Revocation List (CRL) Profile", RFC 3280, April 2002.

14. Acknowledgments














Jung & Jung            Expires April 15, 2014                [Page 23]

Internet-Draft       Private Key Hiding for TLS       October 15, 2013


Authors' Addresses

   Seung Wook Jung
   Soongsil University
   511, Sangdo-Dong, Dongjak-Gu
   Seoul, 156-743, Korea

   Email: seungwookj@ssu.ac.kr


   Souhwan Jung
   Soongsil University
   511, Sangdo-Dong, Dongjak-Gu
   Seoul, 156-743, Korea

   Email: souhwanj@ssu.ac.kr
































Jung & Jung            Expires April 15, 2014                [Page 24]