Crypto Agility Explained
Crypto agility is the architectural property of being able to replace cryptographic algorithms, keys, and parameters without rewriting the application logic that depends on them. It is not a product you buy. It is a design principle that your systems either have or do not have.
Crypto agility reduces the cost and operational risk of PQC migration because algorithms, keys and protocol policies can change without rewriting unrelated business logic. The June 2026 US Executive Order accelerates migration for specified federal systems, but crypto agility remains useful whether or not that policy applies to an organization.
Early deployments make that flexibility concrete. Cloudflare 1.1.1.1 can now validate ML-DSA-44 DNSSEC signatures even though the protocol mapping remains an Internet-Draft. Our post-quantum DNSSEC guide explains why production experiments and final standards must be tracked separately.
Low-agility systems often require application changes, coordinated dependency upgrades and longer maintenance windows. Agility does not make migration automatic, but it enables staged testing and rollback.
Inventory comes first. An abstraction layer cannot help with cryptography the organization has not discovered. Build the cryptographic inventory, assign work in the migration plan template, and use the vendor questionnaire for external dependencies.
The definition
NIST’s official definition: crypto agility is the “capabilities needed to replace and adapt cryptographic algorithms in protocols, applications, software, hardware, firmware, and infrastructures while preserving security and ongoing operations.”
In practical terms: can you change your TLS cipher suite without redeploying your application? Can you rotate your signing algorithm without modifying every service that verifies signatures? Can you add a new key encapsulation mechanism without touching business logic?
If yes, you are crypto-agile. If no, every algorithm change is a project.
Why PQC makes crypto agility urgent
Past cryptographic transitions (DES to AES, SHA-1 to SHA-256, TLS 1.0 to TLS 1.3) were painful but manageable because:
- The new algorithms were drop-in replacements with similar properties
- Key sizes and performance characteristics were comparable
- The transitions happened over a decade with gradual pressure
PQC is different:
- Key sizes increase 10-50x (ML-KEM-768 public key: 1,184 bytes vs X25519: 32 bytes)
- Signature sizes increase 50-100x (ML-DSA-65: 3,293 bytes vs ECDSA: 64 bytes)
- Hybrid mode requires running two algorithms simultaneously (classical + PQC)
- Different policies, providers and systems have different migration milestones
- Additional algorithm changes are likely (HQC selected March 2025, FN-DSA still pending)
Systems that hard-code algorithm choices may require separate changes for hybrid deployment, later standards or provider transitions. Crypto agility reduces repeated coupling, but every change still requires security and interoperability testing.
What crypto-agile architecture looks like
The abstraction layer
The core principle: cryptographic operations live behind a service interface. Application code calls “encrypt this,” “sign this,” or “establish a key” without specifying the algorithm. The algorithm is selected by configuration, not code.
// NOT crypto-agile (algorithm hard-coded in application):
signature = rsa_sign(private_key, message)
// Crypto-agile (algorithm selected by configuration):
signature = crypto_service.sign(key_id, message)
// The crypto service decides RSA vs ML-DSA vs hybrid based on policy
Five layers of abstraction
| Layer | What it abstracts | Example |
|---|---|---|
| Application code | Calls crypto functions without algorithm knowledge | crypto.encrypt(data) |
| Crypto service/API | Maps requests to configured algorithms | Key management service |
| Algorithm configuration | Specifies which algorithm to use where | Policy file, env config |
| Library implementation | Provides the actual crypto primitives | OpenSSL, BoringSSL |
| Hardware (HSM) | Accelerates specific algorithms | PKCS#11 interface |
If any layer is hard-coded to a specific algorithm, you lose agility at that point.
The CARS framework
An academic paper published on IACR’s ePrint in July 2026 proposed the Crypto-Agility Readiness Score (CARS), a five-dimension weighted composite index. While the full scoring methodology is academic, the five dimensions are practically useful as a self-assessment:
- Discovery completeness: Do you know where all cryptography lives in your systems?
- Abstraction level: Are crypto operations behind a configurable service layer?
- Key lifecycle management: Can you rotate keys and algorithms without downtime?
- Testing capability: Can you test a new algorithm in production without committing to it?
- Monitoring and observability: Can you see which algorithms are in use across your fleet?
Score yourself 1-5 on each. If any dimension is below 3, that is where your crypto agility work should focus first.
Practical steps to become crypto-agile
Step 1: Audit current algorithm coupling
Find every place where a specific algorithm is hard-coded:
# Find hard-coded RSA references in application code
grep -rn "RSA\|ECDSA\|Ed25519\|P-256\|secp256" --include="*.py" --include="*.java" --include="*.go" --include="*.ts" .
# Find hard-coded cipher suites in configs
grep -rn "TLS_RSA\|TLS_ECDHE\|AES-128-CBC" --include="*.yml" --include="*.json" --include="*.conf" .
Each result is a point of inflexibility that will need modification during PQC migration.
Step 2: Introduce a crypto abstraction layer
Options ranked by effort:
Low effort (configuration-based):
- Move cipher suite and algorithm selection to environment variables or config files
- Use your language’s standard crypto library with algorithm as a parameter, not a constant
- Configure TLS at the reverse proxy level (not in application code)
Medium effort (service-based):
- Centralize signing operations in a key management service (AWS KMS, HashiCorp Vault)
- Route all certificate operations through a CLM platform
- Use PKCS#11 for HSM-backed operations (algorithm selected by key metadata, not code)
High effort (full abstraction):
- Build or adopt a cryptographic service mesh
- Implement algorithm negotiation at the application protocol level
- Design for algorithm diversity (different algorithms for different trust levels)
Step 3: Test algorithm switching
Before you need to migrate for real, prove you can:
- Add a new cipher suite to your TLS config and verify clients negotiate it
- Issue a certificate with a different signature algorithm and deploy it
- Rotate a signing key to a new algorithm without application changes
- Run hybrid mode (two algorithms simultaneously) without performance regression
If any of these tests fails, you have found your crypto-agility gap.
Step 4: Monitor algorithm usage
You cannot manage what you cannot see. Implement observability for:
- Which TLS cipher suites are negotiated per connection (log the handshake)
- Which certificate signature algorithms are in use across your fleet
- Which key types are stored in your KMS/HSMs
- Alert on deprecated or vulnerable algorithm usage
The Executive Order 14412 connection
On June 22, 2026, Executive Order 14412 set capability-specific deadlines for covered federal systems and strengthened inventory and migration governance.
Organizations outside that scope can use the governance pattern without treating it as their legal deadline: maintain an inventory, assign ownership, test changes and preserve evidence. Contractual flow-down must be confirmed in the applicable contract rather than assumed.
Common anti-patterns
“We will migrate once, to ML-KEM/ML-DSA, and be done.” No. The PQC landscape is still evolving (HQC added March 2025, FN-DSA pending). You will need to update algorithms again. Build for change, not for a single destination.
“Our cloud provider handles crypto, so we do not need agility.” Partially true for data at rest (AWS/GCP manage key algorithms internally). False for data in transit, code signing, authentication, and any custom protocol. Your application-layer crypto is your responsibility.
“We will just upgrade our libraries and recompile.”
That works if your code uses abstract interfaces (crypto.sign() not rsa.sign()). If algorithms are hard-coded, a library upgrade does not help, you need code changes too.
Timeline for action
| When | What to do |
|---|---|
| Now | Audit: find all hard-coded algorithm references |
| Q4 2026 | Abstract: introduce configuration-based algorithm selection |
| 2027 | Test: prove you can add hybrid PQC without code changes |
| 2028 | Deploy: hybrid PQC in production via configuration, not code change |
| 2029+ | Iterate: swap algorithms as standards evolve, via configuration |
FAQ
Is crypto agility the same as PQC migration?
No. Crypto agility is the prerequisite capability. PQC migration is the specific action of switching algorithms. You can be crypto-agile without having migrated to PQC yet. But you cannot migrate to PQC efficiently without being crypto-agile first.
Do I need crypto agility if I only use AWS?
For AWS-managed services (KMS, ACM), AWS handles algorithm agility internally. For your own application code, TLS configurations, signing operations, and authentication tokens, you need your own agility. AWS does not manage the cryptography inside your application.
What is the minimum viable crypto agility?
At minimum: your TLS cipher suite configuration lives in a config file (not compiled into code), your signing keys are managed by a KMS (not hard-coded), and you can test a new algorithm in staging without modifying application code.
How does crypto agility relate to the NIST NCCoE project?
NIST’s NCCoE “Migration to Post-Quantum Cryptography” project explicitly identifies crypto agility as foundational. Their guidance starts with discovery and inventory (finding where algorithms are used) before any migration steps, which is the same first step for achieving crypto agility.
Can open-source tools help with crypto agility?
Yes. OpenSSL’s provider model (3.x) is designed for algorithm pluggability. OQS-Provider adds PQC algorithms as a loadable module. HashiCorp Vault abstracts key management. cert-manager automates certificate lifecycle. These reduce the custom work needed.
Sources
- NIST. “Crypto Agility - Glossary.” csrc.nist.gov
- NIST CSWP 39 (Dec 2025, updated Jun 2026). “Considerations for Achieving Cryptographic Agility: Strategies and Practices.” csrc.nist.gov
- The White House (Jun 22, 2026). Executive Order 14412, “Securing the Nation Against Advanced Cryptographic Attacks.” whitehouse.gov
- Cloudflare (Jul 2026). “The White House’s post-quantum executive order is an important milestone.” blog.cloudflare.com
- IACR ePrint 2026/1467. “A Migration Framework for Legacy Systems Toward NIST PQC Standards with the Crypto-Agility Readiness Score.” eprint.iacr.org
- Microsoft Tech Community (Jun 2026). “Post-Quantum Cryptography and Crypto-Agility.” techcommunity.microsoft.com
- Palo Alto Networks. “Cryptographic Agility: The Key to Quantum Readiness.” paloaltonetworks.com
- NIST. “Crypto Agility Project.” csrc.nist.gov/projects/crypto-agility