This library is intended to support primitive-level lattice-based cryptography developed by Machina-iO. mxx is a primitive library upon which we may build more complex constructions, potentially for academic papers.
Applications of mxx include:
- OpenFHE (System install required in
/usr/local/lib), make sure to install our fork in/feat/improve_determinantbranch
In the LWE setting, matrix elements are integers, and in the RLWE setting, matrix elements are polynomials. Since we want matrix elements to be generic over types, we define basic common functionality as a trait.
The core of lattice operations is represented as a matrix. Both disk-based and memory (RAM)-based storage are supported as two options.
For basic matrix sampling, there are:
- Hash sampler
- Uniform sampler
The trapdoor sampler is used for lattice trapdoor sampling techniques (detailed in the algorithm described in Implementing Token-Based Obfuscation under (Ring) LWE).
An encoding scheme introduced in Fully Key-Homomorphic Encryption, Arithmetic Circuit ABE, and Compact Garbled Circuits, known as BGG+ encoding.
Arithmetic circuits that can be evaluated homomorphically through arithmetic gate operations.
Licensed under the [MIT license](./LICENSE).