Zama 的技术通过 全同态加密 (Fully Homomorphic Encryption, FHE) 实现对加密数据的私密计算。然而,在任何应用中,一个主要的问题是密钥管理 —— 特别是如何保护和管理用于解密数据的私钥。
为了解决该问题,Zama 团队开发了一个基于门限密码学的 门限密钥管理系统(Threshold Key Management System,TKMS)。具体来说,与依赖单一方持有完整解密密钥不同,TKMS 会将该解密密钥拆分成多个片段,并分发给多个参与方。这些片段在密码操作过程中永远不会被重新组合 —— 类似于区块链领域中的 多方安全计算 (Multi-Party Computation, MPC) 钱包的工作机制。
TKMS 构建在一个安全的 MPC 协议之上,支持几乎所有 FHE 算法的密钥管理。虽然本实现针对 TFHE 进行了优化(以便配合 fhEVM 实现隐私智能合约),但其底层的 MPC 系统足够通用,可以调整用于其他类型的 FHE 密钥,如 BGV 和 BFV 算法中的密钥。
2025年4月中旬,Zama 发布了支撑 TKMS 技术的两个关键资源:
threshold-fhe 库 是一个 Rust 库,实现了 Zama 产品中 TFHE 算法的多方计算(MPC)算法,涵盖以下功能:
此外,该库还包含用于生成 公共参考字符串(Common Reference String, CRS) 的协议代码,CRS 被用于 Zama 的 TFHE-rs 库中的 零知识知识证明(zero-knowledge proofs of knowledge,ZKPoK) 协议中。此外,该库还实现了简单版本的 BGV 和 BFV 加密方案中的门限解密与密钥生成,即使这些部分目前并未被 Zama 的产品所使用。
根据参与方数量和所需门限的不同,为了平衡可行性与效率,该库实现了多种 MPC 协议选项:
其中, t t t 表示协议能够容忍的恶意参与方数量。
这些 MPC 协议基于 Shamir 秘密分享 (Shamir Secret Sharing) 和 伽罗瓦环 (Galois Rings),具备强鲁棒性,也就是说,它们保证输出可交付(Guaranteed Output Deliver)。通俗来说,只要恶意参与方不超过 t t t 个,其余诚实参与方就一定能够得到正确的输出结果。
有趣的是,当总参与方数量较少时,threshold-fhe库的门限解密协议只需要一轮通信,这使其特别适合在广域网(WAN)等高延迟网络环境下运行。
最耗时的部分无疑是密钥生成(但该过程只会在协议初始化阶段执行一次)。不过,Zama 的实现高度并行化,可以根据需要进行横向扩展。
此外,组成门限密钥生成和门限解密的不同模块也可以独立复用,如用于学术研究。用户可以在https://github.com/zama-ai/threshold-fhe(Rust)库中找到如何运行软件和生成基准测试结果的说明。
除了https://github.com/zama-ai/threshold-fhe(Rust)代码库,Zama团队还发布了一份超过 250 页的技术报告《Threshold (Fully) Homomorphic Encryption》,正式描述了 MPC 协议栈背后的数学原理与协议细节,其中包括:
为了保证文档易读性,在该报告中主要采用了 THFE、BGV 和 BFV 的简化版本。
[1] Zama团队2025年4月17日博客 Introducing Zama’s Threshold Key Management System (TKMS)