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_share
function should be called by clients, and creates theshare
andtag
sent in a STAR client message, as well as the encryptionkey
used to encrypt data to the server. Once this function has been called, usekey
to encrypt the desired data into aciphertext
object (using a valid AES encryption method). The client should then send(ciphertext, share, tag)
to the aggregation server. - The
group_shares
function takes in a collection ofshare
objects and recovers thekey
object that the client used for encryptingciphertext
. This function only succeeds if the number of shares is higher than the prescribed threshold.