There were comments on the security aspects of the approach.

Christian Huitema:
I am glad that we agree. Now, we have an issue regarding security. Nicolas Kuhn 
and his coauthors have pursued a design in which the server sends an encrypted 
blob to the client,
and then client echoes it in the new connection. This is largely based on 
concerns about potential attacks. Suppose the client said "I received at 1Gbps 
last time", when in fact
it can only absorb 10 Mbps. Some bad stuff might well be happening along the 
way. But then, Matt is looking at passing statistics from server to client, so 
the client can debug issues,
display statistics in the app, and potentially also reuse the statistics to 
inform server that the last connection had an RTT of 600 ms and a data-rate of 
100 Mbps, and maybe we should
shortcut initial congestion control in order to gain lots of time. How do we 
reconcile these multiple goals?

Kazuho Oku:
Loss recovery and CC states are properties maintained by an endpoint. The peer 
should not be given the right to change them (e.g., CWND, RTT).
Servers might offload the state to the client, but that state has to be 
encrypted and integrity-protected. NEW_TOKEN tokens cover this purpose.

[NK] Indeed. Depending on how the 0-RTT extension is set up, the client may not 
be able to tune the values or the server may remember the values for 
cross-checking the information. We can rely on the transport parameter 
integrity protection already described in 7.4.1:
The server can remember these transport parameters, or store an
integrity-protected copy of the values in the ticket and recover the
information when accepting 0-RTT data.


Nicolas and Emile

De : Ian Swett <[email protected]>
Envoyé : mardi 27 octobre 2020 14:39
À : Kazuho Oku <[email protected]>
Cc : Christian Huitema <[email protected]>; Kuhn Nicolas 
<[email protected]>; IETF QUIC WG <[email protected]>; Matt Joras 
<[email protected]>; Lucas Pardue <[email protected]>
Objet : Re: New Version Notification for draft-kuhn-quic-0rtt-bdp-07.txt

I agree with most of the points made by Kazuho and Christian.

In particular, I think relying on information the client repeats back to the 
server which is not encrypted by the server is potentially quite dangerous.  
Even with that, there's real potential for abuse, particularly when combined 
with 0-RTT, so if we're going to document something, I believe we need a lot of 
MUST NOTs to prevent that abuse.  Using the same token across many connections 
seems particularly concerning.

On Mon, Oct 26, 2020 at 10:30 PM Kazuho Oku 
<[email protected]<mailto:[email protected]>> wrote:


2020年10月27日(火) 11:14 Christian Huitema 
<[email protected]<mailto:[email protected]>>:


On 10/26/2020 6:20 PM, Lucas Pardue wrote:

On Tue, 27 Oct 2020, 01:12 Matt Joras, 
<[email protected]<mailto:[email protected]>> wrote:
Indeed, but as much as I love HTTP it's not the only protocol we have on top of 
QUIC. A consistency argument can also be made for having a connection-level 
metric tied to a connection-level semantic (i.e. a QUIC frame) rather than the 
transactional-level semantic (HTTP header).

I agree! A QUIC-level frame could be the most appropriate thing in this case. I 
think this will be an interesting space for innovation. And let's not forget 
all the other datagram-oriented protocols that have preceeded - so perhaps 
there will be some re-innovation.



I am glad that we agree. Now, we have an issue regarding security. Nicolas Kuhn 
and his coauthors have pursued a design in which the server sends an encrypted 
blob to the client, and then client echoes it in the new connection. This is 
largely based on concerns about potential attacks. Suppose the client said "I 
received at 1Gbps last time", when in fact it can only absorb 10 Mbps. Some bad 
stuff might well be happening along the way. But then, Matt is looking at 
passing statistics from server to client, so the client can debug issues, 
display statistics in the app, and potentially also reuse the statistics to 
inform server that the last connection had an RTT of 600 ms and a data-rate of 
100 Mbps, and maybe we should shortcut initial congestion control in order to 
gain lots of time. How do we reconcile these multiple goals?

I think that the answer is simple.

Loss recovery and CC states are properties maintained by an endpoint. The peer 
should not be given the right to change them (e.g., CWND, RTT). Servers might 
offload the state to the client, but that state has to be encrypted and 
integrity-protected. NEW_TOKEN tokens cover this purpose.

OTOH, servers can expose any information to the client regarding the quality of 
the connection. It is totally reasonable to give the client the bandwidth 
information that the server retains, so that the client could choose a good 
bandwidth. There are no security concerns providing such information, 
regardless of the medium being a QUIC frame or a HTTP header. And that's 
because it does not affect loss recovery or CC.


-- Christian Huitema


--
Kazuho Oku

Reply via email to