HSM / PKCS#11 / HSM Capacity Calculator
What you will do: Pick a Small, Medium or Large deployment, switch on enterprise use cases and set each one's transactions per second, choose N+1 or 2N redundancy and the number of locations, then read the three fleet-sizing cards.
Worked example: Keep the Medium preset (about 7,145 TPS) and compare Today, Post-PQC on the existing fleet and Post-PQC on next-gen HSM: each card reads Sufficient, Demand only or Overloaded, with the bottleneck algorithm explained.
Runtime and privacy: The cryptographic exercise runs in this browser. Review the site privacy terms before entering sensitive material; use synthetic inputs for learning and evaluation.
For your role
- Executive / Business Leader
- Choose the organisation profile closest to yours and toggle Standards today against Full end-state: the difference in HSM count is the capital question post-quantum signatures raise, before any vendor quote.
- GRC / Risk & Compliance
- Model transition-window hybrid signing shows the period when both classical and post-quantum signatures run at once; the How we estimated this notes under each workload are the assumptions to record with the figure.
- Security Architect
- Pick Demand sizing or Inventory sizing, enable the workloads you run (TLS termination, VPN IKE, SSH, DNSSEC, code signing, document signing) with their transactions per second, and choose N + 1 or 2N: the fleet sizing model gives HSMs per location under ML-DSA-65 or SLH-DSA-128s.
- IT Ops / DevOps
- Start from the Small, Medium or Large organisation profile, set the number of locations and the sizing headroom, and read the per-location capacity formula: the result is the HSM count to put in front of a change board, with Model limits & caveats stating what it does not cover.
Simplified educational model — not a substitute for a consultant-grade capacity analysis. This simulator assumes per-site demand with geo-redundant active-active replication (each location independently sized for the full workload), a single uniform HSM SKU per scenario, peak-window sizing, and best-case PKCS#11 throughput. It does not model latency budgets, per-tenant key isolation, geo-failover, cold-start surges, batching, partition slots, firmware-specific limits, or compliance-driven duty-cycle constraints. Use it to sanity-check ranges and explore trade-offs, not to size a production fleet.
HSM performance numbers are illustrative reference values from public vendor datasheets (Thales Luna 7, Entrust nShield 5c, Utimaco SecurityServer). No vendor currently publishes production ML-DSA hardware-accelerated TPS; that value is an extrapolation. Adjust every parameter to match your measured environment, and engage a vendor or HSM architect for a real deployment.
Deployment profile
Transition window: hybrid signatures
When on, the post-PQC workload keeps the classical signature (RSA/ECDSA) alongside ML-DSA on every artifact — modelling operators who dual-sign during migration instead of cutting over. Doubles signing load on the "Post-PQC" scenarios.
Our estimate — the aggregate TPS behind each deployment-size preset and use-case profile. Each is worked from stated inputs (users × requests × the resumption ratio, developers × commits × artifacts, connections ÷ key TTL) for a typical small, medium and large estate. These figures are this site’s own modelling, not a value quoted from a standard or report.
Distributed topology
Each location runs the full per-site workload independently — multi-location deployments add geo-redundancy (one site can fail without affecting others). Each site also has its own local HA (N+1 or 2N) on top of raw demand.
These sliders describe what one location experiences. Adjusting any of them re-derives the per-site TPS for every use case using the formulas in each use case's "How we estimated this" panel. Multi-location deployments replicate this load at every site for geo-redundancy.
Enterprise use cases
Check a use case to add its load to the fleet requirement.
TLS / HTTPS termination
Web tier and API gateway TLS handshakes. 1 server signature + 1 hybrid KEM (ML-KEM-768 + ECDH P-256) per handshake. Assumes full-handshake offload to the HSM (both the certificate signature and the ephemeral KEM); keyless-TLS designs that only offload the signature would charge substantially less HSM load.
Post-PQC ops (end-state): ML-DSA-65 + ML-KEM-768 + ECDH P-256
VPN / IPsec IKE
Site-to-site and remote-access IKEv2 tunnel negotiation. 1 hybrid KEM (ML-KEM-768 + ECDH, RFC 9370 multi-KE) + 2 AUTH (mutual) per setup.
Post-PQC ops (end-state): ML-KEM-768 + ECDH P-256 + ML-DSA-65
SSH user / host authentication
Privileged access and machine-to-machine SSH. 1 signature + 1 hybrid KEM (ML-KEM-768 + classical ECDH, as in mlkem768x25519) per session. Assumes a centralized SSH CA / bastion architecture where host keys and session KEM are HSM-resident, not per-server local keys.
Post-PQC ops (end-state): ML-DSA-65 + ML-KEM-768 + ECDH P-256
DNSSEC zone signing
Authoritative DNSSEC zone and RRset signing. 1 signature per record on zone re-sign.
Post-PQC ops (end-state): ML-DSA-65
Code signing (CI/CD, containers)
Release artifact, container image, and SBOM signatures. 1 signature per build.
Post-PQC ops (end-state): ML-DSA-65
Document / PDF signing (eIDAS)
Advanced / qualified electronic signatures on documents. 1 signature per document.
Post-PQC ops (end-state): ML-DSA-65
PKI CA issuance / OCSP
Certificate issuance and OCSP response signing. 1 signature per cert or OCSP reply.
Post-PQC ops (end-state): ML-DSA-65
Database TDE (Oracle / SQL Server)
Transparent data encryption. AES-256 DEK unwrap per key rotation + RSA master key wrap.
Post-PQC ops (end-state): AES-256 + ML-KEM-768
KMS envelope encryption
Cloud KMS pattern — AES-256 key wrap for data keys, ECDH for recipient delivery.
Post-PQC ops (end-state): AES-256 + ML-KEM-768
Payment / PIN translation (PCI, EMV)
PIN block encrypt and MAC for cardholder transactions. Mostly symmetric, occasional RSA. Modelled here on a shared general-purpose fleet; in practice PIN translation runs on a dedicated payment-HSM segment (payShield-class), sized separately.
Post-PQC ops (end-state): AES-256 + ML-KEM-768
Fleet sizing & sufficiency
Today
Classical HSM
Demand
✓ met · 2.00×
2 / 1 HSMs (per loc)
Availability (HA)
✓ met · 1.00×
2 / 2 HSMs (per loc)
Marker at 1.0× = HA target. Below 1.0× = HA gap (demand may still be met).
Per location
2 HSMs
1 raw demand + 1 HA
Deployed / loc
2 HSMs
Fleet 47% util
Total fleet
2 HSMs
1 × 2
HSMs / location (slider)
Bottleneck: ECDH P-256
Post-PQC (existing fleet)
Classical HSM
Demand
✓ met · 1.02×
50 / 49 HSMs (per loc)
Availability (HA)
✓ met · 1.00×
50 / 50 HSMs (per loc)
Marker at 1.0× = HA target. Below 1.0× = HA gap (demand may still be met).
Per location
50 HSMs
49 raw demand + 1 HA
Deployed / loc
50 HSMs
Fleet 97% util
Total fleet
50 HSMs
1 × 50
HSMs / location (slider)
Requires vendor firmware update (PKCS#11 v3.2) for ML-KEM. Some classical HSMs cannot run ML-KEM without hardware replacement.
Bottleneck: ML-DSA-65
Post-PQC (next-gen HSM)
Next-gen PQC HSM
Demand
✓ met · 1.50×
3 / 2 HSMs (per loc)
Availability (HA)
✓ met · 1.00×
3 / 3 HSMs (per loc)
Marker at 1.0× = HA target. Below 1.0× = HA gap (demand may still be met).
Per location
3 HSMs
2 raw demand + 1 HA
Deployed / loc
3 HSMs
Fleet 41% util
Total fleet
3 HSMs
1 × 3
HSMs / location (slider)
Bottleneck: ML-DSA-65
PQC readiness verdict
Your current fleet of 2 HSMs across 1 location is sufficient for today's classical workload. Migrating to PQC on that same hardware would need 50 HSMs total — 25× more than today. Upgrading to next-gen PQC hardware brings that back down to 3 HSMs (17× fewer than staying on classical hardware).
How TPS becomes HSM count
- Aggregate (per site) — sum every enabled use case's TPS × ops-per-transaction, by algorithm. TPS values describe what one site experiences; result is ops/sec per algorithm at a single location.
- Bottleneck — divide each algorithm's load by its HSM capacity; round up. The slowest algorithm sets the floor. In the worst current scenario (Post-PQC (existing fleet)), the bottleneck is ML-DSA-65 at 5,545 ops/s ÷ 150 ops/s = R = 49 HSMs to serve one location's demand.
- Replicate per location — each of L = 1 location independently runs the full per-site workload (geo-redundant active-active). No load splitting: every site carries R = 49 HSMs of demand. Multi-location adds geo-HA (any single site can fail entirely).
- Add local availability headroom — on top of the raw demand count, each location gets its own N+1 or 2N spare. The raw count alone meets TPS demand; local redundancy keeps that site serving traffic when an HSM there fails.
N + 1 — tolerate 1 failure
Per-location HSMs = raw + 1 = 49 + 1 = 50 HSMs. The +1 is an idle spare; demand is met by the 49 active HSMs. Lose one and the remaining 49 still cover 49 HSMs' worth of demand.
Total fleet = 1 × 50 = 50 HSMs
2N — fully redundant active-active
Per-location HSMs = raw × 2 = 49 × 2 = 98 HSMs. Two parallel sets of 49 HSMs both serve traffic; lose an entire set and the other still carries 100% of demand.
Total fleet = 1 × 98 = 98 HSMs
Key invariant — TPS demand is met by the raw count alone (49 HSMs/location). Redundancy (N+1) adds 1 spare per location to maintain availability under failure. Sufficiency status in each scenario card below reports both: Demand met (deployed ≥ raw) AND HA met (deployed ≥ raw + redundancy).
Per-location distribution
Each of 1 location independently serves the full per-site workload (geo-redundant active-active). Region labels are cosmetic.
Today
Post-PQC (existing fleet)
Post-PQC (next-gen HSM)
HSMs required vs deployed
- Deployed
- Required (HA target)
- Required (demand)
Workload per algorithm (ops / sec)
- Classical
- PQC
Also sizing certificate storage and TLS bandwidth for the migration?
Try it
Switch a scenario from Standards today to Full end-state with ML-DSA-65. What moves the HSM count?
Next step
Turn it into a plan: Infrastructure Modernization PlannerThis tool practises the PKI module, phase 6 (Infrastructure & Performance); Infrastructure Modernization Planner produces a deliverable of that phase.
Related content
Next in HSM / PKCS#11