Product
Introducing Ruby Support in Socket
Socket is launching Ruby support for all users. Enhance your Rails projects with AI-powered security scans for vulnerabilities and supply chain threats. Now in Beta!
github.com/tuneinsight/lattigo/v4
Lattigo is a Go module that implements Ring-Learning-With-Errors-based homomorphic-encryption primitives and Multiparty-Homomorphic-Encryption-based secure protocols. The library features:
Lattigo is meant to support HE in distributed systems and microservices architectures, for which Go is a common choice thanks to its natural concurrency model and portability.
The library exposes the following packages:
lattigo/ring
: Modular arithmetic operations for polynomials in the RNS basis, including: RNS
basis extension; RNS rescaling; number theoretic transform (NTT); uniform, Gaussian and ternary
sampling.
lattigo/bfv
: The Full-RNS variant of the Brakerski-Fan-Vercauteren scale-invariant homomorphic
encryption scheme. It provides modular arithmetic over the integers.
lattigo/bgv
: The Full-RNS variant of the Brakerski-Gentry-Vaikuntanathan homomorphic
encryption scheme. It provides modular arithmetic over the integers.
lattigo/ckks
: The Full-RNS Homomorphic Encryption for Arithmetic for Approximate Numbers (HEAAN,
a.k.a. CKKS) scheme. It provides approximate arithmetic over the complex numbers (in its classic
variant) and over the real numbers (in its conjugate-invariant variant).
lattigo/dbfv
, lattigo/dbgv
and lattigo/dckks
: Multiparty (a.k.a. distributed or threshold)
versions of the BFV, BGV and CKKS schemes that enable secure multiparty computation solutions with
secret-shared secret keys.
lattigo/rlwe
and lattigo/drlwe
: common base for generic RLWE-based multiparty homomorphic
encryption. It is imported by the lattigo/bfv
, lattigo/bgv
and lattigo/ckks
packages.
lattigo/examples
: Executable Go programs that demonstrate the use of the Lattigo library. Each
subpackage includes test files that further demonstrate the use of Lattigo
primitives.
lattigo/utils
: Supporting structures and functions.
The Lattigo library was originally exclusively developed by the EPFL Laboratory for Data Security until its version 2.4.0.
Starting with the release of version 3.0.0, Lattigo is maintained and supported by Tune Insight SA.
Also starting with from version 3.0.0, the module name has changed to
github.com/tuneinsight/lattigo/v[X]
, and the official repository has been moved to
https://github.com/tuneinsight/lattigo. This has the following implications for modules that depend
on Lattigo:
github.com/ldsec/lattigo/v2
will still build correctly.github.com/tuneinsight/lattigo/v[X]/
,
for example by changing the imports to github.com/tuneinsight/lattigo/v[X]/[package]
and by
running go mod tidy
.The current version of Lattigo, (v4.x.x) is fast-evolving and in constant development. Consequently, there will still be backward-incompatible changes within this major version, in addition to many bug fixes and new features. Hence, we encourage all Lattigo users to update to the latest Lattigo version.
See CHANGELOG.md for the current and past versions.
To keep a comprehensive history, we prioritize rebases over merges for branches other than main
.
Branches with the prefix dev_
are branches in active development and will be frequently rebased.
Hence, we don't recommend depending on them.
External pull requests should only be used to propose new functionalities that are substantial and would require a fair amount of work if done on our side. If you plan to open such a pull request, please contact us before doing so to make sure that the proposed changes are aligned with our development roadmap.
External pull requests only proposing small or trivial changes will be converted to an issue and closed.
The GitHub issues should only be used for bug reports and questions directly related to the use or the implementation of the library.
Any other issue will be closed, and for this we recommend the use of GitHub discussions or other topic-specific forums instead.
Any new issue regarding an unexpected behavior of the library or one of its packages must be accompanied
by a self-contained main.go
reproducing the unwanted behavior.
Lattigo is licensed under the Apache 2.0 License. See LICENSE.
If you want to contribute to Lattigo, to contact us directly or to report a security issue, please do so using the following email: lattigo@tuneinsight.com.
Please use the following BibTex entry for citing Lattigo:
@misc{lattigo,
title = {Lattigo v4},
howpublished = {Online: \url{https://github.com/tuneinsight/lattigo}},
month = Aug,
year = 2022,
note = {EPFL-LDS, Tune Insight SA}
}
The Lattigo logo is a lattice-based version of the original Golang mascot by Renee French.
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket is launching Ruby support for all users. Enhance your Rails projects with AI-powered security scans for vulnerabilities and supply chain threats. Now in Beta!
Product
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Product
We're launching a new set of license analysis and compliance features for analyzing, managing, and complying with licenses across a range of supported languages and ecosystems.