Is it possible to vary the strength of encryption in Concrete ML?


I noticed that in TenSEAL, one can vary the parameters in the encryption context, such as polynomial modulus degree and scale to set a security level at 128 bits, for example.

Is it possible to vary the security level in Concrete ML?
So far it looks like the only parameter for the user to choose, is n_bits, the quantisation parameter?
are there any other parameters that users can experiment with?

Hello Maria,

In TenSEAL, there is no compiler/optimizer to choose parameters without involving the user, but such library always aim to require the minimum crypto knowledge from users (including crypto parameters). That’s why in Concrete, we don’t ask users to input any parameters at all, since we have the optimizer that can find the best parameters for a given computation.

Now for experimentation, I understand that it might be helpful to have the capability to play with parameters, but it’s not something we want to expose in the public API for high-level users, as it might be error-prone. The Compiler Python API however, exposes some functions to do that.

The choice of the security level is however different, and it might be something we can expose in the public API at some point, but it can already be used in the Compiler API here.

Hope this helps answering your question :slight_smile:

1 Like

Hello @bluetail14 ,

Also, in addition to @ayoub 's answer: if your goal is to develop faster, you may want to have a look to simulation, which are very comfortable to work with. There is no FHE here, so much faster, but still, it behaves very close to FHE in terms of correctness and result.

Can you tell me what is the default security level in Concrete ML please? e.g. 128 bit?

Hello @bluetail14 ,
You may have already seen this answer, but just in case, yes Concrete ML’s security level is 128 bits !

1 Like