KeyGen函数
这个函数是用来产生密钥对:
- 公钥用于加密
- 密文计算公钥(Evk)
- 私钥用于解密
根据同态加密方案中密文计算公钥的不同使用,分为三大类:
- 每次密文计算前要用同态解密来约减密文的噪音,这时Evk就是对密钥的每一位加密后生成的密文,即密钥有多少位,Evk中包含的公钥就有多少个。Evk中每个公钥的大小就是使用Evk加密后产生密文的大小。典型的代表(Gentry的理想格方案和DGHV方案)
- 使用密钥交换与模交换技术获得全同态加密,典型的代表(BGV)。Evk中包含的就是L-1个矩阵,L是方案中电路的深度,该矩阵用密钥转换,每次密文计算后,都需要使用Evk中的公钥将维数扩张的密文向量转换成正常维数的密文向量。
- 不需要Evk,Gentry使用的密文是矩阵(方阵),所以密文乘