张量同态加密操作的库
项目描述
TenSEAL
一个在张量上执行同态加密操作的库
TenSEAL 是一个在张量上执行同态加密操作的库,基于 Microsoft SEAL 构建。它通过 Python API 提供易用性,同时通过使用 C++ 实现大多数操作来保持效率。
特性
- :key: 使用 BFV 对整数向量进行加密/解密
- :old_key: 使用 CKKS 对实数向量进行加密/解密
- :fire: 加密向量与加密向量以及加密向量与明文向量的逐元素加、减、乘
- :cyclone: 点积和向量-矩阵乘法
- :zap: 在
tenseal.sealapi
下的完整 SEAL API
使用方法
我们展示了加密数据上的基本操作,更高级的使用方法可以在我们的 教程部分 找到
import tenseal as ts
# Setup TenSEAL context
context = ts.context(
ts.SCHEME_TYPE.CKKS,
poly_modulus_degree=8192,
coeff_mod_bit_sizes=[60, 40, 40, 60]
)
context.generate_galois_keys()
context.global_scale = 2**40
v1 = [0, 1, 2, 3, 4]
v2 = [4, 3, 2, 1, 0]
# encrypted vectors
enc_v1 = ts.ckks_vector(context, v1)
enc_v2 = ts.ckks_vector(context, v2)
result = enc_v1 + enc_v2
result.decrypt() # ~ [4, 4, 4, 4, 4]
result = enc_v1.dot(enc_v2)
result.decrypt() # ~ [10]
matrix = [
[73, 0.5, 8],
[81, -5, 66],
[-100, -78, -2],
[0, 9, 17],
[69, 11 , 10],
]
result = enc_v1.matmul(matrix)
result.decrypt() # ~ [157, -90, 153]
安装
使用 pip
$ pip install tenseal
这将在 pypi 上安装最后一个打包版本。如果您的平台没有准备好打包版本,请打开一个 问题 通知我们。
从源代码构建
支持的平台及其要求如下:(这仅适用于从源代码构建 TenSEAL)
- Linux: GNU G++ 的现代版本(>= 6.0)或 Clang++(>= 5.0)。
- MacOS: Xcode 工具链(>= 9.3)
- Windows: Microsoft Visual Studio(>= 10.0.40219.1,Visual Studio 2010 SP1 或更高版本)。
如果您想从仓库安装 tenseal,您首先需要确保您的平台满足上述要求(列出),并安装 CMake(3.14 或更高版本),然后通过在项目的根目录中运行以下命令获取第三方库(如果您还没有)
$ git submodule init
$ git submodule update
TenSEAL 使用 Protocol Buffers 进行序列化,并且您还需要协议缓冲区编译器。
如果您在 Windows 上,您首先需要使用 Visual Studio 构建 SEAL 库,您应使用 third_party/SEAL
中的 SEAL.sln
解决方案文件来构建 native/src/SEAL.vcxproj
项目,配置为 Configuration=Release
和 Platform=x64
。有关更多详细信息,请查看 构建 Microsoft SEAL 的说明
然后您可以触发构建和安装
$ pip install .
使用 Docker
您可以使用我们的 Docker 镜像 来获得一个预装了 TenSEAL 的可使用环境
$ docker container run --interactive --tty openmined/tenseal
注意: openmined/tenseal
指的是最后发布版本的镜像,使用 openmined/tenseal:dev
获取从 master 分支构建的镜像。
您还可以构建自己的自定义镜像,这可能对在项目中工作的开发者很有用
$ docker build -t tenseal -f docker-images/Dockerfile-py38 .
构建后,您可以运行以下命令将此 Docker 镜像作为容器交互式运行
$ docker container run -it tenseal
使用 Bazel
要将此库用于另一个 Bazel 项目,请将以下内容添加到您的 WORKSPACE 文件中
git_repository(
name = "org_openmined_tenseal",
remote = "https://github.com/OpenMined/TenSEAL",
branch = "master",
init_submodules = True,
)
load("@org_openmined_tenseal//tenseal:preload.bzl", "tenseal_preload")
tenseal_preload()
load("@org_openmined_tenseal//tenseal:deps.bzl", "tenseal_deps")
tenseal_deps()
基准测试
您可以通过运行以下命令在任何时候对实现进行基准测试
$ bazel run -c opt --spawn_strategy=standalone //tests/cpp/benchmarks:benchmark
每次 PR 合并的基准测试都上传到 这里。
教程
出版物
A. Benaissa, B. Retiat, B. Cebere, A.E. Belfedhal, "TenSEAL: A Library for Encrypted Tensor Operations Using Homomorphic Encryption", ICLR 2021 Workshop on Distributed and Private Machine Learning (DPML 2021)。
@misc{tenseal2021,
title={TenSEAL: A Library for Encrypted Tensor Operations Using Homomorphic Encryption},
author={Ayoub Benaissa and Bilal Retiat and Bogdan Cebere and Alaa Eddine Belfedhal},
year={2021},
eprint={2104.03152},
archivePrefix={arXiv},
primaryClass={cs.CR}
}
支持
使用此库的支援,请加入 #support Slack 频道。 点击此处加入我们的 Slack 社区!
贡献
欢迎提交拉取请求。对于重大更改,请先打开一个问题来讨论您想要更改的内容。
请确保适当地更新测试。
许可
项目详情
哈希值 for tenseal-0.3.15-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0df141ed6d632b3a42bb235e1b283333951169ecd2bb3429fe3727726b49b763 |
|
MD5 | 3e53a063c8ff03711ac6502428520197 |
|
BLAKE2b-256 | 88263986d873af28b7914046b0050dd3d78a4b0f973f7a2c601411ddebaafe8c |
哈希值 for tenseal-0.3.15-cp312-cp312-macosx_14_0_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e237411f7edbde1895dca687ed484a0fa1e6f84f77a5a02826208bc14f5bcdf9 |
|
MD5 | df393f61fbb4c4d0921c4bed9d53eb18 |
|
BLAKE2b-256 | f6c958e73d1928c95f060fa0a4ada903f2e9bf694d16144edcf17b096ddcbfc6 |
哈希值 for tenseal-0.3.15-cp312-cp312-macosx_13_0_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 69d1076d24fce483d371a79ae5f662fde1f07dfc40b87a50fa6c271921bcf8a0 |
|
MD5 | bf08e1a42f3c81b76f7ef847a6d13a0f |
|
BLAKE2b-256 | 27651541f60fca195115fef8aa45bd7d733b7ee0daabb42fc3f4092c9cc3c31a |
哈希值 for tenseal-0.3.15-cp312-cp312-macosx_12_0_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1f3a0fb55207852e624261b674df7c962829fa6c1ac9a752cc7ba19495133f6e |
|
MD5 | 0e5b552fc6f79be1796342e2cf5051a5 |
|
BLAKE2b-256 | e49965091c8e6fd154efea553c0db3feff7c316f5fdb74700a262ab8f61197fd |
哈希值 for tenseal-0.3.15-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 001d5bd32e4c650f47a2819b8b51607533f520e6b944c39f184e4218d02a9bf6 |
|
MD5 | c0922eba4e20d139f2b9169a50db0e95 |
|
BLAKE2b-256 | 694162ff973dd19f270aec5c6b35810b46719b71187f4ab885ac9a742a3d3b66 |
哈希值 for tenseal-0.3.15-cp311-cp311-macosx_14_0_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 644d73821e25ccc0a9077baa0c4026c89d2d6ea4224c67e7860d5af829c0388a |
|
MD5 | 74f731477dd0fde103df91108f039506 |
|
BLAKE2b-256 | 4738e9c5fbb0f773deda945a28924ba658b5fd24447d815f6f863104cd7c3b96 |
哈希值 for tenseal-0.3.15-cp311-cp311-macosx_13_0_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1172773786ff4ded1bc696092ac6a8693619bc211e0dd79f786be023dd92b036 |
|
MD5 | 732b16568ac7266083e4f3bb4ac9f4c0 |
|
BLAKE2b-256 | 56ce9553fb89a1fa73413366d089b736a3ae11e9e882f9d732c0796c43cbdfa3 |
哈希值 for tenseal-0.3.15-cp311-cp311-macosx_12_0_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ea8d34a4760b473a6b956cf4160cf6d854d0f7b30cec561d34e99e4decc6b01d |
|
MD5 | e4ad5638ee542f7ada09c7469270ee1d |
|
BLAKE2b-256 | bd17e7aa49a946f539fc2502a4a885603b93656d616bd1914562efbe31e2b9a0 |
哈希值 用于 tenseal-0.3.15-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f4bc76953eeb33d0bad415e1e981618ae78deee5b77a52bb797baaf7f0055974 |
|
MD5 | 9d4bf45b4cb0ff46ddae4d326c77a4d7 |
|
BLAKE2b-256 | 5940d7075f0fe38a5c4189d4669dca40a0708a28851c2d44b0372c3e18f7f430 |
哈希值 用于 tenseal-0.3.15-cp310-cp310-macosx_14_0_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7a20cfff0cc3e64e8855183d424dfe7cc03564c364a86c4965da2a8ac8881198 |
|
MD5 | 03a5c612d400360011b3f8c5f1b05182 |
|
BLAKE2b-256 | a46ec72c84654f7651bcbbe3b33409fc002a17c3ce54de9035d66224a22dc741 |
哈希值 用于 tenseal-0.3.15-cp310-cp310-macosx_13_0_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6e01ef9cb87443047d3ce4ea36e561605727996fd693f2436a7d715ab794ee41 |
|
MD5 | 969fbf9600e6f2e3ab65cc1465341736 |
|
BLAKE2b-256 | 4492687f8379e944c7bd926f3790fe6c5c3923d4cd40121f58c356dadedf78ba |
哈希值 用于 tenseal-0.3.15-cp310-cp310-macosx_12_0_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c7f3b858d05e1802fe1780678fe2d445269fe261f5f8a96d6731f401ab8cdbb6 |
|
MD5 | bd6f7ac56da33b9f97a3c82c2b3a50bd |
|
BLAKE2b-256 | 5189beeff113001ce3e24008c77b1834c5e32d196b010f6803080fc381a6d14d |
哈希值 用于 tenseal-0.3.15-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1d1c1bb0419c1196aedd8a29d3cb8b3b480a467718e64a6ae0fa25c9524348eb |
|
MD5 | 7bb401a8e8dc69e3c14c0602f6fe72aa |
|
BLAKE2b-256 | 28832a825e5bd4a12b4986ccd5f05bfb31dede38f8bb0bf1b8f809fefc622a05 |
哈希值 用于 tenseal-0.3.15-cp39-cp39-macosx_14_0_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ce7d4a26e3f093b1b19f5dd4a560bd02a7fee0dd88075621cded36ea2636c11d |
|
MD5 | d2da92ac0b12d267df3ba4212dfc3697 |
|
BLAKE2b-256 | 0a28377b39719d2a2e558c18e0a2fde7ab97ba2e1a3fbe4bdad5e1be0a422d5c |
哈希值 用于 tenseal-0.3.15-cp39-cp39-macosx_13_0_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bb92499836be65328f9227b50cd5497fb0b8b4373b77d31e56b7aa63258b8b0f |
|
MD5 | 1c3f59e942b14f5de979aadd65b8443a |
|
BLAKE2b-256 | 47e26910c7957182c6788e7f5f2ea8472dc4a71248149d4001156a8af254ba6e |
哈希值 用于 tenseal-0.3.15-cp39-cp39-macosx_12_0_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a2c6677dcde48358268d44ece8826bcfad6d0ce2f2bdb1a56825ae2f64779ee2 |
|
MD5 | 99d4b3b7c0b9b0d42d9d0d759babf156 |
|
BLAKE2b-256 | a17e245c7e53576043f306303c1e2ef8b06f415fe08958973c47aecba3fc71bd |
哈希值 用于 tenseal-0.3.15-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cd9660cb5dae7e728e9440ddb244a000a3b43bfa80270b4e718afd4792019526 |
|
MD5 | 9b1bc93820f77e6bb629126c993e1167 |
|
BLAKE2b-256 | 648be162cfa16eee2c120fb8fbc446e973353914cc6994aca400c3d267f98e46 |
哈希值 用于 tenseal-0.3.15-cp38-cp38-macosx_14_0_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c994e4578bdec7df1f994a3e910d3eccd1ced07b6f198028887457b59b27aa07 |
|
MD5 | 1966a9e631247791cb0cb76927b9691c |
|
BLAKE2b-256 | e1045aa0077dec1666a2dfb24909af67d9d50ea2658108f4d85f48909a8ffb83 |
哈希值 用于 tenseal-0.3.15-cp38-cp38-macosx_13_0_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2417e77dc32250a55901aa1af57998167942306920411660349aa92fe99202de |
|
MD5 | 57312d20d99978571b23e28285d92e7e |
|
BLAKE2b-256 | 6ab6e3634a9f959467f4699ebce7ae70e995a344a4c4661447c3669cfdb98f2a |
哈希值 用于 tenseal-0.3.15-cp38-cp38-macosx_12_0_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f8c01e53510b773ae38007f9c4c5e0667ce80d09b29f415ded42e046684455c9 |
|
MD5 | 87aad12ab2aa219aa4e955425b8fff80 |
|
BLAKE2b-256 | 4059907ef8caabdd2b4cebe4b293f2d7e5c6cce9175d2d38d02339a130ed7e9b |