{"id":50486888,"url":"https://github.com/systemslibrarian/crypto-lab-vss-gate","last_synced_at":"2026-06-01T23:02:44.557Z","repository":{"id":350907324,"uuid":"1208729070","full_name":"systemslibrarian/crypto-lab-vss-gate","owner":"systemslibrarian","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-12T17:24:02.000Z","size":46,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-12T19:15:14.803Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://systemslibrarian.github.io/crypto-lab-vss-gate/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/systemslibrarian.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-12T17:09:42.000Z","updated_at":"2026-04-12T17:24:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/systemslibrarian/crypto-lab-vss-gate","commit_stats":null,"previous_names":["systemslibrarian/crypto-lab-vss-gate"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/systemslibrarian/crypto-lab-vss-gate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemslibrarian%2Fcrypto-lab-vss-gate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemslibrarian%2Fcrypto-lab-vss-gate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemslibrarian%2Fcrypto-lab-vss-gate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemslibrarian%2Fcrypto-lab-vss-gate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/systemslibrarian","download_url":"https://codeload.github.com/systemslibrarian/crypto-lab-vss-gate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/systemslibrarian%2Fcrypto-lab-vss-gate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33797128,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-01T23:02:43.702Z","updated_at":"2026-06-01T23:02:44.545Z","avatar_url":"https://github.com/systemslibrarian.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VSS Gate — Verifiable Secret Sharing Lab\n\nAn educational cryptography lab demonstrating **Feldman VSS (FOCS 1987)** and **Pedersen VSS (CRYPTO 1991)** — the two foundational constructions that add verifiability to Shamir's Secret Sharing.\n\n## What This Project Is\n\nAn interactive, browser-based lab that teaches:\n\n- Why Shamir SSS alone fails when the dealer is malicious\n- How Feldman commitments let participants verify shares immediately\n- How Pedersen adds information-theoretic hiding with blinded commitments\n- What setup assumptions each protocol requires\n\nThe lab includes a guided four-step flow (Break Shamir → Feldman Fix → Pedersen Upgrade → Compare), pass/fail verification badges, beginner/advanced mode toggle, deterministic reproducibility, and a full test suite.\n\n## What This Project Is NOT\n\n- **Not production-ready.** This code has not been audited and is not suitable for real key management.\n- **Not constant-time.** BigInt arithmetic in JavaScript is not side-channel resistant.\n- **Not a secure Pedersen implementation.** The second generator `h` is derived deterministically from `g`, meaning `log_g(h)` is knowable. A real deployment must choose `h` so no one knows this discrete log. See the warning below.\n\n\u003e **⚠️ Demo Integrity Note**\n\u003e\n\u003e This demo illustrates Pedersen verification mechanics.\n\u003e In a real system, the generator `h` must be chosen so that no one knows its discrete log relative to `g`.\n\u003e This implementation derives `h` deterministically for demonstration purposes only and is **NOT secure for production use**.\n\n## Why This Matters\n\nVSS is a foundational building block in modern threshold cryptography:\n\n```\nShamir Secret Sharing\n        ↓\nVerifiable Secret Sharing (Feldman / Pedersen)\n        ↓\nDistributed Key Generation (DKG)\n        ↓\nThreshold Signatures (FROST, etc.)\n        ↓\nSecure MPC Systems\n```\n\nEvery serious threshold deployment — FROST, GG20, DKLS23, threshold wallets — relies on VSS integrity checks. Understanding Feldman and Pedersen explains the verification layer behind all of them.\n\n## Learning Goals\n\nAfter completing the four-step guided lab, you should understand:\n\n1. **The dealer cheating problem**: Shamir shares alone carry no proof of polynomial consistency.\n2. **Commitment-based verification**: Feldman publishes `C_j = g^{a_j} mod p` so participants verify `g^{y_i} = ∏ C_j^{x_i^j}`.\n3. **Pedersen's stronger hiding**: Dual commitments `C_j = g^{a_j} · h^{r_j}` yield information-theoretic hiding, at the cost of a trusted setup for `h`.\n4. **Feldman vs Pedersen tradeoffs**: Feldman requires no extra setup but leaks coefficient information. Pedersen hides coefficients but requires independent `h`.\n\n## Live Demo\n\n**https://systemslibrarian.github.io/crypto-lab-vss-gate/**\n\n## How to Run Locally\n\n```bash\ngit clone https://github.com/systemslibrarian/crypto-lab-vss-gate\ncd crypto-lab-vss-gate\nnpm install\nnpm run dev\n```\n\n## Test Suite\n\n```bash\nnpm test          # single run\nnpm run test:watch # watch mode\n```\n\nTests cover:\n- Feldman valid shares pass / tampered share fails\n- Pedersen valid shares pass / tampered share fails\n- Lagrange reconstruction returns original secret\n- Deterministic polynomial generation is stable\n- Subgroup generator validation (G^Q = 1, H^Q = 1)\n\n## Crypto Parameter Choices\n\n| Parameter | Value | Reason |\n|-----------|-------|--------|\n| `p` | RFC 3526 Group 14 (2048-bit safe prime) | Prime field with clean algebraic structure and inverses |\n| `q = (p-1)/2` | Large prime | Prime-order subgroup for stable exponent arithmetic |\n| `g = 4` | Subgroup generator (2² mod p) | Spans the full order-q subgroup |\n| `h` | Derived from `g` deterministically | **Demo only.** Real systems need `h` with unknown `log_g(h)` |\n\n## Protocol References\n\n- **Feldman, P.** \"A Practical Scheme for Non-interactive Verifiable Secret Sharing.\" *FOCS 1987.*\n- **Pedersen, T. P.** \"Non-Interactive and Information-Theoretic Secure Verifiable Secret Sharing.\" *CRYPTO 1991.*\n\n## GitHub Pages Setup\n\nDeploys automatically via GitHub Actions using [`.github/workflows/deploy-pages.yml`](.github/workflows/deploy-pages.yml).\n\nRequired one-time setting: `Settings → Pages → Source → GitHub Actions`.\n\n## Part of the Crypto-Lab Suite\n\nPart of [crypto-lab](https://systemslibrarian.github.io/crypto-lab/) — browser-based cryptography demos spanning 2,500 years of cryptographic history to NIST FIPS 2024 post-quantum standards.\n\nWhether you eat or drink or whatever you do, do it all for the glory of God. — 1 Corinthians 10:31","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsystemslibrarian%2Fcrypto-lab-vss-gate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsystemslibrarian%2Fcrypto-lab-vss-gate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsystemslibrarian%2Fcrypto-lab-vss-gate/lists"}