DocumentsProcurement and compliance

FIPS 140: Mirror's position

2 min readSource fips-position.mdsha256 9df5374a1a31f18b…

Mirror ships no FIPS 140-validated cryptographic module and claims no validation. This page says which algorithms Mirror uses, which module performs them in each place, and what a bank does to put every key operation inside a module it has already validated.

The algorithms: approved ones only#

AlgorithmUsed forStandard
ECDSA P-256 with SHA-256Signing legs, verdicts, governance events, logins, attestations, deliveriesFIPS 186-5
SHA-256Commitments, digests, key idsFIPS 180-4
HMAC-SHA-256Per-shipment salts derived from the corridor secretFIPS 198-1
ECDH P-256Optional pairwise corridor secretsNIST SP 800-56A Rev. 3

There are no proprietary ciphers, no custom constructions and no zero-knowledge proofs; the ZK proof is commissioned, not built. The cryptographic bill of materials is signed at /cbom.

The module, place by place#

WhereWhat performs the operationFIPS position
The bander, corridor secret and member key in the bank's HSM (--custody)The bank's own HSM or KMS, through the bank's own toolThe bank's module and the bank's validation. This is the recommended production posture.
The bander, key filesNode.js and the OpenSSL it is built withValidated only if that Node build runs with an OpenSSL 3 FIPS provider that is on a validation certificate, started with --force-fips. mirror-bander fips reports the mode of the running process and exits 0 only in FIPS mode.
The hosted operator (Cloudflare Worker)The Workers runtime's cryptographyNo FIPS claim is made for it. The operator holds no corridor secret and no member key; it signs verdicts with its own key and compares commitments.
The browser consoleThe browser's WebCryptoNo FIPS claim. The console is for demonstration and verification, not production key custody.

What a bank does#

  1. Keep the corridor secret and the member signing key in its HSM. The ceremony is in custody.
  2. Where the bander must use key files, for example in a pilot, run it on a Node build with the FIPS provider, and check with mirror-bander fips.
  3. Verify the operator's signatures with the bank's own validated module if its policy requires it. Verification is ES256 over canonical JSON (SPEC §8.2) and needs nothing from Mirror.

What this page does not claim#

  • That any Mirror artefact is FIPS-validated.
  • That the hosted operator runs in FIPS mode.
  • That a key file on disk meets any FIPS requirement.

If a procurement questionnaire asks "is the product FIPS 140-3 validated?", the accurate answer is no. The accurate follow-up is: every key operation can run inside the bank's own validated HSM, and the algorithms are approved.