🚀 优质资源分享 🚀
学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
🧡 Python实战微信订餐小程序 🧡 | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
💛Python量化交易实战💛 | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
本文记录阅读该paper的笔记,这篇论文是TenSeal库的原理介绍。
摘要
机器学习算法已经取得了显著的效果,并被广泛应用于各个领域。这些算法通常依赖于敏感和私有数据,如医疗和财务记录。因此,进一步关注隐私威胁和应用于机器学习模型的相应防御技术至关重要。在本文中,我们介绍了TenSEAL,这是一个使用同态加密保护隐私数据的机器学习开源库,可以轻松地集成到流行的机器学习框架(PyTorch 或 Tensorflow)中。我们使用MNIST数据集对我们的实现进行了benchmark测试,结果显示加密的卷积神经网络可以在不到一秒钟的时间内进行计算,通信量不到1/2MB。
介绍
近年来,机器学习狂奔发展。在典型场景中,用户需要将数据发送给服务提供商,服务提供商将对数据执行一些计算并返回结果。
这种方法有两个关键问题。首先,出于隐私考虑,用户可能不想将其数据发送给服务提供商。其次,如果用户不向服务提供商发送数据,那服务提供商就无法向用户提供模型。使用同态加密,可以解决该问题,用户的数据将始终加密,服务提供商将看不到输入和输出,并且仍然可以对这些加密数据进行计算。
然而,在机器学习中采用同态加密的速度很慢。问题一:虽然目前可用的密码库为密码学家提供了一个优秀的API,但它们可能会对数据科学家使用就不方便了(触及密码专业知识)。问题二:是计算成本,包括通信和计算成本。
本文工作
提供了一个灵活的开源库,使用同态加密进行张量计算(tensor computation)。该库可以直接将当前流行机器学习框架(如PyTorch或Tensorflow)中的张量转换为加密所支持的明文形式。
对于本文的其余部分,第2节中描述该库的体系结构。然后在第3节,详细介绍了在加密空间中计算卷积神经网络所需的算法。在第5节中对我们的库进行了实验性测试,并在第6节总结了我们工作的一些局限性。
文章结构
TenSEAL是一个连接经典机器学习框架和同态加密功能的库。它实现了在加密数据上进行张量计算。TenSEAL依赖于Microsoft SEAL库。客户端可以计算明文或加密的张量(支持C++或Python)。在客户机-服务器场景中,消息交换是使用协议缓冲区完成的。核心API主要组件构建:环境(context)、明文张量(PlainTensor)和密文张量(Encrypted Tensor)计算。
环境(context)
TenSEAL的context是库的核心组件,它生成并存储密钥(用于解密的私钥、用于加密的公钥、用于旋转的伽罗瓦密钥以及用于密文重新线性化的重新线性化密钥)。这个对象还将处理线程池,线程池控制在执行可并行化操作时应并行运行的作业数。另外在context中可以设置自动密文重新线性化(relinearization)和重新缩放(rescaling )。