Skip to content

Lattigo v2.3.0

Compare
Choose a tag to compare
@ChristianMct ChristianMct released this 12 Oct 09:45

Changelog

  • RING: added MapSmallDimensionToLargerDimensionNTT method which maps from Y = X^{N/n} to X in the NTT domain.
  • RING: FastBasisExtender type can now extend the basis of polynomials of any level in base Q to polynomials of any level in base P.
  • RING: changed RNS division Div[floor/round]BylastModulus[NTT] to Div[floor/round]BylastModulus[NTT]Lvl (the level of the last modulus must always be provided).
  • RING: RNS division no longer modifies the output polynomial's level, this is to facilitate the usage of memory pools.
  • RING: added the method MFormVector, which switches a slice of uint64 into the Montgomery domain.
  • RING: RNS scaler (used in BFV) does not modify the input anymore.
  • RLWE: GenSwitchingKey now accepts secret-keys of different dimensions and level as input to enable re-encryption between different ciphertext degrees.
  • RLWE: added SwitchCiphertextRingDegreeNTT and SwitchCiphertextRingDegree to switch ciphertext ring degrees.
  • RLWE: added the rlwe.RingQP type to represent the extended ring R_qp.
  • RLWE: added the rlwe.PolyQP type to represent polynomials in the extended ring R_qp.
  • DRLWE: added the CKGCRP, RKGCRP, RTGCRP and CKSCRP types to represent the common reference polynomials in these protocols.
  • DRLWE: added the CRS interface for PRNGs that implement a common reference string among the parties.
  • DRLWE: added the SampleCRP(crs CRS) method to each protocol types to sample their respective CRP type.
  • BFV: changed the plaintext scaling from floor(Q/T)*m to round((Q*m)/T) to reduce the initial ciphertext noise.
  • CKKS: added the ckks/advanced sub-package and moved the homomorphic encoding, decoding and modular reduction into it.
  • CKKS: added the ckks/bootstrapping sub-package and moved the CKKS bootstrapping into it. This package now mostly relies on the ckks/advanced package.
  • CKKS: renamed the ChebyshevInterpolation type to Polynomial.
  • CKKS: removed the EvaluateCheby method that was redundant with the EvaluatePoly one.
  • CKKS: optimized the EvaluatePoly to account for odd/even polynomials and fixed some small imprecisions in scale management occurring for some specific polynomial degrees.
  • CKKS: some advanced methods related to automorphisms are now public to facilitate their external use.
  • CKKS: improved the consistency of the API for in-place and [..]New methods.
  • CKKS: added the method NewCiphertextAtLevelFromPoly, which creates a ciphertext at a specific level from two polynomials.
  • CKKS: updated precision stats struct, added L2 norm in the statistics and improved the command line prints.
  • CKKS: improved the algorithmic complexity of MultiplyByDiagMatrixBSGS and updated the bootstrapping parameters accordingly.
  • CKKS: PermuteNTTHoistedNoModDown now returns [phi(P*c0 + c0'), phi(c1')] instead of [phi(c0'), phi(c1')].
  • CKKS: Changed RotateHoistedNoModDown to RotateHoistedNoModDownNew for consistency.
  • DBFV/DCKKS: both now use their respective CRP type for each protocol.
  • EXAMPLE: added showcase of the ckks/advanced sub-package: a bridge between CKKS and FHEW ciphertexts using homomorphic decoding, ring dimension switching, homomorphic matrix multiplication and homomorphic modular reduction.