A well-known URI for publishing cryptographic posture
There is no way to ask a deployment what cryptography it runs and get an answer a machine can check. This proposes one, at /.well-known/crypto-agility.json, modelled on security.txt.
What this is
A position paper submitted to the IETF, individual submission. It has not been accepted, reviewed or endorsed by any standards body, and it is not a standard. It is published so the argument and its evidence can be checked.
- Status
- Individual Internet-Draft. Not a working-group product, not IETF consensus, not a standard.
- Designation
- draft-acosta-crypto-agility-manifest-01, 16 pages
- Filed
- -00 on 27 July 2026, -01 on 6 August 2026
- Location
- /.well-known/crypto-agility.json, an RFC 8615 well-known URI
- Modelled on
- security.txt (RFC 9116) and the CycloneDX CBOM
- IANA
- Requests the well-known suffix. IANA acts at RFC publication, not on a draft.
What this is
An individual Internet-Draft filed with the IETF. It has not been adopted by a working group, it does not represent IETF consensus, and it is not a standard. The value on offer is not the format; it is a predictable location and a schema, so posture becomes something a CI job can fetch rather than something a person has to go and read.
Why this exists
QuantaKrypto exists to help organisations move off cryptography a quantum computer will break. Doing that at any scale runs into the same wall immediately: there is no way to ask a deployment what cryptography it runs and get back an answer a machine can check. The inventory has to exist before anything can move, and nothing produces one.
So the survey comes first, and the survey is done by hand. Reading vendor documentation, disclosure notices, changelogs and blog posts, then writing the answer into a spreadsheet that is stale the week after. That work is most of the effort in a migration programme, it does not scale, and it is exactly the part that should be automatable.
The manifest is the smallest thing that would fix it: a predictable location and a schema, so posture becomes something a CI job, an auditor or an agent can fetch rather than something a person has to go and read. It does not need to be clever. security.txt is not clever either, and it works for the same reason.
We hit the same wall again while writing the TLS resumption paper, where a roster of which vendors had switched a feature off still has to be qualified as "last measured or documented". That is corroboration rather than origin: the draft was already filed by then.
What the manifest carries
- posture: a readiness score, whether hybrid post-quantum key exchange is in use, a count of quantum-vulnerable findings by severity, and how many are exposed to harvest-now-decrypt-later.
- cbomSummary: a compact digest of, and a pointer to, the full CycloneDX Cryptography Bill of Materials the summary was derived from. The manifest carries a pointer, not the inventory.
- attestation (optional): a link to a machine-verifiable posture credential. This is what turns a claim into something a third party can check.
- policy: the migration deadlines the project declares it is measured against.
A manifest is a claim, not a proof
Serving one says what a project asserts about its posture, not what is true of it. That is the honest limit of any self-published document and the reason the attestation link exists. Anyone building on this should treat an unattested manifest as a starting point for verification, not a substitute for it.
What it deliberately is not
- Not a replacement for CBOM. CycloneDX CBOM is the inventory format that answers what cryptography is in here. The manifest is its public-facing discovery counterpart: a small summary at a predictable URL answering where is this project's posture.
- Not a new cryptographic mechanism, attestation format, or scoring method. It reuses existing pieces and defines only the well-known URI, the media type, and the JSON fields.
- Not closed to extension. The schema deliberately omits
additionalProperties: false, and consumers are required to ignore members they do not understand, so the format can grow without breaking readers.
The documents
The paper is the submission. Everything else is supporting material, there so the claims can be checked, and none of it needs reading to follow the argument.
- The Internet-Draft on the datatrackerexternaldraft-acosta-crypto-agility-manifest-01, the canonical copy. Sixteen pages, filed 6 August 2026, superseding the -00 of 27 July.
- The JSON schemaexternalThe field-by-field contract, machine-readable. No additionalProperties bar, on purpose: consumers must ignore what they do not understand.
- A worked, schema-valid exampleexternalWhat a real manifest looks like, filled in.
- The standards page for the manifestStart hereexternalWhat it is, how agents and CI consume it, and why a self-published summary only becomes trustworthy with signed attestation and continuous regeneration.
What exists today
A draft nobody can run is a wish. These are the pieces that exist, stated with their real status rather than their intended one.
- The schema and a worked example, both in quantakrypto/crypto-agility, Apache-2.0.
- A public validator on this site, so a manifest can be checked against the schema without installing anything.
- An emitter in qScan,
qscan crypto-agility emitandvalidate. Honest status: this is on an unmerged branch, not in the published npm package. It is landing, not shipped. - The survey the draft builds on: crypto-agility as a concept is already well-standardised, and the repository documents which existing work each part reuses rather than reinventing.
Check it yourself
Every measured figure above is computed from files in these repositories.
Is this an IETF standard?
No. It is an individual Internet-Draft, which means one person filed it. It has not been adopted by a working group, it does not represent IETF consensus, and Internet-Drafts expire. IANA registers the well-known suffix only at RFC publication, which has not happened and may never.
Why not just use CBOM?
CycloneDX CBOM answers what cryptography is in a project, and it is the right format for that. It does not answer where a given project's posture lives. The manifest is the discovery layer: a small summary at a predictable URL that points at the full CBOM. It is meant to sit alongside CBOM, not to replace it.
Why would anyone trust a self-reported posture?
On its own, they should not, and the draft says so. Serving a manifest states what a project asserts, not what is true of it. The optional attestation link is what turns the claim into something a third party can verify, which is the same relationship security.txt has with any assertion it carries.
Can I publish one today?
Yes, and nothing bad happens if the draft never becomes an RFC: it is a JSON file at a well-known path. Validate it against the schema first. Be aware that the well-known suffix is requested rather than registered, so a future revision could change the path.
References
- draft-acosta-crypto-agility-manifest, revision -01, 6 August 2026.
- RFC 8615, Well-Known Uniform Resource Identifiers (URIs).
- RFC 9116, A File Format to Aid in Security Vulnerability Disclosure (security.txt), the model for this.
- CycloneDX CBOM, the inventory format the manifest summarises and points at.
Measuring your own posture is the same problem, one deployment at a time
The tooling behind this paper is the tooling we run for clients: reproducible tests against current releases, and a measurement you can check rather than a report you have to trust.