Pung是一个(研究)通信系统,用户可以在完全不受信任的通道上私下交谈,特别是Pung可证明在与全球对手对抗的同时将所有内容和元数据隐藏在对话中。有关协议及其保证的详细信息,请参见我们的论文。
Pung用Rust编写,并且在每晚编译器下进行编译(对于我们的基准测试框架几乎是必需的)。我们已经测试到nightly-2019-06-04,并且意识到Rust的最新版本会导致某些Pung出现问题我们假设您已经安装了rustup。
您可以从Pung目录运行以下命令,将夜间编译器设置为适用于Pung的特定版本(这只会影响Pung文件夹,而不会影响其他任何项目)。
Pung依赖Cap'n Proto进行消息序列化,以及XPIR的修改版本。要获得两种依赖关系,只需在Pung目录中运行以下命令:
XPIR取决于升压> = 1.55,gmp和mpfr。您可以如下安装它们。
注意:无需编译或安装XPIR。编译Pung时,它将自动构建并链接(请参见下文)。
要使用调试符号编译Pung,只需运行:$ cargo build。生成的二进制文件将是:target / debug / client和target / debug / server。要使用编译器优化来编译PUng,请运行:$ cargo build --release。生成的二进制文件将是:target / release / client和target / release / server。
我们所有的微基准测试都可以在Benchs文件夹中找到。我们使用[Criterion](https://github.com/japaric/criterion.rs)库来测量所有运行时间并提供有用的统计信息。
要运行所有微基准测试,只需键入:$ cargo bench---test --nocapture bench。结果将在.criterion文件夹中找到。
要运行单个(或一组)微基准,只需键入:$ cargo bench---test --nocapture [PREFIX]。其中[PREFIX]是您想要的微基准名称的前缀跑。例如,由于我们所有的微基准均以&b34&b34; bench"开头。作为前缀运行所有这些。但是,如果只希望运行PIR微基准,则只需传递&b34_bench_pir"即可。作为前缀。
第一步是启动服务器(-m标志告诉它每轮期望2条消息):
传递--help以查看可用选项。第二步是启动客户端:
$ ./target/release/client -n" user1" -p" user2" -x"秘密" -r 10& $ ./target/release/client -n" user2" -p" user1" -x"秘密" -r 10
上面的代码将运行两个ID为" user1"的客户端。和" user2"将会使用秘密"秘密"与其他人通信持续10轮。也可以通过与自己对话来运行单个客户端(即,将相同的参数传递给客户端的-n和-p并将服务器设置为仅接收一条消息:-m 1)。
传递--help以查看可用选项。 客户端和服务器必须使用相同的选项(例如,检索类型,优化,存储桶数)运行,这一点很重要。 有关如何运行多个客户端和服务器的说明,请参阅脚本中的launch_clients.py和launch_servers.py。