Skip to content

Commit c89d46e

Browse files
committed
updated README
1 parent b363f5d commit c89d46e

File tree

1 file changed

+35
-69
lines changed

1 file changed

+35
-69
lines changed

README.md

+35-69
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
# Pro7ech's Lattigo: Lattice-Based Multiparty Homomorphic Encryption Library in Go
22

3-
This is a fork of [Tune Insight's Lattigo v5.0.2](https://github.com/tuneinsight/lattigo), that includes a refactored backend, many additional features and new protocols.
4-
5-
See [CHANGELOG](https://github.com/Pro7ech/lattigo/blob/main/.github/CHANGELOG.md) for the detailed changes.
3+
This is a fork of [Tune Insight's Lattigo](https://github.com/tuneinsight/lattigo/tree/v5.0.2), that includes a refactored backend, many additional features and new protocols.
64

5+
See [CHANGELOG](https://github.com/Pro7ech/lattigo/blob/master/.github/CHANGELOG.md) for additional information.
76

87
<p align="center">
98
<img src="logo.png" />
109
</p>
1110

12-
![Go tests](https://github.com/tuneinsight/lattigo/actions/workflows/ci.yml/badge.svg)
11+
![Go tests](https://github.com/Pro7ech/lattigo/actions/workflows/ci.yml/badge.svg)
1312

1413
Lattigo is a Go module that implements full-RNS Ring-Learning-With-Errors-based homomorphic-encryption
1514
primitives and Multiparty-Homomorphic-Encryption-based secure protocols. The library features:
@@ -28,21 +27,27 @@ is a common choice thanks to its natural concurrency model and portability.
2827

2928
The library exposes the following packages:
3029

31-
- `lattigo/he`: The main package of the library which provides scheme-agnostic interfaces
30+
- `he`: The main package of the library which provides scheme-agnostic interfaces
3231
and Homomorphic Encryption for different plaintext domains.
3332

34-
- `hebin`: Homomorphic Encryption for binary arithmetic. It comprises blind rotations (a.k.a Lookup Tables) over RLWE ciphertexts.
33+
- `hebin`: Homomorphic Encryption for binary arithmetic. It offers support for blind rotations (a.k.a Lookup Tables) over packed RLWE ciphertexts.
3534

36-
- `hefloat`: Homomorphic Encryption for fixed-point approximate arithmetic over the complex or real numbers.
35+
- `hefloat`: Homomorphic Encryption for fixed-point approximate arithmetic over the complex or real numbers.
36+
The backed is based on a Full-RNS Homomorphic Encryption for Arithmetic for Approximate Numbers (HEAAN, a.k.a. CKKS) scheme.
37+
It provides fixed-point approximate arithmetic over the complex numbers (in its classic variant) and over the real numbers
38+
(in its conjugate-invariant variant).
3739

3840
- `bootstrapping`: Bootstrapping for fixed-point approximate arithmetic over the real
3941
and complex numbers, with support for the Conjugate Invariant ring, batch bootstrapping with automatic
4042
packing/unpacking of sparsely packed/smaller ring degree ciphertexts, arbitrary precision bootstrapping,
4143
and advanced circuit customization/parameterization.
4244

43-
- `heint`: Homomorphic Encryption for modular arithmetic over the integers.
45+
- `heint`: Homomorphic Encryption for modular arithmetic over the integers.
46+
The backed is base on a Full-RNS generalization of the Brakerski-Fan-Vercauteren scale-
47+
invariant (BFV) and Brakerski-Gentry-Vaikuntanathan (BGV) homomorphic encryption schemes.
48+
It provides modular arithmetic over the integers.
4449

45-
- `lattigo/mhe`: Package for multiparty (a.k.a. distributed or threshold) key-generation and
50+
- `mhe`: Package for multiparty (a.k.a. distributed or threshold) key-generation and
4651
interactive ciphertext bootstrapping with secret-shared secret keys.
4752

4853
- `mhefloat`: Homomorphic decryption and re-encryption from and to Linear-Secret-Sharing-Shares,
@@ -51,38 +56,22 @@ The library exposes the following packages:
5156
- `mheint`: Homomorphic decryption and re-encryption from and to Linear-Secret-Sharing-Shares,
5257
as well as interactive ciphertext bootstrapping for the package `he/heint`.
5358

54-
- `lattigo/schemes`: A package implementing RLWE-based homomorphic encryption schemes.
55-
56-
- `bfv`: A Full-RNS variant of the Brakerski-Fan-Vercauteren scale-invariant homomorphic
57-
encryption scheme. This scheme is instantiated via a wrapper of the `bgv` scheme.
58-
It provides modular arithmetic over the integers.
59-
60-
- `bgv`: A Full-RNS generalization of the Brakerski-Fan-Vercauteren scale-invariant (BFV) and
61-
Brakerski-Gentry-Vaikuntanathan (BGV) homomorphic encryption schemes.
62-
It provides modular arithmetic over the integers.
63-
64-
- `ckks`: A Full-RNS Homomorphic Encryption for Arithmetic for Approximate Numbers (HEAAN,
65-
a.k.a. CKKS) scheme. It provides fixed-point approximate arithmetic over the complex numbers (in its classic
66-
variant) and over the real numbers (in its conjugate-invariant variant).
67-
68-
- `lattigo/core`: A package implementing the core cryptographic functionalities of the library.
69-
70-
- `rlwe`: Common base for generic RLWE-based homomorphic encryption.
59+
- `rlwe`: Common base for generic RLWE-based homomorphic encryption.
7160
It provides all homomorphic functionalities and defines all structs that are not scheme-specific.
7261
This includes plaintext, ciphertext, key-generation, encryption, decryption and key-switching, as
7362
well as other more advanced primitives such as RLWE-repacking.
7463

75-
- `rgsw`: A Full-RNS variant of Ring-GSW ciphertexts and the external product.
64+
- `rgsw`: A Full-RNS variant of Ring-GSW ciphertexts and supporting RLWExRGSW and RGSWxRGSW products.
7665

77-
- `lattigo/ring`: Modular arithmetic operations for polynomials in the RNS basis, including: RNS
66+
- `ring`: Modular arithmetic operations for polynomials in the RNS basis, including: RNS
7867
basis extension; RNS rescaling; number theoretic transform (NTT); uniform, Gaussian and ternary
7968
sampling.
8069

81-
- `lattigo/examples`: Executable Go programs that demonstrate the use of the Lattigo library. Each
82-
subpackage includes test files that further demonstrate the use of Lattigo
83-
primitives.
70+
- `examples`: Executable Go programs that demonstrate the use of the library.
71+
Each subpackage includes test files that further demonstrate the use of the implemented primitives.
8472

85-
- `lattigo/utils`: Generic utility methods. This package also contains the following sub-pacakges:
73+
- `utils`: Generic utility methods. This package also contains the following sub-pacakges:
74+
- `concurrency`: Basic helpers for adding concurrency.
8675
- `bignum`: Arbitrary precision linear algebra and polynomial approximation.
8776
- `buffer`: Efficient methods to write/read on `io.Writer` and `io.Reader`.
8877
- `factorization`: Various factorization algorithms for medium-sized integers.
@@ -115,66 +104,43 @@ MHE --> MHEInt
115104

116105
## Versions and Roadmap
117106

118-
The Lattigo library was originally exclusively developed by the EPFL Laboratory for Data Security
119-
until its version 2.4.0.
120-
121-
Starting with the release of version 3.0.0, Lattigo is maintained and supported by [Tune Insight
122-
SA](https://tuneinsight.com).
123-
124-
Also starting with from version 3.0.0, the module name has changed to
125-
`github.com/tuneinsight/lattigo/v[X]`, and the official repository has been moved to
126-
https://github.com/tuneinsight/lattigo. This has the following implications for modules that depend
127-
on Lattigo:
128-
- Modules that require `github.com/ldsec/lattigo/v2` will still build correctly.
129-
- To upgrade to a version X.y.z >= 3.0.0, depending modules must require `github.com/tuneinsight/lattigo/v[X]/`,
130-
for example by changing the imports to `github.com/tuneinsight/lattigo/v[X]/[package]` and by
131-
running `go mod tidy`.
132-
133-
The current version of Lattigo, (v5.x.x) is fast-evolving and in constant development. Consequently,
134-
there will still be backward-incompatible changes within this major version, in addition to many bug
135-
fixes and new features. Hence, we encourage all Lattigo users to update to the latest Lattigo version.
107+
The current version of the library is fast-evolving and in constant development.
108+
Consequently, there will still be backward-incompatible changes within this major version, in addition to many bug fixes and new features.
109+
Hence, we encourage all users to always update to the latest version.
136110

137-
138-
See CHANGELOG.md for the current and past versions.
111+
See [CHANGELOG](https://github.com/Pro7ech/lattigo/blob/master/.github/CHANGELOG.md) for the current and past versions.
139112

140113
## Stability
141114

142-
To keep a comprehensive history, we prioritize rebases over merges for branches other than `main`.
143115
Branches with the prefix `dev_` are branches in active development and will be frequently rebased.
144116
Hence, we don't recommend depending on them.
145117

146-
## Pull Requests
147-
148-
External pull requests should only be used to propose new functionalities that are substantial and would
149-
require a fair amount of work if done on our side. If you plan to open such a pull request, please contact
150-
us before doing so to make sure that the proposed changes are aligned with our development roadmap.
118+
## Contributing to the Library
151119

152-
External pull requests only proposing small or trivial changes will be converted to an issue and closed.
120+
See [CONTRIBUTING](https://github.com/Pro7ech/lattigo/blob/master/.github/CONTRIBUTING.md)
153121

154-
External contributions will require the signature of a Contributor License Agreement (CLA).
155-
You can contact us using the following email to request a copy of the CLA: [lattigo@tuneinsight.com](mailto:lattigo@tuneinsight.com).
122+
## Security
156123

124+
See [SECURITY](https://github.com/Pro7ech/lattigo/blob/main/.github/SECURITY.md)
157125

158126
## License
159127

160-
Lattigo is licensed under the Apache 2.0 License. See [LICENSE](https://github.com/tuneinsight/lattigo/blob/master/LICENSE).
128+
Apache 2.0. See [LICENSE](https://github.com/Pro7ech/lattigo/blob/main/LICENSE)
161129

162130
## Contact
163131

164-
Before contacting us directly, please make sure that your request cannot be handled through an issue.
165-
166-
If you want to contribute to Lattigo or report a security issue, you have a feature proposal or request, or you simply want to contact us directly, please do so using the following email: [lattigo@tuneinsight.com](mailto:lattigo@tuneinsight.com).
132+
You can mail me at [jeanphilippe.bossuat@gmail.com](jeanphilippe.bossuat@gmail.com)
167133

168134
## Citing
169135

170136
Please use the following BibTex entry for citing Lattigo:
171137

172138
@misc{lattigo,
173-
title = {Lattigo v5},
174-
howpublished = {Online: \url{https://github.com/tuneinsight/lattigo}},
139+
title = {Pro7ech's Lattigo},
140+
howpublished = {Online: \url{https://github.com/Pro7ech/lattigo}},
175141
month = Nov,
176-
year = 2023,
177-
note = {EPFL-LDS, Tune Insight SA}
142+
year = 2024,
143+
note = {EPFL-LDS, Tune Insight SA, Jean-Philippe Bossuat}
178144
}
179145

180146

0 commit comments

Comments
 (0)