Skip to content

Commit fa361f2

Browse files
committed
QUIC coverage in TLS
1 parent e03a8ad commit fa361f2

File tree

3 files changed

+62
-22
lines changed

3 files changed

+62
-22
lines changed

figures/QUIC-TLS.png

25.5 KB
Loading

figures/SecurityFigs.pptx

2.96 KB
Binary file not shown.

tls.rst

Lines changed: 62 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ protocol used by HTTP for another twenty-plus years.
385385

386386
Adding security to HTTP-over-TCP in the form of SSL and TLS further
387387
exacerbated performance issues, even as advancements to HTTP mitigated
388-
some of the orginal problems. As noted in the preceding section, it
388+
some of the original problems. As noted in the preceding section, it
389389
takes at least one round trip time to establish a secure TLS
390390
session. The relatively recent introduction of 0-RTT data reduces the
391391
latency before the first data can be sent; it also comes with some
@@ -397,7 +397,7 @@ to complete its 3-way handshake before the first TLS handshake
397397
message-which is just data as far as TCP is concerned-can be sent. So
398398
the sequence of events was:
399399

400-
- Client initiates TCP 3-way handshake to establish TCP session.
400+
- Client initiates TCP 3-way handshake to establish TCP session.
401401

402402
- TLS handshake establishes security parameters for client-server
403403
communication.
@@ -407,7 +407,7 @@ the sequence of events was:
407407
In other words, in the original TLS-over-TCP model it would take at
408408
least three RTTs to get a response to a single HTTPS request. In fact
409409
up until TLS 1.3 arrived it was at least four RTTs due to the use of
410-
two RTTs to complete the TLS handshake.
410+
two RTTs to complete the TLS handshake.
411411

412412
This is not the only problem with running HTTP over TCP. A reliable,
413413
ordered byte stream as provided by TCP isn't exactly the right model
@@ -431,9 +431,7 @@ In this section we will focus on how QUIC particularly improves the
431431
performance of TLS compared to running over TCP. QUIC is quite a
432432
comprehensive re-working of the transport layer that could fill its
433433
own book-indeed the set of RFCs that define it run to the hundreds of
434-
pages.
435-
436-
434+
pages.
437435

438436
QUIC originated at Google in 2012 and was subsequently developed as a
439437
proposed standard at the IETF. It has already seen a solid amount of
@@ -446,28 +444,67 @@ underlying transport.
446444

447445
The single most important change in QUIC from the perspective of TLS
448446
performance is that it doesn't treat the transport and security
449-
handshakes as two distinct layers. Insteady, QUIC has build a
447+
handshakes as two distinct layers. Instead, QUIC has build a
450448
cryptographic handshake based on TLS into the transport. This is
451-
illustrated by Figure foo.
449+
illustrated by Figure foo. As RFC 9001 puts it:
452450

453451

452+
*Rather than a strict layering, these two protocols cooperate: QUIC
453+
uses the TLS handshake; TLS uses the reliability, ordered delivery,
454+
and record layer provided by QUIC.*
454455

455456

456-
.. more to come
457-
458-
457+
.. _fig-quic-tls:
458+
.. figure:: figures/QUIC-TLS.png
459+
:width: 500px
460+
:align: center
459461

460-
QUIC is a most interesting development in the world of transport
461-
protocols. Many of the limitations of TCP have been known for decades,
462-
but QUIC represents one of the most successful efforts to date to
463-
stake out a different point in the design space. Because QUIC was
464-
inspired by experience with HTTP, TLS, and the Web—which arose long after
465-
TCP was well established in the Internet—it presents a fascinating
466-
case study in the unforeseen consequences of layered designs and in
467-
the evolution of the Internet. There is a lot more to it that we can
468-
cover here. The definitive reference for QUIC is RFC 9000, while a
469-
more readable overview of the protocol and its deployment is reported
470-
in this paper from SIGCOMM 2017.
462+
Protocol stacks compared. (a) HTTP over TLS over TCP. (b) HTTP and
463+
TLS Handshake over QUIC.
464+
465+
This rearrangement of layers takes a bit of work to understand. The
466+
central idea is that QUIC has the ability to provide encryption and
467+
authentication to the data it transmits once it has a set of keys to
468+
work with. So the TLS handshake operates pretty much as it did over
469+
TCP, but instead of wrapping up TLS handshake messages in the TLS
470+
record layer before sending them out over TCP, we can send the TLS
471+
handshake messages over QUIC directly. QUIC also provides the
472+
reliability, congestion control, etc. that TCP provides. Once the TLS
473+
handshake is complete, the keying material for the connection is
474+
passed to QUIC, which now is able to encrypt and authenticate the data
475+
that is sent by HTTP.
476+
477+
The most obvious practical impact of this is that the establishment of
478+
a QUIC connection takes place at the same time as the transmission of TLS
479+
handshake messages, rather than taking place prior to the TLS
480+
handshake as with TCP. By the time the TLS handshake completes, the
481+
two ends of the QUIC connection have all the state needed to transmit
482+
data such as HTTP messages. Furthermore, in the cases where 0-RTT data
483+
can be sent (because there are shared secrets cached from a
484+
previous connection), the first HTTP request can actually be sent at
485+
the same time as the client Hello message.
486+
487+
A final detail of note is that QUIC runs on top of UDP rather than
488+
directly over IP. The reason behind this is that there are plenty of
489+
middleboxes in the Internet that assume that the only acceptable
490+
transport protocols are TCP and UDP and block anything else. So while
491+
UDP doesn't add much in the way of useful functionality to QUIC, it
492+
was an expedient step to run QUIC over UDP to ease deployment
493+
of QUIC in the Internet.
494+
495+
QUIC is an interesting development in the world of transport protocols
496+
and not just for its impact on security. Many of the limitations of
497+
TCP have been known for decades, but QUIC represents one of the most
498+
successful efforts to date to stake out a different point in the
499+
design space. Because QUIC was inspired by experience with HTTP, TLS,
500+
and the Web—which arose long after TCP was well established in the
501+
Internet—it presents a fascinating case study in the unforeseen
502+
consequences of layered designs and in the evolution of the
503+
Internet. There is a lot more to it that we can cover here. The
504+
definitive reference for QUIC is RFC 9000, while RFC 9001 covers the
505+
relationship of TLS to QUIC. A more readable overview of the
506+
protocol's design and deployment appears in the following paper from
507+
SIGCOMM 2017.
471508

472509

473510
.. _reading_quic:
@@ -478,6 +515,9 @@ in this paper from SIGCOMM 2017.
478515
<https://research.google/pubs/the-quic-transport-protocol-design-and-internet-scale-deployment/>`__.
479516
SIGCOMM 2017.
480517

518+
We also covered the impact of QUIC on congestion control in our book
519+
on TCP Congestion Control.
520+
`TCP Congestion Control: A Systems Approach <https://tcpcc.systemsapproach.org>`__.
481521

482522

483523
6.5 A Systems View of TLS

0 commit comments

Comments
 (0)