Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add initial threat model to security considerations #2925

Merged
merged 23 commits into from
Jan 22, 2020
Merged
Changes from 2 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
d3f4e35
Initial threat model appendix
ekinnear Jul 23, 2019
c22e24f
Fix typo
ekinnear Jul 23, 2019
9f3b421
Review comments
ekinnear Sep 3, 2019
3610a78
Move under security considerations
ekinnear Sep 3, 2019
2850205
Remove other "we" instances
ekinnear Sep 3, 2019
0ba5b02
Merge branch 'master' into ek/migration_threat_model
ekinnear Sep 4, 2019
5e14c63
Merge branch 'master' into ek/migration_threat_model
ekinnear Sep 22, 2019
510536d
Update with modified terminology and new text around active and passi…
ekinnear Sep 23, 2019
5f80f8b
Add reference and minor wording update.
ekinnear Sep 23, 2019
cb58100
Merge branch 'master' into ek/migration_threat_model
ekinnear Nov 16, 2019
bda13ed
Update with Gorry's comments
ekinnear Nov 16, 2019
b589f13
First cut at handshake guarantees
ekr Nov 16, 2019
b6ccaba
Text
ekr Nov 16, 2019
3dd7ec9
CID protection
ekr Nov 16, 2019
c2edd6a
Apply suggestions from code review
ekr Nov 16, 2019
a8a9373
Merge pull request #6 from ekr/migration_threat_model_todos
erickinnear Nov 16, 2019
5053e5b
Rewrap and typos
ekinnear Nov 16, 2019
70dac1d
Martin's review comments, starting with editorial nits
ekinnear Nov 16, 2019
e3860d0
Reorganize text, move definitions up, clean up some duplication
ekinnear Nov 16, 2019
8d2ed71
Add reference to handshake
ekinnear Nov 16, 2019
b7191cd
Merge branch 'master' into ek/migration_threat_model
ekinnear Jan 3, 2020
02d0fe8
Apply @MikeBishop's suggestions from code review
erickinnear Jan 3, 2020
5950556
The rest of @MikeBishop's suggestions, rewrapped
ekinnear Jan 3, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
171 changes: 171 additions & 0 deletions draft-ietf-quic-transport.md
Original file line number Diff line number Diff line change
Expand Up @@ -5753,13 +5753,184 @@ DecodePacketNumber(largest_pn, truncated_pn, pn_nbits):
return candidate_pn
~~~

# Overview of Security Properties {#security-properties}
erickinnear marked this conversation as resolved.
Show resolved Hide resolved

A complete security analysis of QUIC is outside the scope of this document. In
this appendix, we provide an informal description of the desired security
properties as an aid to implementors and to help guide protocol analysis.

We cover properties of the handshake, general transport, and migration
separately.
erickinnear marked this conversation as resolved.
Show resolved Hide resolved

## Handshake {#handshake-properties}
erickinnear marked this conversation as resolved.
Show resolved Hide resolved

TBD.

## Short Headers {#short-headers-properties}

TBD.

## Connection Migration {#migration-properties}

Connection Migration ({{migration}}) provides endpoints with the ability to
erickinnear marked this conversation as resolved.
Show resolved Hide resolved
transition between IP addresses and ports on multiple paths, using one path at a
time for sending non-probing frames. Path validation helps to establish
bidirectional connectivity with the peer over a new path and prevents source
erickinnear marked this conversation as resolved.
Show resolved Hide resolved
address spoofing from being used in a denial-of-service attack. Migration is
further restricted to be initiated only by QUIC clients.
erickinnear marked this conversation as resolved.
Show resolved Hide resolved

This section describes the intended security properties of connection migration
when under attack by the following attackers. These attackers all mount active
attacks, requiring injection of packets into the network, as described in
{{?RFC3552}}.

### On-Path Attacker

An on-path attacker is present between the QUIC client and server, and an
endpoint is required to send packets through this attacker to establish
connectivity on a given path.

An on-path attacker can:

- Inspect packets
- Modify unencrypted packet headers
erickinnear marked this conversation as resolved.
Show resolved Hide resolved
- Inject new packets
- Delay packets
- Drop packets
erickinnear marked this conversation as resolved.
Show resolved Hide resolved

An on-path attacker cannot:

- Modify encrypted packet payloads
erickinnear marked this conversation as resolved.
Show resolved Hide resolved

In the presence of an on-path attacker, QUIC aims to provide the following
properties.

1. An on-path attacker can interrupt a QUIC connection, causing it to fail if it
erickinnear marked this conversation as resolved.
Show resolved Hide resolved
cannot migrate to a new path that does not contain the attacker. This can be
achieved by dropping all packets, modifying them so that they fail to decrypt,
or other methods.

2. An on-path attacker can prevent migration to a new path for which the
attacker is also on-path by causing path validation to fail on the new path.

3. An on-path attacker cannot prevent a client from migrating to a path for
which the attacker is not on-path.

4. An on-path attacker can reduce the throughput of a connection by delaying
packets or dropping them.


### Off-Path Attacker

An off-path attacker is not directly on the path between the QUIC client and
server, but is able to obtain copies of all packets sent between the client and
erickinnear marked this conversation as resolved.
Show resolved Hide resolved
the server. It is also able to send copies of those packets to either endpoint.

An off-path attacker can:

- Inspect packets
- Inject new packets

An off-path attacker cannot:

- Modify any part of a packet
- Delay packets
- Drop packets

An off-path attacker can, however, modify packets that it has observed and
inject them back into the network, potentially with spoofed source and
destination addresses.

For the purposes of this discussion, we assume that an off-path attacker has the
ability to observe, modify, and re-inject a packet into the network that will
reach the destination endpoint prior to the arrival of the original packet
observed by the attacker. In other words, the attacker has the ability to
consistently "win" a race with the legitimate packets between the endpoints,
potentially causing the original packet to be ignored by the recipient.

We also assume that the attacker has the resources necessary to affect NAT
state, potentially both causing an endpoint to lose its NAT binding, and an
erickinnear marked this conversation as resolved.
Show resolved Hide resolved
attacker to obtain the same port for use with its traffic.

In the presence of an off-path attacker, QUIC aims to provide the following
properties.

1. An off-path attacker can race packets and attempt to become a "limited"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The word race is used a few times in this section, but I don't believe it's defined and I'm not sure it's clear to everyone what it means in this context?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's first use would seem to work well enough to be definitional. I'm happy with this as it is.

on-path attacker.

2. An off-path attacker can cause path validation to succeed for forwarded
packets with the source address listed as the off-path attacker as long as it
can provide improved connectivity between the client and the server.

3. An off-path attacker cannot cause a connection to close.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
3. An off-path attacker cannot cause a connection to close.
3. An off-path attacker cannot cause a connection to close once the handshake has completed.


4. An off-path attacker cannot cause migration to a new path to fail if it
cannot observe the new path.

5. An off-path attacker can become a limited on-path attacker during migration
to a new path for which it is also an off-path attacker.

6. An off-path attacker can become a limited on-path attacker by affecting
shared NAT state such that it sends packets to the server from the same IP
address and port that the client originally used.


### Limited On-Path Attacker

A limited on-path attacker is an off-path attacker that has offered improved
routing of packets by duplicating and forwarding original packets between the
server and the client, causing those packets to arrive before the original
copies such that the original packets are dropped by the destination endpoint.

A limited on-path attacker differs from an on-path attacker in that it is not on
the original path between endpoints, and therefore the original packets sent by
an endpoint are still reaching their destination. This means that a future
failure to route copied packets to the destination faster than their original
path will not prevent the original packets from reaching the destination.

A limited on-path attacker can:

- Inspect packets
- Inject new packets
- Modify unencrypted packet headers

A limited on-path attacker cannot:

- Delay packets beyond the original packet duration
- Drop packets
- Modify encrypted packet payloads

A limited on-path attacker can only delay packets up to the point that the
original packets arrive before the duplicate packets, meaning that it cannot
offer worse routing than the original path, only improved routing. If a limited
on-path attacker drops packets, the original copy will still arrive at the
destination endpoint.

In the presence of a limited on-path attacker, QUIC aims to provide the
following properties.

1. A limited on-path attacker cannot cause an active connection to close.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. A limited on-path attacker cannot cause an active connection to close.
1. A limited on-path attacker cannot cause an established connection to close.


2. A limited on-path attacker cannot cause an idle connection to close if the
client is first to resume activity.

3. A limited on-path attacker can cause an idle connection to be deemed lost if
the server is the first to resume activity.

Note that these guarantees are the same guarantees provided for any NAT, for the
same reasons.

# Change Log

> **RFC Editor's Note:** Please remove this section prior to publication of a
> final version of this document.

Issue and pull request numbers are listed with a leading octothorp.

## Since draft-ietf-quic-transport-22

- Added security properties appendix and migration threat model (#2143)

## Since draft-ietf-quic-transport-21

- Connection ID lengths are now one octet, but limited in version 1 to 20 octets
Expand Down