[TLS 1.3] Post-Quantum Readiness via Hybrid Key Exchange#2983
[TLS 1.3] Post-Quantum Readiness via Hybrid Key Exchange#2983
Conversation
cb06d70 to
7b74a14
Compare
|
This pull request introduces 1 alert when merging 7b74a14 into 8bfb00f - view on LGTM.com new alerts:
|
7b74a14 to
9b38694
Compare
|
Rebased to master. |
9b38694 to
5bad80a
Compare
randombit
left a comment
There was a problem hiding this comment.
Broadly speaking looks good to me. Needs a rebase to resolve the merge conflicts and I can give a final review.
5bad80a to
f6b4f80
Compare
|
Rebased to master. This will certainly need another look and compatibility testing round. Maybe it could even be used as a vehicle to find a better alternative to the I'd suggest to keep this open until most of the the remaining TLS 1.3 work is done and revisit. |
Codecov ReportBase: 87.98% // Head: 87.69% // Decreases project coverage by
Additional details and impacted files@@ Coverage Diff @@
## master #2983 +/- ##
==========================================
- Coverage 87.98% 87.69% -0.30%
==========================================
Files 599 600 +1
Lines 66333 66544 +211
Branches 6610 6635 +25
==========================================
- Hits 58365 58355 -10
- Misses 5181 5407 +226
+ Partials 2787 2782 -5
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. ☔ View full report at Codecov. |
|
There is a specific draft for X25519+Kyber768 which is already implemented by Zig stdlib and also (IIRC) Cloudflare https://github.com/bwesterb/draft-westerbaan-tls-xyber768d00/blob/main/draft-tls-westerbaan-xyber768d00.md |
|
Closing as superseded by: #3609 |
Pull-Request Dependencies
Both change sets are currently also displayed in this pull request. Hence, review and merge of those should make this PR fairly small (~700 lines added).
TODO
minimum_kyber_group_size()to the TLS policy (??)Description
This enables the TLS 1.3 implementation to perform hybrid key exchanges using a classical KEX (ECDH or X25519) and a post-quantum KEM (Kyber or Kyber90s). The implementation is based on this IETF draft and the group identifiers for the Key Share extension are taken from OQS.
Demo
./configure.py \ --build-targets=static,cli \ --minimized-build \ --without-documentation \ --enable-modules=tls13,tls13_pqc,auto_rng,system_rng,chacha20poly1305,curve25519,kyber make -j$(nproc) cli ./botan tls_client \ --policy=src/tests/data/tls-policy/default_tls13_pqc.txt \ --port=443 \ kms.eu-central-1.amazonaws.comUsing the snippets above, one should obtain a TLS 1.3 connection to Amazon's KMS endpoint (that is already PQC-enabled using their s2n-tls library). Simply typing "GET / HTTP/1.1" [Enter][Enter] should yield an (admittedly useless) "Bad Request" response.
The PQC TLS 1.3 policy file passed to the CLI uses X25519/Kyber512 as the hybrid key exchange scheme.