#aes #subspace #proof-of-replication #proof-of-time

rust-aes-proofs

基于 AES 的各种证明复现和证明时间的实现和基准测试

2 个不稳定版本

0.2.0 2020年5月24日
0.1.0 2020年5月17日

#1622 in 加密学

MIT 许可证

190KB
3K SLoC

Rust AES Proofs

基于 AES 的各种证明复现和证明时间的实现和基准测试。

需求和依赖项

源代码是用 Rust 编写的,所以首先您需要安装 Rust 工具链,最佳方式是按照 rustup.rs 上的您平台上的说明进行。

OpenCL 系统依赖项

除了 Rust 编译器本身外,您还需要在您的计算机上安装以下组件才能运行基于 OpenCL 的实现

  • gcc
  • 您 GPU 的 OpenCL 驱动程序和开发文件

在 Ubuntu 18.04+ 上为 AMD GPU,可以按以下方式安装

sudo apt-get install gcc ocl-icd-opencl-dev mesa-opencl-icd

在 Ubuntu 18.04+ 上为 Intel GPU,可以按以下方式安装

sudo apt-get install gcc ocl-icd-opencl-dev beignet-opencl-icd

软件 OpenCL 实现

您还可以使用 Oclgrind 在 CPU 上以软件方式运行 OpenCL 实现。

在 Ubuntu 18.04+ 上 Oclgrind 可以按以下方式安装

sudo apt-get install oclgrind

运行测试和基准测试

TL;DR

cargo test
cargo bench

对于测试,使用内置的 Rust 功能,所以 Rust 书籍的这一章节 会帮到您。

仅运行测试子集可以轻松实现,如下所示

cargo test -- por::aes_ni # Only run Proof-of-Replication tests and only AES-NI implementation

查看 src/porsrc/pot 子目录以查找可用的实现。

对于基准测试,使用 Criterion,因此您可以参考其文档。

由于基准测试可能需要很长时间才能运行,您可能只想运行子集,这可以方便地实现如下所示

cargo bench --bench por -- OpenCL # Only run Proof-of-Replication benchmarks and only OpenCL implementation

查看 benches 子目录以查找可用的基准测试和实现。

依赖项

~4.5MB
~85K SLoC