Skip to content

Add support for hybrid key exchange protocol in Quarkus using openssl > 3.5#53076

Draft
anavarr wants to merge 1 commit intoquarkusio:mainfrom
anavarr:pqc
Draft

Add support for hybrid key exchange protocol in Quarkus using openssl > 3.5#53076
anavarr wants to merge 1 commit intoquarkusio:mainfrom
anavarr:pqc

Conversation

@anavarr
Copy link
Copy Markdown
Contributor

@anavarr anavarr commented Mar 16, 2026

The rise of quantum computers threatens traditional asymmetric key exchange protocol due to their ability to break private keys. Post-quantum cryptography must use problems that quantum computers can't solve as quickly. Module-lattice-based problems have been found to resist quantum computers. ML-KEM, for module-lattice-based key encapsulation mechanism, is an instance of a key exchange protocol resistant to quantum computers. Due to its relative short existence, it has been recommended to use it alongside traditional Diffie-Hellman with elliptic curve. Thus, the new hybrid key exchange protocol x25519mlkem768 uses both Diffie-Hellman with elliptic curve 25519 and ML-KEM. Its has been integrated in OpenSsl starting with version 3.5.

Changes:
This features relies on the netty-tcnative-openssl-dynamic bound to version 3.6 of openssl at runtime, and netty-tcnative-classes at build-time. Changes have been brought to Vert.x (see PR, we simply provide an API to setup the SSLEngine used in the underlying Vert.x server and/or client.

In application.properties, user can set quarkus.tls.my-config.hybrid=true to leverage the new hybrid key exchange provided by OpenSSL > 3.5.

The rise of quantum computers threatens traditional asymmetric key exchange protocol due to their ability to break private keys.
Post-quantum cryptography must use problems that quantum computers can't solve as quickly. Module-lattice-based problems have been found to resist quantum computers. ML-KEM, for module-lattice-based key encapsulation mechanism, is an instance of a key exchange protocol resistant to quantum computers. Due to its relative short existence, it has been recommended to use it alongside traditional Diffie-Hellman with elliptic curve.
Thus, the new hybrid key exchange protocol x25519mlkem768 uses both Diffie-Hellman with elliptic curve 25519 and ML-KEM. Its has been integrated in OpenSsl starting with version 3.5.

Changes:
This features relies on the netty-tcnative-openssl-dynamic bound to version 3.6 of openssl at runtime (provided by smallrye-openssl), and netty-tcnative-classes at build-time.
Changes have been brought to Vert.x, we simply provide an API to setup the SSLEngine used in the underlying Vert.x server and/or client.

In `application.properties`, user can set `quarkus.tls.my-config.hybrid=true` to leverage the new hybrid key exchange provided by OpenSSL > 3.5.
@quarkus-bot quarkus-bot Bot added the area/dependencies Pull requests that update a dependency file label Apr 28, 2026
@anavarr
Copy link
Copy Markdown
Contributor Author

anavarr commented Apr 28, 2026

the support was added in vertx 4.5.27, I'll mark the PR as ready for review when 4.5.27 is released.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/dependencies Pull requests that update a dependency file area/vertx

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant