Does bootstrapping have any requirements regarding the noise level of the input ciphertext?

I’m currently reading TFHE-rs: A (Practical) Handbook.
I understand that

  1. PBS can be used to reduce/eliminate noise in encrypted data.
  2. The decoding algorithm needs noise |e| < ∆/2, otherwise the decoding will fail.

So I have the following questions:

  1. Does PBS have any limitations on the noise level of the input ciphertext?
  2. Can ciphertexts with arbitrary noise levels be correctly refreshed after passing through PBS?
  3. If there are limitations, are these noise limitations the same as the limitations for decryption/decoding?

I would be very grateful if you could answer my questions or recommend some relevant papers.

Hello @gyu

  1. The PBS has a limitation in terms of noise yes.

Right before the PBS there is an operation called the “modulus switch” that should be described in the Handbook. Essentially this step adds a lot of noise but makes it possible to evaluate the blind rotation part of the PBS so cannot be skipped today.

The blind rotation evaluates the decryption of the modulus switched ciphertext, so the constraint for the correctness is that the noise in the modulus switched ciphertext respects the |e| < Delta/2.

  1. Given the above: no, ciphertexts with arbitrary noise levels cannot be refreshed, if they have a high level of noise even before the modulus switch the plaintext is already lost for example, so applying a PBS is going to have a deterministic but random output.

  2. Yes as indicated in 1, the modulus switched ciphertext must respect the same constraint but in the new modulus which is 2 * N, where N is the polynomial size used in the PBS.

Hope that answers your questions :slightly_smiling_face:

Thank you so much, I’d like to delve deeper into the second question.

  • Assuming that a ciphertext before PBS contains too much noise, and the ciphertext ultimately fails to achieve the desired PBS effect. For example, ct = Encrypt(0) and assuming ideal conditions, PBS would map it to a new ciphertext ct' = Encrypt(3).
  • Because of the excessive noise, PBS does not run correctly, and instead maps 0 to 1, not 3. Thus, we get a new ciphertext ct'' = Encrypt(1). Although we find that decrypting ct'' results in the message being 1, this ciphertext is still unreliable. Even if PBS happens to correctly map 0 to 3, the result of PBS may still be unreliable, because although the decryption result is correct, the ciphertext may no longer be in the expected phase.
  • This means that if the ciphertext PBS(ct) is further involved in subsequent operations, it may affect the entire computation path, right? Because we can no longer evaluate the reliability of the ciphertext PBS(ct).

Looking forward to further communication with you.

Yes, once the ciphertext has gone over the noise limit one can not expect any computations done beyond that point to be reliable.