{"id":29675169,"url":"https://github.com/brave/star-randsrv","last_synced_at":"2025-07-22T23:06:17.522Z","repository":{"id":37084296,"uuid":"473396768","full_name":"brave/star-randsrv","owner":"brave","description":"Go wrapper service for the STAR randomness server.","archived":false,"fork":false,"pushed_at":"2025-07-16T23:15:43.000Z","size":923,"stargazers_count":9,"open_issues_count":19,"forks_count":6,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-07-18T09:04:23.137Z","etag":null,"topics":["cryptography","enclave","k-anonymity","randomness"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brave.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-03-23T23:56:28.000Z","updated_at":"2025-04-04T03:52:48.000Z","dependencies_parsed_at":"2024-01-29T05:27:45.606Z","dependency_job_id":"6bbc75da-cc78-433c-92cf-d2995b6eb42f","html_url":"https://github.com/brave/star-randsrv","commit_stats":null,"previous_names":["brave-experiments/star-randsrv"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/brave/star-randsrv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brave%2Fstar-randsrv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brave%2Fstar-randsrv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brave%2Fstar-randsrv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brave%2Fstar-randsrv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brave","download_url":"https://codeload.github.com/brave/star-randsrv/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brave%2Fstar-randsrv/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266586905,"owners_count":23952205,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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":["cryptography","enclave","k-anonymity","randomness"],"created_at":"2025-07-22T23:06:16.401Z","updated_at":"2025-07-22T23:06:17.480Z","avatar_url":"https://github.com/brave.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"STAR Randomness Server\n======================\n\nThis repository implements the randomness server that's proposed\nin the paper [STAR: Distributed Secret Sharing\nfor Private Threshold Aggregation Reporting](https://arxiv.org/abs/2109.10074).\nThe actual oblivious pseudorandom function implementation can be found\nin the [sta-rs](https://github.com/brave/sta-rs) repository.\nThis repository implements webservice wrapper to make evaluation available\nover the network.\n\nIt also includes a reproducible container build that can be run inside an\nAWS Nitro Enclave, providing remote attestation of the implementation and\nadditional security for the private key.\n\nInstallation\n------------\n\nTo test, lint, and build the randomness server, simply run:\n\n```\nmake\n```\n\nTo execute just the randomness webapp with logging, run:\n\n```\nRUST_LOG=tower_http=trace,star_randsrv=debug cargo run\n```\n\nTo build a reproducible container image of the randomness server, run:\n\n```\nmake image\n```\n\nInput\n-----\n\nThe randomness server exposes an HTTP POST request handler at `/randomness`.\nThe handler expects a JSON-formatted request body.  Below is an example of a\nvalid request body.\n\n```\n{\n  \"points\": [\n    \"uqUmPbpGjpqaQcVnbn39PZGtL4DjfY+h9R+XqlKLuVc=\",\n    \"CCBnmLsPR8hFzuxhRz0a05TAh+p0jFhebMCDgOcfdWk=\",\n    \"bNQSygww5ykQpfsDMJXTiaX/MmpWW4qnfmuRpdR/1yY=\"\n  ]\n}\n```\n\nThe JSON array `points` contains a list of one or more Base64-encoded\n[Ristretto](https://github.com/bwesterb/go-ristretto) points.\n\nOutput\n------\n\nThe randomness server's response contains a similar JSON structure but its\npoints are punctured based on the client-provided input and the server's secret\nkey.  Refer to the [STAR paper](https://arxiv.org/abs/2109.10074) for details.\nBelow is an example of the server's response:\n\n```\n{\n  \"epoch\": 0,\n  \"points\": [\n    \"qC3vaUizBSrNZCCkzD3jBhHqMEWZIuNj5IdNk57GGHY=\",\n    \"rh7Tcr1LqwVQVtCEEIZqwUCPDvBOMM5bJPA8EfShnzI=\",\n    \"Bq8LJ0KpfwQHgh1tkr8OP+ogmxPQz7lWHfAPuyVxXU0=\"\n  ]\n}\n```\n\nNote that the array's ordering matters.  The point at index *n* of the server's\nresponse corresponds to the point at index *n* of the client's request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrave%2Fstar-randsrv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrave%2Fstar-randsrv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrave%2Fstar-randsrv/lists"}