#relay #mpc #secure-communication #tss #e2ee #crypto

app mpc-relay

用于 MPC/TSS 应用的噪声协议 WebSocket 中继

5 个版本 (破坏性更新)

0.7.0 2024年7月9日
0.4.0 2023年6月19日
0.3.0 2023年6月14日
0.2.0 2023年6月14日
0.1.0 2023年6月13日

密码学 中排名 170

Download history 110/week @ 2024-07-05 12/week @ 2024-07-12

每月下载量 222

MIT/Apache

120KB
2K SLoC

多方计算协议

为使用噪声协议和 WebSocket 进行传输层设计的端到端加密中继服务,适用于使用噪声协议和 WebSocket 构建的 MPC/TSS 应用。

该服务便于对等方之间的安全通信,但不处理公钥交换或会面点。

要使用中继服务,客户端必须知道服务器的公钥和会话中所有参与者的公钥。

创建一个共享会话标识符的会面点以执行 MPC/TSS 协议的任务留给应用程序。通常,这可以通过将会话标识符编码到 URL 中并与所有参与者共享来实现。

服务器安装

cargo install mpc-relay

文档

客户端实现使用 web-sys 进行 WebAssembly,并使用 tokio-tungstenite 进行其他平台。

开发

入门

您需要 rust 工具链和一些其他工具

cargo install cargo-make
cargo install wasm-pack

最低支持的 rust 版本 (MSRV) 为 1.68.1。

运行 gen-keys 任务以设置服务器和测试规范密钥对

cargo make gen-keys

服务器

启动服务器

cargo run -- start config.toml

文档

cargo make doc

测试

本地平台

要使用本地客户端运行测试

cargo make test

Web 平台

要使用 WebAssembly 测试 Web 客户端,首先启动测试服务器(端口 8008)

cargo make test-server

现在您可以运行 WebAssembly 测试

cargo make test-wasm
端到端测试

WebAssembly 测试无法模拟密钥生成和签名,因为在单线程环境中计算过于密集,集成测试会在完成之前触发浏览器脚本超时。

要运行 Web 平台端到端测试,首先编译 WebAssembly 绑定

cargo make bindings

然后生成测试文件

cargo make gen-e2e

启动服务器进行端到端测试

cargo make e2e-server

注意,我们不使用test-server任务,因为端到端测试使用具有不同超时设置的配置。

然后启动开发服务器(端口9009),用于提供HTML和JavaScript。

cargo make dev-server

运行测试规范需要playwright,因此首先安装端到端测试的依赖项,然后是playwright浏览器。

cd tests/e2e
npm install
npx playwright install

然后你应该能够运行端到端测试。

npm test

或者运行带头浏览器以查看浏览器,这对于调试可能很有用。

npm run test-headed

或者使用playwright UI。

npm run test-ui

如果您需要调试测试规范,也可以在浏览器中手动打开页面,首先打开启动页面/cggmp/p1.html,然后打开参与页面/cggmp/p2.html/cggmp/p3.html,这些页面位于https://127.0.0.1:9009开发服务器上。

许可证

绑定和驱动程序包在GPLv3许可证下发布,所有其他代码要么是MIT许可证,要么是Apache-2.0许可证。

依赖关系

~7-22MB
~329K SLoC