https://github.com/armfazh/rhizomes
Rhizomes and the Roots of Efficiency — Improving Prio
https://github.com/armfazh/rhizomes
crypto cryptography lagrange polynomials prio rhizomes
Last synced: 4 months ago
JSON representation
Rhizomes and the Roots of Efficiency — Improving Prio
- Host: GitHub
- URL: https://github.com/armfazh/rhizomes
- Owner: armfazh
- License: mpl-2.0
- Created: 2025-09-22T01:46:13.000Z (9 months ago)
- Default Branch: welcome
- Last Pushed: 2025-09-23T15:32:37.000Z (9 months ago)
- Last Synced: 2025-09-23T17:35:13.670Z (9 months ago)
- Topics: crypto, cryptography, lagrange, polynomials, prio, rhizomes
- Language: Makefile
- Homepage:
- Size: 3.64 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
- License: LICENSE.txt
- Citation: CITATION.cff
Awesome Lists containing this project
README
# Rhizomes and the Roots of Efficiency — Improving Prio
[](https://opensource.org/licenses/MPL-2.0)
This repository contains supplemental material of the article titled
**"Rhizomes and the Roots of Efficiency—Improving Prio**
published at [Progress in Cryptology — LATINCRYPT 2025](https://doi.org/10.1007/978-3-032-06754-8_16).
This project is a fork of
[divviup/libprio-rs](https://github.com/divviup/libprio-rs),
a rust implementation of Prio.
## Improvements
- Speeds up Polynomial Evaluation in the Lagrange basis.
- Polynomials Basis Extension in the Lagrange basis.
- Polynomial Multiplication in the Lagrange basis.
- Textbook vs Stolon vs *Rhizome*.
- Use of the Pólya polynomial basis.
- Reduces the number of NTTs.
|[Branches](#branches)|[Applications](#applications)|[Benchmarks](#benchmarks)|[Cite](#citation)|
|--|--|--|--|
**Download the Source Code**
[verifier.zip](https://github.com/armfazh/rhizomes/archive/refs/heads/rhizomes/verifier.zip)
or
[full.zip](https://github.com/armfazh/rhizomes/archive/refs/heads/rhizomes/full.zip)
## Branches
- [welcome](https://github.com/armfazh/rhizomes/tree/welcome): This branch
contains pointers to the content in this repository.
- [main](https://github.com/armfazh/rhizomes/tree/main): It follows the main
branch of [divviup/libprio-rs](https://github.com/divviup/libprio-rs).
- [baseline](https://github.com/armfazh/rhizomes/tree/baseline): This is
libprio-rs version
[0.18.1-alpha.2](https://github.com/divviup/libprio-rs/tree/0.18.1-alpha.2)
used to make comparisons.
- [rhizomes/verifier](https://github.com/armfazh/rhizomes/tree/rhizomes/verifier):
Code changes to improve Prio PrepInit verification only.
- [rhizomes/full](https://github.com/armfazh/rhizomes/tree/rhizomes/full):
Code changes to improve Prio both prover and verification.
## Applications
The [VDAF](https://datatracker.ietf.org/doc/draft-irtf-cfrg-vdaf/) document
specifies Prio, a protocol for private aggregation of measurements.
The algorithms introduced in this research work speed up Prio operations as
described in the benchmarks section.
Proposed changes to the specification:
- Use faster polynomial evaluation. (Adopted in [v17](https://datatracker.ietf.org/doc/draft-irtf-cfrg-vdaf/17/))
- [Issue #573](https://github.com/cfrg/draft-irtf-cfrg-vdaf/issues/573)
[PR #578](https://github.com/cfrg/draft-irtf-cfrg-vdaf/pull/578)
- Keep polynomials in Lagrange basis.
- [Issue #574](https://github.com/cfrg/draft-irtf-cfrg-vdaf/issues/574)
[PR #585](https://github.com/cfrg/draft-irtf-cfrg-vdaf/pull/585)
## Benchmarks
### Improving Prio: PrepInit Verifier
Clone and benchmark the code using the following commands:
```sh
make clone_verifier
make bench_verifier
make graph_verifier
```

## Improving Prio: Both Prover and Verifier
Clone and benchmark the code using the following commands:
```sh
make clone_full
make bench_full
make graph_full
```

## Citation
DOI: [10.1007/978-3-032-06754-8_16](https://doi.org/10.1007/978-3-032-06754-8_16)
ePrint: [https://eprint.iacr.org/2025/1727](https://ia.cr/2025/1727/)
```bibtex
@inproceedings{faz25_rhizomes,
doi = {10.1007/978-3-032-06754-8_16},
title = {{Rhizomes and the Roots of Efficiency—Improving Prio}},
author = {Armando {Faz-Hernandez}},
booktitle = {{Progress in Cryptology — LATINCRYPT 2025}},
pages = {425-449},
publisher = {Springer},
series = {Lecture Notes in Computer Science},
year = {2025},
month = oct,
}
```
## License
License is [MPL-2.0](./LICENSE.txt).