Subject: Re: [quicwg/base-drafts] Allow server to enforce port-Retry packet numbering (#3989)

From: Mike Bishop <[email-masked]>
Date: Tue, 11 Aug 2020 08:54:39 -0700

If it's not trivial, it's verging on trivial.  The "right" way to enforce this, as Dmitri notes, is to include the client's packet number in the Retry token.  Upon receipt of any token, if it is a retry token, the server checks whether the containing packet number is less than or equal to that stored in the token.  If it's not a retry token, no check is needed.  This is completely stateless, so if packets get reordered, nothing breaks.

As to the point of modifying Initial packets, that's true.  An attacker that can modify packets can always cause the handshake to fail; this is just another way.  To use this for disruption by injecting a packet, the attacker has to observe the client's Initial, the server's Retry packet, and then fabricate an Initial with a lower packet number.  Not a high bar, but an attacker that can observe the packets in both directions and inject packets can break things in many other ways, too.

I'm comfortable with MAY enforce (which I think is already implicit in a MUST NOT) at least, if people think one more integer encoded in the token is too high a bar for a stronger recommendation.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/3989#issuecomment-672037067