一文了解同台加密(Homomorphic Encryption, HE)

Posted 思源湖的鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文了解同台加密(Homomorphic Encryption, HE)相关的知识,希望对你有一定的参考价值。

前言

同学做了个隐私计算的分享,对其中恶意模型的同态加密有点感兴趣,做个简单的了解

一、概念

1、基本概念

同态加密(Homomorphic Encryption, HE)是指满足密文同态运算性质的加密算法,即数据经过同态加密之后,对密文进行特定的计算,得到的密文计算结果在进行对应的同态解密后的明文等同于对明文数据直接进行相同的计算,实现数据的“可算不可见”

  • 如果满足 f(A)+f(B)=f(A+B)f(A)+f(B)=f(A+B) , 我们将这种加密函数叫做加法同态
  • 如果满足 f(A)×f(B)=f(A×B)f(A)×f(B)=f(A×B) ,我们将这种加密函数叫做乘法同态。

在这里插入图片描述
如果一种同态加密算法支持对密文进行任意形式的计算(即满足加法和乘法),则称其为全同态加密(Fully Homomorphic Encryption, FHE);如果支持对密文进行部分形式的计算,例如仅支持加法、仅支持乘法或支持有限次加法和乘法,则称其为半同态加密或部分同态加密,英文简称为SWHE(Somewhat Homomorphic Encryption)或PHE(Partially Homomorphic Encryption)

目前,同态加密算法已在区块链、联邦学习等存在数据隐私计算需求的场景实现了落地应用。由于全同态加密仍处于方案探索阶段,现有算法存在运行效率低、密钥过大和密文爆炸等性能问题,在性能方面距离可行工程应用还存在一定的距离。因此,实际应用中的同态加密算法多选取半同态加密(如加法同态),用于在特定应用场景中实现有限的同态计算功能。

2、研究进展

同态加密(Homomorphic Encryption)是很久以前密码学界就提出来的一个Open Problem。早在1978年,Ron Rivest, Leonard Adleman, 以及Michael L. Dertouzos就以银行为应用背景提出了这个概念[RAD78],Ron Rivest和Leonard Adleman分别就是著名的RSA算法中的R和A

在这里插入图片描述

二、原理

在这里插入图片描述
Alice通过Cloud,以Homomorphic Encryption(以下简称HE)处理数据的整个处理过程大致是这样的:

  • Alice对数据进行加密,把加密后的数据发送给Cloud
  • Alice向Cloud提交数据的处理方法,这里用函数f来表示
  • Cloud在函数f下对数据进行处理,并且将处理后的结果发送给Alice
  • Alice对数据进行解密,得到结果

据此,我们可以很直观的得到一个HE方案应该拥有的函数:

  • KeyGen函数:密钥生成函数。这个函数应该由Alice运行,用于产生加密数据Data所用的密钥Key。当然了,应该还有一些公开常数PP(Public Parameter)
  • Encrypt函数:加密函数。这个函数也应该由Alice运行,用Key对用户数据Data进行加密,得到密文CT(Ciphertext)
  • Evaluate函数:评估函数。这个函数由Cloud运行,在用户给定的数据处理方法f下,对密文进行操作,使得结果相当于用户用密钥Key对f(Data)进行加密
  • Decrypt函数:解密函数。这个函数由Alice运行,用于得到Cloud处理的结果f(Data)

在这里插入图片描述
噪声处理办法Bootstrapping:

  • 同态加密算法A对明文C1进行加密,获得密文S1,加密运算产生噪声
  • 使用同态加密算法B,对密文S1加密得到S2,S2上执行加密系统A的解密算法,
    消除噪声,获得加密后的明文C2。
  • 使用同态加密算法B对C2再执行加密系统A的加密算法,再用B的解密算法解密

结语

简单了解了下同态加密,并未深入研究

参考:

以上是关于一文了解同台加密(Homomorphic Encryption, HE)的主要内容,如果未能解决你的问题,请参考以下文章

sh [OpenSSL pfx转换]将.pfx证书转换为SSL证书和未加密的私钥#openssl #pfx #certificate #ssl #private #key #encr

一文让你轻松了解JAVA开发中的四种加密方法

一文让你轻松了解JAVA开发中的四种加密方法

一文看懂公钥,私钥,非对称加密

网络一文说清HTTPS

一文了解 http和https的区别