Ecosyste.ms: Awesome

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

https://github.com/facebookresearch/Cupcake

A Rust library for lattice-based additive homomorphic encryption.
https://github.com/facebookresearch/Cupcake

Last synced: about 1 month ago
JSON representation

A Rust library for lattice-based additive homomorphic encryption.

Lists

README

        

# Cupcake

Cupcake is an efficient Rust library for the (additive version of) Fan-Vercauteren homomorphic encryption scheme, offering capabilities to
encrypt vectors, add/subtract two encrypted vectors, and rerandomize a ciphertext.

## Requirements
Cupcake requires or works with
* Mac OS X or Linux

## Installation
Add the following line to the dependencies of your Cargo.toml:
```
Cupcake = "0.2.1"
```

## Building from source

```bash
git clone https://github.com/facebookresearch/Cupcake
cd cupcake
cargo build --release
```

## Examples

Several examples are included in `examples/.rs`, and can be run via
`cargo run --example `

## Documentation

Documentation on the API can be built from `cargo doc`.

## Benchmarks and Tests

We have included benchmarks and tests for both homomorphic operations and underlying arithmetic operations. They can be run using `cargo bench` and `cargo test`.

## Supported parameters

Currently, we provide only one set of secure parameter, namely `FV::::default_2048();`. This parameter set has an estimated security level of about 128 bits according
to the homomorphic encryption security standards [link](http://homomorphicencryption.org/wp-content/uploads/2018/11/HomomorphicEncryptionStandardv1.1.pdf). Use other parameters at your own risk! With the default parameter set, the plaintext type is vector of `u8` with a fixed length 2048.

## References

- [The Fan-Vercauteren scheme](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.400.6346&rep=rep1&type=pdf)

See the [CONTRIBUTING](CONTRIBUTING.md) file for how to help out.

## License
Cupcake is MIT licensed, as found in the LICENSE file.