OpenMined/TenSEAL
A library for doing homomorphic encryption operations on tensors
解决的问题
TenSEAL 允许您在不解密数据的情况下对加密数据执行计算。当您需要对敏感信息(医疗记录、金融数据、个人统计数据)进行机器学习或其他数据处理时,通常必须暴露原始数据。TenSEAL 使用同态加密,使得加法、乘法、点积、矩阵乘法等算术运算可以直接在加密的张量上执行,只有最终结果才被解密。这确保了数据在处理过程中依然保持私密性。
工作原理
TenSEAL 基于 Microsoft SEAL 构建,这是一个 C++ 同态加密库。它提供了一个易于使用的 Python API,但核心计算由 C++ 完成以保证速度。它支持两种加密方案:
- BFV:用于整数(精确算术)
- CKKS:用于实数(近似算术,非常适合机器学习)
您可以通过多项式模数度数和系数模数大小等参数创建加密上下文,这些参数控制安全性和可链式操作的数量。然后,您可以加密向量或张量(如 NumPy 数组),并在加密对象上执行元素级操作、点积或矩阵乘法。上下文还可以序列化以保存密钥和加密数据。在内部,TenSEAL 包装了 SEAL 的低级 API,并添加了支持 N 维形状、广播和转置的张量层。
适用人群
TenSEAL 面向从事隐私保护机器学习的开发人员和研究人员。如果您需要在保持数据加密的同时训练或评估模型,TenSEAL 为您提供了一个便捷的 Python 接口来使用同态加密。它也适合任何希望无需编写低级 C++ 代码即可实验安全计算的人。
主要亮点
- 支持 BFV(精确整数)和 CKKS(近似实数)两种加密方案
- 提供加密张量上的元素级加法、减法、乘法、点积和矩阵乘法
- 支持 N 维张量,具备 reshape、广播和转置操作
- 支持上下文、密钥和加密张量的序列化,便于存储和传输
- 通过
tenseal.sealapi向高级用户提供完整的 Microsoft SEAL API - 每次合并到
main后,自动发布基准测试结果 - 内置教程:加密数据上的逻辑回归和 MNIST 的加密卷积
相关
- 项目
- 项目
- 项目
- 项目