同态加密
什么是同态加密
同态加密概念
同态加密的研究可以追溯到 20 世纪 70 年代,在RSA密码体制刚提出不久,Rivest 等人提出了全同态加密的概念,也称为隐私同态。这成为密码学界的开放难题,同态加密是一种加密形式,允许用户直接对密文进行特定的代数运算,得到数据仍是加密的结果,与对明文进行同样的操作再将结果加密一样。
同态加密优势在于用户在数据加密的情形下仍能对特定的加密数据进行分析和检索,提高了数据处理的效率,保证了数据安全传送,而且正确的加密数据仍能得到正确的解密结果。
同态加密类型
同态加密方案根据其支持的运算类型和运算次数大致可以分为以下三种类别:
1. 部分同态加密
部分同态加密算法允许某一操作被执行无限次。
- 加法同态:如果一种同态加密方案只支持在密文上执行加法运算,并且能够支持无限次的密文运算,则这种方案被称为加法同态加密方案。目前使用比较广泛的是paillier加法同态。
- 乘法同态:如果一种同态加密方案只支持在密文上执行乘法运算,并且能够支持无限次的密文运算,则这种方案被称为乘法同态加密方案。比如经典的RSA加密方案。
2. 有些同态加密
如果一种同态加密算法同时支持在密文上进行加法和乘法操作,但是只能进行有限次的密文运算,那么这种算法称为有些同态加密算法。
3. 全同态加密
如果一种同态加密算法同时支持在密文上进行加法和乘法操作,并且能够支持无限次的密文运算,那么这种算法称为全同态加密(FHE)算法。
同态加密步骤
- 密钥生成算法:Keygen就是秘钥生成算法,它生成加密秘钥EncKey和解密密钥Deckey.
- 加密算法:用秘钥算法生成的的秘钥Enckey对数据Plaintext做加密Encryption,生成加密的Cliphertext.
- 计算算法:对加密数据Cliphertext做处理计算(对密文进行相关操作).
- 解密算法:使用DecKey,可以将加密数据Cliphertext还原成Plaintext.
同态加密算法
乘法同态
乘法同态性表现为
E
(
a
1
)
∗
E
(
a
2
)
=
E
(
a
1
a
2
)
E(a_1)*E(a_2)=E(a_1a_2)
E(a1)∗E(a2)=E(a1a2).
RSA
RSA具体参见:7 RSA密码体制
Elgamal
Elgamal具体参见:Diffie-Hellman密钥交换 && 8.5 Elgamal加密方案
加法同态:Paillier算法
加法同态性表现为
E
(
a
1
)
∗
E
(
a
2
)
=
E
(
a
1
+
a
2
)
E(a_1)*E(a_2)=E(a_1 + a_2)
E(a1)∗E(a2)=E(a1+a2).
Paillier具体参见:Paillier算法简介
全同态:Gentry算法
略~~~
同态加密的应用
场景定义
举个例子:国内某家大型的三甲医院,由于历史悠久,并且医术精湛,历史遗留了大量的用户病例数据。如今思考基于这些病例数据进行建模分析。但是由于数据量特别巨大,医院本身的IT资源有限,计算能力不足。
这个时候,云厂商找了过来。但是对于医院来说,这些数据本身是用户的隐私信息,并且也是医院的核心价值,所以尽管云厂商再三保证数据安全,但是医院还是不能够放心的将数据上传到云厂商进行计算。
正当这个事情推进不下去的时候,云厂商从密码行业花大价钱招来某个大牛,大牛提出一个方案,这样吧,我们现在有这样一门技术,不需要传输明文数据,只需要传输密文就好,而且加密秘钥由医院自己保存,我们基于上传的密文数据做不解密的密态运算( 并计算函数医院提供就好),这样数据不会泄露,云厂商对数据无感知,之后传回密文结果,医院自己解密就好。医院一听非常高兴,那就这么办吧。
下面将核心流程描述如下:
- 医院秘钥生成 – KeyGen:医院在本地服务器生成用来加密数据的秘钥 K e y Key Key。
- 医院数据加密 - Encrypt Function:医院用本地生成的秘钥 K e y Key Key 和 E n c r y p t Encrypt Encrypt 算法加密本地的数据,记为 E n D a t a = E n c r y p t ( K e y , D a t a ) EnData = Encrypt(Key, Data) EnData=Encrypt(Key,Data)。
- 医院指定计算函数 - Compute Funtion:医院告诉云平台需要如何计算数据,记为函数 F ( ) F() F()。
- 云厂商进行计算 - Evaluate: E v a l u a t e ( F ( ) , E n D a t a ) = E n c r y p t ( K e y , F ( D a t a ) ) Evaluate(F(), EnData) = Encrypt(Key, F(Data)) Evaluate(F(),EnData)=Encrypt(Key,F(Data)),记为 E n D a t a ′ EnData' EnData′,并传回医院。
- 医院Decrypt Function:得到 F ( D a t a ) = D e c r y p t ( K e y , E n D a t a ′ ) F(Data) = Decrypt(Key, EnData') F(Data)=Decrypt(Key,EnData′),也就是最终结果。
网页参考链接
- 同态加密
- 同态加密详解
- 同态加密简介-简书
- 隐私计算-密码学-同态加密
- 一些同态加密算法
- 同态加密简要概述
- 联邦学习:保护用户数据隐私
- 经典同态加密算法
版权归原作者 碳烤小肥羊。。。 所有, 如有侵权,请联系我们删除。