隐私计算-联邦学习

一、纵向联邦学习

联合多个参与者的共同样本的不同数据特征进行联邦学习,即各个参与者的训练数据是纵向划分的,称为纵向联邦学习,纵向联邦学习也称为样本对齐的联邦学习(Sample-Aligned Federated Learning),即纵向联邦学习的参与者的训练样本是对齐的

在这里插入图片描述

在这里插入图片描述

纵向联邦逻辑回归举例:

在这里插入图片描述

https://fate.readthedocs.io/en/latest/federatedml_component/logistic_regression/

纵向联邦xgboost流程图:

在这里插入图片描述

https://fate.readthedocs.io/en/latest/federatedml_component/ensemble/

二、横向联邦学习

联合多个参与者的具有相同特征的多行样本进行联邦学习,即各个参与者的训练数据是横向划分的,称为横向联邦学习。图2给出了一个横向划分表格的示例。横向联邦使训练样本的总数量增加。

在这里插入图片描述

在这里插入图片描述

横向联邦训练流程:

步骤1:各参与方在本地计算模型梯度,并使用同态加密、差分隐私或秘密共享等加密技术,对梯度信息进行掩饰,并将掩饰后的结果(简称为加密梯度) 发送给聚合服务器。
步骤2:服务器进行安全聚合(secure aggregation)操作,如使用基于同态加密的加权平均。
步骤3:服务器将聚合后的结果发送给各参与方。
步骤4:各参与方对收到的梯度进行解密,并使用解密后的梯度结果更新各自的模型参数。

在这里插入图片描述

三、隐私保护协议

3.1 全同态加密

全同态加密(Fully Homomorphic Encryption,FHE)是一种加密技术,允许在加密的状态下对密文进行运算,最终得到的结果在解密之后与原始明文的运算结果是完全相同的。这种加密技术可以实现云计算中的数据隐私保护,同时保持数据可用性。

传统的加密技术只能在明文状态下进行运算,而全同态加密技术允许在密文状态下进行运算,因此可以避免在计算过程中泄露敏感信息。它可以实现一系列复杂的计算操作,如加法、减法、乘法、逻辑运算等。

全同态加密是一项非常重要的技术,但是在实际应用中,由于其计算复杂度很高,导致效率问题仍然存在。因此,目前的研究方向是如何提高全同态加密的效率,以便更广泛地应用于实际场景中。

ckks 全同态代码示例

import tenseal as ts

# 初始化加密参数
context = ts.context(ts.SCHEME_TYPE.CKKS, poly_modulus_degree=8192, coeff_mod_bit_sizes=[60, 40, 40, 60])
context.global_scale = 2 ** 40

# 创建秘钥
sk = ts.context.NTTVector(secret=True, context=context)
sk.uniform(1.0 / context.max_scale)

# 创建加密器和解密器
public_key = sk.copy()
public_key.make_unit_vector()
encryptor = ts.encryptor(context, public_key)
decryptor = ts.decryptor(context, sk)

# 加密明文
a = [3.14159265359]
b = [2.71828182846]
enc_a = encryptor.encrypt(ts.plain_tensor(a))
enc_b = encryptor.encrypt(ts.plain_tensor(b))

# 密文加法
enc_c = enc_a + enc_b

# 解密结果
dec_c = decryptor.decrypt(enc_c)
result = dec_c[0][0]

print(result)

3.2 半同态加密

半同态加密是一种加密技术,它可以对一些运算进行加密,使得加密后的结果仍然可以在密文状态下进行某些操作,而不需要解密密文。半同态加密可以支持一些简单的加法和乘法运算,但是不支持复杂的运算如多项式求解和逻辑运算等。

https://en.wikipedia.org/wiki/Paillier_cryptosystem

Paillier半同态加密的示例代码:

import random
from phe import paillier

# 生成密钥对
public_key, private_key = paillier.generate_paillier_keypair()

# 明文加密
a = 42
b = 37
enc_a = public_key.encrypt(a)
enc_b = public_key.encrypt(b)

# 密文加法
enc_c = enc_a + enc_b

# 解密结果
dec_c = private_key.decrypt(enc_c)
print(dec_c)

3.3 差分隐私

差分隐私 (differential privacy) 是一种保护个人隐私的方法,它可以通过对原始数据添加一些随机噪声,来使得不同数据集之间的差异不至于泄露个人隐私。简单来说,差分隐私是一种加噪声的隐私保护技术,可以在保护个人隐私的同时,尽可能地保留数据的有用信息。

具体来说,差分隐私会在对数据进行处理前,将其添加一些随机噪声,以使得处理后的结果不会直接泄露原始数据。这些噪声通常是随机生成的,或者可以基于某些统计模型生成。添加的噪声的强度可以通过隐私参数 epsilon来控制,这个参数越小,噪声就越强,隐私保护就越好,但是对数据的有用信息的保留就越少。相反,隐私参数越大,噪声就越弱,隐私保护就越差,但是对数据的有用信息的保留就越多。

差分隐私可以应用在许多场景中,例如数据挖掘、机器学习、社交网络等。其中,最典型的应用是在隐私保护数据发布上。通过差分隐私技术,我们可以在不泄露原始数据的前提下,发布处理后的数据,以供其他人使用。

差分隐私的 Python 代码示例,使用了 PyDP 库:

from pydp.algorithms.laplacian import BoundedMean
from pydp.algorithms.laplacian import BoundedSum
from pydp.distributions import Laplace

# 加噪声示例
def add_noise(data, epsilon):
  # 设置数据范围和隐私参数
  lower, upper = 0, 100
  sensitivity = upper - lower
  # 生成拉普拉斯分布
  laplace = Laplace(0, sensitivity / epsilon)
  # 生成加噪声器
  noise = laplace.sample()
  # 对数据加噪声
  noisy_data = data + noise
  # 对加噪声后的数据进行截断
  return max(lower, min(noisy_data, upper))

# 计算平均数示例
def compute_mean(data, epsilon):
  # 设置数据范围和隐私参数
  lower, upper = 0, 100
  sensitivity = upper - lower
  # 初始化差分隐私算法
  bounded_mean = BoundedMean(lower, upper, epsilon=epsilon)
  # 对数据进行处理并加噪声
  result = bounded_mean.quick_result(data)
  # 对加噪声后的结果进行截断
  return max(lower, min(result, upper))

# 计算和示例
def compute_sum(data, epsilon):
  # 设置数据

3.4 不经意传输OT

不经意传输(oblivious transfer)是一个密码学协议,在这个协议中,消息发送者从一些待发送的消息中发送一条给接收者,但事后对发送了哪一条消息仍然oblivious(不知道),这个协议也叫茫然传输协议。

在这里插入图片描述

协议执行过程分为4个步骤:

1.Alice有n条消息,则产生n个RSA公私钥对,并将n个私钥保留,n个公钥发送给Bob。

2.Bob随机产生一个大整数key,假定Bob想要获得第t条消息,则Bob用收到的第t个RSA公钥加密大整数key,加密计算结果为s,Bob将s发送给Alice。

3.Alice用保留的n个RSA私钥,依次解密s,获得n个解密结果,依次为{key1,key2,…,keyt,…,keyn};利用对称加密算法,利用key1keyn,加密对应的消息m1mn,得到密文消息M1Mn,将M1Mn发送给Bob。

4.Bob利用自己掌握的大整数key作为密钥,对第t条密文Mt进行对称解密,则得到想要的第t条原始明文消息mt。

3.5 DH密钥交换

设x为私钥,其值为整数,随机且均匀的从区域[1,q-1]中选取,y为公钥。参考前述定义,离散对数问题(DLP)可描述为给定公共参数域(p,q,g)和y,确定x的问题。具有以下关系

在这里插入图片描述

在这里插入图片描述

3.6 RSA, 椭圆曲线 盲签名

RSA盲签名:

RSA盲签名是指使用RSA签名算法进行签名,但在签名过程中使用了盲化技术,以保护签名者的隐私和匿名性。

盲化技术是指在签名过程中,对签名者的输入数据进行处理,使得签名者的输入数据不被直接暴露在签名中,从而保护签名者的隐私和匿名性。

具体而言,RSA盲签名的过程可以分为以下步骤:

签名者选择一对RSA密钥,并将公钥公开。

签名者将要签名的消息进行盲化,即对消息进行一定的处理,使得签名者的输入数据不被直接暴露在签名中。

签名者使用盲化后的消息进行签名,得到签名值。

签名者将签名值进行反盲化,得到最终的签名结果。

验证者使用签名者公开的RSA公钥进行验签。

RSA盲签名的优点在于,它可以保护签名者的隐私和匿名性,因为签名中不包含签名者的输入数据。同时,它也具有RSA签名算法的优点,即安全性高、速度快等优点。

RSA盲签名可以应用于匿名投票、数字版权保护等领域。

椭圆曲线:

在这里插入图片描述

椭圆曲线是一种在数学和密码学中广泛使用的数学结构。在密码学中,椭圆曲线常用于实现公钥密码体制中的数字签名、密钥协商、身份认证等功能。

椭圆曲线是一个满足特定数学方程的点的集合。具体而言,椭圆曲线是一个二元三次方程的集合,其数学形式为:

y^2 = x^3 + ax + b

其中,a和b是曲线方程中的参数,通常取值于一个有限域。对于任意两个在椭圆曲线上的点,它们可以通过曲线上的运算(加法、减法、倍乘等)得到另一个点。这些点的集合构成了一个群,称为椭圆曲线上的点群。

在密码学中,椭圆曲线的安全性基于离散对数难题,即给定曲线上的两个点P和Q,求解满足P=kQ的正整数k的难度。如果椭圆曲线的参数选择得当,该问题是非常困难的,因此可以用于实现各种加密和签名算法。

椭圆曲线相比于传统的RSA算法等其他公钥密码算法,具有更高的安全性和更小的密钥长度,因此在一些资源受限的场景下得到了广泛应用。

四、现有框架,方式及其实现步骤细节

FATE

https://fate.readthedocs.io/en/latest/architecture/

在这里插入图片描述

在这里插入图片描述

Pysyft

https://blog.csdn.net/qq_45503700/article/details/127593073?spm=1001.2014.3001.5502

在这里插入图片描述

Secretflow

https://www.yuque.com/secret-flow/admin/mqx1p9

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Rosetta

https://github.com/LatticeX-Foundation/Rosetta

在这里插入图片描述

五、前景

横向联邦主要用样本扩展,多应用于医疗行业,主要难度在于特征对齐

纵向联邦使用分布式的部署方式,本地隐私数据不出库,使用同态加密隐私保护技术,加密中间计算,各方保护自己的模型,主要应用于金融,大数据行业。用于模型扩展和提升

安全查询,安全求交是很大的一个方向

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 区块链技术可以用来保护隐私计算医疗系统中数据的安全性和可靠性。联邦学习是一种分布式机器学习技术,可以在不共享原始数据的情况下,让多个机构共同参与模型的训练和改进。将联邦学习与区块链技术结合可以提高系统的隐私保护能力和安全性。 ### 回答2: 区块链上的隐私计算联邦学习医疗系统是一种创新的医疗数据共享和隐私保护方案。这种系统借助区块链技术和联邦学习算法,实现了医疗数据的安全、高效共享,同时保护了患者的隐私。 首先,该系统运用区块链技术来保证数据的安全和透明性。医疗数据被分散存储在多个节点上,每个节点都有相同的拷贝,确保了数据的可靠性和防篡改性。每次数据的修改都需要经过共识算法的验证,确保数据的完整和一致性。区块链还提供了分布式的数据访问机制,使得医疗数据可以被授权的参与方共享,同时防止了未经授权的访问。 其次,该系统采用联邦学习算法来进行模型训练和预测。不同医疗机构之间可以通过加密技术将本地的医疗数据上传到联邦学习服务器。在联邦学习服务器上,数据不会离开原始医疗机构,而是在本地进行模型训练。只有模型参数的更新结果会被上传和合并,从而保护了患者的隐私。 最后,该系统还可以为患者提供医疗数据的控制权。患者可以通过数字身份验证并授权特定的医疗机构访问其数据。同时,患者还可以选择分享哪些数据以及分享的目的。这样一来,患者在数据共享中具有主动权,保护了隐私和数据安全。 综上所述,区块链上的隐私计算联邦学习医疗系统实现了医疗数据的安全共享和隐私保护。它通过区块链技术和联邦学习算法,保障了数据的安全性、合规性和高效性,为医疗行业提供了一种创新的数据管理和共享方式。 ### 回答3: 区块链上的隐私计算可以提供联邦学习医疗系统的一种安全、高效的解决方案。这个系统涉及多个医疗机构共同合作,在保护患者隐私的同时,共享数据并进行模型训练。以下是我对如何实现这样一个系统的设想。 首先,该系统将采用区块链技术来确保数据的安全性和匿名性。每个医疗机构都将拥有自己的区块链节点,用于存储和验证数据。数据将以加密的方式存储,并通过智能合约来确保数据的可靠性和完整性。 其次,为了保护患者隐私,我们可以采用多方计算和同态加密等技术。多方计算允许在保持数据隐私的同时,对数据进行计算。而同态加密可以在加密状态下对数据进行处理,确保敏感信息不会泄露。 另外,为了提高模型的准确性和性能,我们可以利用联邦学习的方法。每个医疗机构在本地训练自己的模型,然后将模型参数上传到区块链上进行融合。通过融合不同机构的模型,可以得到更精确的模型,并且不需要共享原始数据。 在实际操作中,我们需要建立一个联邦学习的框架,通过智能合约来管理医疗机构节点之间的通信和数据交换。合约可以规定数据共享和模型的更新策略,同时监控数据的使用情况和训练过程的安全性。 总体而言,区块链上的隐私计算联邦学习医疗系统可以实现医疗数据的有效共享和保护患者隐私。通过合理利用区块链、多方计算和同态加密等技术,我们可以建立一个安全、高效的医疗系统,为患者提供更好的医疗服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值