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

Remove PQ TLS 1.2 Support #4991

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open

Remove PQ TLS 1.2 Support #4991

wants to merge 5 commits into from

Conversation

alexw91
Copy link
Contributor

@alexw91 alexw91 commented Dec 30, 2024

Release Summary:

Removes draft support for post-quantum TLS 1.2 (draft-campagna-tls-bike-sike-hybrid) from s2n-tls. Support for post-quantum TLS 1.3 (draft-ietf-tls-hybrid-design) is kept.

Resolved issues:

None.

Description of changes:

Removes draft support for post-quantum TLS 1.2 (draft-campagna-tls-bike-sike-hybrid) from s2n-tls. Support for post-quantum TLS 1.3 (draft-ietf-tls-hybrid-design) is kept.

Call-outs:

  1. Removes PQ TLS 1.2 support and the TLS_ECDHE_KYBER_RSA_WITH_AES_256_GCM_SHA384 cipher entirely from s2n-tls.
  2. Older PQ TLS policies that should no longer be used have been deprecated.
  3. s2n_ecdhe_kyber_rsa_with_aes_256_gcm_sha384 was removed from all cipher preference lists. If this removal made the cipher preference list identical to an already existing cipher preference list, then the entire cipher preference list was deleted and security policies migrated to use the other already existing cipher preference list. Otherwise, if no equivalent cipher preference list existed then s2n_ecdhe_kyber_rsa_with_aes_256_gcm_sha384 was removed in-place (eg for cipher_suites_pq_tls_1_0_2021_05_24).
  4. All PQ TLS 1.2 tests have either been deleted or modified to support TLS 1.3, including Python and Rust bindings tests.
  5. The function s2n_connection_get_kem_name() is kept, but now hardcoded to always return NONE in all circumstances so as to not break customers.

Testing:

Remember:

  • Any change to the library source code should at least include unit tests.
  • Any change to the core stuffer or blob methods should include CBMC proofs.
  • Any change to the CI or tests should:
    1. prove that the test succeeds for good input
    2. prove that the test fails for bad input (eg, a test for memory leaks fails when a memory leak is committed)

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@@ -1000,6 +1000,34 @@ impl Connection {
}
}

pub fn kem_group_name(&self) -> Option<&str> {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Copy/Paste of kem_name function a few lines above, but with a call to s2n_connection_get_kem_group_name() instead of s2n_connection_get_kem_name().

Comment on lines +154 to +155
/* Ensure that PQ enabled Policies support TLS 1.3 since TLS 1.3 is now required for PQ support. */
EXPECT_TRUE(has_tls_13_cipher);
Copy link
Contributor Author

@alexw91 alexw91 Dec 30, 2024

Choose a reason for hiding this comment

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

Moved "TLS 1.3 + PQ checks" further down in the function so that this code has access to the has_tls_13_cipher variable, so that a check that requires TLS 1.3 support for all PQ policies could be added.

@alexw91 alexw91 marked this pull request as ready for review January 2, 2025 21:33
}

const struct s2n_security_policy *security_policy = NULL;

/* Test Deprecated Security Policies*/
Copy link
Contributor Author

Choose a reason for hiding this comment

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

New unit tests for deprecated security policies.

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