Subject: Questions regarding the handshake sequence

From: Magnus Westerlund <[email-masked]>
Date: Tue, 22 May 2018 11:30:56 +0200

Hi,

Reviewing the transport draft -11 I get a bit confused about what 
possible combination of packets type that can occur during the 
handshaking. Thus, I would appreciate some clarifications.

First a sequence with a HelloRetryRequest

C -> S: Initial PN=0, ClientHello

S-> C: Retry Packet PN=0, HelloRetryRequest, ACK (0)

C -> s: Initial PN=1, ClientHello

S -> C: Handshake Packet PN=0, ServerHello, ACK (0,1)

C -> S: ? PN=2, Client Finished, Data Frame, ACK (0)

So in this sequence, in what type of packet is the client sending its 
Client Finished message?

Secondly, In the Handshake packet, is the server using PN=0 again. Spec 
text appear to indicate that, but I get uncertain.

And I understand correctly this is also a valid sequence:

C -> S: Initial PN=0, ClientHello

S -> C: Handshake Packet PN=0, ServerHello, ACK (0)

C-> S: ? PN=1, Client Finished, Data frame, ACK(0)

Also here, it is unclear which packet type the client uses in its second 
message.

Cheers

Magnus Westerlund

----------------------------------------------------------------------
Network Architecture & Protocols, Ericsson Research
----------------------------------------------------------------------
Ericsson AB                 | Phone  +46 10 7148287
Torshamnsgatan 23           | Mobile +46 73 0949079
SE-164 80 Stockholm, Sweden | mailto: [email-masked]
----------------------------------------------------------------------

---

From: Martin Thomson <[email-masked]>
Date: Tue, 22 May 2018 20:26:53 +1000

Hmm, yes, that could be clearer.  Does this help?

https://github.com/quicwg/base-drafts/pull/1368
On Tue, May 22, 2018 at 7:31 PM Magnus Westerlund <

---

From: Magnus Westerlund <[email-masked]>
Date: Tue, 22 May 2018 13:39:27 +0200

Thanks,

Yes, that is clearer for that aspect.

Which I think leads to the next unclarity. Non-handshake packets are 
protected packets. And to my understanding there exists two types of 
these. Short packets and 0-RTT packets.  However, the initial paragraph 
in Section 4.5 is a bit confusing here:

    All QUIC packets are protected.  Packets that are protected with the
    static handshake keys or the 0-RTT keys are sent with long headers;
    all packets protected with 1-RTT keys are sent with short headers.
    The different packet types explicitly indicate the encryption level
    and therefore the keys that are used to remove packet protection.

This fails to make the distinction between the concept of the protected 
packet, i.e. a non handshake packet and the fact that yes all packets 
have some type of protection. And I do wonder if that first sentence is 
in fact wrong as Init packets don't really are protected in the same way 
as Protected Packets.

Cheers

Magnus

-- 

Magnus Westerlund