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

New confidentiality and integrity limits #3788

Closed
chris-wood opened this issue Jun 24, 2020 · 4 comments · Fixed by #3789
Closed

New confidentiality and integrity limits #3788

chris-wood opened this issue Jun 24, 2020 · 4 comments · Fixed by #3789
Labels
-tls design An issue that affects the design of the protocol; resolution requires consensus. has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list.

Comments

@chris-wood
Copy link
Contributor

chris-wood commented Jun 24, 2020

TL;DR: We should likely change per-key integrity limits to per-connection limits, with different margins.

Ongoing analysis efforts with Jean Paul Degabriele, Felix Günther, Kenny Paterson, and Martin Thomson revealed that QUIC should consider changing its confidentiality and integrity limits to account for multi-user security settings. As some background, the existing limits in draft-ietf-quic-tls apply to a single key. They are derived from several existing analyses in the literature, including [1], [2], [3], and [4]. Concretely, they seek to bound an attacker’s advantage in breaking the security guarantees of the AEAD algorithm for a specific key in question. When a Key Update occurs, endpoints receive a new key, which resets the encryption and forgery attempt counters for this new key.

This analysis fails to account for settings in which there are multiple, independent users of an AEAD algorithm, each with their own unique key. In these so-called “multi-user” settings, the attacker is allowed to perform some amount of offline work to help accelerate any attack on the AEAD algorithm. However, rather than target a single user’s specific key, they are tasked with distinguishing all traffic (under all keys) from an equal amount of random bits. In the public-key setting, Bellare et al. [5] prove that the success probability in attacking one of the many independent users (or keys) is bounded by the success probability of attacking a single user (or key) multiplied by the number of users present. (This result extends to the symmetric-key setting.)

Why is this important? Each key used throughout the duration of a single connection is effectively a distinct user. This means that the attacker’s probability of success against any key in a connection must be considered across all keys. Or, more precisely, the integrity limit counters MUST NOT reset across Key Updates. (Confidentiality limits still apply for individual keys, rather than across Key Updates, since there’s no functional difference in the analyses between tearing down a connection and performing an update. The analyses consider encryption as a function of plaintext blocks protected. Thus, users that need to send N blocks of data will send N blocks of data, whether it be in one connection with many keys, or many connections with a single key.)

Fortunately, this may not be much of a problem in practice. Hoang et al. [6] provide tight multi-user security bounds for AES-GCM with nonce randomization (as is used by TLS 1.3 and QUIC), and those bounds permit a higher amount than previously established for a single key. However, to the best of our knowledge, there are no multi-user security analyses giving tighter bounds than the generic analyses of AEAD_CHACHA20_POLY1305 and AEAD_AES_128_CCM. Thus, for the time being, we are stuck with the single-user integrity limits spread across Key Updates for these AEADs. Recognizing that this is a relatively new area for research, we are aiming to be quite conservative in setting limits, though we do allow an attacker a greater advantage in this multi-user attack than we would for a single connection. We may relax these limits if and when future analyses demonstrate that it’s safe to do so.

Note that this is not an ideal outcome. A “true” multi-user setting would consider all users, i.e., all keys in all connections used by all QUIC clients and servers, simultaneously. However, endpoints cannot obtain such a global view of the Internet, and thus cannot make realistic parameter choices for bounds based on the number of users. The compromise struck in this PR is to consider a narrow view of multi-user security, i.e., one in which the only “users” in a connection are those introduced by Key Update messages. (This is certainly a gap in the literature worth exploring in the future.) We also recommend setting very strong targets for attacker advantage for a single key, which we estimate will ensure that an attacker still has limited advantage in the multi-user setting.

Felix, Martin, and I did our best to document the basis for the analysis in this issue (and corresponding PR) in this CFRG I-D:

https://github.com/chris-wood/draft-wood-cfrg-aead-limits

We believe the foundations for this analysis are sound, though we are of course happy to learn if we made arithmetic mistakes. :-)

[1] https://eprint.iacr.org/2012/438.pdf
[2] https://eprint.iacr.org/2014/613.pdf
[3] https://link.springer.com/chapter/10.1007/3-540-36492-7_7
[4] https://www.isg.rhul.ac.uk/~kp/TLS-AEbounds.pdf
[5] https://cseweb.ucsd.edu/~mihir/papers/musu.pdf
[6] https://dl.acm.org/doi/10.1145/3243734.3243816

@larseggert
Copy link
Member

There has been some discussion on the list and #3789 indicates that this would be a design change. Is there support for this issue and #3789?

@chris-wood
Copy link
Contributor Author

For clarity, yes, this would be a design change.

@DavidSchinazi
Copy link
Contributor

IANAC (disclaimer: I Am Not A Cryptographer)

From my understanding of the issue, it seems that draft-29 does not provide the security guarantees it claims, when in the presence of a high number of received forged packets. In that instance, QUIC provides less security than TLS 1.3. I think that we should fix this issue in QUICv1, since we are chartered to produce a protocol that is at least as safe as TLS1.3.

PR #3789 seems like the right direction to me, especially if folks more knowledgeable in cryptography think it's correct.

@larseggert larseggert added the design An issue that affects the design of the protocol; resolution requires consensus. label Jul 20, 2020
@project-bot project-bot bot moved this from Triage to Design Issues in Late Stage Processing Jul 20, 2020
@janaiyengar janaiyengar added the proposal-ready An issue which has a proposal that is believed to be ready for a consensus call. label Jul 28, 2020
@project-bot project-bot bot moved this from Design Issues to Consensus Emerging in Late Stage Processing Jul 28, 2020
@LPardue
Copy link
Member

LPardue commented Jul 28, 2020

There seems to be emerging consensus for the associated PR, so this has been marked as proposal-ready

@larseggert larseggert moved this from Consensus Emerging to Consensus Call issued in Late Stage Processing Aug 21, 2020
@LPardue LPardue added call-issued An issue that the Chairs have issued a Consensus call for. has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list. and removed proposal-ready An issue which has a proposal that is believed to be ready for a consensus call. call-issued An issue that the Chairs have issued a Consensus call for. labels Aug 25, 2020
@project-bot project-bot bot moved this from Consensus Call issued to Consensus Declared in Late Stage Processing Sep 1, 2020
Late Stage Processing automation moved this from Consensus Declared to Issue Handled Sep 1, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-tls design An issue that affects the design of the protocol; resolution requires consensus. has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list.
Projects
Late Stage Processing
  
Issue Handled
Development

Successfully merging a pull request may close this issue.

5 participants