Deadline New national-security systems must be CNSA 2.0 by default from January 1, 2027. See the timeline
210 Security
210 Security
cbom inventory October 23, 2026 7 min read

A worked CBOM example: owners, lifespan, and risk

An illustrative CBOM for a fictional payments platform: eight assets, the two fields that make it prioritizable, and the migration order they imply.

By 210 Security Research

The first CBOM from Example Corp arrives as a scanner export: several hundred components, sorted alphabetically, each with an algorithm, a key size, and a file path. Someone asks the obvious question — which of these do we fix first — and the file has no way to answer it. At the level of the algorithm field, every RSA-2048 entry is the same finding.

Example Corp is fictional. The payments platform, its assets, its owners, and its dates are illustrative; none of this is a customer, a benchmark, or a survey result. What is not fictional is the shape of the problem. A scanner sees cryptography. Prioritization needs two things a scanner does not have: who owns the asset, and how long the data it protects has to stay secret.

A flat list sorts by the wrong field

Sort an inventory by algorithm and you get groups that look actionable and are not. RSA-2048 protects a ninety-day session log and a twelve-year firmware signing chain. Both rows read “RSA-2048, quantum-vulnerable.” One has a migration window measured in quarters, the other in hardware generations, and the algorithm column cannot tell them apart.

Owner and data lifespan fix that, and they do different jobs. Owner because an asset with no owner cannot be scheduled, funded, or retired, however it scores. Data lifespan because it decides whether the exposure is already happening: traffic captured today can be decrypted later, so an asset protecting data with a ten- to fifteen-year confidentiality requirement is exposed now, while an asset protecting a session token is not.

Every other field in a CBOM describes the asset. These two describe the decision.

Eight assets from one system

The table below is the CBOM for one system at Example Corp, the payments platform’s signing and edge estate. Eight entries, deliberately not the whole company.

Asset Owner Environment Data lifespan Quantum status Migration state
External TLS termination (merchant API) Edge Platform Prod, internet-facing Session key; payload retained 7 years Vulnerable: ECDHE P-256, RSA-2048 certificate Hybrid ML-KEM in one region
Payments API key (HMAC-SHA256) Payments Platform Prod Credential 12 months; requests retained 7 years Adequate at 256-bit No algorithm change; rotation review
Firmware signing key (terminal fleet) Device Security Offline HSM 12-year device field life Vulnerable: ECDSA P-256 Dual-sign designed; verifier generation unshipped
Internal issuing CA (service mesh) PKI Team Prod 10-year root Vulnerable: RSA-4096 Re-issue planned 2028; no ML-DSA profile
Agent gateway identity (mTLS) Agent Platform Prod 24-hour certificate Vulnerable: ECDSA P-256 Rotation automated; swap is config-only
HSM data-at-rest keys (AES-256) Crypto Services Prod 10 years at rest Adequate, but wrapped with RSA-2048 OAEP Key wrap migration unscheduled
Vendor payments SDK (bundles TLS stack and CA store) Unassigned Prod and build Inherited, roughly 5 years Unknown: vendor CBOM requested Blocked
Orphaned certificate (expired last year, still trusted) Unassigned Prod trust store None, but still trusted Vulnerable: RSA-2048 Cleanup decision pending

Three things stand out before any analysis. Two rows have no owner, and both of them are exposure: the vendor SDK and the orphaned certificate. One row is a dependency rather than an asset in its own right — the AES-256 keys are fine, the RSA-2048 key wrap around them is not, which a scanner records as two findings and a spreadsheet tends to merge into one. And one row is honestly unknown. The vendor SDK’s algorithms, bundled trust store, and post-quantum support are all unanswered, which is worse than vulnerable because you cannot schedule a question mark.

The same assets in CycloneDX

The table is a management artifact. The file is what you ship, diff, and attach to a review. CycloneDX 1.6 added the cryptographic-asset component type, and its properties array is where the two fields that matter actually live.

{
  "bomFormat": "CycloneDX",
  "specVersion": "1.6",
  "components": [
    {
      "type": "cryptographic-asset",
      "bom-ref": "asset/terminal-firmware-signing-key",
      "name": "terminal-firmware-signing-key",
      "cryptoProperties": {
        "assetType": "related-crypto-material",
        "relatedCryptoMaterialProperties": { "type": "private-key", "state": "active" }
      },
      "properties": [
        { "name": "owner", "value": "device-security" },
        { "name": "data-lifespan-class", "value": "L4-field-life-12y" },
        { "name": "migration-state", "value": "dual-sign-designed" }
      ]
    },
    {
      "type": "cryptographic-asset",
      "bom-ref": "asset/vendor-payments-sdk",
      "name": "vendor-payments-sdk",
      "cryptoProperties": { "assetType": "algorithm" },
      "properties": [
        { "name": "owner", "value": "unassigned" },
        { "name": "data-lifespan-class", "value": "L3-retained-5y" },
        { "name": "migration-state", "value": "blocked-vendor-cbom" }
      ]
    }
  ]
}

This excerpt is illustrative, not normative. Validate anything you emit against the spec version you claim, and keep the value vocabulary closed: a lifespan class that means something different in two teams produces a CBOM you cannot sort. The migration-state field is worth more than it looks. It turns each export into a diff, and a diff is the only progress metric an auditor will accept for work that spans years.

The order the table implies

Read the table with two questions. Can an attacker reach it today? How long does what it protects have to stay secret? For signing assets, add a third: how long does the signature have to verify?

Externally reachable, long retention. The merchant API terminates sessions in milliseconds and the payload is retained for seven years. That combination is the harvest-now case: the session is short, the data is not, and an adversary recording traffic today is buying the 2030s. It is also the asset with the most peers you do not control, which makes hybrid the practical first move rather than pure post-quantum. The vendor SDK sits at the same priority for a different reason. It touches production and the build, it is inherited rather than chosen, and nobody can currently say what it does.

Signing, next, because of field lifetime. The firmware signing key and the internal CA protect no session at all. Their output has to verify years after it is produced, on verifiers Example Corp cannot update. The firmware key’s binding date is not December 31, 2031. It is the last date the terminal hardware roadmap allows a verifier change, which is earlier and outside the security team’s control. The internal CA belongs here too: a ten-year root that gets embedded in more trust stores every quarter becomes more expensive to replace each quarter you wait.

Short-lived identity, third. The agent gateway certificate lives 24 hours and rotates automatically. The algorithm is a configuration value, so the work is small and the deadline is soft. Doing it early is fine as a rehearsal for the pipeline you will need elsewhere, as long as nobody mistakes it for progress on the harder rows.

Symmetric, last. AES-256 is not the problem and never was. The migration item hiding in that row is the RSA-2048 key wrap around the data keys, and it belongs to the key-establishment track, not the signing track. The payments API key is HMAC-SHA256 with a 12-month credential life and needs no algorithm change at all — say so explicitly in the record, or someone will budget for it.

The orphaned certificate is not a migration. It is cleanup, and it should happen this week, because it is cheap and because it names the ownership gap that produced it.

Three decisions the table enables

What to migrate first. One region of merchant TLS to hybrid ML-KEM, with the exception list published monthly. Not the firmware estate, which needs a hardware generation, and not the HSM symmetric keys, which need a schedule rather than a pilot.

Who owns it. The owner column converts a finding into a work item with a name attached. Two blank cells are the most valuable output of the exercise, because an unassigned asset is the one that will still be running RSA in 2032 with nobody accountable for the exception.

What evidence to produce. The CycloneDX export, with owner, lifespan class, and migration state as properties, and a signed trust-store inventory to prove the orphan is gone. That artifact answers the vendor questionnaire in March 2027 and the audit question after it, without a new project.

A CBOM is not a security deliverable in the abstract. It is the thing that lets a platform lead refuse a non-compliant vendor, schedule a hardware generation, and tell an auditor which algorithm protects which interface. Eight rows and two columns is enough to start.

Sources

About this writing

Published by 210 Security Research. We cite primary sources for regulatory claims and label drafts as drafts. If you find an error, tell us and we will correct it in public.

Next step

Find out what you are actually running.

Cipher Posture finds and fixes quantum-vulnerable cryptography. Threat Model Agent models the whole system. Start with the readiness assessment.