mfsig.com
Trust by construction

Security

The contract every .mfsig provides — and the disclosure path for everything else.

TAMPER-EVIDENT

SHA-256 audit on every file

Each .mfsig.json contains a SHA-256 hash over its canonical chemistry + methodology + results subset. Recompute the hash on any client (`mol.verify_integrity()`) and it must match the stored value byte-for-byte. Mutate a single character of a hashed field and verification fails — the file is rejected, not silently accepted.

  • Hash covers: chemistry_and_geometry · methodology · results · solver_call_args
  • Hash does NOT cover: timestamp_utc, UUID, dependency map — these float without affecting science
  • Recompute is local: no network call required, runs in the open Python / TypeScript readers
GRAPH-LEVEL HASH

connectivity_hash · independent verification

v2.1 adds a separate `connectivity_hash` over just the molecular graph (atoms + bonds + formal charges). An auditor can verify that the topology hasn't been touched without rehashing the 600 KB σ-segments payload that the file SHA-256 covers. Merkle-tree per-field auditing.

  • Independent of the file SHA — change one bond and BOTH hashes break
  • Cheap to recompute — milliseconds even on a 200-atom molecule
  • Bond table is RDKit-canonical, so the same SMILES always gives the same hash
21 CFR PART 11

ALCOA-compatible by construction

The schema satisfies Attributable (UUID + engine version), Legible (open JSON), Contemporaneous (ISO 8601 timestamp), Original (file SHA is the canonical form), Accurate (every gate passed at write time). Replay a Reference-tier .mfsig two years later → bit-identical output if library versions match.

  • audit_and_trust.reproducibility carries: molforge version · git commit · hardware target · library lock
  • Reference tier ships with the automated 21 CFR Part 11 ALCOA audit dossier + DOI-backed Zenodo deposit
  • Cohort releases get versioned Zenodo DOIs (Q1 2027 — see roadmap)
NO PII

We don't store your molecules, you do

The viewer is browser-only — your .mfsig files never leave your machine when you load them locally. The /api/enrich endpoint in this demo serves canned sample files; production enrichment runs on isolated compute that returns the .mfsig and forgets the input.

  • Drag-drop converter: zero upload, all parsing client-side
  • Demo /api/enrich: catalogue lookup only · no persistence of submitted SMILES
  • Enterprise pricing tier includes per-tenant compute isolation
OPEN VERIFICATION

Anyone can audit · vendor-independent

Three of the seven supported vendor formats are open specifications (Turbomole .cosmo, OpenCOSMO-RS, NwChem output). The .mfsig schema itself is open. A third party with RDKit + a JSON reader can verify any of our files without our software running anywhere.

  • Open spec at github.com/molforge/mfsig-spec (Q3 2026, on the roadmap)
  • Federated multi-lab co-signing for Reference tier — Q4 2026
  • Cross-lab validation cohort scheduled 2027

Security roadmap

what's coming
Q3 2026RFC 3161 timestamp authority on every file (DigiCert / GlobalSign)
Q4 2026Multi-lab co-signing for Reference-tier cohorts
Q1 2027Differential .mfsig with audit-chained incremental updates
Q2 2027IPFS content-addressed storage option
2028Post-quantum (Dilithium) signature layer for 30-year archival
→ full roadmap (56 milestones)

Responsible disclosure

Found a vulnerability? Report it directly — we acknowledge within one business day, triage within three. We do NOT pursue good-faith security research that follows the disclosure path below.

PGP
key fingerprint published on the same address
Scope: mfsig.com, molforge.ai, the open .mfsig CLI, the .mfsig schema. Out of scope: third-party libraries (RDKit, PySCF, Babylon.js, Next.js) — please report those upstream.