An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          

# Rhizomes and the Roots of Efficiency — Improving Prio

[![License: MPL 2.0](https://img.shields.io/badge/License-MPL_2.0-brightgreen.svg)](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
```

![comparison](comparison_verifier.png)

## 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
```

![comparison](comparison_full.png)

## 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).