You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: .github/CHANGELOG.md
+52-57
Original file line number
Diff line number
Diff line change
@@ -4,10 +4,10 @@ All notable changes to this library are documented in this file.
4
4
## [0.0.1] - 24.06.2024
5
5
6
6
Changes affecting the entire library:
7
-
- Extensive refactoring of the `Ring` object (see below).
7
+
- Extensive refactoring of the `Ring` object (see much below for details).
8
8
- Refactored how polynomials and their derivative structs (e.g. ciphertexts and keys) are instantiated.
9
9
They now all have the following methods:
10
-
-`.FromBuffer` which allow to assign a new backing to the receiver from an `[]uint64` slice
10
+
-`.FromBuffer` which allow to assign a new backing array to the receiver from an `[]uint64` slice
11
11
-`.BufferSize` which returns the minimum size of the `[]uint64` slice to provide to `.FromBuffer`
12
12
- Calling `New<Something>` will internally call the two here above methods
13
13
- Removed the package `ring/ringqp`: all instances of `RingQP` have been replaced
@@ -21,96 +21,95 @@ Changes affecting the entire library:
21
21
- Linear Transformations:
22
22
- Generalized implementation of linear transformation such that package specific code (e.g. `heint` or `hefloat`) is not necessary anymore.
23
23
- Significantly improved the search for the best giant step size, which is not anymore constrained to a power of two:
24
-
- Added `OptimalLinearTransformationGiantStep` which replaces `FindBestBSGSRatio` and returns much more optimal values (not constrained to be a power of two anymore) that properly minimize the number of Galois elements.
25
-
-Removed the `LogBSGSRatio` from the `LinearTransformationParameters`:
24
+
- Added `OptimalLinearTransformationGiantStep` which replaces `FindBestBSGSRatio` and returns much more optimal values (not constrained to be a power of two anymore) that properly minimize the number of Galois elements.
25
+
-`LinearTransformationParameters`:
26
26
- Removed the `LogBSGSRatio` field.
27
27
- Removed the `Naive` field.
28
28
- Added the `GiantStep` field.
29
-
- LinearTransformationParameters:
30
-
- Added `GaloisElements`: returns the set of Galois elements necessary to evaluate the diagonalized matrix.
31
-
- LinearTransformation:
29
+
- Added `.GaloisElements(*)`: returns the set of Galois elements necessary to evaluate the diagonalized matrix.
30
+
-`LinearTransformation`:
32
31
- Removed the ` LogBabyStepGianStepRatio` field.
33
32
- Removed the `N1` field.
34
33
- Added the `GiantStep` field.
35
-
- Diagonals (diagonalized matrix):
34
+
-`Diagonals` (diagonalized matrix):
36
35
- Added `Add`: add two diagonalized matrices together.
- Improved serialization support for `ParametersLiteral`.
72
+
-`Evaluator`:
73
+
- Added `MatchScalesForMul` which enables to match the scales of two ciphertext such that after multiplication and rescaling the scaling factor is the one desired.
74
+
-`InverseEvaluator`:
72
75
- Changed `log2Min` and `log2Max` to `Min` and `Max` respectively. This enables a more human friendly parameterization.
73
76
- Added `InvSqrt`, which returns 1/sqrt(x) by Newton iterations. Contrary to the GoldschmidtDivision algorithm, it can be used to refine a value already close to the ideal value, enabling composition with polynomial approximation.
74
-
- GoldschmidtDivision takes as operand the number of iterations instead of automatically estimating them.
75
-
- IntervalNormalization uses one less level per iteration (2 instead of 3), and use one less bootstrapping per iteration if using the Conjugate Invariant ring.
77
+
-`GoldschmidtDivision` takes as operand the number of iterations instead of automatically estimating them.
78
+
-`IntervalNormalization` uses one less level per iteration (2 instead of 3), and use one less bootstrapping per iteration if using the Conjugate Invariant ring.
76
79
- Added affine transformation for EvalMod1.
77
80
- Merged `schemes/ckks` into `hefloat`.
78
81
- Removed package specific code for linear transformations (this functionality now solely depends on the `he` package).
79
82
- Improved statistics, which now also display the standard deviation as well as the error statistics.
80
83
81
-
-`hefloat/bootstrapping`:
82
-
- Improved serialization support for `bootstrapping.ParametersLiteral`.
83
-
84
84
-`mhe`:
85
-
- General rework, uniformization and simplification of the API of all protocols.
85
+
- General rework, uniformization and simplification of the API of all protocols. All protocols now comply to the similar interface `Gen`, `Aggregate`, `Finalize`.
86
86
- Greatly reduced code and code complexity of all protocols:
87
-
- Protocols use the `rlwe.Encryptor` instead of re-implementing encryption routines
88
-
- Shares are now standardized using the new structs defined in the `ring` package
89
-
- New non-interactive protocols:
90
-
-`mhe.CircularCiphertextProtocol`: non-interactive generation of `RLWE(ms)`.
91
-
-`mhe.CircularGadgetCiphertextProtocol`: non-interactive generation of `GRLWE(ms)`.
92
-
-These two protocols enable a fully non-interactive setup for `heint`, `hefloat` and `hebin`.
93
-
- Improved the interactive relinearization key gen protocol (https://eprint.iacr.org/2021/1085).
87
+
- Protocols use the `rlwe.Encryptor` instead of re-implementing encryption routines.
88
+
- Shares are now standardized using the new structs defined in the `ring` package.
89
+
- New single-round protocols which enable a fully single-round setup for `heint`, `hefloat` and `hebin`:
90
+
-`mhe.CircularCiphertextProtocol`: single-round generation of `RLWE(ms)`.
91
+
-`mhe.CircularGadgetCiphertextProtocol`: single-round generation of `GRLWE(ms)`.
92
+
-An single-round setup example can be found [here](https://github.com/Pro7ech/lattigo/blob/master/examples/multi_party/setup/one_round/main.go).
93
+
- Improved the interactive relinearization key gen protocol from [Homomorphic Encryption for Multiple Users with Less Communications](https://eprint.iacr.org/2021/1085).
94
94
- Added full support for deterministic share generation.
95
95
96
96
-`core`:
97
-
- Removed `core`.
98
-
99
-
-`rlwe`:
100
-
- Moved out of `core`.
101
-
- Expanded the API of the `Encryptor` to support deterministic encryption and be able to perform key-switching.
102
-
- Added support for signed digit decomposition.
103
-
- Parameters can be specified with any combination of (`Q`, `LogQ`) and (`P`, `LogP`).
104
-
- Added `NoiseCiphertext`, which returns the base 2 logarithm of the standard deviation of the
105
-
residual noise in an `rlwe.Ciphertext`.
106
-
- Removed field `nbPi` in `DecomposeNTT`.
107
-
- Added [Optimizing HE operations via Level-aware Key-switching Framework](https://eprint.iacr.org/2023/1328).
108
-
109
-
-`rgsw`:
110
-
- Moved out of `core`.
111
-
- Added support for `RGSWxRGSW` product.
112
-
- Added `.FromGadgetCiphertext` which produces an `rgsw.Ciphertext` from an `rlwe.GadgetCiphertext`.
113
-
- Added signed digit decomposition.
97
+
- Removed the `core` package (which was empty after the changes).
98
+
99
+
-`rlwe`:
100
+
- Moved out of `core`.
101
+
- Expanded the API of the `Encryptor` to support full deterministic encryption and be able to perform key-switching.
102
+
- Added support for signed digit decomposition via the struct `DigitDecomposition`.
103
+
- Parameters can be specified with any combination of (`Q`, `LogQ`) and (`P`, `LogP`).
104
+
- Added `NoiseCiphertext`, which returns the base 2 logarithm of the standard deviation of the residual noise in an `rlwe.Ciphertext`.
105
+
- Removed field `nbPi` in `DecomposeNTT`.
106
+
- Added [Optimizing HE operations via Level-aware Key-switching Framework](https://eprint.iacr.org/2023/1328).
107
+
108
+
-`rgsw`:
109
+
- Moved out of `core`.
110
+
- Added support for `RGSWxRGSW` product.
111
+
- Added `.FromGadgetCiphertext` which produces an `rgsw.Ciphertext` from an `rlwe.GadgetCiphertext`.
112
+
- Added support for signed digit decomposition.
114
113
115
114
-`schemes`:
116
115
-`bfv`: removed.
@@ -141,20 +140,16 @@ Changes affecting the entire library:
141
140
-`utils`:
142
141
- Removed many slices utilities, which are now available through the native package `slice`.
143
142
- Removed `Min` and `Max` which now have native supported in Go as `min` and `max`.
144
-
145
143
-`structs`:
146
144
- Added `Copyer` interface and support (TODO review copy/clone).
147
-
148
145
-`sampling`:
149
146
- Replaced the blake2b based XOF (`sampling.PRNG`) by the `math/rand/v2` ChaCha8-based CSPRNG (`sampling.Source`).
150
147
- The `sampling.Source` struct is now used for all sampling the library.
151
-
152
148
-`bignum`:
153
149
- Refactored and fixed many bugs in the multi-interval Remez minimax polynomial approximation algorithm which now properly works when doing multi-interval approximations.
154
150
- Added `Log2ErfC` which returns the base 2 logarithm of the complementary error function.
155
151
- Added `Stats([]big.Int, prec)`, which returns the base 2 logarithm of the standard deviation and the mean
156
152
- Added `ToComplexSlice` to cast a numerical slice to a `[]bignum.Complex`.
157
-
158
153
-`concurrency`:
159
154
- New package providing basic support for concurrency.
0 commit comments