Skip to content

Releases: zama-ai/tfhe-rs

TFHE-rs v0.6.0

09 Apr 12:41
tfhe-rs-0.6.0
Compare
Choose a tag to compare

Summary

TFHE-rs v0.6.0 adds Zero Knowledge (ZK) proofs to the Compact Public Key encryption. This feature enables server-side verification of the correctness of the ciphertext encrypted in this manner without knowing the content of the ciphertexts.

This release also introduces a new form of post-computation compression that limits the size of data on disk/in transit. It’s particularly useful when storing computation results in their encrypted forms.

The CUDA backend v0.2.0 now supports more integer operations, including shift, rotate, scalar multiplication, and the corresponding signed operations.

What's Changed

Breaking Changes

Warning

The Compact Public Key encryption is not backward compatible due to the change of layout, preventing from updating older ciphertexts to the newer format.

New features

  • High Level API: added the FHE oblivious pseudo random generation
  • High Level API/Integer: added leading/trailing zeros/ones, ilog2 and checked ilog2
  • Integer: added checked division, returning a flag to indicate if the divisor was non-zero
  • Integer: added smart variant for the neg_assign function
  • Integer/CUDA: added support for unsigned cast
  • Integer/CUDA: added overflowing sub
  • Integer/CUDA: added support for signed add/sub/mul, bitops, shifts and rotations
  • Integer/CUDA: added decompression from compressed CPU server key to GPU server key
  • Shortint/Integer: total count of executed PBS can now be queried with get_pbs_count with feature pbs-stats
  • Shortint: added the "many LUT" construction allowing to evaluate several functions in case where the ciphertext has unused message bits
  • Core crypto: added support keyswitch with a modulus switching as well
  • Core crypto: added parallelized private functional packing keyswitch over a list of LWE ciphertexts
  • All: added support for TUniform distribution for noise distributions
  • All: added modulus switching for post computation compression
  • C API: added CUDA support
  • C API: allow configuration of the number of threads used by integer API calls

Improvements

  • Integer: improved carry propagation and sum algorithm
  • Integer: bitnot is now PBS free improving performance
  • Integer/CUDA: improved performance of the term reduction in the multiplication
  • Core crypto: faster PBS 128 with usage of new version of concrete-fft

Fixes

  • Integer: fix cast in scalar_shift/rotate
  • Integer: is_scalar_out_of_bounds handles bigger ciphertext case
  • Integer: correct degree in small comparisons
  • Integer: fix parallel carry propagation on empty input
  • Integer: fix the wopbs CRT LUT generation
  • Integer/CUDA: fix 40 bit integer multiplication
  • Integer/CUDA: fix scalar eq for booleans
  • Integer/CUDA: fix bug in integer mult when k > 1
  • Integer/CUDA: replace hardcoded degrees in multiplication.cuh
  • CUDA: fix cuda_memset with size 0
  • CUDA: fix memory bug in multi-bit PBS
  • Core crypto: ignore value already present in the body when doing LWE encryption
  • Core crypto: fix unsigned noise addition for custom modulus
  • Core crypto: fix empty extracted bits list rejected as invalid by the wopbs
  • C API: add missing function on FheBool

Resources

TFHE-rs v0.4.4

29 Feb 08:35
tfhe-rs-0.4.4
Compare
Choose a tag to compare

Fixed build by unpinning bytemuck and updating dependencies to side step rust's simd_stdarch breakage

TFHE-rs v0.5.3

28 Feb 15:00
tfhe-rs-0.5.3
Compare
Choose a tag to compare

TFHE-rs v0.5.3 includes:

Shortint API: Fix a special case of compact public key encryption for list

TFHE-rs v0.4.3

28 Feb 14:51
tfhe-rs-0.4.3
Compare
Choose a tag to compare

TFHE-rs v0.4.3 includes:

Shortint API: Fix a special case of compact public key encryption for list

TFHE-rs v0.3.2

28 Feb 14:41
tfhe-rs-0.3.2
Compare
Choose a tag to compare

TFHE-rs v0.3.2 includes:

Shortint API: Fix a special case of compact public key encryption for list

TFHE-rs v0.5.2

23 Feb 09:55
tfhe-rs-0.5.2
Compare
Choose a tag to compare

TFHE-rs v0.5.2 includes:

In the High-Level API (HL API):

  • Add missing CUDA bitnot binding

In the Integer API:

  • Fix degree management in some edge cases for comparisons and bitwise ops

In the C API:

  • Added missing FheBool primitives for the HL API
  • Added CUDA support

TFHE-rs v0.5.1

30 Jan 10:10
tfhe-rs-0.5.1
Compare
Choose a tag to compare

TFHE-rs v0.5.1 includes:

In the Integer API:

  • Fix a conversion edge case in scalar shift/rotate when using small scalars
  • Fix a panic in internal methods when comparing signed scalars to encrypted values
  • Improve noise management in comparisons and fuse 2 PBSes improving performance in the scalar case

In the Core Crypto API:

  • Fix LWE encryption where the content of the body was not properly ignored in the destination LWE and could lead to invalid encryption

In the GPU Backend:

  • Allow to compile if no Nvidia GPU is present but the CUDA toolkits are properly installed
  • Fix an issue where memory was not getting freed properly

TFHE-rs v0.4.2

23 Jan 19:01
tfhe-rs-0.4.2
Compare
Choose a tag to compare

TFHE-rs v0.4.2 includes:

  • code to upgrade data to the TFHE-rs v0.5.0 data format for the:
    • core API
    • boolean API
    • shortint API
    • integer API
    • High Level API as well as the corresponding C bindings

Read more about it here: https://docs.zama.ai/tfhe-rs/v/0.4-1/how-to/migrate_data

TFHE-rs v0.5.0

22 Jan 16:39
tfhe-rs-0.5.0
Compare
Choose a tag to compare

TFHE-rs v0.5.0 includes:

In the High-Level API (HL API):

  • Added support of new GPU backend (tfhe-cuda-backend)
  • Added operations with overflow detection (add/sub/mul)
  • Added C API for operations with overflow detection
  • Added consistent representation for Booleans and Shortints
  • Added efficient 'Debug Mode'
  • Added '.sum()' operators on vectors of integers (FheUint/FheInt)

In the Integer API:

  • Added operations with overflow detection for signed and unsigned Integers (add/sub/mul)
  • Added accessors to inner shortint server keys
  • Added debug mode (i.e., efficient trivial ciphertext management)
  • Added fast sum of vectors of Integers
  • Added cast between signed and unsigned Integers
  • Refactored the RNS operations
  • Added practical homomorphic evaluation of a standard PRF allowing to generate randomness in FHE
  • Added noise level measurement

In the Core Crypto API:

  • Improved keyswich performance

TFHE-rs v0.4.1

23 Oct 16:31
tfhe-rs-0.4.1
Compare
Choose a tag to compare

fix(integer): fix unsigned_overflowing_sub on trivials