Zero-Knowledge Guarantee
We implement true Zero-Knowledge proofs1 using zk-SNARKs2 during initial registration. Once authenticated into a session, verification uses only your anonymous instance ID. Our servers never store, transmit, or learn ANY personally identifiable information.
Three Security States:
UNREGISTERED — No in-person validation has occurred for this app instance/device/user combination
UNVALIDATED — Registration exists but session has expired; requires authentication to start new session
VERIFIED — Active session; user authenticated recently; automatic verification via instance ID
Sessions expire after a period of inactivity or when you explicitly log out. Proving keys expire after periods of inactivity, requiring fresh in-person re-registration.
What Our Servers Store:
instanceID — Anonymous unique identifier for this app installation (contains no PII)
verificationKey — Public key used to validate initial zk-SNARK proof at registration
securityState — Current state: UNREGISTERED / UNVALIDATED / VERIFIED
restrictionLevel — Age restriction status derived from registration: 18+ / 21+
sessionExpiry — Timestamp when current verified session expires
timestamps — Record of session events, used to identify fraud patterns
The instance ID is cryptographically derived from device hardware and cannot be transferred or cloned. The verification key is mathematically incapable of revealing prover identity.
What Your Device Stores:
All personal data and cryptographic secrets remain on your device within its hardware enclave. No PII EVER shared or transmitted.
instanceID — Your anonymous verification identifier (derived from hardware)
provingKey — Private key used to generate initial zk-SNARK proof at registration (never leaves device)
witness — Your age verification credential, secured in hardware (never exposed)
authMethod — Authentication type: biometric or password-based encryption
localSessionState — Current verification status synced with server
Keys are generated on-device during registration and cryptographically bound to either biometric authentication (fingerprint/Face ID) or a secure password. Both methods provide equivalent cryptographic strength.
How Session-Based Verification Works:
Initial Registration: During in-person validation, your device generates a zk-SNARK proof3 demonstrating age eligibility without revealing identity. This proof is verified once and your instance receives UNVALIDATED state.
Session Authentication: When you first authenticate (biometric/password), your device notifies our servers. We upgrade your state to VERIFIED and set a session expiry. Your authentication never leaves your device—we only receive confirmation that authentication succeeded.
Seamless Verification: While VERIFIED, websites simply query our API with your instance ID. We respond with boolean verification status. No proof generation. No authentication required. Just instant confirmation.
This session model provides the convenience of "stay logged in" functionality while maintaining zero-knowledge privacy guarantees. We never learn when, where, or how you use age-restricted services—only that you have an active verified session.
Per-User Security Enforcement:
Session authentication requires live credentials—either biometric or password. This prevents device sharing, unauthorized use by minors, and credential theft.
- Instance IDs are cryptographically bound to specific device hardware via secure enclave
- Authentication validates against the registered user's biometric template or password hash
- Biometric devices: Fingerprint/Face ID validation via hardware secure enclave
- Non-biometric devices: Password-derived key encryption with equivalent security guarantees
- No credential backup or "family sharing" bypass—one instance, one device, one verified person
- Sessions auto-expire after inactivity; keys expire requiring re-registration
This architecture ensures that even if a minor obtains physical access to a verified device with an active session, the session is bound to that specific adult's authentication and hardware. Attempts to clone or transfer the instance ID fail cryptographic validation.