BioZero: Privacy-Preserving and Publicly Verifiable On-Chain Biometric Authentication via Homomorphic Commitments and Zero-Knowledge Proofs
Zibin Lin, Taotao Wang, Junhao Lai, Shengli Zhang, Qing Yang, and Soung Chang Liew

TL;DR
BioZero is a privacy-preserving biometric authentication protocol that enables publicly verifiable on-chain decisions, combining homomorphic commitments and zero-knowledge proofs for efficient and secure decentralized identity verification.
Contribution
BioZero introduces a novel combination of cryptographic techniques to achieve privacy-preserving, publicly verifiable biometric authentication on blockchain with improved efficiency.
Findings
Up to 67.8x lower network-adjusted authentication latency.
Client-side proving is up to 266.4x faster than zk-SNARK baseline.
Verification time remains in the millisecond range.
Abstract
Decentralized identity systems promise user-controlled identifiers and cross-domain verification without a shared identity provider, yet authentication still reduces to possession of keys or credentials once secrets are leaked, reused, or replayed. We present BioZero, a privacy-preserving biometric authentication protocol for decentralized identity that binds an enrolled identity to a biometric witness without revealing biometric templates, while enabling publicly verifiable on-chain decisions. BioZero combines Pedersen commitment-homomorphic computation, consistency spot-checks, and Groth16 zero-knowledge proofs to achieve identity-bound authentication with succinct on-chain verification. We analyze acceptance soundness, freshness, template privacy, and non-malleability under an open decentralized threat model including replay, timing, brute-force, oracle, and forgery attacks. On an…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
