同态加密及HElib

一、实验原理

1.同态加密概念

同态加密是密码学领域自1978年以来的经典难题,也是实现数据隐私计算的关键技术,在云计算、区块链、隐私计算等领域均存在着广泛的应用需求和一些可行的应用方案。

同态加密(Homomorphic Encryption)是很早之前密码学界就提出来的一个Open Problem。早在1978年,Ron Rivest, Leonard Adleman, 以及Michael L. Dertouzos就以银行为应用背景提出了这个概念。

提出第一个构造出全同态加密(Fully Homomorphic Encryption)的Craig Gentry给出的直观定义最好:

A way to delegate processing of your data, without giving away access to it.

这是什么意思呢?一般的加密方案关注的都是数据存储安全。即,我要给其他人发个加密的东西,或者要在计算机或者其他服务器上存一个东西,我要对数据进行加密后在发送或者存储。没有密钥的用户,不可能从加密结果中得到有关原始数据的任何信息。只有拥有密钥的用户才能够正确解密,得到原始的内容。我们注意到,这个过程中用户是不能对加密结果做任何操作的,只能进行存储、传输。对加密结果做任何操作,都将会导致错误的解密,甚至解密失败。

同态加密方案最有趣的地方在于,其关注的是数据处理安全。同态加密提供了一种对加密数据进行处理的功能。也就是说,其他人可以对加密数据进行处理,但是处理过程不会泄露任何原始内容。同时,拥有密钥的用户对处理过的数据进行解密后,得到的正好是处理后的结果。

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

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

2.同态加密构成

同态加密(Homomorphic EncryptionHE)是将数据加密后,对加密数据进行运算处理,之后对数据进行解密,解密结果等同于数据未进行加密,并进行同样的运算处理。

·  KeyGen函数:密钥生成函数。这个函数应该由Alice运行,用于产生加密数据Data所用的密钥Key。当然了,应该还有一些公开常数PP(Public Parameter);

·  Encrypt函数:加密函数。这个函数也应该由Alice运行,用Key对用户数据Data进行加密,得到密文CT(Ciphertext);

·  Evaluate函数:评估函数。这个函数由Cloud运行,在用户给定的数据处理方法f下,对密文进行操作,使得结果相当于用户用密钥Key对f(Data)进行加密。

·  Decrypt函数:解密函数。这个函数由Alice运行,用于得到Cloud处理的结果f(Data)。

3.同态加密的主要类型

具有同态性质的加密函数是指两个明文a、b满足Dec(En(a)⊙En(b))=a⊕b的加密函数,其中En是加密运算,Dec是解密运算,⊙、⊕分别对应明文和密文域上的运算。

目前根据对其密文执行的数学运算的类型和频率的不同,将同态加密归纳为三种主要类型。

  • 部分同态加密(
  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
有限级数全同态加密是一种密码学技术,它允许在加密状态下对数据进行计算,而无需解密。这种加密方案可以实现在加密域中进行加法和乘法等运算,并且结果仍然保持在加密状态下。有限级数全同态加密安全云计算、隐私保护等领域具有广泛的应用。 在Python中,可以使用第三方库如`pyfhel`来实现有限级数全同态加密。`pyfhel`是一个基于HElib库的Python封装,HElib是一个C++库,提供了有限数全同态加密的实现。 以下是一个使用`pyfhel`进行有限级数全同态加密的简单示例: ```python import pyfhel # 初始化HE环境 he_context = pyfhel.HelibContext() he_context.generateKeyGen() # 加密明文数据 plaintext1 = 10 ciphertext1 = he_context.encryptInt(plaintext1) plaintext2 = 5 ciphertext2 = he_context.encryptInt(plaintext2) # 执行加法运算 ciphertext_sum = ciphertext1 + ciphertext2 # 执行乘法运算 ciphertext_product = ciphertext1 * ciphertext2 # 解密结果 result_sum = he_context.decryptInt(ciphertext_sum) result_product = he_context.decryptInt(ciphertext_product) print("加法结果:", result_sum) print("乘法结果:", result_product) ``` 上述代码首先初始化了一个HE环境,并生成了加密所需的密钥。然后,使用`encryptInt`方法将明文数据加密为密文。接下来,可以对密文进行加法和乘法运算,得到的结果仍然是密文。最后,使用`decryptInt`方法将密文解密为明文结果。 需要注意的是,有限级数全同态加密是一种计算密集型的操作,对于大规模的数据和复杂的计算可能会导致性能问题。因此,在实际应用中需要根据具体情况进行权衡和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值