SEAL全同态加密库(二)
一.同态加密
如果我们有一个加密函数 f , 把明文A变成密文A’, 把明文B变成密文B’,也就是说f(A) = A’ ,f(B) = B’ 。另外我们还有一个解密函数 ,能够将 f 加密后的密文解密成加密前的明文。
对于一般的加密函数,如果我们将A’和B’相加,得到C’。我们用对C’进行解密得到的结果一般是毫无意义的乱码。
但是,如果 f 是个可以进行同态加密的加密函数, 我们对C’使用进行解密得到结果C, 这时候的C = A + B。这样,数据处理权与数据所有权可以分离,这样企业可以防止自身数据泄露的同时,利用云服务的算力。
二.全同态加密体系
系统性的定义一下全同态系统的正式定义。一个全同态加密系统,一共拥有四个算法:
密钥生成算法:KenGen为了简单表示,我们这里假设这个加密系统是对称的(即加密密钥等于解密密钥)。
加密算法:Enc(sk,m)->ct把原文m加密成密文ct。
解密算法 :Dec(sk,ct)->m把密文 ct还原为原文m。解密算法不仅能对初始密文解密,还能够对计算后的密文解密
运算评估算法 :Eval(F,ct1,ct2…ctn)->ct_把n个密文组合起来,通过一个二进制逻辑电路 F,最后得到组合的密文ct_,通俗理解为将密文输入到函数f里进行计算。满足下面等式