Coder Social home page Coder Social logo

kemtls / draft-celi-wiggers-tls-authkem Goto Github PK

View Code? Open in Web Editor NEW
3.0 6.0 1.0 412 KB

IETF drafts that describe AuthKEM and AuthKEM-PSK

Home Page: https://kemtls.org/draft-celi-wiggers-tls-authkem/

License: Other

Makefile 100.00%
hpke kemtls post-quantum-cryptography post-quantum-kem ssl tls tls13 transport-layer-security

draft-celi-wiggers-tls-authkem's Introduction

KEM-based Authentication for TLS 1.3

This is the working area for the individual Internet-Draft, "KEM-based Authentication for TLS 1.3".

AuthKEM

AuthKEM-PSK

Building the Draft

Formatted text and HTML versions of the draft can be built using make.

$ make

This requires that you have the necessary software installed. See the instructions.

Contributing

See the guidelines for contributions.

draft-celi-wiggers-tls-authkem's People

Contributors

thomwiggers avatar claucece avatar blipp avatar chris-wood avatar

Stargazers

Deirdre Connolly avatar Hannes Rantzsch avatar  avatar

Watchers

James Cloos avatar  avatar Hannes Rantzsch avatar  avatar Douglas Stebila avatar  avatar

Forkers

blipp

draft-celi-wiggers-tls-authkem's Issues

DTLS concerns

Ilari writes:

Reading the draft, it occurs to me that adapting it to work on DTLS (or unreliable CTLS) might require major and very challenging changes to DTLS 1.3. Especially with client authentication.

And 0-RTT client auth probably can not work in DTLS at all, since DTLS has no reliability for 0-RTT, unlike other handshake, which is reliable.

Fix Douglas Stebila last name

For some reason, Douglas Stebila's name got changed to 'Douglas Steblia' in the data tracker.
We should fix it in a new release of the draft.

Mixing signature-based with KEM-based authentication

We need to figure out what to do about the following scenarios:

Server uses AuthKEM, client wants to use signing algorithm

Probably fixable by mixing in '0' in the AuthKEM key schedule.

Server uses signing algorithm, client wants to use AuthKEM authentication

This might be tricky with the key schedule?

Should we keep using HPKE?

  • HPKE is used in ECH
  • But TLS key exchange uses "plain" KEMs so HPKE is extra effort.
  • LAMPS is putting "plain" KEM public keys in certificates; we'd have to import those into HPKE (which is certainly possible)
  • On the plus side, HPKE has nice context separation that we are currently using in the draft.

Restructure KEM API info input

The KEM API we use in AuthKEM makes use of HPKE's key derivation, which allows label inputs.

We currently concatenate the context info to the setup label, but we should instead put it into the export function. this avoids string concat.

AuthKEM traffic key computations mismatch

       [...]
SSc||0 * -> HKDF-Extract = Main Secret
            |
            +--> Derive-Secret(., "c ap traffic",
            |                  ClientHello...server Finished)
            |                  = client_application_traffic_secret_0
            |
            +--> Derive-Secret(., "s ap traffic",
            |                  ClientHello...server Finished)
            |                  = server_application_traffic_secret_0
[...]

The traffic keys are here shown to be derived from server Finished. This is not possible: we've not received/sent server's Finished yet when we already need to derive the client application traffic keys. The KEMTLS paper and analyses uses that these keys are derived from the complete transcript (unlike in TLS 1.3). Changing it to be derived from just client finished, I don't like so much.

Authentication concerns for the client authentication requests

Came up during the IETF meeting:

David Benjamin:

I'm concerned about authenticating the server's request to the client. Client certificate decisions can result in interesting side effects, like unlocking smartcards or prompting the user. Having something so visible not be authenticated is pretty scary.

Add `certificate_request_context` to KemEncapsulation message

For handshake authentication the value is hard-coded (null) but this value is used to distinguish post-handshake auth requests (of which there can be multiple existing in parallel because of reasons). It's probably good future-proofing if we don't omit this distinguisher.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.