Cryptographically verifiable election system for Kenya — ElGamal encryption, homomorphic tally, SBT voter identity, WebAuthn auth, AI fraud detection
# VeriVote Kenya
**Cryptographically Verifiable Hybrid Electronic Voting System**
A sovereign, open-source election platform combining biometric identity verification, ElGamal encryption, homomorphic tallying, Shamir's Secret Sharing, Soul-Bound Tokens on an EVM blockchain, and on-premise AI fraud detection — built for Kenya's constitutional electoral requirements.
---
## Features
### Identity & Registration
- **Soul-Bound Tokens (SBTs)** — Non-transferable ERC-721 voter identity anchored on-chain; burned on death
- **Persona KYC** — Automated national ID + liveness detection (inline iframe, no redirect)
- **IEBC Manual Review** — In-person verification fallback with appointment scheduling
- **WebAuthn / FIDO2** — Biometric passkey enrolled on the voter's own personal device; during in-person registration the IEBC officer's screen displays a QR code the voter scans with their phone — credential is created on the voter's device via FIDO2 cross-device (Bluetooth hybrid) transport; the officer's biometrics are never captured
- **Deceased Voter Handling** — DECEASED status blocks future login/voting; all prior votes remain CONFIRMED and counted per constitutional requirement
### Voting
- **ElGamal Encryption** — 2048-bit FFDHE (RFC 7919) encryption applied before any vote is stored
- **Revoting** — Voters may change their ballot; only the latest submission counts; all prior ballots are marked SUPERSEDED on-chain
- **Dual-PIN System** — Voter sets both Normal PIN and Distress PIN simultaneously during setup (same form, both chosen privately by the voter); Normal PIN confirms every vote; Distress PIN silently flags coercion
- **Distress Vote Handling** — Distress vote is CONFIRMED and constitutionally counted; admin is alerted with voter contact info; escorted revote arranges a safe free revote that supersedes the coerced ballot
- **Voting Time-Lock** — Configurable open/close window; automatic freeze 2 hours before close
- **Receipt Verification** — Every voter rec …