Case Study: The Cryptographic Inventory Nobody Wants to Do
Executive Summary
Every post-quantum migration guide begins with "inventory your cryptography." Every organization discovers that this step, which sounds like a week of documentation, takes six to eighteen months and is the actual project.
This case study follows a 4,000-person financial-services firm through its inventory. It finds 340% more cryptographic usage than the initial estimate, uncovers a class of exposure nobody was tracking, and produces the prioritized migration plan that follows. The discovery techniques transfer to any organization.
Skills applied
- Enumerating cryptographic assets across code, infrastructure, and vendors (§30.14).
- Distinguishing data-in-transit from data-at-rest exposure.
- Identifying hybrid constructions that hide public-key dependence.
- Prioritizing by Mosca's inequality.
Phase 1: The initial estimate
The security team's first pass, from architecture documents:
| System | Cryptography |
|---|---|
| Customer web portal | TLS 1.3 (ECDHE, RSA certs) |
| Internal APIs | mTLS |
| Database encryption | AES-256 |
| Backups | AES-256 |
| Code signing | RSA-2048 |
Five systems. Estimated migration: six months.
Phase 2: What the automated scan found
Running cryptographic discovery tools — static analysis over source, TLS scanning across the network, certificate inventory, and configuration auditing:
| Category | Instances found |
|---|---|
| TLS endpoints | 1,247 (vs. ~20 documented) |
| X.509 certificates | 3,891 |
| Hardcoded public keys in source | 156 |
| SSH host and user keys | 2,340 |
| Code-signing certificates | 47 |
| JWT signing keys | 89 |
| VPN configurations | 12 |
| Database TDE keys | 34 |
| HSM-stored keys | 218 |
| Third-party SaaS integrations | 94 |
| Embedded device certificates | 1,100 |
| Total | ~9,200 |
340% more than the architecture documents suggested, and the excess is concentrated in exactly the places that are hardest to change: embedded devices, third-party integrations, and code with hardcoded keys.
Phase 3: The exposures nobody was tracking
Three categories emerged that no one had considered.
1. Key wrapping under symmetric encryption. Backups used AES-256 — safe from Grover. But the AES keys were themselves wrapped with RSA-2048. An adversary who exfiltrated a backup today needs only to break the RSA wrapper in 2040 to obtain the AES key and decrypt 25-year-retention data.
This is the single most commonly missed exposure. An inventory recording only "AES-256" for a system is wrong if the key management underneath is public-key based. The rule: inventory the key hierarchy, not the bulk cipher.
2. Long-lived signatures on long-lived artifacts. Firmware signed with RSA-2048 today runs on devices with 15-year service lives. In 2038, an attacker with a CRQC could forge a signature and push malicious firmware to devices still in the field. The signature must remain unforgeable for the device's lifetime, not the certificate's validity period.
3. Third-party dependencies. 94 SaaS integrations, each with its own cryptographic posture entirely outside the firm's control. The inventory could enumerate them; migrating them required vendor commitments that mostly did not exist yet. Contract language requiring PQC roadmaps became a procurement change, not a technical one.
Phase 4: Prioritization by Mosca
Applying $T_{\text{data}} + T_{\text{migrate}} > T_{\text{CRQC}}$:
| Asset class | $T_{\text{data}}$ | $T_{\text{migrate}}$ | Sum | Priority |
|---|---|---|---|---|
| Backup key wrapping | 25 yr | 2 yr | 27 | Critical |
| Customer PII in transit | 20 yr | 1 yr | 21 | Critical |
| Firmware signing | 15 yr | 3 yr | 18 | High |
| Archived transaction records | 10 yr | 2 yr | 12 | High |
| Internal API mTLS | 1 yr | 1 yr | 2 | Medium |
| Session tokens | 1 day | 0.5 yr | ~0.5 | Low |
| Public website TLS | 0 (public) | 0.5 yr | 0.5 | Low |
The ordering is driven almost entirely by data lifetime, which the organization already knows from its retention policy — no quantum forecasting required. This is what makes the prioritization defensible to a board: it depends on facts the business already owns.
Note the inversion against intuition: the customer-facing website, the most visible system, is the lowest priority because its content is public and its sessions are ephemeral. Backup key wrapping, which nobody thinks about, is the highest.
Phase 5: What the inventory cost
| Activity | Duration | Effort |
|---|---|---|
| Tool selection and deployment | 6 weeks | 1 FTE |
| Automated discovery | 8 weeks | 2 FTE |
| Manual investigation of findings | 16 weeks | 3 FTE |
| Third-party questionnaires | 12 weeks (parallel) | 1 FTE |
| Embedded device audit | 20 weeks | 2 FTE |
| Prioritization and planning | 6 weeks | 2 FTE |
| Total | ~11 months | ~9 FTE-years |
Roughly $1.4M in staff time before a single algorithm was replaced.
Why so long? Automated tools find TLS endpoints and certificates well. They do not find hardcoded keys in a decade of accumulated code, undocumented integrations, or the cryptographic posture of a vendor's vendor. That work is manual.
Phase 6: What made it tractable
Four things that materially helped:
-
Crypto-agility as the real deliverable. The goal shifted from "replace RSA with ML-KEM" to "make algorithms configurable so the next migration is cheap." Post-quantum will not be the last transition, and hardcoded algorithm choices were the root cause of the difficulty.
-
A cryptographic bill of materials (CBOM). A machine-readable inventory maintained alongside the software bill of materials, updated in CI. Discovery became continuous rather than a one-time project.
-
Procurement leverage. New contracts required PQC roadmaps. Cheaper than retrofitting, and it moved vendors.
-
Accepting partial coverage. 1,100 embedded certificates on devices without remote update could not be migrated. Those devices were network-segmented and scheduled for replacement — an accepted, documented risk rather than an unbounded one.
Discussion Questions
- The inventory found 340% more than documented. What does that suggest about migration timelines quoted before an inventory?
- Key wrapping under AES is the most-missed exposure. Why is it so easy to overlook, and what inventory practice catches it?
- Prioritization depended on data lifetime, not on quantum forecasts. Why does that make the plan more defensible?
- Crypto-agility was the real deliverable. What would you have to change in a typical codebase to achieve it?
Your Turn: Extensions
- Run a TLS scan over a network you administer and compare findings against documentation.
- Trace one system's full key hierarchy from bulk cipher up to the root, noting every public-key step.
- Build a Mosca table for three asset classes you know.
- Draft contract language requiring a vendor PQC roadmap.
Key Takeaways
- Cryptographic inventory typically finds several times more usage than architecture documents show, concentrated in the hardest-to-change places.
- Inventory the key hierarchy, not the bulk cipher: AES-256 protected by an RSA-wrapped key is an RSA exposure.
- Long-lived signed artifacts such as firmware need signatures unforgeable for the artifact's service life, not the certificate's validity.
- Prioritize by data lifetime via Mosca's inequality — it needs no quantum forecast and rests on facts the business already has.
- The durable deliverable is crypto-agility plus a maintained CBOM, since post-quantum will not be the last cryptographic transition.