-
Notifications
You must be signed in to change notification settings - Fork 5.4k
docs: refresh TLS defaults, TLS 1.3 cipher suites, and post-quantum key exchange documentation #44944
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
base: main
Are you sure you want to change the base?
docs: refresh TLS defaults, TLS 1.3 cipher suites, and post-quantum key exchange documentation #44944
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -80,6 +80,9 @@ message TlsParameters { | |
| // <https://commondatastorage.googleapis.com/chromium-boringssl-docs/ssl.h.html#Cipher-suite-configuration>`_ | ||
| // when negotiating TLS 1.0-1.2 (this setting has no effect when negotiating TLS 1.3). | ||
| // | ||
| // For TLS 1.3 cipher suite behavior and negotiable suites, see | ||
| // :ref:`arch_overview_ssl_tls_defaults`. | ||
| // | ||
| // If not specified, a default list will be used. Defaults are different for server (downstream) and | ||
| // client (upstream) TLS configurations. | ||
| // Defaults will change over time in response to security considerations; If you care, configure | ||
|
|
@@ -137,6 +140,26 @@ message TlsParameters { | |
| // .. code-block:: none | ||
| // | ||
| // P-256 | ||
| // | ||
| // .. warning:: | ||
| // | ||
| // **Post-quantum hybrid key exchange is not enabled by default.** | ||
| // | ||
| // To enable post-quantum hybrid key exchange for TLS 1.3 connections, set | ||
| // ``ecdh_curves`` explicitly, for example: | ||
| // | ||
| // .. code-block:: yaml | ||
| // | ||
| // ecdh_curves: | ||
| // - X25519MLKEM768 | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fix indent |
||
| // - X25519 | ||
| // - P-256 | ||
| // | ||
| // Use ``%DOWNSTREAM_TLS_GROUP%`` and ``%UPSTREAM_TLS_GROUP%`` access log formatters to | ||
| // observe the negotiated TLS group at runtime. | ||
| // | ||
| // See :ref:`arch_overview_ssl_tls_defaults` for a summary of all TLS defaults including | ||
| // post-quantum key exchange. | ||
| repeated string ecdh_curves = 4; | ||
|
|
||
| // If specified, the TLS connection will only support the specified signature algorithms. | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -163,4 +163,12 @@ new_features: | |
| Added substitution commands ``%DOWNSTREAM_TLS_GROUP%`` and ``%UPSTREAM_TLS_GROUP%``. The TLS group may be used | ||
| to discern if a TLS connection used a post quantum safe key exchange (e.g. X25519MLKEM768). | ||
|
|
||
| - area: docs | ||
| change: | | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. remove |
||
| Refreshed documentation for default TLS cipher suites, TLS 1.3 cipher suite handling, and ECDH groups. | ||
| Clarified that post-quantum hybrid key exchange is not enabled by default and can be enabled by | ||
| explicitly configuring ``ecdh_curves`` (for example with ``X25519MLKEM768``). Added a | ||
| "Post-quantum key exchange" subsection to the TLS architecture overview and updated the v3 | ||
| ``TlsParameters`` proto field comments accordingly. | ||
|
|
||
| deprecated: | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -263,3 +263,66 @@ Common errors are: | |
|
|
||
| More detailed list of error that can be raised by BoringSSL can be found | ||
| `here <https://github.com/google/boringssl/blob/main/crypto/err/ssl.errordata>`_ | ||
|
|
||
| .. _arch_overview_ssl_tls_defaults: | ||
|
|
||
| TLS protocol defaults, cipher suites, and groups | ||
| ------------------------------------------------- | ||
|
|
||
| The following summarizes Envoy's out-of-the-box TLS configuration for non-FIPS builds. FIPS builds | ||
| may differ; see :ref:`arch_overview_ssl_fips`. | ||
|
|
||
| **Default TLS protocol versions** | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. use headings |
||
|
|
||
| +------------------+---------------------+---------------------+ | ||
| | Role | Minimum version | Maximum version | | ||
| +==================+=====================+=====================+ | ||
| | Client (upstream)| TLS 1.2 | TLS 1.2 | | ||
| +------------------+---------------------+---------------------+ | ||
| | Server (downstream)| TLS 1.2 | TLS 1.3 | | ||
| +------------------+---------------------+---------------------+ | ||
|
|
||
| **Default cipher suites (TLS 1.0–1.2 only)** | ||
|
|
||
| TLS 1.2 cipher suites are configured via the | ||
| :ref:`cipher_suites <envoy_v3_api_field_extensions.transport_sockets.tls.v3.TlsParameters.cipher_suites>` | ||
| field. See that field's documentation for the authoritative default list and FIPS variants. | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this seems disjointed with one defined there and other here |
||
|
|
||
| **TLS 1.3 cipher suites** | ||
|
|
||
| TLS 1.3 cipher suites are **not** configurable via ``cipher_suites``; BoringSSL selects from its | ||
| built-in set. The suites that may be negotiated are: | ||
|
|
||
| .. code-block:: none | ||
|
|
||
| TLS_AES_128_GCM_SHA256 | ||
| TLS_AES_256_GCM_SHA384 | ||
| TLS_CHACHA20_POLY1305_SHA256 | ||
|
|
||
| **Default ECDH groups** | ||
|
|
||
| In non-FIPS builds: ``X25519``, ``P-256``. In FIPS builds: ``P-256`` only. These are configured | ||
| via the | ||
| :ref:`ecdh_curves <envoy_v3_api_field_extensions.transport_sockets.tls.v3.TlsParameters.ecdh_curves>` | ||
| field. | ||
|
|
||
| .. _arch_overview_ssl_pq_key_exchange: | ||
|
|
||
| Post-quantum key exchange | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
|
||
| Post-quantum hybrid key exchange is not enabled by default. | ||
|
|
||
| To enable post-quantum hybrid key exchange, set ``ecdh_curves`` explicitly in | ||
| :ref:`TlsParameters <envoy_v3_api_msg_extensions.transport_sockets.tls.v3.TlsParameters>`: | ||
|
|
||
| .. code-block:: yaml | ||
|
|
||
| ecdh_curves: | ||
| - X25519MLKEM768 | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. indents |
||
| - X25519 | ||
| - P-256 | ||
|
|
||
| Post-quantum hybrid groups such as ``X25519MLKEM768`` apply to TLS 1.3 connections. | ||
| Use ``%DOWNSTREAM_TLS_GROUP%`` and ``%UPSTREAM_TLS_GROUP%`` | ||
| :ref:`access log formatters <config_access_log_format>` to observe the negotiated TLS group. | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
remove