Skip to content

Privacy Model

The privacy design keeps original identity document images and full OCR output on the user’s device. Selected, separately approved data may be encrypted into a VEID scope; encryption limits who can read a payload but does not make it anonymous or erase its metadata and immutable chain references.

The capture client must clear temporary document-processing copies after local checks. If a user chooses to save a source image, that copy remains only in the user’s local device storage under the user’s control.

DataWhere it livesWho can read it
Original identity document imagesUser’s device only; never uploadedThe user, through the local wallet client
User-reviewed OCR fields and verification featuresEncrypted VEID scope, only if the user approves submissionProcessed only for the consented purpose under the scope notice
Biometric templatesEncrypted VEID scope, only where separately consentedAs described in the biometric scope and trusted-processing design
Device attestation payloadsEncrypted VEID scope only where separately approvedAs stated in the scope notice
Identity scope recordsOn-chain, referencing vault payloadsPublic (ciphertext references + metadata)
Verification resultsOn-chain, signedPublic (result, not the data)
Consent settingsOn-chain (encrypted) + off-chain indexUser-controlled

The public ledger does not carry source document images or plaintext identity documents. It can carry encrypted payloads or references, key fingerprints, scope identifiers, signed attestations, and results. Designated verification recipients may process data in a submitted scope as described by its notice. Public chain metadata and records are immutable; revoking consent stops future authorized sharing but does not erase existing chain history or copies.

The design calls for data minimization: submit only the minimum data needed for the purpose the user approved. Original identity document images and full OCR output are excluded from VEID submissions. Notable deliberate exclusions:

  • veid.geo_location covers country and region, not precise GPS.
  • Derived-feature sharing (feature hashes) is off unless the user grants AllowDerivedFeatureSharing.
  • Other submitted data follows its own scope lifecycle; chain records and independent copies may persist after consent is revoked.

The x/veid/zk package supports zero-knowledge proofs over identity data: proving a property (for example, that a verified identity meets a policy) without revealing the underlying attributes. This lets relying parties consume assurance rather than data — the strongest form of data minimization the protocol offers.

Where verification must touch decrypted data (such as template matching), it happens inside attested trusted execution environments registered in x/enclave — see Encryption & Enclaves. Verification services prove they run approved enclave measurements before they are trusted with decryption tasks.

The Consent Framework implements the control surface:

  • Access & transparency — consent history is versioned and auditable.
  • Revocation — per-scope, immediate, recorded on-chain.
  • Expiration — consent can be time-boxed globally or per scope.
  • Provider scoping — data sharing can be limited to whitelisted providers per scope.

The framework is built to align with GDPR (including Article 9 special category handling for veid.biometric), CCPA/CPRA, and BIPA. The governing legal documents live in the repository (PRIVACY_POLICY.md, BIOMETRIC_DATA_ADDENDUM.md, CONSENT_FRAMEWORK.md) and are the authoritative statements of policy; this page describes the technical enforcement behind them.