{"id":46993761,"url":"https://github.com/multiparty/bwwc","last_synced_at":"2026-03-11T14:39:08.055Z","repository":{"id":151648338,"uuid":"611880840","full_name":"multiparty/bwwc","owner":"multiparty","description":"Centralized asynchronous secure aggregation using Shamir's secret sharing for the Boston Women's Workforce Council.","archived":false,"fork":false,"pushed_at":"2025-05-08T19:00:52.000Z","size":41257,"stargazers_count":4,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-08T20:19:40.830Z","etag":null,"topics":["cryptography","secure-multiparty-computation","shamir-secret-sharing","smpc"],"latest_commit_sha":null,"homepage":"","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/multiparty.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}},"created_at":"2023-03-09T18:25:15.000Z","updated_at":"2025-05-08T19:00:44.000Z","dependencies_parsed_at":"2025-04-30T17:20:43.965Z","dependency_job_id":"81ab70e8-747c-44bd-a1f3-61c211bdc64d","html_url":"https://github.com/multiparty/bwwc","commit_stats":null,"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/multiparty/bwwc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/multiparty%2Fbwwc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/multiparty%2Fbwwc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/multiparty%2Fbwwc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/multiparty%2Fbwwc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/multiparty","download_url":"https://codeload.github.com/multiparty/bwwc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/multiparty%2Fbwwc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30384145,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T14:10:17.325Z","status":"ssl_error","status_checked_at":"2026-03-11T14:09:37.934Z","response_time":84,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["cryptography","secure-multiparty-computation","shamir-secret-sharing","smpc"],"created_at":"2026-03-11T14:39:07.443Z","updated_at":"2026-03-11T14:39:08.046Z","avatar_url":"https://github.com/multiparty.png","language":"TypeScript","readme":"### Boston Women's Workforce Council\n\nThis system implements Shamir's secret sharing with asymmetric key cryptography to aggregate and sum tables containing secret values. View this [notebook](https://github.com/ch3njust1n/cryptography/blob/main/Shamirs%20Secret%20Sharing.ipynb#enroll-beta) to learn more about Shamir's Secret Sharing.\n\n### Setup\n[Client README](client/README.md)\n\n[Backend README](backend/README.md)\n\n### Workflow\n\n**1. Analyst: Login**\n\u003cimg src=\"assets/1-auth.png\" height=500\u003e\n\n**2. Analyst: Create session**\n- Generates a keypair and sends the public key to the server where it can be retrieved by participants submitting data.\n- The analyst must download the private key to their local system.\n\u003cimg src=\"assets/2-start_session.png\" height=500\u003e\n\n**3. Analyst: Generate submission URLs**\n\u003cimg src=\"assets/3-get_submission_urls.png\" height=500\u003e\n\n**4. Participant: Get prime and public key**\n- Participant submits their table data. The client code then converts each cell into secret shares and encrypts 1 plus the threshold number of shares needed to decrypt. This prevents a malicious server from reconstructing the original tables.\n\u003cimg src=\"assets/4-get_prime \u0026 get_public_key.png\" height=500\u003e\n\n**5. Participant: Submits data**\n- Check off the box that all data is correct.\n- Click submit.\n\u003cimg src=\"assets/5-submit_data.png\" height=500\u003e\n\n**6. Analyst: View submission history**\n- Client code periodically polls the server from submission history metadata.\n\u003cimg src=\"assets/6-get_submission_history.png\" height=500\u003e\n\n**7. Analyst: Stop session**\n- When the analyst clicks stop, the backend sets a flag to disable any further submissions.\n- The backend then merges all the tables together by adding the shares that are not encrypted with a participants private key.\n\u003cimg src=\"assets/7-stop_session \u0026 get_submissions.png\" height=500\u003e\n\n**8. Analyst: Get submissions**\n- After clicking reveal results, the client changes views to the decryption page.\n- The analyst opens their private key file to decrypt and then recombine the secret shares to get the actual summed results.\n\u003cimg src=\"assets/8-decrypt.png\" height=500\u003e","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmultiparty%2Fbwwc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmultiparty%2Fbwwc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmultiparty%2Fbwwc/lists"}