Skip to content

zkmopro/ZK-based-Human-Verification

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

ZK-based Human Verification

This repo aims for exploring the PoC of ZK-based human verification for BBS (Bulletin Board System) platforms. The tech is targeting for using OpenAC and its implementation from PSE's zkID team to verify Taiwan's Citizenship Certificate.

System Architecture for OpenAC Integration

Proof Requirements

One-time per credential proof for BBS server

  • Verify the user holds a valid mobile citizenship certificate
    • no need extra check on age and nationalities since holding the certificate proves that
  • Verify the mobile citizenship certificate has not been registered before

Web-based Approach

more common for both physical citizenship certificate (physical card) and mobile citizenship certificate (mobile app)

mobile citizenship certificate for web app
mobile citizenship certificate (mobile app)
physical citizenship certificate for web app
physical citizenship certificate (physical card), requires a card reader

Flow

  1. User → Issuer: apply mobile citizenship certificate
  2. User → Web App: use API to fetch mobile citizenship certificate, and wrap it into JWT-format VC
  3. Web App: Generate ZKP
  4. Web App → BBS server: Submit ZKP with API
  5. BBS server: verify ZKP
    • if pass, update user DB with user.vcVerified = true
    • if failed, update user DB with user.vcVerified = failed

Frontend

  • Fetch mobile citizenship certificate data with APIs
  • Wrap raw data into JWT-format VC
  • Generate ZKP using OpenAC
    • (OpenAC → wasm-bindgen → WASM)
  • Send ZKP to BBS for verification

Backend

Mobile-based Approach

mobile citizenship certificate for mobile app
mobile citizenship certificate (mobile app)

Flow

  1. BBS mobile app → API to fetch mobile citizenship certificate and wrap it into JWT-format VC
  2. within mobile app: generate ZKP (with mopro-ffi bindings)
  3. mobile app → BBS server: submit ZKP with API
  4. BBS server: verify ZKP
    • if pass, update user DB with user.vcVerified = true
    • if failed, update user DB with user.vcVerified = failed

Frontend

Integrate with existing official mobile app for specific BBS

  • Fetch mobile citizenship certificate data with APIs
  • Wrap raw data into JWT-format VC
  • Generate ZKP using OpenAC with mopro-ffi bindings
  • Send ZKP to BBS for verification

Backend

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors