1个不稳定版本
0.1.0 | 2023年6月25日 |
---|
#1682 in 密码学
300KB
6.5K SLoC
MPC-Ristretto
此库在curve25519-dalek
算术实现之上提供了一个抽象(仓库),允许在代数上基于秘密共享进行MPC计算。此外,此库还包括SPDZ风格的共享认证,以进行恶意安全的计算。
组织
库的核心位于src/
,集成测试位于integration/
。源文件夹的组织结构如下
network.rs
和network/
定义了基于QUIC(使用quinn)的P2P传输,其中两个对等点打开双向流来通信关于Scalar
和RistrettoPoint
类型。mpc_scalar.rs
和mpc_ristretto.rs
分别定义了Dalek的Scalar
和RistrettoPoint
的未认证(半诚实安全)包装器。这些实现覆盖了算术操作,使得这些操作的结果是底层结果的合法秘密共享。这包括使用Beaver Trick进行乘法。authenticated_scalar.rs
和authenticated_ristretto.rs
定义了围绕MpcScalar
和MpcRistrettoPoint
的认证包装器,在整个计算过程中维护SPDZ风格的MACs。这些包装器可以在认证提交/揭示交互中打开,确保其结果未被篡改。commitment.rs
定义了Scalar
值(Pedersen)和RistrettoPoint
值(SHA3_512
哈希承诺)的承诺实现。macros.rs
定义了一系列宏,用于帮助实现借用值、包装值等算术。beaver.rs
定义了库期望通过其接收Beaver三元组的接口。由于预处理功能在很大程度上是一个基础设施负担,因此只提供了模拟实现。此库的使用者应实现适当的预处理功能。fabric.rs
定义了一个“MPC织物”,它实际上在网络上充当依赖注入层。也就是说,MpcFabric
持有网络引用、beaver源实现和MAC密钥;允许库的使用者在不传递这些依赖的情况下分配秘密共享值。
测试
通过以下方式可以获取库中孤立部分的单元测试
cargo test --lib
此库的大部分测试最好使用真实通信来完成;因此,大多数测试都是集成测试。集成测试可以运行为
./run_integration.zsh
或者更直接地作为
docker compose up
依赖
~21–37MB
~639K SLoC