Subject: Re: [Lurk] lurk integration with openssl

From: Jesús Alberto Polo <[email-masked]>
Date: Wed, 23 May 2018 17:38:24 +0200

Hi,

A very early version of clurk will be ready very soon. So far, the ECDHE 
handshake is done (POO is missing though) and I’m finishing the RSA 
handshake (PFS is missing as well) based on the patch you shared lately.

I’ll share the GitHub link as soon as it is ready and also provide more 
details.

Best,

Jesús Alberto

On 2018-04-24 17:34, Daniel Migault wrote:
> Thanks for the feed back! Yes absolutely for ecdhe, the sig_and_hash
> is missing from the spec. I have also slightly changed the extended
> master structure by exchanging the session_hash and encrypted
> premaster. I expect to be able to update the draft by next week as
> well. On my python implementation I am using the following structures
> for ecdhe.
> 
> Yours,
> 
> Daniel
> 
> TLS12ECDHERequestPayload = Struct(
> 
>     Embedded(TLS12Base),
> 
>     "sig_and_hash" / SignatureAndHashAlgorithm,
> 
>     "ecdhe_params" / ServerECDHParams,
> 
>     "poo_params" / Struct(
> 
>         "poo_prf" / Default( POOPRF, "null" ),
> 
>         "rG" / IfThenElse( this.poo_prf == 'null',
> 
>              Pass,
> 
>              Switch( this.ecdhe_params.curve_param.curve,
> 
>                 {
> 
>                 "secp256r1" : UncompressedPointRepresentation_256,
> 
>                 "secp384r1" : UncompressedPointRepresentation_384,
> 
>                 "secp512r1" : UncompressedPointRepresentation_512
> 
>                }) ),
> 
>         "tG" / IfThenElse( this.poo_prf == 'null',
> 
>               Pass,
> 
>               Switch( this.ecdhe_params.curve_param.curve,
> 
>                   {
> 
>                   "secp256r1" : UncompressedPointRepresentation_256,
> 
>                   "secp384r1" : UncompressedPointRepresentation_384,
> 
>                   "secp512r1" : UncompressedPointRepresentation_512
> 
>                }) ),
> 
>     )
> 
> )
> 
> With
> 
> TLS12Base = Struct(
> 
>     "key_id" / KeyPairID ,
> 
>     "client_random" / Random,
> 
>     "server_random" / Random,
> 
>     "tls_version" /  ProtocolVersion,
> 
>     "prf" / PRFAlgorithm
> 
> )
> 
> I have also changed the structure of the extended master by
> interverting the session hash and the encrypted master to ease the
> parsing.
> 
> struct{
> 
>     KeyPairID key_id
> 
>     ProtocolVersion tls_version   // see RFC5246 section 6.2.1
> 
>     PRFAlgorithm prf              // see RFC5246 section 6.1
> 
>     opaque session_hash<2...2^16-2>
> 
>     EncryptedPreMasterSecret  pre_master
> 
>                                   // see RFC5246 section 7.4.7.1
> 
> }TLS12ExtendedMasterRSARequestPayload;
> 
>         ]]></artwork>
> 
> FROM: Jesús Alberto Polo [mailto:[email-masked]]
> SENT: Tuesday, April 24, 2018 11:11 AM
> TO: Dmitry Kravkov <[email-masked]>; Daniel Migault
> <[email-masked]>
> CC: LURK BoF <[email-masked]>
> SUBJECT: Re: [Lurk] lurk integration with openssl
> 
> Hi,
> 
> Thanks for the resources and the patch, it’s definitely easier to
> solve it the way you did in the hackathon.
> 
> I managed to integrate the basic functionality of LURK for ECDHE and
> I’m preparing some tests, I hope they’re done and the code cleaned
> up by the end of this week.
> 
> Regarding the TLS12ECDHERequestPayload [1], I think the _Signature
> Algorithm_ field is missing (hash and signature), to indicate the
> chosen algorithms for the TLS connection.
> 
> Best regards,
> 
> Jesús Alberto
> 
> [1] https://tools.ietf.org/html/draft-mglt-lurk-tls12-00#section-7.1
> [1]
> 
> On 22 Apr 2018, 12:08 +0200, Dmitry Kravkov <[email-masked]>,
> wrote:
> 
>> Hi Jesus Alberto,
>> 
>> this is a patch for openssl used during 101 hackathon
>> 
>> It looks that direct calling for lurk library from statemachine will
>> be hard to push upstream, but adding more callbacks for master
>> secret calculation that nginx (or other client) registers for,  will
>> be easier to submit.
>> 
>> On Fri, Apr 20, 2018 at 9:26 PM Daniel Migault
>> <[email-masked]> wrote:
>> 
>>> Hi Jesus Alberto,
>>> 
>>> There have been some discussions regarding the integration of lurk
>>> with openssl during the hackathon, so feel free to share your
>>> concerns on the mailing list..
>>> 
>>> Here are some links you might find of interest:
>>> 
>>> 
>> 
> https://www.agwa.name/blog/post/protecting_the_openssl_private_key_in_a_separate_process
>>> 
>> https://www.agwa.name/blog/post/titus_isolation_techniques_continued
>>> 
>>> 
>>> Yours,
>>> 
>>> Daniel
>>> 
>>> _______________________________________________
>>> Lurk mailing list
>>> [email-masked]
>>> https://www.ietf.org/mailman/listinfo/lurk
>> 
>> --
>> 
>> DMITRY KRAVKOV
>> Qwilt | Work: +972-72-2221630 | Mobile: +972-54-4839923
>> 
>> dmitrykATqwilt.com
> 
> 
> Links:
> ------
> [1] https://tools.ietf.org/html/draft-mglt-lurk-tls12-00%23section-7.1

---

From: Daniel Migault <[email-masked]>
Date: Wed, 23 May 2018 13:19:18 -0400

Hi Jesus,

That is really great to have two implementations! In addition the c
implementation integrated with openssl would provide more accurate
measurements on how lurk impact the edge server. That is great news and I
wish interoperability tests may be done at the hackathon!

Yours,
Daniel