3 个不稳定版本
0.2.1 | 2022年11月16日 |
---|---|
0.2.0 | 2022年10月19日 |
0.1.0 | 2021年9月30日 |
#2408 in 密码学
40 每月下载量
用于 concrete
94KB
2K SLoC
Concrete Boolean
这个库允许在加密位上执行布尔门。它允许在不受信任的服务器上执行布尔电路,因为电路的输入和输出都保持私密。数据实际上是在客户端加密后发送到服务器的。在服务器端,每项计算都是在密文上进行的。然而,服务器必须知道要评估的布尔电路。计算结束后,服务器将结果加密返回给用户。
快速示例
以下代码片段展示了如何生成密钥并同态运行一个小布尔电路。
use concrete_boolean::prelude::*;
fn main() {
// We generate a set of client/server keys, using the default parameters:
let (mut client_key, mut server_key) = gen_keys();
// We use the client secret key to encrypt two messages:
let ct_1 = client_key.encrypt(true);
let ct_2 = client_key.encrypt(false);
// We use the server public key to execute a boolean circuit:
// if ((NOT ct_2) NAND (ct_1 AND ct_2)) then (NOT ct_2) else (ct_1 AND ct_2)
let ct_3 = server_key.not(&ct_2);
let ct_4 = server_key.and(&ct_1, &ct_2);
let ct_5 = server_key.nand(&ct_3, &ct_4);
let ct_6 = server_key.mux(&ct_5, &ct_3, &ct_4);
// We use the client key to decrypt the output of the circuit:
let output = client_key.decrypt(&ct_6);
assert_eq!(output, true)
}
AVX512
在具有 avx512 指令集的 x86_64 CPU 上,可以使用带有 nightly-avx152
的夜间编译器编译以获得额外的加速。
cargo+nightly bench --功能nightly-avx512
GPU 后端
concrete-boolean 通过 concrete-cuda crate 支持 GPU 后端。可以通过将 --features=cuda
标志添加到编译命令来激活它。
链接
许可证
此软件根据 BSD-3-Clause-Clear 许可证分发。如果您有任何问题,请通过 hello@zama.ai
联系我们。
依赖关系
~6.5MB
~127K SLoC