ZeroSurf

Privacy-first mobile browser with ZK age verification using Aadhaar + AI content filtering

ZeroSurf

Created At

ETHGlobal New Delhi

Project Description

ZeroSurf solves broken age verification using zero-knowledge proofs and decentralized infrastructure.

  • Zero-Knowledge Age Verification with Anon-Aadhaar - Users scan their Aadhaar QR code once. The anon-aadhaar React Native library generates ZK proofs on-device using Mopro proving system. Websites get cryptographic proof you're 18+ but learn nothing about your identity. The proof is mathematically verifiable but reveals zero personal data.

  • AI Content Filtering on Fluence - My Express.js backend runs on Fluence Virtual Servers for censorship resistance. The decentralized deployment means no single point of failure or control.

  • Complete Ecosystem - The NPM package (zerosurf-age-verify-button) lets any website integrate anon-aadhaar ZK verification. Users click a button, deeplink to ZeroSurf mobile app, generate ZK proof, and return verified.

The system combines Mopro's client-side ZK proving with Fluence's decentralized compute to create privacy-first age verification that actually works. Parents get content control without surveillance. Users prove age without revealing identity.

How it's Made

Core ZK Proof Stack:

  • Mopro: Rust-based proving system with uniffi bindings for mobile ZK proof generation
  • Anon-Aadhaar React Native: Library for generating ZK proofs from Aadhaar QR codes
  • Groth16 Circuit: Zero-knowledge proof system revealing only age>18 status
  • On-Device Proving: All ZK computation happens locally, never sending private data

Fluence Decentralized Backend:

  • Express.js on Fluence Virtual Servers: Content analysis backend deployed on decentralized infrastructure
  • Censorship Resistance: Fluence deployment prevents single points of failure or control

Mobile Architecture:

  • React Native + Expo for the ZeroSurf browser app
  • Mopro integration for client-side ZK proving using rapidsnark backend
  • Anon-aadhaar library handles Aadhaar QR scanning and signature verification
  • TypeScript NPM package for seamless website integration

ZK Proof Flow: When users scan Aadhaar QR codes, the anon-aadhaar library verifies UIDAI signatures and extracts identity data. Mopro then generates Groth16 ZK proofs on-device that prove age>18 without revealing name, address, or other personal info. The proof includes nullifier seeds to prevent reuse while maintaining anonymity.

Fluence Integration Benefits: Deploying on Fluence Virtual Servers ensures our content filtering can't be censored or controlled by any single entity. The decentralized compute network provides resilient infrastructure while the AI analysis happens without revealing user browsing patterns.

Partner Technology Synergy:

  • Mopro (Ethereum Foundation): Enables mobile ZK proving for client-side privacy without trusted servers
  • Anon-Aadhaar: Provides zero-knowledge identity verification using India's Aadhaar system
  • Fluence: Decentralized compute ensures censorship-resistant content filtering

The deeplink integration creates seamless UX, users verify via ZK proofs and stay in our privacy-preserving browser instead of returning to potentially tracking websites.

GitHub Repository

  • Main Project: https://github.com/Krane-Apps/zerosurf-anon-aadhaar
  • NPM Package: https://www.npmjs.com/package/zerosurf-age-verify-button
background image mobile

Join the mailing list

Get the latest news and updates