Skip to content

Set AES-GCM record confidentiality limits - #322

Open
42Pupusas wants to merge 2 commits into
RustCrypto:masterfrom
42Pupusas:set-aes-gcm-confidentiality-limits
Open

42Pupusas wants to merge 2 commits into
RustCrypto:masterfrom
42Pupusas:set-aes-gcm-confidentiality-limits

Conversation

@42Pupusas

Copy link
Copy Markdown

Every AES-GCM suite declared confidentiality_limit u64::MAX, which disables rustls' bound on how many records may be sealed with one key before the connection must be replaced.

This copies the record-level limits used by rustls' own ring and aws-lc-rs providers: 1 << 24 for every AES-GCM suite, TLS 1.2 and TLS 1.3 alike. The ChaCha20Poly1305 suites keep u64::MAX, matching both providers, which cite
draft-irtf-cfrg-aead-limits section 5.2.1 there.

A regression test pins the limits for the four suites exported from the crate root.

Every AES-GCM suite declared confidentiality_limit u64::MAX, which
disables rustls' bound on how many records may be sealed with one
key before the connection must be replaced.

This copies the record-level limits used by rustls' own ring and
aws-lc-rs providers: 1 << 24 for every AES-GCM suite, TLS 1.2 and
TLS 1.3 alike. (The 1 << 23 values in those providers belong to
their QUIC KeyBuilder blocks, a separate field for packet
protection, not the record limit.) The ChaCha20Poly1305 suites keep
u64::MAX, matching both providers, which cite
draft-irtf-cfrg-aead-limits section 5.2.1 there.

A regression test pins the limits for the four suites exported from
the crate root.
The new limit_tests module was declared before kx; rustfmt orders
module declarations alphabetically. cargo fmt --all -- --check is
clean now.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant