{"slug": "i-built-a-zero-knowledge-protocol-to-prove-a-human-typed-this-not-a-bot-help-me", "title": "I Built a Zero-Knowledge Protocol to Prove a Human Typed This (Not a Bot) — Help Me Try to Break It", "summary": "A developer has built PoHI (Proof of Human Intent), a zero-knowledge protocol that distinguishes human typing from bot-generated text by measuring physical typing rhythm — dwell time, flight time, pause skew, and error correction patterns — without revealing raw keystroke data. The protocol uses a zk-SNARK to prove a behavioral score exceeds a threshold, and the developer is inviting the public to test and try to break it at pohi-protocol-poc.vercel.app.", "body_md": "AI-generated text is no longer distinguishable from human text. That's not a hot\n\ntake, it's a measurable fact at this point, and it quietly breaks a lot of the\n\ntrust assumptions the internet runs on — messaging, marketplaces, escrow, forums.\n\nIf you can no longer tell *what* was written by a bot, the obvious next question\n\nis: can you tell *how* it was written?\n\nThat's the premise behind **PoHI (Proof of Human Intent)**, a protocol I've been\n\nbuilding on my own: instead of analyzing text content, it measures the physical\n\nrhythm of typing — dwell time, flight time between keys, the skew of your pauses,\n\nhow you correct mistakes — and proves, via a zero-knowledge SNARK, that the\n\nresulting score clears a threshold, without ever revealing the raw keystroke data.\n\n`@pohi-protocol/core-math`\n\n— the reference math engine implementing the\nbehavioral equations (skewness, cognitive-latency ratio, error-recalibration\nvariance). 74 unit tests.`circuits/`\n\n— a Circom circuit compiling to Groth16 over BN254, ~12,500\nconstraints, with a real multi-party trusted-setup ceremony tool. 21 tests\nchecking it agrees numerically with the reference engine `packages/sdk-web`\n\n— the browser-side capture SDK.`experiments/`\n\n— an adversarial evaluation harness with six attacker models,\nfrom \"constant-delay macro\" up to \"an attacker with full knowledge of the\nscoring function trying to fake the rhythm.\"Everything is open: [https://github.com/ProjectOne2020/pohi-protocol-poc](https://github.com/ProjectOne2020/pohi-protocol-poc)\n\nI'm not here to tell you this is unbreakable. It probably isn't, at least not yet.\n\nA zk-SNARK proves you know a witness satisfying the relation — it does *not*\n\nprove that witness came from an actual human hand. That's a real, documented gap\n\n(I wrote it up in the threat model instead of hiding it — see\n\n[ docs/THREAT_MODEL.md §5](https://github.com/ProjectOne2020/pohi-protocol-poc/blob/main/docs/THREAT_MODEL.md)),\n\nTo test that, I need real human typing data — which is the actual ask here.\n\n👉 [https://pohi-protocol-poc.vercel.app](https://pohi-protocol-poc.vercel.app)\n\nYou type a few short prompts, that's it. Available in English and Spanish. What\n\ngets recorded is *only* keystroke press/release timestamps in milliseconds and\n\nwhether a key was Backspace — never the text itself. That's not just a privacy\n\npromise: the database schema itself has a constraint that rejects any record\n\ncontaining character data, so it holds even if someone tampers with the client.\n\nYou can check that directly in\n\n[ experiments/schema.sql](https://github.com/ProjectOne2020/pohi-protocol-poc/blob/main/experiments/schema.sql).\n\nIf you're more interested in poking at the code than typing, I'd take that too —\n\nissues, PRs, \"your fixed-point division is still wrong here\" comments, all\n\nwelcome. Especially if you can break the scoring.\n\nRepo: [https://github.com/ProjectOne2020/pohi-protocol-poc](https://github.com/ProjectOne2020/pohi-protocol-poc)\n\nLinkedIn: [https://www.linkedin.com/in/alejandro-guti%C3%A9rrez-9a0318107/](https://www.linkedin.com/in/alejandro-guti%C3%A9rrez-9a0318107/)", "url": "https://wpnews.pro/news/i-built-a-zero-knowledge-protocol-to-prove-a-human-typed-this-not-a-bot-help-me", "canonical_source": "https://dev.to/aagb/i-built-a-zero-knowledge-protocol-to-prove-a-human-typed-this-not-a-bot-help-me-try-to-break-it-5ah9", "published_at": "2026-07-30 05:55:12+00:00", "updated_at": "2026-07-30 05:59:36.515274+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-safety", "ai-research", "developer-tools"], "entities": ["PoHI", "ProjectOne2020", "Alejandro Gutiérrez", "Circom", "Groth16", "BN254"], "alternates": {"html": "https://wpnews.pro/news/i-built-a-zero-knowledge-protocol-to-prove-a-human-typed-this-not-a-bot-help-me", "markdown": "https://wpnews.pro/news/i-built-a-zero-knowledge-protocol-to-prove-a-human-typed-this-not-a-bot-help-me.md", "text": "https://wpnews.pro/news/i-built-a-zero-knowledge-protocol-to-prove-a-human-typed-this-not-a-bot-help-me.txt", "jsonld": "https://wpnews.pro/news/i-built-a-zero-knowledge-protocol-to-prove-a-human-typed-this-not-a-bot-help-me.jsonld"}}