Bootstrapping key inevitably changes to another key, that’s why keyswitching exists. However, what if I create a bootstrapping key that uses the original LWE key as the “key after”, so it bootstraps to something with the same key? Otherwise I’d need to do keyswitching after each bootstrapping
You can generate your bootstrap key from a power of two LWE key (i.e., a LWE key which has 1024, 2048 or 4096 coefficients). In this case, you will avoid the keyswitch computation after a bootstrap.
why would this work?
I understood the paper, the bootstrapping key is a list of GGSW encryptions of the LWE secret key, that is, a list of GGSW(lwe_sk[i]). How does the power of 2 help?
engine.create_lwe_bootstrap_key(input_key, output_key, decomposition_base_log, decomposition_level_count, noise)
should I use the smae input and output then? What if I want to bootstrap slots of an RLWE as LWE? Can I use the RLWE key as an LWE input and output and still bootstrap with no keyswitch?
I need to take a look at the math of this power of 2 thing, but it’s not obvious to me