microsoft / SEAL

Microsoft SEAL is an easy-to-use and powerful homomorphic encryption library.
https://www.microsoft.com/en-us/research/group/cryptography-research/
MIT License
3.59k stars 709 forks source link

About security level and precision bit #373

Closed YFMao15 closed 3 years ago

YFMao15 commented 3 years ago

I am wondering how SEAL decides the security level and precision bit in CKKS context. In HElib, precison bit is a input parameter of CKKS context, and security level could be calculated with Context::securityLevel().

Is there any SEAL function doing the same thing?

WeiDaiWD commented 3 years ago

SEAL by default enforces 128-bit classical security, when constructing a SEALContext. If the chosen parameters are not 128-bit secure according to the homomorphic encryption security standard, then the SEALContext construction will fail. You can change this enforced security level to different strength or bypass it, see sec_level_type. SEAL does not tell you, for example, that your parameters are 100-bit secure. Also SEAL treats the use of a polynomial ring degree less than 1024 or larger than 32768 as insecure, since the HE security standard does not specify them.

SEAL does not have a setting for precision bit. There is no method to tightly bound the number of bits of precision. The only methods known are heuristic and therefore inaccurate in practice -- most of time too conservative, in rare cases over-optimistic.