Files
lattigo/README.md
Jean-Philippe Bossuat 4421f325b0 Initial commit
2019-08-12 21:15:01 +02:00

2.7 KiB

LattiGo: Lattice Cryptography Library in Golang

Build Status

Build Status

This package provides a toolbox of lattice-based cryptographic primitives for Go. The library is still at an experimental stage and should be used for research purposes only.

The LattiGo subpackages from the lowest to the highest abstraction level and their provided functionalities are as follows:

  • Ring: CRT accelerated modular arithmetic operations for polynomials, including CRT basis extension, CRT rescaling, Number Theoretic Transformation (NTT), uniform, Gaussian and Ternary sampling.

  • BFV: CRT accellerated Fan-Vercauteren variant of Brakerski's scale invariant homomorphic encryption scheme. Provides modular arithmetic over the integers.

  • CKKS: CRT accelerated version of the Homomorphic Encryption for Arithmetic for Approximate Numbers scheme. Provides approximate arithmetic over the complex numbers.

  • Distributed BFV/CKKS: Distributed version of the BFV and CKKS. Provides protocols for the generation of shared private and public keys, and switching keys (evaluation keys, switching keys and rotation keys), as well as a protocol to operate the key-switching on a shared ciphertext.

Examples

In the subfolder "examples" you can find runnable go files giving examples on the usage of the library. In each subpackage you can find additional test files documenting further usage approaches.

License

LattiGo is licenced under the Apache License version 2.0.