{"id":50500681,"url":"https://github.com/prof-faustus/overlay-broadcast","last_synced_at":"2026-06-07T16:00:56.188Z","repository":{"id":361735564,"uuid":"1255577107","full_name":"prof-faustus/overlay-broadcast","owner":"prof-faustus","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-02T13:25:40.000Z","size":347,"stargazers_count":18,"open_issues_count":1,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-06-03T12:23:35.974Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/prof-faustus.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/SECURITY.md","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-06-01T01:31:14.000Z","updated_at":"2026-06-02T18:28:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/prof-faustus/overlay-broadcast","commit_stats":null,"previous_names":["prof-faustus/overlay-broadcast"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/prof-faustus/overlay-broadcast","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prof-faustus%2Foverlay-broadcast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prof-faustus%2Foverlay-broadcast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prof-faustus%2Foverlay-broadcast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prof-faustus%2Foverlay-broadcast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prof-faustus","download_url":"https://codeload.github.com/prof-faustus/overlay-broadcast/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prof-faustus%2Foverlay-broadcast/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33905359,"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-04T02:00:06.755Z","response_time":64,"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-02T11:02:23.309Z","updated_at":"2026-06-04T13:00:25.313Z","avatar_url":"https://github.com/prof-faustus.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# overlay-broadcast\n\nA BSV-native Rust implementation of two inventions, graded to NPR 7150.2 / JPL\nPower-of-Ten / MC-DC coverage with a full requirements-traceability matrix\n([docs/RTM.csv](docs/RTM.csv)):\n\n- **EP 4 046 048 B1** — an overlay key-graph over data-storage transactions, with\n  first/second/third function key sets, the three claim-5 functions, and seed-isolated\n  position-only signalling.\n- **GB 2623780 B** — key-graph broadcast encryption, three rekeying strategies, and the\n  on-chain session lifecycle.\n\nBSV is the entire technical universe: post-Genesis protocol only, secp256k1 throughout,\non-chain value named exclusively in **minor units**. Verification terminates in the\nvalidated BSV block-header chain (the trust root).\n\n## The two layers\n\n**Overlay layer (EP).** A key graph is laid over ordinary BSV data-storage transactions.\nA node's key is re-derivable from its *position* plus a *seed* (CKD), so a sender can\nsignal **only a position** to a receiver — no key material crosses the wire (seed-isolated\nsignalling). Three EP function key sets act at a node:\n\n- **first / writing** key set — authorises writing the node's data-storage transaction;\n- **second / obfuscation** key set — obfuscates the node payload (AEAD, never raw XOR);\n- **third / application** key set — the application-facing function over the node.\n\n**Broadcast layer (GB).** A balanced key graph encrypts to a group: the root is the\nmessage key, each leaf is a user key, and every child key wraps its parent (authenticated\nkey-wrap). A member decrypts up its path to the message key. Membership changes rekey via\none of **three rekeying strategies** (LKH packaging variants):\n\n- **user-oriented** — one communique per affected user;\n- **key-oriented** — one communique per changed key;\n- **group-oriented** — communiques grouped by the key they are encrypted under.\n\n## Sessions and keys\n\n- **Off-chain vs on-block subscription.** A subscription funds *k* sessions. *Off-chain*\n  carries a single on-chain funding transaction covering all *k* sessions (sub-sessions\n  split off-chain); *on-block* anchors one transaction per session. Renewal spends the\n  member output; an unspent output past its expiry is revocation.\n- **Symmetric vs asymmetric keys.** Asymmetric secp256k1 keys (CKD-derived) sign\n  transactions and seed ECIES; symmetric AES-256-GCM keys protect node payloads, broadcast\n  messages, and wrapped child keys. Asymmetric keys establish; symmetric keys bulk-encrypt.\n\n## Quickstart\n\n```\ncargo build --release\ncargo run --release --bin overlay-broadcast -- selftest      # exercise every layer\ncargo run --release --bin overlay-broadcast -- custody keygen --threshold 2 --shares 3\ncargo run --release --bin overlay-broadcast -- broadcast open --users 1,2,3,4\ncargo run --release --bin overlay-broadcast -- reproduce      # regenerate + diff vectors\n```\n\n### Docker quickstart\n\n```\ndocker build -t overlay-broadcast .                           # hardened distroless image\ndocker run --rm --read-only --cap-drop ALL overlay-broadcast selftest\ndocker compose -f docker-compose.hardened.yml --profile test up --abort-on-container-exit\n```\n\n## Build and gate\n\n```\ncargo build --release\ncargo test --all\ncargo clippy --all-targets --all-features -- -D warnings\ncargo fmt --check\ncargo run -p xtask -- all      # banned-token, function-size, RTM, and SBOM gates\n```\n\nThe build sets `http.check-revoke = false` in `.cargo/config.toml` (the sandbox cannot\nreach the CA revocation endpoints); see [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md).\n\n## Crates (built in the Section 23 order)\n\n`secmem` (audited secret containers) · `bsv` (primitives + header-chain trust root) ·\n`ckd` (child key derivation, EP) · `cipher` (AEAD, ECIES, key-wrap) · `keygraph` ·\n`overlay` (EP) · `broadcast` (GB) · `session` (GB lifecycle) · `custody` (FROST + GG20\nthreshold + reconstruction) · `kst` (KeyStore: HSM/KMS/file) · `obs` · `api` · `res`\n(resilience) · `cli` · `cmp` (compliance) · `bench` · `proptests` · `conformance` ·\n`fuzzprop` (+ `fuzz/` libFuzzer targets) · `xtask` (gates).\n\n## Documentation\n\n- [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) — layering, trust root, pinned deps.\n- [docs/SECURITY.md](docs/SECURITY.md) — threat model and honest labelling.\n- [docs/OPERATIONS.md](docs/OPERATIONS.md) — deploy, run, config, custody ops.\n- [docs/REPRODUCIBILITY.md](docs/REPRODUCIBILITY.md) — how `reproduce` regenerates vectors.\n- [docs/COMPLIANCE.md](docs/COMPLIANCE.md) · [docs/CODING_STANDARD.md](docs/CODING_STANDARD.md) · [docs/RTM.csv](docs/RTM.csv).\n- Runbooks: [DISASTER_RECOVERY](docs/DISASTER_RECOVERY.md) · [KEY_LOSS](docs/KEY_LOSS.md) · [INCIDENT_RESPONSE](docs/INCIDENT_RESPONSE.md).\n\nThe source is dual-licensed MIT OR Apache-2.0; this code license is independent of the\npatent rights in the two inventions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprof-faustus%2Foverlay-broadcast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprof-faustus%2Foverlay-broadcast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprof-faustus%2Foverlay-broadcast/lists"}