# Security and privacy model
The issuer controls a local ML-DSA key. The application sponsor controls a different key. The chain enforces transaction authorization. The application enforces passport and event authorization. Private asset content is not required on-chain.

## Public data
Passport identifiers, asset and metadata hashes, public issuer/controller addresses, public signing keys, signatures, selected public metadata, signed event payloads, transaction references, and block heights are public proof material. The chain receives record commitments. The application serves public signed envelopes and selected metadata. Hashes can reveal matches to known files. Hashes do not conceal low-entropy data.

## Private data
Keep source code, customer data, full reports, confidential CBOMs, and documents off-chain. Creation sends a fingerprint and public metadata. Never put private data in metadata, metadata_uri, claim fields, or event payloads. Evidence references are hashes plus optional operator-controlled off-chain references. The service does not fetch metadata URIs. Browser file inputs are read locally. Wallet seed files are private and unencrypted. The browser clears in-memory key buffers at route component exit; JavaScript memory clearing cannot establish forensic erasure.

## Storage and logs
The service stores public records and pending signed requests in an atomic JSON snapshot. Write a temporary file, fsync, rename, and fsync the parent directory. Restrict the data directory to mode 0700 and files to 0600. Run one process per store. The PID guard prevents two local processes from opening the store. Keep the data volume outside release directories. Back it up before upgrades. The reference limits are 10000 passports and 1000 events per passport. Large deployments require a transactional database adapter and replicated storage qualification.

Logs include event, error code, response status, duration, version, network, and public sponsor address. Do not log request bodies, wallet seeds, private keys, tokens, source content, or report excerpts. Nginx access logs can contain public passport URLs. Apply an operator retention policy.

## Threats and controls
Modified assets fail the fingerprint check. Modified metadata fails its hash check. Modified signed bodies fail signature validation. Wrong networks fail domain checks. Reordered or duplicated events fail sequence or identifier checks. Unauthorized controllers cannot change state. An attestation issuer can revoke only its own claim. The server validates request shape before submitting an anchor. Body, concurrency, history, and record limits bound resource use. The reverse proxy adds per-client request limits. Origin checks reject foreign browser writes. API signatures authenticate operations; no shared bearer secret grants control of all passports.

A compromised issuer key can authorize false claims. A valid signature does not prove a claim is true. A compromised sponsor can spend its testnet fee balance. A malicious or unavailable node can provide incomplete or incorrect chain evidence. An omitted signed-history suffix cannot be excluded without a trusted latest-state checkpoint or a complete independent chain/application index. An operator can deny service or lose records. Backups, independent exports, monitoring, and later light-client work reduce these risks. This release has not received an independent security audit.

## QuantumVault storage interface
A future protected evidence store implements put(bytes,policy)->{evidence_hash,private_reference}, get(private_reference,authorization)->bytes, and delete(private_reference,authorization). QuantumPassport keeps the hash. The private reference and access credentials remain outside public envelopes. Verification recomputes the hash after an authorized retrieval. QuantumVault storage integration is specified, not enabled in this release. Do not send private references through public URLs.

The exported EvidenceStore TypeScript interface defines the protected storage boundary. It supplies no QuantumVault backend or credentials.
