Subject: Re: [Lurk] lurk integration with openssl

From: Jesús Alberto Polo <[email-masked]>
Date: Thu, 28 Jun 2018 10:31:54 +0200

Hi,

I’ve uploaded an early-version of a C implementation of LURK with 
openssl and nginx to Github, concretely for the ECDHE handshake (I think 
RSA handshake was developed in the previous hackathon). Note that it’s 
still a prototype and some functionalities are missing or need to be 
improved (those are specified in the README and in the code).

The respository is available at https://github.com/jesusalber1/clurk.

Best,

Jesús Alberto

On 2018-05-23 19:19, Daniel Migault wrote:
> 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
> 
> On Wed, May 23, 2018 at 11:38 AM, Jesús Alberto Polo
> <[email-masked]> wrote:
> 
>> 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]
>> [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
> [4]
> 
>>> 
>> https://www.agwa.name/blog/post/titus_isolation_techniques_continued
>> [3]
>> 
>>> Yours,
>>> 
>>> Daniel
>>> 
>>> _______________________________________________
>>> Lurk mailing list
>>> [email-masked]
>>> https://www.ietf.org/mailman/listinfo/lurk [2]
>> 
>> --
>> 
>> 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
> [5]
> 
> _______________________________________________
> Lurk mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/lurk [2]
> 
> 
> 
> Links:
> ------
> [1] https://tools.ietf.org/html/draft-mglt-lurk-tls12-00#section-7.1
> [2] https://www.ietf.org/mailman/listinfo/lurk
> [3] 
> https://www.agwa.name/blog/post/titus_isolation_techniques_continued
> [4]
> https://www.agwa.name/blog/post/protecting_the_openssl_private_key_in_a_separate_process
> [5] https://tools.ietf.org/html/draft-mglt-lurk-tls12-00%23section-7.1

---

From: Daniel Migault <[email-masked]>
Date: Thu, 28 Jun 2018 09:14:38 -0400

Thanks for sharing your implementation. If there are other implementation
please share them on the list!
Yours,
Daniel

On Thu, Jun 28, 2018 at 4:31 AM, Jesús Alberto Polo <[email-masked]>
wrote:

> Hi,
>
> I’ve uploaded an early-version of a C implementation of LURK with openssl
> and nginx to Github, concretely for the ECDHE handshake (I think RSA
> handshake was developed in the previous hackathon). Note that it’s still a
> prototype and some functionalities are missing or need to be improved
> (those are specified in the README and in the code).
>
>> [3] https://www.agwa.name/blog/post/titus_isolation_techniques_continued
>> [4]