Concrete v2.10:引入 Rust 支持并改进 TFHE-rs 互操作性

  • ZamaFHE
  • 发布于 2025-04-11 14:29
  • 阅读 130

Concrete v2.10 发布,引入了对 Rust 的支持,通过 concrete-python 将 Python 程序编译为 FHE 等效程序,然后在 Rust 项目中使用,以便在生产环境中部署。新版本还增强了与 TFHE-rs 的互操作性,可以更轻松地结合两者的优势。

Concrete v2.10:引入 Rust 支持并改进 TFHE-rs 互操作性

Concrete v2.10 引入了一个强大的新工具:Concrete for Rust——一个将全同态加密 (FHE) 直接引入 Rust 生态系统的集成。这是在现代系统编程中实现生产级 FHE 应用程序的重要一步。

如果你已经尝试过 Concrete,你可能已经熟悉 concrete-python 前端。此工具允许你将 Python 程序编译为其全同态加密 (FHE) 等效程序,然后使用客户端和服务器 SDK 来处理加密、评估和解密。现在,有了这个新的 Rust 支持,以前使用底层 C++ API 的高级用户现在可以直接在 Rust 中利用 Concrete 的强大功能。

为什么选择 Rust?

在过去的几年里,Python 已经被证明是 Concrete 的一个很好的目标。它灵活、易于使用,并且拥有强大的科学计算生态系统。这就是为什么像 concrete-ml 这样的工具能够如此迅速地支持如此多的机器学习模型。Python 非常适合尝试新想法和快速构建原型,并且 concrete-python 与它集成得非常好。

但是,当需要从原型转移到真正的生产系统时,Python 可能会受到限制,而这正是 Rust 的用武之地。在 Zama,我们一直很欣赏 Rust 在编写密码学代码时的安全性。但除了内存安全之外,Rust 也越来越成为构建可靠的大规模应用程序的流行选择。

随着 Concrete for Rust 的首次发布,我们的目标是将两者的优点结合在一起:Python 的原型设计的易用性,以及 Rust 强大、安全的基础,用于生产就绪的部署。

入门:Rust 中的 Concrete

让我们通过一个简单的例子来看看 Rust 中的 Concrete 是如何工作的。

步骤 1 — 在 Python 中定义和编译模块。

我们首先使用 concrete-python 生成一个与 concrete-compiler 兼容的工件。然后,此工件将被导入并在 Rust 项目中使用,从而演示 Rust 集成如何适应更广泛的 Concrete 工具链。

首先,使用 pip 安装 concrete-python:

pip install concrete-python

然后,我们定义一个包含两个简单函数的模块 inc 和 dec,它们分别增加和减少一个 8 位整数(即,计算以 2^8 为模):

from concrete import fhe

@fhe.module()
class MyModule:
  @fhe.function({"x": "encrypted"})
  def inc(x):
      return (x+1) % 2**8
   @fhe.function({"x": "encrypted"})
  def dec(x):
      return (x-1) % 2**8

inputset = fhe.inputset(fhe.uint8)
module = MyModule.compile({"inc": inputset, "dec": inputset})

module.server.save(path="MyModule.zip", via_mlir=True)

请注意,本示例中使用的 Python 代码有意简单,仅用于测试目的。在实践中,你可以在程序中编写任何兼容的逻辑。

执行脚本后,你将获得一个名为 test.zip 的文件,其中包含你将在 Rust 项目中使用的已编译工件。

步骤 2 — 在 Rust 中使用该模块。

为了支持此工作流程,我们在 crates.io 上发布了两个 crate:

  • concrete_macro,它允许在构建时导入 concrete-compiler 工件。
  • concrete,它提供用于加密、评估和解密的客户端和服务器 API。

首先,初始化你的 rust 项目并添加 concrete 依赖项:

cargo init
cargo add concrete@=2.10.1-rc1 concrete-macro@=2.10.1-rc1

使用 concrete_macro,你可以轻松地将预编译的模块导入到带有 FHE 的 Rust 项目中:

mod MyModule {
   use concrete_macro::from_concrete_python_export_zip;
   from_concrete_python_export_zip!("MyModule.zip");
}

在底层,过程宏执行多个任务来集成预编译的模块:

  • 解压缩 concrete-compiler 工件
  • 触发重新编译步骤
  • 读取元数据
  • 生成相应的客户端/服务器 API

在上面的示例中,该模块包括两个函数 inc 和 dec,这些函数现在可以在 Rust 中使用。你可以运行完整的 FHE 工作流程:

fn main() {
  use concrete::common::Tensor;

  let input = Tensor::new(vec![5], vec![]);
  let expected_output = Tensor::new(vec![6], vec![]);

  // Step 1 (Client side) : keygen
  // 步骤 1(客户端):密钥生成
  let mut secret_csprng = concrete::common::SecretCsprng::new(0u128);
  let mut encryption_csprng = concrete::common::EncryptionCsprng::new(0u128);
  let keyset = my_module::new_keyset(secret_csprng.pin_mut(), encryption_csprng.pin_mut());
  let client_keyset = keyset.get_client();

  // Step 2 (Client side) : Create the client stub of the inc function
  // 步骤 2(客户端):创建 inc 函数的客户端桩
  let mut inc_client = my_module::client::inc::ClientFunction::new(&client_keyset, encryption_csprng);

  // Step 3 (Client side) : Encrypt the input and get the evaluation keys
  // 步骤 3(客户端):加密输入并获取评估密钥
  let encrypted_input = inc_client.prepare_inputs(input);
  let evaluation_keys = keyset.get_server();

  // Step 4 (Server side) : Create the server stub of the inc function
  // 步骤 4(服务器端):创建 inc 函数的服务器桩
  let mut inc_server = my_module::server::inc::ServerFunction::new();

  // Step 5 (Server side) : Invoke the server stub with the evaluation keys and the encrypted input
  // 步骤 5(服务器端):使用评估密钥和加密输入调用服务器桩
  let encrypted_output = inc_server.invoke(&evaluation_keys, encrypted_input);

  // Step 6 (Client side) : Decrypt the output
  // 步骤 6(客户端):解密输出
  let decrypted_output = inc_client.process_outputs(encrypted_output);

  // Assert that the decrypted output is equal to the expected output
  // 断言解密后的输出等于预期输出
  assert_eq!(decrypted_output.values(), expected_output.values());
}

注意: Rust API 目前处于 beta 阶段,这意味着它仍然是实验性的,并且可能会在未来的版本中发生变化。我们正在积极致力于改进——欢迎尝试、分享你的反馈并关注更新!

改进 TFHE-rs 互操作性

除了 Rust 支持之外,Concrete v2.10 还带来了 TFHE-rs 互操作性的多项增强——使其更容易结合两个生态系统的优势。

有关更多详细信息,请查看发行说明

更多链接

  • 原文链接: zama.ai/post/concrete-v2...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
ZamaFHE
ZamaFHE
Zama是一家开源密码学公司,专注于为区块链和人工智能构建最先进的完全同态加密(FHE)解决方案。