Closed macknight closed 2 years ago
Lattigo seems to support (some version of) CKKS bootstrapping: https://github.com/tuneinsight/lattigo/blob/master/ckks/bootstrapping/bootstrap_test.go
OpenFHE (formerly "Pallisade") also appears to support it: https://github.com/openfheorg/openfhe-development/blob/main/src/pke/examples/advanced-ckks-bootstrapping.cpp
As far as I know, SEAL does not support CKKS bootstrapping at the moment. I'm unsure about HElib.
Lattigo seems to support (some version of) CKKS bootstrapping: https://github.com/tuneinsight/lattigo/blob/master/ckks/bootstrapping/bootstrap_test.go
OpenFHE (formerly "Pallisade") also appears to support it: https://github.com/openfheorg/openfhe-development/blob/main/src/pke/examples/advanced-ckks-bootstrapping.cpp
As far as I know, SEAL does not support CKKS bootstrapping at the moment. I'm unsure about HElib.
Thank you Alexander. Do you know why SEAL don't support this feature? Will it affect the use of SEAL if SEAL don't support this feature?
Hi, for encryption mechanism, there are two modes, block cipher and stream cipher. So for HE, or for different HE schemes (BFV, BGV, CKKS, etc.), which cipher mode do these schmes belong to, block or stream mode? I don't think I've seen any introduction to this one. Any blogs or papers about HE schemes' cipher mode?
Do you know why SEAL don't support this feature? Will it affect the use of SEAL if SEAL don't support this feature?
I think the reason it's not (yet) supported is because it's not all that useful in most applications. Reasonable parameters allow a lot of computation in CKKS before bootstrapping is necessary. So it probably won't make a difference for most applications, except really advanced state-of-the-art works.
Hi, for encryption mechanism, there are two modes, block cipher and stream cipher. So for HE, or for different HE schemes (BFV, BGV, CKKS, etc.), which cipher mode do these schmes belong to, block or stream mode? I don't think I've seen any introduction to this one. Any blogs or papers about HE schemes' cipher mode?
I think you're mixing up two completely different things here. Block and stream ciphers are concepts from symmetric cryptography (e.g., AES) and don't make much sense for asymmetric/public-key cryptography systems like FHE schemes.
There's a variety of "Introduction to FHE" videos out there, and there's also this blog that assumes very little prior knowledge: https://blog.nucypher.com/an-engineers-guide-to-fully-homomorphic-encryption/
OK, I got an idea just now, do you think another important reason is because most FHE schemes are leveled FHE thus when level becomes 0, the computation stops and bootstrapping is not need as a result?
Hi, for encryption mechanism, there are two modes, block cipher and stream cipher. So for HE, or for different HE schemes (BFV, BGV, CKKS, etc.), which cipher mode do these schmes belong to, block or stream mode? I don't think I've seen any introduction to this one. Any blogs or papers about HE schemes' cipher mode?
I think you're mixing up two completely different things here. Block and stream ciphers are concepts from symmetric cryptography (e.g., AES) and don't make much sense for asymmetric/public-key cryptography systems like FHE schemes.
There's a variety of "Introduction to FHE" videos out there, and there's also this blog that assumes very little prior knowledge: https://blog.nucypher.com/an-engineers-guide-to-fully-homomorphic-encryption/
Thank you for your reply, I'll rethink about it.
Reasonable parameters allow a lot of computation in CKKS before bootstrapping is necessary
"Reasonable parameters allow a lot of computation in CKKS before bootstrapping is necessary" So how do I know when I should stop computations in CKKS before bootstrapping is necessary?
So how do I know when I should stop computations in CKKS before bootstrapping is necessary?
As a rough rule, you should have as many levels as you have sequential multiplications (i.e. "multiplicative depth"). There are some tools out there can help you with running CKKS programs without manually specifying things like this. You might want to have a look at EVA for example.
So how do I know when I should stop computations in CKKS before bootstrapping is necessary?
As a rough rule, you should have as many levels as you have sequential multiplications (i.e. "multiplicative depth"). There are some tools out there can help you with running CKKS programs without manually specifying things like this. You might want to have a look at EVA for example.
Thank you, I'll have a look.
Hi, May I know if any implementation libs support the bootstrapping operations of CKKS or not? If yes, where could I find it and its demos or examples?