Rust workspace for implementing basic functionality of STAR: Distributed Secret-Sharing for Threshold Aggregation Reporting.
WARNING the libraries present in this workspace have not been audited, use at your own risk! This code is under active development and may change substantially in future versions.
- sta-rs: A rust implementation of the STAR protocol.
- ppoprf: A rust implementation of the PPOPRF protocol detailed in the STAR paper.
- sharks: A fork of the existing sharks crate for performing Shamir secret sharing, using larger base fields of sizes 129 and 255 bits. The fields were implemented using
- adss: A rust implementation of the Adept Secret Sharing scheme of Bellare et al, based on the forked star-sharks crate, using the underlying finite field implementation made available in zkcrypto/ff.
- star-wasm: WASM bindings for using star functionality.
Build & test:
cargo build
cargo test
Benchmarks:
cargo bench
Open local copy of documentation:
cargo doc --open --no-deps
See star-wasm for public API functions exposed by libraries.
- The
create_sharefunction should be called by clients, and creates theshareandtagsent in a STAR client message, as well as the encryptionkeyused to encrypt data to the server. Once this function has been called, usekeyto encrypt the desired data into aciphertextobject (using a valid AES encryption method). The client should then send(ciphertext, share, tag)to the aggregation server. - The
group_sharesfunction takes in a collection ofshareobjects and recovers thekeyobject that the client used for encryptingciphertext. This function only succeeds if the number of shares is higher than the prescribed threshold.