Re: Stream0 Design Team Proposal

Jana Iyengar <jri.ietf@gmail.com> Wed, 23 May 2018 18:46 UTC

Return-Path: <jri.ietf@gmail.com>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1DD48129C56 for <quic@ietfa.amsl.com>; Wed, 23 May 2018 11:46:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level:
X-Spam-Status: No, score=-2.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id NHoQyJ3O0FtH for <quic@ietfa.amsl.com>; Wed, 23 May 2018 11:46:12 -0700 (PDT)
Received: from mail-io0-x234.google.com (mail-io0-x234.google.com [IPv6:2607:f8b0:4001:c06::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 91508128959 for <quic@ietf.org>; Wed, 23 May 2018 11:46:12 -0700 (PDT)
Received: by mail-io0-x234.google.com with SMTP id z4-v6so24010870iof.5 for <quic@ietf.org>; Wed, 23 May 2018 11:46:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=GoyCUCNSFQx6Z/KuX8TFaJwCAqil/oW6zoLTvtTVhhM=; b=Cn4FqbMRyFqRCuRBKcCGH3oy5vEdd2YIG7UgfwdMjcN/egx7Q6Ove+c1wiNvotc6hd ZOaqFNLKSmH68iZn8FKMP41TNZnRF11zJkEJj0V0oHlfAyx1H0joYLV1lcfMVLbn0q6W 9vgtresVajU3uFeSQ745Y88o8zwrixU/R6w0jKtQAc6VsZKZv8v5HRRfER/c88xdw5oL YRAFM2PxnoCmHatlJ6mxkbPwAptCG18z+6aq3SKL5CIHipUfGkWfG9nJ75dEQrL9wZKt iT1Azfk8RLs3+UfF5xv2yGX9kSfLHOnKURDXdKZYSLp3gMiAq9QK2RG9p2YApybXhmyb +b+g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=GoyCUCNSFQx6Z/KuX8TFaJwCAqil/oW6zoLTvtTVhhM=; b=Ua8sj79kI+h82DWo6Hp7nkrWcJGCG7QBgtAHG4kXYSF8mQY9pz3Plshu+5dru/HzjT IcDBF7yC1oZHL3l6TnHyB+Pwh7Gh49BUE2G0fgrUp3U6Nz1iBXs75FBRx2MVYL0eljAX TymCPOBmNQ+S2/EGqH2juT07fsVK+eV5CC2sCrOVtjuH73mVvUfbhaLYT6LucGFxLafN 8XbKbhx9g3CND0NFJNXFQaN18kXPymvCLDKqj3tDiNgcCcc4tJ7WbT2Ouwi4Ju5N2Ubt DEPnwY7r1B2kxlUvygdVUxtBdkVwkbDLuwJd9BPySud4Epk7bxv3C+hUJ3RPgcxIoKvb vICg==
X-Gm-Message-State: ALKqPwdF1YnR+WW4ze5oh/+IbOJAsHiLb9vk5jzsI+99sw9LwL4VxJ6c 3vuaRevEstAWwteuih+WDuEmB1NsPYVLCsOkpOk=
X-Google-Smtp-Source: AB8JxZoK5nlvSOYZoHOwKI+COA0uarAFYq4/lKOXp7q7Un99iUaW373bdkc0u0CbniSIUe67xda/mws6UtOXgaVOwII=
X-Received: by 2002:a6b:c083:: with SMTP id q125-v6mr3619249iof.42.1527101171654; Wed, 23 May 2018 11:46:11 -0700 (PDT)
MIME-Version: 1.0
Received: by 2002:a4f:27d4:0:0:0:0:0 with HTTP; Wed, 23 May 2018 11:46:11 -0700 (PDT)
In-Reply-To: <CANatvzwC9ueFVjgg_hPsNkz1Wu4qYjKiWhzyj+UVnSby177Ehg@mail.gmail.com>
References: <CAKcm_gM39_x+==WwYfb5qeiqB_qxdAt0ow69V+s_Jny3Ek_hDw@mail.gmail.com> <CANatvzzS+T4HcddCemKF7bb1BmACFp=R4n+YMWkq7tnZaUXw4w@mail.gmail.com> <CACpbDcddWz_i5GoNWYfDAdWKcX0_gOMiKk=ORVABGPE8+7c8Vw@mail.gmail.com> <CANatvzwC9ueFVjgg_hPsNkz1Wu4qYjKiWhzyj+UVnSby177Ehg@mail.gmail.com>
From: Jana Iyengar <jri.ietf@gmail.com>
Date: Wed, 23 May 2018 11:46:11 -0700
Message-ID: <CACpbDcfPBot2k+JyU2x+vKG-9NizOGTHQHbTzLT6f76uAa2r8A@mail.gmail.com>
Subject: Re: Stream0 Design Team Proposal
To: Kazuho Oku <kazuhooku@gmail.com>
Cc: Ian Swett <ianswett=40google.com@dmarc.ietf.org>, Eric Rescorla <ekr@mozilla.com>, IETF QUIC WG <quic@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000df63d6056ce3f22c"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/YVZeVAZMXgWFjF8zh1xTPCXJOc8>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 23 May 2018 18:46:16 -0000

>
> That's correct. Considering the fact that the handshake flows are
> never closed, we could do something like below to preserve some more,
> by swapping the bits used for offset and fin.
>
> 0x10-0x17: STREAM frame
> 0x18-0x1B: CRYPTO_HS frame
>
> if (0x10 <= type && type <= 0x1c) {
>     if (type <= 0x18) {
>         streamID = varint_consume(frame);
>         if (type & 0x04)
>             fin = 1;
>     }
>     if (type & 0x02)
>         length = varint_consume(frame);
>     if (type & 0x01)
>         offset = varint_consume(frame);
> }
>

That works as well. Though we'd have exhausted 1/8ths of the frame type
space, so I don't care much about saving bits here.

A thought occurs to me: a CRYPTO_HS frame with the fin bit set can be used
to indicate that the handshake is done.This could be used as a signal (aka
HANDSHAKE_DONE) to solve Marten's problem of a client rtxing a CFIN. Of
course, this would mean that this particular CRYPTO_HS frame would be
encrypted with a 1-RTT key... which *I think* is fine. What do you think?


> >
> > On Tue, May 22, 2018 at 9:57 PM, Kazuho Oku <kazuhooku@gmail.com> wrote:
> >>
> >> FWIW, I am happy to tell you that I have a working PoC code for the
> >> proposed approach.
> >>
> >> On the QUIC side, I saw 2% (124 lines) increase in code size (more on
> >> that below). On the TLS side, I also saw 2% (175 lines) increase.
> >> However please look at the code size change especially on the QUIC
> >> side with grain of salt, as it is just a PoC.
> >>
> >> As expected, the key and encryption-level management on the QUIC side
> >> became very clean. Following are some of the design decisions I made
> >> as well as the outcomes:
> >>
> >> * All the interaction between picotls and quicly are accompanied by
> >> "epoch". Handshake messages are attributed with their epochs so that
> >> they do not get protected by the wrong key, or so that octets received
> >> under an incorrect encryption context cannot be misused.
> >>
> >> * All the traffic keys are governed by quicly (managing some traffic
> >> keys in TLS while managing PNE key in QUIC seems messy).
> >>
> >> * The Initial key is setup by quicly, wheeras other traffic keys are
> >> installed by picotls by calling a callback named
> >> update_traffic_key_cb. The callback accepts and installs 6 keys in
> >> total: for three levels (i.e. 0-RTT, handshake, 1-RTT) in two
> >> directions (send-side and receive-side).
> >>
> >> * Three PN spaces have their own AEAD encryption key. Initial PN and
> >> Handshake PN spaces have one aead decryption key each. Application PN
> >> space has up to two decryption keys: either for 0-RTT and 1-RTT or for
> >> two 1-RTT keys during key update.
> >>
> >> It was a pain to have a dedicated frame encoding for CRYPTO_HS, even
> >> though we can reuse (and I reused) the retransmission and reassembly
> >> logic of QUIC streams for the handshake flows. About a half of the
> >> code size increase comes from that (the other half comes from the
> >> added abstraction for having two contexts for the handshake). I would
> >> prefer reusing the STREAM frame encoding for the handshake data. We
> >> could possibly use a different base offset (i.e. for CRYPTO_HS frames
> >> we could use 0b00011XXX, whereas the STREAM frames use 0b00010XXX), as
> >> well as omitting the Stream ID field.
> >>
> >> Overall, now that I have a PoC, I am more confident that the proposed
> >> approach is the correct path forward. It *simplifies* the QUIC stack
> >> at the same time giving us better security properties as well as
> >> fixing various issues in the current design (as discussed in the
> >> design doc).
> >>
> >>
> >> 2018-05-23 10:30 GMT+09:00 Ian Swett
> >> <ianswett=40google.com@dmarc.ietf.org>:
> >> > Dear QUIC WG,
> >> >
> >> >
> >> > On behalf of the Stream 0 Design Team, I am pleased to report that we
> >> > have
> >> > consensus on a proposed approach to share with the WG. The DT's
> proposal
> >> > will make QUIC and TLS work closer together and incorporates ideas
> from
> >> > DTLS, but it does not use the DTLS protocol itself.
> >> >
> >> >
> >> > The DT believes this solves the important open Stream 0 issues. The
> >> > proposal
> >> > will be a bit more invasive in TLS, but we believe it is the right
> >> > long-term
> >> > direction and several TLS stacks (BoringSSL, PicoTLS, NSS, and Mint)
> are
> >> > willing and able to do the work necessary.. A number of stacks are
> >> > currently
> >> > working on implementations of this new approach, which we hope to have
> >> > in
> >> > time for the Interim meeting.
> >> >
> >> >
> >> > A design document describing the overall approach can be found at:
> >> >
> >> >
> >> > https://docs.google.com/document/d/1fRsJqPinJl8N3b-
> bflDRV6auojfJLkxddT93j6SwHY8/edit
> >> >
> >> >
> >> > A PR making the changes to the QUIC documents can be found at:
> >> >
> >> > https://github.com/quicwg/base-drafts/pull/1377
> >> >
> >> >
> >> > A few design details did not have clear consensus, but it was felt it
> >> > would
> >> > be better to discuss those in the wider WG than delay the design team.
> >> > A
> >> > consistent choice was made in the PR and these issues are mentioned in
> >> > Appendix B of the design doc.
> >> >
> >> >
> >> > As always, comments and questions welcome. That said, this is a big PR
> >> > and
> >> > we recognize that some editorial work is going to be needed before
> >> > merging.
> >> > In the interest of letting people follow along, and to keep github
> from
> >> > falling over, we ask people to keep discussion on the mailing list and
> >> > refrain from making PR comments.
> >> >
> >> >
> >> > See you in Kista!
> >> >
> >> >
> >> > Ian and Eric
> >>
> >>
> >>
> >> --
> >> Kazuho Oku
> >>
> >
>
>
>
> --
> Kazuho Oku
>