<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Michael Carter</title>
    <description>The latest articles on DEV Community by Michael Carter (@michaelcarter09).</description>
    <link>https://dev.to/michaelcarter09</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4079809%2F5fe8694a-fdb8-49bc-9909-ffb4f2fb7a65.png</url>
      <title>DEV Community: Michael Carter</title>
      <link>https://dev.to/michaelcarter09</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/michaelcarter09"/>
    <language>en</language>
    <item>
      <title>Your Code Is More Cryptographic Than You Think: Designing Applications for Algorithm Agility</title>
      <dc:creator>Michael Carter</dc:creator>
      <pubDate>Sun, 23 Aug 2026 14:10:00 +0000</pubDate>
      <link>https://dev.to/michaelcarter09/your-code-is-more-cryptographic-than-you-think-designing-applications-for-algorithm-agility-20l0</link>
      <guid>https://dev.to/michaelcarter09/your-code-is-more-cryptographic-than-you-think-designing-applications-for-algorithm-agility-20l0</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftcmme3jcimyjs90hrawu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftcmme3jcimyjs90hrawu.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
It is usually encountered through a library call, a TLS configuration, an authentication framework, a certificate, or a cloud service. The implementation works, the tests pass, and the application moves toward production.&lt;/p&gt;

&lt;p&gt;The problem appears later.&lt;/p&gt;

&lt;p&gt;An algorithm needs to be replaced. A certificate hierarchy changes. A cryptographic library reaches end of life. A vulnerability affects a primitive. A vendor introduces a new security requirement. Or the organization begins preparing for post-quantum cryptography.&lt;/p&gt;

&lt;p&gt;Suddenly, something that looked like a small security change becomes an application modernization project.&lt;/p&gt;

&lt;p&gt;This happens because &lt;strong&gt;cryptography is often more deeply coupled to software than developers realize&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The solution is not to predict which algorithm will remain dominant for the next several decades.&lt;/p&gt;

&lt;p&gt;It is to design applications so that cryptographic mechanisms can be replaced without rewriting the application around them.&lt;/p&gt;

&lt;p&gt;That is the core idea behind &lt;strong&gt;cryptographic agility&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Cryptography Doesn't Stay Inside the Crypto Module
&lt;/h2&gt;

&lt;p&gt;A traditional architecture might make cryptography look like a small component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application
    |
    v
Crypto Library
    |
    v
Encryption / Signing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Modern applications are rarely that simple.&lt;/p&gt;

&lt;p&gt;A cloud-native application could have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    Internet
                       |
                       v
                      CDN
                       |
                       v
                 Load Balancer
                       |
                       v
                  API Gateway
                       |
                       v
                  Service Mesh
                       |
            +----------+----------+
            |          |          |
            v          v          v
         Service A  Service B  Service C
            |          |          |
            +----------+----------+
                       |
                       v
                    Database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cryptography can appear at nearly every layer.&lt;/p&gt;

&lt;p&gt;TLS protects network connections.&lt;/p&gt;

&lt;p&gt;mTLS authenticates services.&lt;/p&gt;

&lt;p&gt;Certificates establish machine identities.&lt;/p&gt;

&lt;p&gt;Tokens may be digitally signed.&lt;/p&gt;

&lt;p&gt;Databases may encrypt stored information.&lt;/p&gt;

&lt;p&gt;KMS platforms manage encryption keys.&lt;/p&gt;

&lt;p&gt;HSMs may protect high-value private keys.&lt;/p&gt;

&lt;p&gt;CI/CD systems may use signing credentials.&lt;/p&gt;

&lt;p&gt;Container registries may depend on cryptographic verification.&lt;/p&gt;

&lt;p&gt;The application may therefore depend on dozens of cryptographic mechanisms without having a single component named &lt;code&gt;cryptography&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That is the first problem developers need to understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hidden Dependency Problem
&lt;/h2&gt;

&lt;p&gt;Consider a simple requirement:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"We need to replace RSA with a different cryptographic mechanism."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At first glance, the task might appear straightforward.&lt;/p&gt;

&lt;p&gt;Search the codebase for RSA.&lt;/p&gt;

&lt;p&gt;Replace the relevant library calls.&lt;/p&gt;

&lt;p&gt;Run the tests.&lt;/p&gt;

&lt;p&gt;Deploy.&lt;/p&gt;

&lt;p&gt;But what if RSA is also being used by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A TLS termination layer&lt;/li&gt;
&lt;li&gt;An internal certificate authority&lt;/li&gt;
&lt;li&gt;A Java dependency&lt;/li&gt;
&lt;li&gt;A container image&lt;/li&gt;
&lt;li&gt;A signing service&lt;/li&gt;
&lt;li&gt;A third-party SDK&lt;/li&gt;
&lt;li&gt;A deployment platform&lt;/li&gt;
&lt;li&gt;An HSM&lt;/li&gt;
&lt;li&gt;An identity provider&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application source code may contain only a small portion of the actual dependency.&lt;/p&gt;

&lt;p&gt;This is why a source-code search is not a complete cryptographic inventory.&lt;/p&gt;

&lt;p&gt;A useful inventory needs to connect:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Application → Protocol → Certificate → Key → Algorithm → Library → Provider → Infrastructure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Without those relationships, developers may know what cryptography exists but not what depends on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hard-Coded Algorithms Create Long-Term Coupling
&lt;/h2&gt;

&lt;p&gt;Hard-coded algorithms are not necessarily insecure.&lt;/p&gt;

&lt;p&gt;The problem is that they create &lt;strong&gt;change resistance&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Imagine an application with this architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application
     |
     v
RSA
     |
     v
Specific Crypto Library
     |
     v
Specific Key Format
     |
     v
Certificate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The application has effectively made several assumptions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which algorithm is used&lt;/li&gt;
&lt;li&gt;Which library implements it&lt;/li&gt;
&lt;li&gt;Which key type is expected&lt;/li&gt;
&lt;li&gt;Which certificate format is accepted&lt;/li&gt;
&lt;li&gt;Which provider handles cryptographic operations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Changing the algorithm may therefore require changing multiple layers.&lt;/p&gt;

&lt;p&gt;A more flexible architecture looks different:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application
     |
     v
Cryptographic Interface
     |
     v
Policy / Configuration
     |
     +----------+
     |          |
     v          v
Provider A   Provider B
     |          |
     v          v
Algorithm X  Algorithm Y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the business logic does not need to understand every cryptographic implementation.&lt;/p&gt;

&lt;p&gt;The application asks for an operation.&lt;/p&gt;

&lt;p&gt;The cryptographic layer determines how that operation should be performed.&lt;/p&gt;

&lt;p&gt;This separation is one of the foundations of cryptographic agility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't Build an "Algorithm Abstraction" That Isn't Actually Agile
&lt;/h2&gt;

&lt;p&gt;Developers sometimes create an abstraction that simply wraps one algorithm.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;encrypt(data)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;may internally always call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AES-256-GCM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is an API abstraction, but it does not necessarily provide cryptographic agility.&lt;/p&gt;

&lt;p&gt;A genuinely adaptable design needs to separate the operation from the cryptographic policy.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;encrypt(data, policy)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;where the policy determines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Algorithm
Key Type
Key Source
Provider
Parameters
Rotation Policy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact implementation depends on the language and framework, but the architectural principle remains the same.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The application should not have to know why a particular cryptographic implementation was selected.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Post-Quantum Cryptography Makes This More Important
&lt;/h2&gt;

&lt;p&gt;Post-quantum cryptography provides a practical example of why cryptographic agility matters.&lt;/p&gt;

&lt;p&gt;NIST has standardized ML-KEM for key establishment and ML-DSA and SLH-DSA for digital signatures. These algorithms are designed to address cryptographic threats posed by sufficiently capable quantum computers.&lt;/p&gt;

&lt;p&gt;But migrating an application is not equivalent to replacing a class name in a dependency file.&lt;/p&gt;

&lt;p&gt;A developer needs to know what the cryptographic operation actually does.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key establishment&lt;/strong&gt; and &lt;strong&gt;digital signatures&lt;/strong&gt; are different problems.&lt;/p&gt;

&lt;p&gt;ML-KEM is designed for key establishment.&lt;/p&gt;

&lt;p&gt;ML-DSA and SLH-DSA are designed for digital signatures.&lt;/p&gt;

&lt;p&gt;An application that currently uses RSA may use it for signatures, key transport, or other operations. An application using elliptic curve cryptography may use different mechanisms for signatures and key agreement.&lt;/p&gt;

&lt;p&gt;The migration path therefore depends on &lt;strong&gt;how the existing cryptography is being used&lt;/strong&gt;, not simply which algorithm name appears in the code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Certificates Add Another Layer
&lt;/h2&gt;

&lt;p&gt;Application developers often treat certificates as infrastructure.&lt;/p&gt;

&lt;p&gt;From an application architecture perspective, however, certificates can be hard dependencies.&lt;/p&gt;

&lt;p&gt;Consider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application
    |
    v
TLS Library
    |
    v
Leaf Certificate
    |
    v
Intermediate CA
    |
    v
Root CA
    |
    v
Trust Store
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Changing the certificate can affect every layer below it.&lt;/p&gt;

&lt;p&gt;A new certificate may require a new key type.&lt;/p&gt;

&lt;p&gt;A new certificate chain may require updated trust.&lt;/p&gt;

&lt;p&gt;A new signature algorithm may require newer TLS or X.509 implementations.&lt;/p&gt;

&lt;p&gt;A legacy client may not understand the new chain.&lt;/p&gt;

&lt;p&gt;This is why certificate management and application architecture cannot be completely separated during a large cryptographic migration.&lt;/p&gt;

&lt;p&gt;The modern web already depends heavily on certificate-based encrypted communication. Recent &lt;strong&gt;&lt;a href="https://comparecheapssl.com/study-percentage-of-websites-still-running-without-ssl-industry-breakdown/" rel="noopener noreferrer"&gt;HTTPS adoption statistics&lt;/a&gt;&lt;/strong&gt; show how deeply TLS has become embedded into Internet infrastructure.&lt;/p&gt;

&lt;p&gt;For developers, the takeaway is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Certificates are dependencies, not just deployment artifacts.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Libraries Are Part of Your Cryptographic Supply Chain
&lt;/h2&gt;

&lt;p&gt;A developer may never directly implement RSA, ECDSA or AES.&lt;/p&gt;

&lt;p&gt;Instead, the application might depend on:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application
   ↓
Framework
   ↓
HTTP Client
   ↓
TLS Library
   ↓
Operating System
   ↓
Cryptographic Provider
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The cryptographic implementation is several abstraction layers away.&lt;/p&gt;

&lt;p&gt;This is why dependency management becomes particularly important during cryptographic migration.&lt;/p&gt;

&lt;p&gt;An application may need to evaluate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which crypto library is being used?&lt;/li&gt;
&lt;li&gt;Which version?&lt;/li&gt;
&lt;li&gt;Which algorithms does it support?&lt;/li&gt;
&lt;li&gt;Which providers does it rely on?&lt;/li&gt;
&lt;li&gt;Is the implementation maintained?&lt;/li&gt;
&lt;li&gt;Does the platform support newer cryptography?&lt;/li&gt;
&lt;li&gt;Can the library support multiple algorithms simultaneously?&lt;/li&gt;
&lt;li&gt;What happens when the dependency is upgraded?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A software bill of materials can help identify software dependencies.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;Cryptography Bill of Materials (CBOM)&lt;/strong&gt; extends that thinking toward cryptographic components and relationships. IBM Research has discussed CBOM as a way to identify and manage cryptographic assets as organizations prepare for quantum-safe migration.&lt;/p&gt;

&lt;p&gt;For large applications, that additional visibility can become extremely valuable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Crypto Agility Should Be a Developer Requirement
&lt;/h2&gt;

&lt;p&gt;Cryptographic agility should not live exclusively inside the security team's documentation.&lt;/p&gt;

&lt;p&gt;It should influence application design.&lt;/p&gt;

&lt;p&gt;Developers can ask several questions during architecture reviews:&lt;/p&gt;

&lt;h3&gt;
  
  
  Can the algorithm be changed without changing business logic?
&lt;/h3&gt;

&lt;p&gt;If changing the cryptographic primitive requires rewriting application workflows, the abstraction boundary may be too low.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can keys be replaced without redeploying the entire application?
&lt;/h3&gt;

&lt;p&gt;Key lifecycle should ideally be separated from application lifecycle where practical.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can the cryptographic provider change?
&lt;/h3&gt;

&lt;p&gt;Applications tightly coupled to one provider can become difficult to migrate.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can certificates be rotated automatically?
&lt;/h3&gt;

&lt;p&gt;Manual certificate replacement becomes increasingly difficult as environments scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can cryptographic policy be changed centrally?
&lt;/h3&gt;

&lt;p&gt;Centralized policy can reduce inconsistent configurations across services.&lt;/p&gt;

&lt;p&gt;These questions are more valuable than simply asking whether an application "uses strong encryption."&lt;/p&gt;

&lt;h2&gt;
  
  
  Avoid Cryptographic Configuration Scattered Across the Codebase
&lt;/h2&gt;

&lt;p&gt;One of the easiest ways to accumulate cryptographic debt is to distribute cryptographic configuration throughout the application.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Service A → RSA
Service B → ECDSA
Service C → RSA
Service D → hard-coded AES configuration
Service E → library default
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now imagine introducing a new organization-wide cryptographic policy.&lt;/p&gt;

&lt;p&gt;Every service becomes a separate migration project.&lt;/p&gt;

&lt;p&gt;A better architecture centralizes policy where appropriate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    CRYPTO POLICY
                         |
          +--------------+--------------+
          |              |              |
          v              v              v
       Service A      Service B      Service C
          |              |              |
          +--------------+--------------+
                         |
                         v
                CRYPTO PROVIDER
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This doesn't mean every cryptographic operation should be centrally controlled.&lt;/p&gt;

&lt;p&gt;Some applications require specialized behavior.&lt;/p&gt;

&lt;p&gt;The important principle is to avoid unnecessary duplication of cryptographic decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Management Should Be Separated From Application Logic
&lt;/h2&gt;

&lt;p&gt;Another common architectural mistake is allowing applications to manage sensitive keys directly.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application
    |
    v
Private Key
    |
    v
Cryptographic Operation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;a stronger architecture often looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application
    |
    v
KMS / HSM Interface
    |
    v
Protected Key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The application requests a cryptographic operation without necessarily handling the underlying private key.&lt;/p&gt;

&lt;p&gt;This architecture can make key rotation, access control, auditing and future migration easier.&lt;/p&gt;

&lt;p&gt;It also reduces the number of systems that directly handle sensitive key material.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Developers Should Inventory
&lt;/h2&gt;

&lt;p&gt;A practical developer-focused cryptographic inventory can start with seven categories:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Examples&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Algorithms&lt;/td&gt;
&lt;td&gt;RSA, ECDSA, AES, SHA-2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Protocols&lt;/td&gt;
&lt;td&gt;TLS, mTLS, SSH, IPsec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keys&lt;/td&gt;
&lt;td&gt;Private keys, symmetric keys, signing keys&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Certificates&lt;/td&gt;
&lt;td&gt;TLS, client authentication, code signing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Libraries&lt;/td&gt;
&lt;td&gt;OpenSSL, BoringSSL, language crypto APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Providers&lt;/td&gt;
&lt;td&gt;KMS, HSM, cloud cryptographic services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Applications&lt;/td&gt;
&lt;td&gt;APIs, services, workloads, devices&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The goal is not to create documentation that nobody maintains.&lt;/p&gt;

&lt;p&gt;The goal is to make cryptographic dependencies discoverable and actionable.&lt;/p&gt;

&lt;p&gt;Automation should eventually feed this inventory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build for Replacement, Not Prediction
&lt;/h2&gt;

&lt;p&gt;One mistake organizations can make is trying to predict exactly which cryptographic algorithm they will use decades from now.&lt;/p&gt;

&lt;p&gt;That is difficult.&lt;/p&gt;

&lt;p&gt;Cryptography changes.&lt;/p&gt;

&lt;p&gt;Standards evolve.&lt;/p&gt;

&lt;p&gt;Implementation vulnerabilities appear.&lt;/p&gt;

&lt;p&gt;Hardware capabilities change.&lt;/p&gt;

&lt;p&gt;New algorithms emerge.&lt;/p&gt;

&lt;p&gt;Instead of trying to predict the final destination, application architecture should make the journey easier.&lt;/p&gt;

&lt;p&gt;That means designing systems around replaceable cryptographic components.&lt;/p&gt;

&lt;p&gt;Think:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Crypto Interface&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;rather than:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RSA Interface&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Think:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Management Service&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;rather than:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Private Key File&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Think:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Certificate Policy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;rather than:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Certificate Embedded in Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Think:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Algorithm Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;rather than:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Algorithm Hard-Coded in Business Logic&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These small architectural decisions can have a significant impact years later.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Practical Crypto-Agility Checklist
&lt;/h2&gt;

&lt;p&gt;Before introducing a new cryptographic dependency, developers should consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the algorithm configurable?&lt;/li&gt;
&lt;li&gt;Is the implementation isolated behind an interface?&lt;/li&gt;
&lt;li&gt;Can keys be rotated independently?&lt;/li&gt;
&lt;li&gt;Can certificates be replaced without application changes?&lt;/li&gt;
&lt;li&gt;Can the cryptographic provider be changed?&lt;/li&gt;
&lt;li&gt;Is the dependency actively maintained?&lt;/li&gt;
&lt;li&gt;Can the application support multiple cryptographic configurations?&lt;/li&gt;
&lt;li&gt;Is the cryptographic configuration observable?&lt;/li&gt;
&lt;li&gt;Can the dependency be discovered automatically?&lt;/li&gt;
&lt;li&gt;Is there a migration path if the algorithm becomes deprecated?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions turn cryptographic agility from a theoretical concept into an engineering practice.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Biggest Mistake Is Waiting for the Migration
&lt;/h2&gt;

&lt;p&gt;Cryptographic agility is easiest to introduce before it is urgently required.&lt;/p&gt;

&lt;p&gt;Trying to redesign cryptographic dependencies during a security incident or mandatory migration is much more expensive.&lt;/p&gt;

&lt;p&gt;The organization then has to discover dependencies, design an abstraction, test new implementations, replace certificates, coordinate infrastructure and maintain production availability at the same time.&lt;/p&gt;

&lt;p&gt;Doing the architectural work earlier changes the problem.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"How do we replace everything?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;the question becomes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Which cryptographic provider and policy should we deploy next?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is a much more manageable engineering problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cryptographic Agility Is Part of Modern Software Architecture
&lt;/h2&gt;

&lt;p&gt;The next generation of applications will not be defined only by how strong their encryption is.&lt;/p&gt;

&lt;p&gt;They will also be defined by how &lt;strong&gt;adaptable their cryptographic architecture is&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Post-quantum migration is making this increasingly obvious.&lt;/p&gt;

&lt;p&gt;RSA and ECC will not simply disappear overnight. Applications will operate through a period where classical and post-quantum mechanisms coexist, infrastructure will evolve at different speeds, and compatibility will remain an important engineering constraint.&lt;/p&gt;

&lt;p&gt;The applications that handle this transition most effectively will be the ones that have already separated business logic from cryptographic implementation.&lt;/p&gt;

&lt;p&gt;Cryptography should therefore be treated like any other infrastructure dependency that can evolve.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make it observable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make it configurable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make it replaceable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automate its lifecycle.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And most importantly, don't assume today's cryptographic implementation will still be the right implementation tomorrow.&lt;/p&gt;

&lt;p&gt;The best time to design for cryptographic agility is before the next cryptographic migration becomes mandatory.&lt;/p&gt;

</description>
      <category>ssl</category>
      <category>crytographic</category>
      <category>encryption</category>
    </item>
    <item>
      <title>Post Quantum TLS: What Hybrid Key Exchange Actually Changes</title>
      <dc:creator>Michael Carter</dc:creator>
      <pubDate>Sun, 16 Aug 2026 11:17:21 +0000</pubDate>
      <link>https://dev.to/michaelcarter09/post-quantum-tls-what-hybrid-key-exchange-actually-changes-4h9b</link>
      <guid>https://dev.to/michaelcarter09/post-quantum-tls-what-hybrid-key-exchange-actually-changes-4h9b</guid>
      <description>&lt;p&gt;Post quantum cryptography is no longer something security teams can leave entirely to research departments. NIST finalized ML-KEM as a post quantum key encapsulation mechanism in 2024, and the IETF is actively standardizing hybrid key agreement for TLS 1.3. The practical transition is already visible in modern TLS implementations and large internet infrastructure.&lt;/p&gt;

&lt;p&gt;For engineering teams, however, the important question is not simply what ML-KEM does. The bigger question is what actually changes when a TLS connection moves from a traditional exchange such as X25519 to a hybrid mechanism such as &lt;strong&gt;X25519MLKEM768&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The answer is more specific than "TLS becomes quantum safe." Hybrid key exchange changes how the session secret is established while leaving most of the application-facing TLS architecture intact. It also introduces larger handshake messages, new compatibility considerations, different implementation dependencies, and a much greater need to understand which cryptographic mechanism is actually being negotiated.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why TLS Needs Hybrid Key Exchange
&lt;/h2&gt;

&lt;p&gt;TLS 1.3 commonly uses ephemeral elliptic-curve key exchange such as X25519. This provides strong protection against currently practical classical attacks, but a sufficiently capable quantum computer could threaten the mathematical assumptions behind elliptic-curve cryptography.&lt;/p&gt;

&lt;p&gt;That creates a long-term confidentiality problem. An attacker can potentially capture encrypted traffic today and retain it for future decryption if quantum computing eventually makes the underlying key exchange vulnerable. This is commonly described as a &lt;strong&gt;harvest-now, decrypt-later&lt;/strong&gt; risk.&lt;/p&gt;

&lt;p&gt;Hybrid key exchange addresses that problem without requiring the internet to abandon established cryptography overnight. Instead of replacing X25519 immediately, the TLS handshake combines a classical exchange with a post quantum mechanism.&lt;/p&gt;

&lt;p&gt;The current IETF draft defines hybrid TLS 1.3 mechanisms including X25519MLKEM768, which combines X25519 with ML-KEM-768. (&lt;a href="https://datatracker.ietf.org/doc/html/draft-ietf-tls-ecdhe-mlkem?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;IETF Datatracker&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;This approach gives organizations a practical transition path because the classical and post quantum components both contribute to establishing the session secret.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Changes Inside a TLS 1.3 Handshake?
&lt;/h2&gt;

&lt;p&gt;The overall TLS 1.3 handshake remains recognizable. Clients still send a ClientHello, servers respond with a ServerHello, certificates are used for authentication, and the connection eventually transitions to encrypted application traffic.&lt;/p&gt;

&lt;p&gt;The major change occurs in the &lt;strong&gt;key exchange information&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A traditional connection might negotiate X25519, while a hybrid connection can negotiate X25519MLKEM768. The latter combines the X25519 ECDH exchange with ML-KEM-768. The current IETF specification defines the resulting shared secret for X25519MLKEM768 as the combination of the ML-KEM and X25519 shared secrets. (&lt;a href="https://datatracker.ietf.org/doc/draft-ietf-tls-ecdhe-mlkem/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;IETF Datatracker&lt;/a&gt;)&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;Traditional TLS 1.3&lt;/th&gt;
&lt;th&gt;Hybrid TLS 1.3&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Key exchange&lt;/td&gt;
&lt;td&gt;X25519 or another classical group&lt;/td&gt;
&lt;td&gt;X25519 + ML-KEM-768&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TLS version&lt;/td&gt;
&lt;td&gt;TLS 1.3&lt;/td&gt;
&lt;td&gt;TLS 1.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Authentication&lt;/td&gt;
&lt;td&gt;RSA, ECDSA, etc.&lt;/td&gt;
&lt;td&gt;Can initially remain classical&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Application protocol&lt;/td&gt;
&lt;td&gt;HTTP, HTTP/2, HTTP/3, APIs&lt;/td&gt;
&lt;td&gt;No fundamental change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Session encryption&lt;/td&gt;
&lt;td&gt;Symmetric encryption&lt;/td&gt;
&lt;td&gt;Symmetric encryption&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Key exchange size&lt;/td&gt;
&lt;td&gt;Relatively small&lt;/td&gt;
&lt;td&gt;Significantly larger&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quantum protection&lt;/td&gt;
&lt;td&gt;Classical security assumptions&lt;/td&gt;
&lt;td&gt;Adds post quantum key establishment&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This distinction matters because hybrid TLS is &lt;strong&gt;not a new application protocol&lt;/strong&gt;. It is a change to the cryptographic machinery underneath the connection.&lt;/p&gt;

&lt;p&gt;If you want to understand where this key exchange occurs in the broader TLS flow, this &lt;a href="https://comparecheapssl.com/inside-the-tls-handshake-packet-level-breakdown-with-real-examples/" rel="noopener noreferrer"&gt;TLS handshake packet-level breakdown&lt;/a&gt; provides useful context on ClientHello, key shares, certificates, and TLS 1.3 message flow.&lt;/p&gt;

&lt;h2&gt;
  
  
  What ML-KEM Adds to X25519
&lt;/h2&gt;

&lt;p&gt;ML-KEM is a key encapsulation mechanism standardized by NIST under FIPS 203. NIST defines ML-KEM-512, ML-KEM-768, and ML-KEM-1024 parameter sets, with ML-KEM-768 being the post quantum component used in X25519MLKEM768. (&lt;a href="https://csrc.nist.gov/pubs/fips/203/final?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;NIST Computer Security Resource Center&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;The fundamental difference is the mathematical assumption behind each mechanism.&lt;/p&gt;

&lt;p&gt;X25519 relies on elliptic-curve Diffie-Hellman. ML-KEM is based on lattice cryptography and the Module Learning with Errors problem.&lt;/p&gt;

&lt;p&gt;A hybrid handshake uses both rather than betting the future of the connection on one algorithm.&lt;/p&gt;

&lt;p&gt;This is why Cloudflare describes X25519MLKEM768 as a hybrid key agreement that maintains the security provided by X25519 while adding the post quantum component. Cloudflare currently recommends this hybrid mechanism in its deployed PQC support. (&lt;a href="https://developers.cloudflare.com/ssl/post-quantum-cryptography/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Cloudflare Docs&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;The design is therefore less about replacing something that already works and more about reducing dependence on a single cryptographic assumption during the transition to post quantum cryptography.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Handshake Gets Much Larger
&lt;/h2&gt;

&lt;p&gt;One of the most visible practical changes is the size of the key exchange.&lt;/p&gt;

&lt;p&gt;The current IETF draft specifies a &lt;strong&gt;1,216-byte client key exchange value&lt;/strong&gt; for X25519MLKEM768. That consists of 1,184 bytes for the ML-KEM-768 portion and 32 bytes for X25519. (&lt;a href="https://datatracker.ietf.org/doc/draft-ietf-tls-ecdhe-mlkem/03/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;IETF Datatracker&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;That is considerably larger than the compact key exchange material engineers are accustomed to seeing with X25519 alone.&lt;/p&gt;

&lt;p&gt;The larger handshake can affect infrastructure in ways that are easy to overlook, particularly when TLS traffic passes through multiple network components.&lt;/p&gt;

&lt;p&gt;Engineering teams should test:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ClientHello and ServerHello sizes&lt;/li&gt;
&lt;li&gt;Packet fragmentation and MTU behavior&lt;/li&gt;
&lt;li&gt;TLS termination performance&lt;/li&gt;
&lt;li&gt;Reverse proxies and load balancers&lt;/li&gt;
&lt;li&gt;Firewalls and TLS inspection appliances&lt;/li&gt;
&lt;li&gt;Mobile and high-latency networks&lt;/li&gt;
&lt;li&gt;Connection establishment latency&lt;/li&gt;
&lt;li&gt;CPU and memory consumption&lt;/li&gt;
&lt;li&gt;Failure and fallback behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The impact depends heavily on the workload. A service using long-lived HTTP/2 connections may barely notice the additional handshake overhead, while an API creating huge numbers of short-lived connections can be much more sensitive to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hybrid TLS Does Not Automatically Replace Your Certificate
&lt;/h2&gt;

&lt;p&gt;This is one of the most important distinctions in post quantum migration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key exchange and authentication are different cryptographic functions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A TLS certificate authenticates the server. The ephemeral key exchange establishes the shared secret from which the session's symmetric encryption keys are derived.&lt;/p&gt;

&lt;p&gt;Therefore, enabling X25519MLKEM768 does not automatically mean an organization must replace every RSA or ECDSA certificate.&lt;/p&gt;

&lt;p&gt;That does not make certificates irrelevant to post quantum migration. Digital signatures are themselves an important part of the longer-term transition. NIST has separately standardized post quantum signature algorithms including ML-DSA and SLH-DSA. (&lt;a href="https://csrc.nist.gov/pubs/fips/203/final?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;NIST Computer Security Resource Center&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;A sensible migration strategy should therefore treat these as related but separate workstreams:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Migration area&lt;/th&gt;
&lt;th&gt;Main concern&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hybrid key exchange&lt;/td&gt;
&lt;td&gt;Protecting session establishment against future quantum attacks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Digital signatures&lt;/td&gt;
&lt;td&gt;Maintaining quantum-resistant authentication&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Certificates&lt;/td&gt;
&lt;td&gt;Delivering and validating public-key authentication&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Software signing&lt;/td&gt;
&lt;td&gt;Protecting code and update integrity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VPNs&lt;/td&gt;
&lt;td&gt;Protecting long-lived private communications&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stored encryption&lt;/td&gt;
&lt;td&gt;Protecting information whose confidentiality must survive for years&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Hybrid TLS is an important first step, but it is not the entire post quantum migration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Supporting PQC Is Not the Same as Negotiating PQC
&lt;/h2&gt;

&lt;p&gt;A common deployment mistake is to check whether a TLS library supports ML-KEM and assume that every connection is therefore protected by hybrid key exchange.&lt;/p&gt;

&lt;p&gt;That assumption is wrong.&lt;/p&gt;

&lt;p&gt;A client may support X25519MLKEM768 while a particular server only supports X25519. In that situation, the connection can continue using a classical key exchange.&lt;/p&gt;

&lt;p&gt;The important question is therefore not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Does my system support PQC?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The more useful question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What key exchange group did this connection actually negotiate?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Recent DEV Community testing demonstrates this distinction clearly. A .NET application can report ML-KEM support while the negotiated connection still needs to be checked separately for a group such as X25519MLKEM768. (&lt;a href="https://dev.to/daan_acohen/post-quantum-tls-in-net-10-on-linux-ml-kem-in-a-real-dockerized-http-client-2lnl?utm_source=chatgpt.com"&gt;DEV Community&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;For infrastructure teams, the validation process should include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confirming TLS library capability&lt;/li&gt;
&lt;li&gt;Confirming client supported groups&lt;/li&gt;
&lt;li&gt;Confirming server supported groups&lt;/li&gt;
&lt;li&gt;Inspecting the negotiated group&lt;/li&gt;
&lt;li&gt;Testing classical fallback&lt;/li&gt;
&lt;li&gt;Monitoring third-party connections&lt;/li&gt;
&lt;li&gt;Recording results across environments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This turns PQC readiness from a configuration claim into something measurable.&lt;/p&gt;

&lt;h2&gt;
  
  
  TLS Libraries Become a Critical Migration Dependency
&lt;/h2&gt;

&lt;p&gt;Application teams may not need to change application code, but they may need to change the cryptographic stack underneath that code.&lt;/p&gt;

&lt;p&gt;This is particularly important for runtimes that bundle their own TLS libraries.&lt;/p&gt;

&lt;p&gt;For example, recent DEV Community testing of Node.js demonstrated how the bundled OpenSSL version can determine whether a connection negotiates X25519 or X25519MLKEM768. The same application code can therefore produce different TLS behavior depending on the runtime and cryptographic library underneath it. (&lt;a href="https://dev.to/daan_acohen/is-your-nodejs-app-quantum-safe-tracing-pqc-in-tls-connections-10b8?utm_source=chatgpt.com"&gt;DEV Community&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;That means teams should inventory:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Operating system TLS libraries&lt;/li&gt;
&lt;li&gt;Language runtimes&lt;/li&gt;
&lt;li&gt;OpenSSL versions&lt;/li&gt;
&lt;li&gt;Reverse proxies&lt;/li&gt;
&lt;li&gt;Load balancers&lt;/li&gt;
&lt;li&gt;Service meshes&lt;/li&gt;
&lt;li&gt;API gateways&lt;/li&gt;
&lt;li&gt;Container base images&lt;/li&gt;
&lt;li&gt;Cloud-managed TLS services&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application source code may be unchanged while its cryptographic behavior changes significantly because one underlying dependency has been upgraded.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Hybrid TLS Changes for Developers
&lt;/h2&gt;

&lt;p&gt;For most developers, hybrid TLS should remain below the application layer.&lt;/p&gt;

&lt;p&gt;There is no need to redesign a REST API simply because the underlying TLS connection uses ML-KEM. HTTP requests, JSON payloads, authentication logic, database queries, and application business logic do not fundamentally change.&lt;/p&gt;

&lt;p&gt;The relevant dependency chain looks more like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Application → Runtime → TLS Library → Operating System → TLS Endpoint&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That makes crypto-library and runtime visibility more important than application-level rewrites.&lt;/p&gt;

&lt;p&gt;Developers working with Python, Node.js, .NET, Rust, or other ecosystems should therefore verify which TLS implementation their runtime actually uses and whether that implementation supports the required hybrid groups.&lt;/p&gt;

&lt;p&gt;For example, &lt;a href="https://dev.to/daan_acohen/verify-post-quantum-tls-negotiation-from-python-requests-on-linux-719"&gt;checking the negotiated post quantum TLS group from Python&lt;/a&gt; illustrates the difference between assuming PQC is enabled and inspecting what was actually negotiated on the connection. (&lt;a href="https://dev.to/daan_acohen/verify-post-quantum-tls-negotiation-from-python-requests-on-linux-719?utm_source=chatgpt.com"&gt;DEV Community&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  Crypto Agility Becomes the Bigger Goal
&lt;/h2&gt;

&lt;p&gt;Hybrid TLS highlights a broader problem: many organizations do not have a complete inventory of where cryptography is being used.&lt;/p&gt;

&lt;p&gt;That makes future algorithm changes difficult.&lt;/p&gt;

&lt;p&gt;A company should be able to identify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which systems terminate TLS&lt;/li&gt;
&lt;li&gt;Which algorithms they negotiate&lt;/li&gt;
&lt;li&gt;Which certificates they use&lt;/li&gt;
&lt;li&gt;Which cryptographic libraries they depend on&lt;/li&gt;
&lt;li&gt;Which vendors control those libraries&lt;/li&gt;
&lt;li&gt;Which third-party services still use classical-only key exchange&lt;/li&gt;
&lt;li&gt;Which data requires long-term confidentiality&lt;/li&gt;
&lt;li&gt;Which systems cannot be upgraded easily&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the foundation of &lt;strong&gt;crypto agility&lt;/strong&gt;, the ability to change cryptographic mechanisms without rebuilding an organization's entire technology estate.&lt;/p&gt;

&lt;p&gt;The post quantum transition will reward organizations that already have this visibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Practical Hybrid TLS Migration Strategy
&lt;/h2&gt;

&lt;p&gt;Organizations do not need to migrate every endpoint simultaneously. A controlled rollout makes it easier to identify compatibility and performance problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start with cryptographic inventory.&lt;/strong&gt; Identify TLS termination points, libraries, runtimes, certificates, network appliances, APIs, and third-party services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prioritize long-lived sensitive data.&lt;/strong&gt; Systems protecting intellectual property, financial information, confidential communications, and other information with long confidentiality requirements deserve earlier attention.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upgrade the TLS foundation.&lt;/strong&gt; Move toward standardized ML-KEM implementations rather than relying indefinitely on experimental pre-standard Kyber variants. The current IETF draft specifically references the finalized NIST ML-KEM standard. (&lt;a href="https://datatracker.ietf.org/doc/html/draft-ietf-tls-ecdhe-mlkem?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;IETF Datatracker&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test actual negotiation.&lt;/strong&gt; Confirm that connections really negotiate X25519MLKEM768 instead of merely confirming that the software claims to support ML-KEM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test the complete network path.&lt;/strong&gt; Include proxies, firewalls, load balancers, CDNs, TLS inspection systems, and other intermediaries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Measure production-like performance.&lt;/strong&gt; Compare handshake latency, CPU consumption, connection rates, memory use, and failure rates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monitor fallback.&lt;/strong&gt; Identify clients and services that continue using classical key exchange and determine why.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expand gradually.&lt;/strong&gt; Once compatibility is established, increase hybrid coverage across internet-facing and internal TLS connections.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Hybrid TLS Does Not Solve
&lt;/h2&gt;

&lt;p&gt;Hybrid key exchange is an important security improvement, but it should not be confused with complete post quantum readiness.&lt;/p&gt;

&lt;p&gt;A company could have X25519MLKEM768 enabled for browser traffic while still using classical cryptography for its origin connections, VPNs, software signing, certificates, internal APIs, or stored encryption.&lt;/p&gt;

&lt;p&gt;Cloudflare's current documentation makes this distinction clear by separating hybrid key agreement from post quantum signatures and other aspects of its broader PQC deployment. (&lt;a href="https://developers.cloudflare.com/ssl/post-quantum-cryptography/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Cloudflare Docs&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;A useful way to think about the migration is therefore:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hybrid TLS protects one important part of the cryptographic lifecycle. Crypto agility prepares the organization to change everything else when required.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Organizations Should Start Before Quantum Computers Arrive
&lt;/h2&gt;

&lt;p&gt;The case for migration does not depend on quantum computers being capable of breaking TLS today.&lt;/p&gt;

&lt;p&gt;The challenge is the combination of &lt;strong&gt;long migration timelines and long-lived confidential information&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A large enterprise may have thousands of applications, APIs, devices, network appliances, certificates, vendors, and cryptographic dependencies. Discovering those dependencies and replacing incompatible components can take years.&lt;/p&gt;

&lt;p&gt;At the same time, encrypted traffic can potentially be collected today and retained for future analysis.&lt;/p&gt;

&lt;p&gt;Organizations should therefore begin by answering three practical questions:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Where is classical public-key cryptography still used?&lt;/td&gt;
&lt;td&gt;Establishes the migration scope&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Which endpoints can negotiate hybrid TLS today?&lt;/td&gt;
&lt;td&gt;Identifies immediate opportunities&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;How quickly can cryptographic algorithms be changed?&lt;/td&gt;
&lt;td&gt;Measures crypto agility&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The goal is not to predict exactly when a cryptographically relevant quantum computer will arrive. The goal is to ensure that the infrastructure can adapt before that arrival becomes an operational emergency.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Change Is Bigger Than ML-KEM
&lt;/h2&gt;

&lt;p&gt;Hybrid TLS is often presented as an algorithm upgrade, but the more significant change is operational.&lt;/p&gt;

&lt;p&gt;TLS key establishment is evolving from a classical-only model toward a hybrid model that combines X25519 with ML-KEM. The handshake becomes larger, TLS libraries become a more important dependency, compatibility testing becomes essential, and security teams need visibility into actual negotiated groups.&lt;/p&gt;

&lt;p&gt;At the same time, certificates and digital signatures remain separate migration concerns.&lt;/p&gt;

&lt;p&gt;The current IETF work gives this transition a concrete shape through mechanisms such as X25519MLKEM768, while NIST's FIPS 203 provides the standardized ML-KEM foundation. (&lt;a href="https://csrc.nist.gov/pubs/fips/203/final?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;NIST Computer Security Resource Center&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;For developers, the transition should mostly remain invisible at the application layer. For infrastructure and security teams, however, it represents a significant shift in how TLS deployments need to be measured and managed.&lt;/p&gt;

&lt;p&gt;The organizations that begin building cryptographic inventory, testing hybrid negotiation, upgrading TLS dependencies, and monitoring fallback now will have a much easier path when post quantum cryptography becomes a standard infrastructure requirement.&lt;/p&gt;

&lt;p&gt;Hybrid TLS is therefore not the final destination.&lt;/p&gt;

&lt;p&gt;It is the mechanism that helps the internet move from today's cryptographic assumptions toward a more crypto-agile future.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is hybrid key exchange in TLS?
&lt;/h3&gt;

&lt;p&gt;Hybrid key exchange combines a traditional key exchange mechanism with a post quantum mechanism during TLS session establishment. In the current IETF design, X25519MLKEM768 combines X25519 ECDH with ML-KEM-768. (&lt;a href="https://datatracker.ietf.org/doc/html/draft-ietf-tls-ecdhe-mlkem?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;IETF Datatracker&lt;/a&gt;)&lt;/p&gt;

&lt;h3&gt;
  
  
  What does X25519MLKEM768 actually combine?
&lt;/h3&gt;

&lt;p&gt;It combines X25519, a classical elliptic-curve Diffie-Hellman mechanism, with ML-KEM-768, a post quantum key encapsulation mechanism. Both contribute to the resulting TLS shared secret. (&lt;a href="https://datatracker.ietf.org/doc/draft-ietf-tls-ecdhe-mlkem/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;IETF Datatracker&lt;/a&gt;)&lt;/p&gt;

&lt;h3&gt;
  
  
  Does hybrid TLS require a new SSL certificate?
&lt;/h3&gt;

&lt;p&gt;Not necessarily. Key exchange and certificate-based authentication are separate functions. Existing RSA or ECDSA certificates can continue to be used while an organization introduces hybrid key exchange.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is ML-KEM the same as Kyber?
&lt;/h3&gt;

&lt;p&gt;ML-KEM is the NIST-standardized mechanism derived from the CRYSTALS-Kyber submission. Current standards use the name ML-KEM, and NIST standardized it in FIPS 203. (&lt;a href="https://csrc.nist.gov/pubs/fips/203/final?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;NIST Computer Security Resource Center&lt;/a&gt;)&lt;/p&gt;

&lt;h3&gt;
  
  
  Does TLS 1.3 automatically provide post quantum protection?
&lt;/h3&gt;

&lt;p&gt;No. TLS 1.3 provides the protocol framework, but both endpoints and their TLS implementations need to support and negotiate a compatible hybrid key exchange group.&lt;/p&gt;

&lt;h3&gt;
  
  
  How can I verify that a TLS connection actually uses PQC?
&lt;/h3&gt;

&lt;p&gt;Inspect the negotiated TLS supported group. A value such as X25519MLKEM768 indicates that the connection negotiated the hybrid mechanism. Checking whether a library merely supports ML-KEM is not enough. (&lt;a href="https://dev.to/daan_acohen/verify-post-quantum-tls-negotiation-from-python-requests-on-linux-719?utm_source=chatgpt.com"&gt;DEV Community&lt;/a&gt;)&lt;/p&gt;

&lt;h3&gt;
  
  
  Will hybrid TLS make HTTPS slower?
&lt;/h3&gt;

&lt;p&gt;It can increase handshake size and may affect CPU, latency, bandwidth, and connection establishment performance. The practical effect depends on the implementation, network path, and workload, so production-like benchmarking is important.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does hybrid TLS make an entire application post quantum secure?
&lt;/h3&gt;

&lt;p&gt;No. It protects the key establishment of the relevant TLS connection. Certificates, digital signatures, VPNs, software signing, stored encryption, and other cryptographic systems may require separate post quantum migration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should companies wait until quantum computers become practical?
&lt;/h3&gt;

&lt;p&gt;Organizations handling information that must remain confidential for many years should begin preparing now. Cryptographic inventory, dependency upgrades, vendor migration, and interoperability testing can take years, making preparation more practical than waiting for a future quantum event.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>infrastructure</category>
      <category>networking</category>
      <category>security</category>
    </item>
  </channel>
</rss>
