什么是同态
同态是离散数学中的一个概念,期中考试最后一题是同态加密,这激发了我的兴趣,是时候研究一下了。
下面是离散数学中同态的定义:
设(M,*)和(S,·)是两个群,σ:M→S,∀a,b∈M,有σ(a*b)=σ(a)·σ(b),则称σ为M到S的同态或群映射。
同态加密
如果我们有一个加密函数 f , 把明文A变成密文A’, 把明文B变成密文B’,也就是说 f(A) = A’ , f(B) = B’ 。另外我们还有一个解密函数 f−1f−1 能够将 f 加密后的密文解密成加密前的明文。
对于一般的加密函数,如果我们将A’和B’相加,得到C’。我们用f−1f−1 对C’进行解密得到的结果一般是毫无意义的乱码。
但是,如果 f 是个可以进行同态加密的加密函数, 我们对C’使用 f−1f−1 进行解密得到结果C, 这时候的C = A + B。这样,数据处理权与数据所有权可以分离,这样企业可以防止自身数据泄露的同时,利用云服务的算力。
同态分类
a) 如果满足 f(A)+f(B)=f(A+B)f(A)+f(B)=f(A+B) , 我们将这种加密函数叫做加法同态
b) 如果满足 f(A)×f(B)=f(A×B)f(A)×f(B)=f(A×B) ,我们将这种加密函数叫做乘法同态。
如果一个加密函数f只满足加法同态,就只能进行加减法运算;
如果一个加密函数f只满足乘法同态,就只能进行乘除法运算;
如果一个加密函数同时满足加法同态和乘法同态,称为全同态加密。那么这个使用这个加密函数完成各种加密后的运算(加减乘除、多项式求值、指数、对数、三角函数)。
第一个满足加法和乘法同态的同态加密方法直到2009年才由Craig Gentry提出。
同态加密算法
- RSA 算法对于乘法操作是同态的。
- Paillier 算法则是对加法同态的。
- Gentry算法则是全同态的。
参考资料:https://blog.csdn.net/jason_cuijiahui/article/details/79121702