全同态加密(2)

KeyGen函数

这个函数是用来产生密钥对:

  1. 公钥用于加密
  2. 密文计算公钥(Evk)
  3. 私钥用于解密

根据同态加密方案中密文计算公钥的不同使用,分为三大类:

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

Enc算法

Enc算法(加密)和我们平常意义的加密是一样的,但是在全同态加密的语境里,使用Enc算法加密的密文,一般称之为新鲜密文,即该密文是一个初始密文,没有和其他密文计算过。所以新鲜密文的噪音称之为初始噪音。

Dec算法

Dec算法(解密)也和我们平常理解的一样,就是对密文的解密,但是这里解密算法不仅能对初始密文解密,还能够对计算后的密文解密。

Evaluate函数

Evaluate函数是整个全同态加密方案中的核心部分。

它主要三个组成部分:

  1. 密文计算公钥(Evk)
  2. 函数F(就是Evaluate函数所要执行的函数,可以是任意函数,当然也可以是“解密函数”。
  3. 密文

密文的计算是在电路里进行的,电路是分层的。电路深度越深,层数越多,密文就能够进行更多次的计算。

密文计算的次数等于电路深度的对数。

由于密文含有噪音,如果把函数F表示成电路,那么Evaluate函数实际上只能对有限深度L的电路进行计算,超过这个深度L的电路就不行了。

你可能感兴趣的:(全同态加密)