Zero-knowledge proofs
This document explains how to implement the zero-knowledge proofs function for compact public key encryption to verify the encryption process without revealing the encrypted information.
TFHE-rs can generate zero-knowledge proofs to verify that the compact public key encryption process is correct. In other words, TFHE-rs generates the proof without revealing any information other than the already known range of the encrypted message. This technique is derived from Libert’s work.
You can enable this feature using the flag: --features=zk-pok-experimental
when building TFHE-rs.
Using this feature is straightforward: during encryption, the client generates the proof, and the server validates it before conducting any homomorphic computations. The following example demonstrates how a client can encrypt and prove a ciphertext, and how a server can verify the ciphertext and compute it:
In terms of performance:
Encrypting and proving a
CompactFheUint64
takes 6.9 s on aDell XPS 15 9500
(simulating a client machine).Verification takes 123 ms on an
hpc7a.96xlarge
AWS instances.
Last updated