Skip to content

Releases: virtualsecureplatform/TFHEpp

Version 10

14 Sep 17:02
d3653ef

Choose a tag to compare

After this release, I will make a breaking backward compatibility change, using a tuple to hold evaluating keys instead of defining keys individually.

In comparison to the previous release, version 9, this release primarily introduces three key features: 1. Annihilate Circuit Bootstrapping, 2. Use of BLAKE3 as CSPRNG 3. Use of Don't Be Mean based rounding noise reduction.

  1. is introduced because it is significantly faster than the previous private key switching based method. However, since it introduces larger noise, it will not be a drop-in replacement. Be careful about noise estimations.
  2. is introduced because it is faster than RANDEN and a relatively well-established cryptographic primitive. Although BLAKE3 itself is not widely used in the communities, BLAKE2 is well-known, so this might be better than RANDEN.
  3. is introduced because it eases the parameter selection without sacrificing efficiency.

Version 9

15 Jul 10:28

Choose a tag to compare

This release introduces the change that will break the backward compatibility. The API has not been changed but I added memory alignment requirements to some input and output variables. Because one of the philosophies of this library is to keep the data format as plain as possible, users must explicitly handle this alignment requirement by adding alignas or the custom allocator like TFHEpp::AlignedAllocator.

The main modification you will need to use this version is to ensure that the output of CircuitBootstrapping is aligned to the 64-byte boundary.

This alignment requirement is required to speed up the library.

This release also introduces some additional FFT library supports, but it is just for the completeness of this library. I recommend you to keep using SPQLIOS or its AVX512 version.

Version 8

01 Oct 08:13

Choose a tag to compare

I decided to add the support for Centered Binomial Distribution since it is believed to be faster to generate than Gaussian Distribution and is used in CRYSTAL-Kyber and Microsoft SEAL.
This change came from the need for faster evaluation key generation to reduce the cost of the client side.
After this release, some API changes caused by the distribution selection interface are expected.

Version 7

08 May 09:09

Choose a tag to compare

I decided to change the explicit instantiation structure to support non-predefined parameters. It may achieved by pre-compiled header or extern template functionality.

This release includes AVX512 spqlios, ternary key supports, CI using GitHub actions, Bootstrapping Unrolling, and BFV like multiplication.

Version 6

04 May 16:41

Choose a tag to compare

I will integrate the technique introduced in the recent paper.

Version 5

22 Dec 07:32
c484709

Choose a tag to compare

This release includes some additional FFT library supports and the introduction of EvalKey for a more flexible bootstrapping key format.

After this release, I will support k>1 parameters and 32-bit NTT. This may introduce some minor API changes.

Version 4

09 Oct 13:12

Choose a tag to compare

This is the last release that assumes only TLWElvl0 is the input of Homomomorphic Gates.
After this release, significant API changes are expected.

Version 3

02 Oct 11:14

Choose a tag to compare

This is the last release that supports GateBootstrappingTLWE2TRLWE, GateBootstrappingTLWE2TLWEFFTvariableMu, and RotatedTestVector. These are replaced by more generic functions like BlindRotate.
This release includes AnnihilatePacking, LWEMult, and BlindRotateManyLUT.

Version 2

13 Jul 16:06

Choose a tag to compare

This release is the last version that trgswSymEncrypt takes an integer as a plaintext, After this release, trgswSymEncrypt takes a polynomial.
This change is needed to implement Chen's packing method.

Version 1

27 Feb 11:05

Choose a tag to compare

This release is the last version that is compatible with USENIX 2021's codes.
To make this library more extensible, I decided to do refactoring with breaking backward compatibility.