Skip to main content

Crate scalable_rbe

Crate scalable_rbe 

Source
Expand description

§Prototype of ‘Scalable Registration-Based Encryption from Lattices’

This library contains a prototype of a Registration-Based Encryption (RBE) scheme. The post-quantum security of the implemented construction is based on the standard Learning with Errors assumption. The analysis enables several tweaks to significantly reduce ciphertext sizes in practical deployments. These can be achieved via small extensions of this prototype.

The only operation that is not implemented by this prototype is the merge of two SIS-trees. Instead of adding public keys of identities into trees blindly, we insert them with the expected layout in our benchmarks.

The layout of the library should provide an API that allows for quick and easy experiments. Thus, several fields and algorithms are public, which should not be public in a real application.

WARNING: This is a prototype. It should not be deployed in real applications. More specifically, it does not provide constant-time security.

§External Libraries / Crates

The implementation of this library makes use of Zama’s concrete_ntt crate, which supports hardware accelerated NTT transforms and multiplication if AVX2 or AVX512 is supported (using the nightly toolchain for the latter). Furthermore, it uses the crates rand and rand_distr to generate ‘cryptographically secure’ randomness. We use the key-value database sled to store vectors in the registry and rayon to enable multi-threading in rbe::RBE::enc. All benchmarks can be found in the directory benches and we rely on criterion to benchmark the implementation.

Modules§

dgs
Implementations of discrete Gaussian samplers.
mat
Implementation of the matrix type in coefficient embedding.
ntt
Implementation of the matrix type in NTT form.
rbe
Implementation of the Registration-Based Encryption scheme.
utils
Utility functions to (de-)compress and byte (de-)compose matrices.