Re: [Lurk] lurk -- February 2018 draft; comments

Daniel Migault <> Sat, 26 May 2018 00:08 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 6319112DA3E for <>; Fri, 25 May 2018 17:08:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.403
X-Spam-Status: No, score=-1.403 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.248, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.248, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=no autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id NRVNqHG91_bz for <>; Fri, 25 May 2018 17:08:10 -0700 (PDT)
Received: from ( [IPv6:2a00:1450:400c:c0c::229]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id AFB09127076 for <>; Fri, 25 May 2018 17:08:09 -0700 (PDT)
Received: by with SMTP id u12-v6so11739389wrn.8 for <>; Fri, 25 May 2018 17:08:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=O0fX75QUB6EHlhLEnBOXQJk4e3ZgmMX1MgCsSaD6dBA=; b=tm2bURTesKCWZzvxFM0mJgsm7K48AA0S38JcthVcrOXLlZQcJO+8d/4IMjavyp/rmt tlIF106/nt87lWctigCOBj93iF8P9pkpCTKbxWqCvPaXH3Om7M7WlQx9MsAlciBRoukp ejmCBwe8k5K16xCTmCR30F2Z3j6atVGAaEAUojrOsofph3a+It+lsYzDodM2Ptl4k3aE wPUqSMedJ8n8F2ouBCV9IytBpEstISPZd+Xb8oDyG8C+9MosdrZZboHaorr808bdPee6 57nZ/MUhQFpSwjGDtR3HVQLF1zamhuYt33IbdepnxmLmI1dHwIFtk7r9fuDaULBZjl0n Dgeg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=O0fX75QUB6EHlhLEnBOXQJk4e3ZgmMX1MgCsSaD6dBA=; b=aRbqU0l08ftNb8lZUlwTAvNEUuDzp8f6EDqSQ+Ap8eFbYTQR5PCy3KMaqlC4PfSn7m w743RTZYisstcUl3RLxux/v0Gd5Pryz+58jSJrV5aAjD8+JmNmaLrtoaCCv/CPfDEZ5h CQriI7JK4bDui0jiHgt0L2gRMemnpQIPTE9OwLosVdE+1keD6yNjiFZfzhh0XpPhAi9w 5qmri+vUTXaePENf06P86S1gipk3F4KX8VxCTIOQ5Ih4O7d4JHm7hhm6r0iEEODEtQW0 ZChLap1UbfoYhRzqL2kUEZPunN7MusNr/ULFOlVwO/HlDklgF/ERzfMUtkKit71ro5O6 K2tA==
X-Gm-Message-State: ALKqPwcv/Nw+whNF2SPkaHlNUWd/yAbaR8Nr9OTpJNs9/TLrL5K0SqIa 3AWWjJp9Rlib9dBPOFAKCBQIWK2/XXPbE+rDM8U5ZA==
X-Google-Smtp-Source: ADUXVKIxk3in4PorgtIrh8Ukp4xC5ZAPvwm1HryCw1awE9YsxuaXUXsbyjD3TwpQSigdOY0LyfvAL4mkFxDpBBl8YOQ=
X-Received: by 2002:a19:4dc5:: with SMTP id a188-v6mr2535163lfb.99.1527293287849; Fri, 25 May 2018 17:08:07 -0700 (PDT)
MIME-Version: 1.0
Received: by 2002:a2e:510a:0:0:0:0:0 with HTTP; Fri, 25 May 2018 17:08:06 -0700 (PDT)
In-Reply-To: <>
References: <>
From: Daniel Migault <>
Date: Fri, 25 May 2018 20:08:06 -0400
X-Google-Sender-Auth: zvYSNxC8wadQow8eGWEQS_LGs_E
Message-ID: <>
Cc: LURK BoF <>
Content-Type: multipart/alternative; boundary="000000000000e3e47b056d10ad95"
Archived-At: <>
Subject: Re: [Lurk] lurk -- February 2018 draft; comments
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Limited Use of Remote Keys <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Sat, 26 May 2018 00:08:14 -0000

Hi Ioana,

Thanks for the feed back. I agree with you that the document should be
focused on TLS 1.2. This is especially true as the designation of the
extension is "tls12". We are also planning to design an extension for TLS
1.3 by next IETF in Montreal.

My understanding of step 1 and 2 is to prevent a passive attacker to send a
request to the key server. The key server is bound to a specific TLS
handshake, by providing an random nonce involved in the handshake (and
checking that random nonce has effectively been used in the exchange). More
specifically, a recorded TLS handshake can only be replayed if the nonce
provided by the key server matches the recorded one.

The two drawback I see with this proposed mechanism are that it requires
two interactions with the key server ( one to send the ServerHello, and one
to retrieve the keys). Then, the handshake_message as well as the Finished
message needs to be send to the key server. The advantage is on the other
hand an explicit binding to a TLS handshake.

The current protocol prevents an exchange to be replayed by generating the
server_random as the output of a hash function. server_random = hash( M )
and the operations performed by the edge server as well as by the key
server. A passive attacker would observed server_random but could not
reverse M. In addition, the server_random carry the time and the key server
does not respond when the server_random is out of a windows. Note that this
latest time control may also be performed in your case.)

I believe that the two mechanisms achieve the same goal with a different
perspective. Explicit biding, versus unability to replay a query based on
cryptographic hash function. While the mechanism is not described in the
appendix, I am wondering if you see any reason to change the mechanism.
That said agree that the appendix should be clarified and updated.

Regarding 3) we effectively prove the master secret. This provides session
resumption for efficiency reasons.

Regarding extended master, the current design does not prevent anti replay
mechanism as the edge server provides the hash of the session. In this
case, there is probably a trade off between perfect forward secrecy versus
efficiency.  I would be happy to know which direction we should take. pfs
would require sending the handshake messages to the key server so the key
server can generate the server_random and the session hash.

Thanks you for your feed backs!


On Thu, May 24, 2018 at 10:39 AM, <>

> Dear all,
> I’ve had a look at a draft of Lurk that Daniel Migault sent me a while
> back; it was  dated February 2018.
> Here come a mix of comments:
> 1. I like the aspect of termination of TLS be split into different
> services  (e.g., network + crypto); I think we should expand on this side.
> We should expand both because it’s a nice idea and because I’m a bit
> worried of weird DoS attacks where one service is left in limbo.
> 2. I would do away with TLS 1.1.
> 3. I would introduce a version for TLS 1.3.
> 4. Let us focus on annex A1 (Lurk/TLS 1.2. RSA mode)
> As you know there is this work: , "Content delivery over TLS: a
> cryptographic analysis of keyless SSL,” by K. Bhargavan, I. Boureanu, P. A.
> Fouque, C. Onete and B. Richard at *2017 IEEE European Symposium on
> Security and Privacy (EuroS&P)*, Paris, 2017, pp. 1-16.
> And an attack was shown on Cloudflare’s "Keyless SSL” when run in RSA mode.
> The attack rests on the fact that the client sends the “encrypted
> premaster secret” to the edge server who forwards this to the key server
> and the **answer the key-server gives back to the edge-server**.
> As per Annex A1,* it is not clear to me what does the key-server reply
> with, to the edge-server, in this step*. This we need to make clear.
> However, in this last step of the LURK handshake in TLS1.2. RSA-mode, the
> key-server should not *reply to the edge server with the premaster
> secret* .
> Such a reply would be an issue. Namely, if one edge server E1 becomes
> corrupt this is what it can be used to do.
> The attacker collects handshake data (which is over insecure channel) from
> one session —called session1-- between a client and an edge server E2; this
> collected data includes the  “encrypted premaster secret” of this session 1.
> Then, the attacker used the corrupted edge server E2 to query the
> key-server on this  “encrypted premaster secret” of session 1. The key
> server would reply back to the corrupted E2 with the premaster secret  from
> session1. The attacker who controls E2 and has the handshake data from
> session1 can now obtain the channel key for session1 and therefore decrypt
> the record-layer of  session1.
> In the work I mentioned above, there are *several solutions* to this and
> we can discuss them.
> *One solution I would suggest, and is very pertinent as a tightening of
> the design in LURK, is like so:*
> 1. the key-server is involved in the handshake at the beginning and
> generates a nonce N_S which is sent to the edge server who sends it further
> to the client, as to is essentially used in the ServerHello from the
> edge-server to the client.
> 2. the edge-server sends to the key server (in the step attacked above)
> not just the “encrypted premaster secret” but also the nonce of the client
> and the encrypted Finished message by the client. (In this way the
> key-server can find his nonce N_S inside the finished message and the
> attacker above is counteracted).
> 3. the key-server answers with *X, *where depending on what we wish for
> then we make *X* be different things. My top preference would be that * X
> *be the "channel keys + the Server-Finished message”. In this way, the
> edge-server cannot do session-resumption. This is therefore inefficient in
> practice. So, if we want session resumption, then we can make* X* be *pmk*
> or *msk*. Of course, we can link this to the options of the handshake..
>  (Also, there is the question as to whether we want RSA mode, but this is
> orthogonal to the above).
> 5. I did not look at the description TLS 1.2 DHE-mode.
> But there we need to be able to describe well the beginning of the
> handshake as the work I mentioned above also exposes some weird
> cross-protocol attacks.
> I.e.,  the edge-server is corrupted and makes the key-server sign a QUIC
> hash (with a long TTL inside) and then this edge-server can run for quite
> some time.
> So, we need to pay some attention to this.
> Speak soon.
> Best,
> Ioana Boureanu
> Dr. Ioana Boureanu, FHEA
> Lecturer in Secure Systems
> Department of Computer Science
> Surrey Centre for Cyber Security
> University of Surrey, Guildford, GU2 7XH
> Web:
> Linkedin:
> T.: +44 1483 683425
> _______________________________________________
> Lurk mailing list