当前位置:网站首页>同态加密简介HE
同态加密简介HE
2022-08-11 09:38:00 【糖葫芦零零七】
什么是同态加密
同态加密概念
同态加密的研究可以追溯到 20 世纪 70 年代,在RSA密码体制刚提出不久,Rivest 等人提出了全同态加密的概念,也称为隐私同态。这成为密码学界的开放难题,同态加密是一种加密形式,允许用户直接对密文进行特定的代数运算,得到数据仍是加密的结果,与对明文进行同样的操作再将结果加密一样。
同态加密优势在于用户在数据加密的情形下仍能对特定的加密数据进行分析和检索,提高了数据处理的效率,保证了数据安全传送,而且正确的加密数据仍能得到正确的解密结果。
同态加密类型
同态加密方案根据其支持的运算类型和运算次数大致可以分为以下三种类别:
1. 部分同态加密
部分同态加密算法允许某一操作被执行无限次。
- 加法同态:如果一种同态加密方案只支持在密文上执行加法运算,并且能够支持无限次的密文运算,则这种方案被称为加法同态加密方案。目前使用比较广泛的是paillier加法同态。
- 乘法同态:如果一种同态加密方案只支持在密文上执行乘法运算,并且能够支持无限次的密文运算,则这种方案被称为乘法同态加密方案。比如经典的RSA加密方案。
2. 有些同态加密
如果一种同态加密算法同时支持在密文上进行加法和乘法操作,但是只能进行有限次的密文运算,那么这种算法称为有些同态加密算法。
3. 全同态加密
如果一种同态加密算法同时支持在密文上进行加法和乘法操作,并且能够支持无限次的密文运算,那么这种算法称为全同态加密(FHE)算法。
同态加密步骤

- 密钥生成算法:Keygen就是秘钥生成算法,它生成了秘钥EncKey和解密算法Deckey.
- 加密算法:用秘钥算法生成的的秘钥Enckey对数据Plaintext做加密Encryption,生成加密的Cliphertext.
- 计算算法:对加密数据Cliphertext做处理结算(对密文进行相关操作).
- 解密算法:使用DecKey,可以将加密数据Cliphertext还原成Plaintext.
同态加密算法

乘法同态
乘法同态性表现为 E ( m 1 ) E ( m 2 ) = E ( m 1 m 2 ) E(m_1)E(m_2)=E(m_1m_2) E(m1)E(m2)=E(m1m2).
RSA
RSA具体参见:7 RSA密码体制
Elgamal
Elgamal具体参见:Diffie-Hellman密钥交换 && 8.5 Elgamal加密方案
加法同态:Paillier算法
加法同态性表现为 E ( m 1 ) + E ( m 2 ) = E ( m 1 + m 2 m o d ( n ) ) E(m_1) + E(m_2)=E(m_1 + m_2 mod (n)) E(m1)+E(m2)=E(m1+m2mod(n)).
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′),也就是最终结果。
网页参考链接
边栏推荐
猜你喜欢

HDRP shader gets pixel depth value and normal information

Primavera Unifier advanced formula usage sharing

Adobe LiveCycle Designer 报表设计器

Redis的客户端连接的可视化管理工具

Network model (U - net, U - net++, U - net++ +)

神经痛分类图片大全,神经病理性疼痛分类

企业展厅制作要具备的六大功能

IPQ4019/IPQ4029 support WiFi6 MiniPCIe Module 2T2R 2×2.4GHz 2x5GHz MT7915 MT7975

Typora和基本的Markdown语法

Adobe LiveCycle Designer report designer
随机推荐
collect awr
疫情当前,如何提高远程办公的效率,远程办公工具分享
Network model (U - net, U - net++, U - net++ +)
Birth of the Go language
mindspore中MindDataset读取mindrecord文件问题
Typescript基本类型---上篇
新一代开源免费的轻量级 SSH 终端,非常炫酷好用!
神经网络图怎么分析,画神经网络结构图
持续集成/持续部署(2)Jenkins & SonarQube
HStreamDB v0.9 发布:分区模型扩展,支持与外部系统集成
Segmentation Learning (loss and Evaluation)
HDRP shader 获取阴影(Custom Pass)
YTU 2297: KMP pattern matching three (string)
关于ts的一些泛型关键字用法
QTableWidget 使用方法
中国电子学会五级考点详解(一)-string类型字符串
Primavera Unifier - AEM Form Designer Essentials
大佬们,我有一个MySQL source 通过旁路分流分了两个流,然后转表,现在想sink到两个hb
STM32入门开发 LWIP网络协议栈移植(网卡采用DM9000)
大家有遇到这种错吗?flink-sql 写入 clickhouse