Re: Stream0 Design Team Proposal

Kazuho Oku <kazuhooku@gmail.com> Wed, 23 May 2018 09:14 UTC

Return-Path: <kazuhooku@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 8C714126B6E for <quic@ietfa.amsl.com>; Wed, 23 May 2018 02:14:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 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, RCVD_IN_DNSWL_NONE=-0.0001, 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 awZ9PPY8SupJ for <quic@ietfa.amsl.com>; Wed, 23 May 2018 02:13:54 -0700 (PDT)
Received: from mail-pl0-x229.google.com (mail-pl0-x229.google.com [IPv6:2607:f8b0:400e:c01::229]) (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 0FE21124BAC for <quic@ietf.org>; Wed, 23 May 2018 02:13:54 -0700 (PDT)
Received: by mail-pl0-x229.google.com with SMTP id c41-v6so12638000plj.10 for <quic@ietf.org>; Wed, 23 May 2018 02:13:54 -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:content-transfer-encoding; bh=IZznODxbyoNMufn2ydRfjLwI/1YqcIPLHvRS0ghCxYY=; b=DBRHvno0GFswoC2qgGDvExPNqMuj7eIhl2E5NEBDZK9kIkh/5IrV2D5V0mxdqgxnJ0 sEEK9GW9qg+KFIReCyyporB+r/vc+/OO1SiNnh2SjTlDK5pY8+5NE2p9VCb0y55Te0lL d4DBVZiZGmK5s93mCSlQhJkLp+R2uCHJPuzEhFAQjv3M75WsODGYJyKrjUlCg72d51ki dvCvnOTMaP7ZRrYnQYjlwBIYULNyWjnzQMh3vBGYo2VEHqOGqtU888V03iItjG47H/ao ZyuiuSso9YZmXN0cx58QpLB4aA58Ule2H5biX9thz45YGVCPc9Lbk7JZ6mGbLMu5r8Mf b1WA==
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:content-transfer-encoding; bh=IZznODxbyoNMufn2ydRfjLwI/1YqcIPLHvRS0ghCxYY=; b=VLLgaHh0atLqgKm6xIQGfUfqv86JEoibY5CblrXLKj4xM9ZDuDWuel8RATZggSyuib 57/Panp69WUTk9dL0RH+FpO6hgznUQBZdHIH4OHekvVEabAe4yjp5oD6DgrxyPxgJQd7 /Nn12amtxw6iu9ZEOgrzi91iNqxo0QQ/m0HhN4bZCru6d80t/fFv+5ZzMQd/eVb1hLOa LxTUnNrYsOfP/DkjN9C4HFJYXfZGPAesfNdC47reHcAhvVQyOX+Gmj3u5Kv7Nj0s8iMi tlWwKbhtj7Mz0RqJnAXRKmKEXnLYEpyA/NCVAIdzFxGt9zijPAViLQaQ8wPOLn/JYf1I XfOA==
X-Gm-Message-State: ALKqPwfwXizNlVx2xfYGLYza7FfoX++Cx6ug1DAgovRC0SxNp94DTIWi ByOkiTCi0PM3UzU/a6CYxj/7/PKP9zCA3b9Yg3PRBQ==
X-Google-Smtp-Source: AB8JxZoWaFrpq447NDgRAb5fcPAUQU6EUrAxKQ+wJSKbRdZNNaCQOV3s8eRegn71+i4bAHxzP8B8YFG0DDPTrbhmwYw=
X-Received: by 2002:a17:902:343:: with SMTP id 61-v6mr2179560pld.39.1527066833403; Wed, 23 May 2018 02:13:53 -0700 (PDT)
MIME-Version: 1.0
Received: by 2002:a17:90a:1189:0:0:0:0 with HTTP; Wed, 23 May 2018 02:13:52 -0700 (PDT)
In-Reply-To: <046ee03d-a675-86b6-ed3b-4fa69288c42d@huitema.net>
References: <CAKcm_gM39_x+==WwYfb5qeiqB_qxdAt0ow69V+s_Jny3Ek_hDw@mail.gmail.com> <CABkgnnUB=jqwFzb2rjBHUFzOgu0hX0YUgaf5kW5ENNGKP+mGiA@mail.gmail.com> <MWHPR15MB1821F33BAB20815A38EB34A2B66B0@MWHPR15MB1821.namprd15.prod.outlook.com> <046ee03d-a675-86b6-ed3b-4fa69288c42d@huitema.net>
From: Kazuho Oku <kazuhooku@gmail.com>
Date: Wed, 23 May 2018 18:13:52 +0900
Message-ID: <CANatvzzn1VuAY2+cc8vpo75N3T=VH7YkSTjRC6uB4HATAFfW4Q@mail.gmail.com>
Subject: Re: Stream0 Design Team Proposal
To: Christian Huitema <huitema@huitema.net>
Cc: IETF QUIC WG <quic@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/67yjfn17CrDJAv2EAZSLlAyQy8M>
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 09:14:08 -0000

2018-05-23 14:29 GMT+09:00 Christian Huitema <huitema@huitema.net>:
> I like the proposal. In particular, I really like the encryption of
> handshake packets with the handshake key, as it does close a number of
> avenues for attacks. And I like that it solves the "ack promotion" issue
> that I was complaining against for some time. Turns out that in the current
> draft, it is very hard to contain that problem if you enable client auth.
>
>
> On the other hand, I agree with Martin that a lot of the additions to
> transmission recovery should be moved to separate PRs. I am not enthusiastic
> with the EMPTY ACK mechanism, or with the proposed "implicit
> acknowledgement" of a lower crypto stream by a higher level ack.

At the moment I do not have a strong opinion on the Empty ACK mechanism.

However, regarding how we close the Initial and Handshake contexts, my
preference goes to using implicit ACKs (i.e. use the successful
receipt of a packet that is protected under a higher level of
encryption key as the signal) rather than explicitly ACKing the last
flight of data.

As I see, there are two downsides in the Explicit ACKing approach.

* Explicit ACKing requires sending two additional packets during the
handshake, which means that we would have more AES operations plus
somewhere around 60 bytes of overhead on the wire.
* Explicit ACKing requires more signaling from the TLS stack. In case
of implicit ACKing, the TLS stack need to only provide the AEAD
contexts and the messages, whereas in case of explicit ACKing, the TLS
stack also needs to provide a signal indicating the end of the
transmission at each encryption level.

The downside of the implicit ACKing approach is that the server needs
to signal the termination of the Handshake context using a special
frame sent using a 1-RTT packet.

But even taking that into consideration, I think that implicit ACKing
is still easier to implement, considering the need for the additional
signal in the explicit ACK case that have been described above.


> In any
> case, starting as simple as possible would help having the first
> implementations and tests.
>
>
> On 5/22/2018 8:26 PM, Subodh Iyengar wrote:
>
> As an implementor of fizz, I support this design and am willing to implement
> this as well.
>
>
> While this is a change in the API that TLS classically exposes, I think this
> is the right tradeoff because it helps make things way more explicit which
> will prevent several other bugs from happening in the future.
>
>
> Subodh
>
> ________________________________
> From: QUIC <quic-bounces@ietf.org> on behalf of Martin Thomson
> <martin.thomson@gmail.com>
> Sent: Tuesday, May 22, 2018 8:00:40 PM
> To: Ian Swett
> Cc: ekr@mozilla.com; QUIC WG
> Subject: Re: Stream0 Design Team Proposal
>
> First of all, thanks to the design team for the work they have done.  I
> haven't digested everything yet, but I think that I have a good sense of
> the shape of the proposal.
>
> Overall, this looks like a workable design.  It's a lot more invasive of
> the cryptographic handshake implementation than I had thought people were
> willing to stomach originally.  But it's clear that we've run into problems
> with the current, more abstract API and this is a fairly natural way to
> split TLS.  I've spent a little time thinking about how this might be
> implemented and I think that it's not going to be *too* painful.  The proof
> will be in the pudding there though.
>
> In looking at the PR, I really appreciate seeing all the changes together.
> BTW, the link above points to the wrong PR, so be careful (it appears to
> have the same content, but that's not guaranteed).  The actual PR is here:
> https://github.com/quicwg/base-drafts/pull/1377
>
> I've pushed a branch to the main repo so that you can preview the entire
> document set:
> https://urldefense.proofpoint.com/v2/url?u=https-3A__quicwg.github.io_base-2Ddrafts_stream0_&d=DwIBaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=h3Ju9EBS7mHtwg-wAyN7fQ&m=_vGK3zTKFrMOkFihJnPntLYw1T0_NEMiHYSM0Q_u1JA&s=ususmtxI3BTaLlBWe_HkQUWRH4sBI0Cggj1oWZMBHak&e=
>
> It seems like there are some core changes here and a bunch of separable or
> at least secondary changes.  I'm sure that each one has its own
> justification, but that isn't always clear. The following changes seem like
> they are separable:
>
> * The use of separate packet number spaces
> * The Retry packet changes (and NEW_TOKEN)
> * EMPTY_ACK
> * The TLS extension for flow control
>
> Right now, some of these appear to be entirely gratuitous.  I'd like to get
> to the bottom of each before we continue.
>
> At a minimum, the PR we land first should include just the core changes.
> As you say, reviewing a monster PR like this will only make GitHub weep
> unicorns, but we might be able to cut this into smaller pieces.
>
> On Wed, May 23, 2018 at 11:31 AM Ian Swett <ianswett=
> 40google.com@dmarc.ietf.org> wrote:
>
>> 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://urldefense.proofpoint.com/v2/url?u=https-3A__docs.google.com_document_d_1fRsJqPinJl8N3b-2DbflDRV6auojfJLkxddT93j6SwHY8_edit&d=DwIBaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=h3Ju9EBS7mHtwg-wAyN7fQ&m=_vGK3zTKFrMOkFihJnPntLYw1T0_NEMiHYSM0Q_u1JA&s=jDNnz34hmWvLSQnHkSnYdihW-jG-0xZ-YYqKq30wVGg&e=
>
>
>> 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