Hello, I’m trying to understand how the secret keys are used.
In a previous post I was looking for some information and I was told to download and unzip the server.zip file and look at client.specs.json. Here, I found the the key set dict with several secret keys, keyswitch keys, and bootstrapping keys.
I thought that we switch from a secret key to another only during the programmable bootstrapping, but there were more secret keys than I thought were needed.
For example, I encrypted a portion of layers at the bottom of a VGG model which was made of:
QuantReLU, QuantConv2d, Avgpool2d, QuantIdentity, QuantIdentity, Flatten, QuantIdentity, QuanLinear
(I understant there is an unneeded QuantIdentity, but let’s ignore that)
Since there is only one QuantReLU, I thought we needed only 2 secret keys max, but these are the 5 secret keys I found:
"lweSecretKeys":[
{
"id":0,
"params":{
"lweDimension":8192,
"integerPrecision":64,
"keyType":"binary"
}
},
{
"id":1,
"params":{
"lweDimension":903,
"integerPrecision":64,
"keyType":"binary"
}
},
{
"id":2,
"params":{
"lweDimension":593,
"integerPrecision":64,
"keyType":"binary"
}
},
{
"id":3,
"params":{
"lweDimension":32768,
"integerPrecision":64,
"keyType":"binary"
}
},
{
"id":4,
"params":{
"lweDimension":926,
"integerPrecision":64,
"keyType":"binary"
}
}
]
Where exactly do we use these secret keys?