google/longfellow-zk
GitHub: google/longfellow-zk
Google 推出的零知识证明 C++ 库,用于在现有身份认证标准基础上构建隐私保护的匿名凭证协议。
Stars: 1287 | Forks: 119
# Longfellow ZK
[](LICENSE) [](https://eprint.iacr.org/2024/2010)
[](https://datatracker.ietf.org/doc/draft-google-cfrg-libzk/)
## 概述
Longfellow 库支持构建与遗留身份验证标准(例如 ISO MDOC 标准、JWT 标准和 W3 可验证凭证)相关的零知识协议。相关实现详见:
* [基于 ECDSA 的匿名凭证](https://eprint.iacr.org/2024/2010)
* [libzk:用于零知识证明的 C++ 库](https://datatracker.ietf.org/doc/draft-google-cfrg-libzk/)
* [项目文档](https://google.github.io/longfellow-zk/)
它以 Google 剑桥办公室外的一座桥命名。
# 安全审查
本项目目前正由该领域的学术和行业专家小组进行两项独立的安全审查。他们的报告可在[项目文档/审查](https://google.github.io/longfellow-zk/docs/reviews/)页面中查看。
# 规范
本代码库包含 Longfellow 及其组件规范的[工作文件](https://github.com/google/longfellow-zk/tree/main/docs/specs)。
如果您有兴趣做出贡献,请创建一个 Issue 或 Pull Request。我们的讨论在 Issues 中进行。
# 通过 devcontainer 进行测试
您可以使用关联的 devcontainer 创建环境,从而快速测试我们的库。只需点击上方的 `Code`-->`Codespaces`-->`Create codespace on master` 即可开始。这会在 Github 服务器上创建一个 docker 容器,其中包含所有依赖项,并为我们的当前代码库提供基于 Web 的 VScode 界面。您可以在此环境中编译和运行我们的基准测试,但由于使用虚拟机 (VM),其中一些测试的运行速度可能会慢于我们报告的数值。
# 构建说明
## 要求
本包依赖于 cmake、openssl、zstd、clang、googletest 和
googlebenchmark。
### Ubuntu, debian
```
$ sudo apt install -y build-essential clang cmake libssl-dev libzstd-dev libgtest-dev libbenchmark-dev zlib1g-dev
```
### Fedora, redhat
```
$ yum install -y clang libzstd-devel openssl-devel git cmake google-benchmark-devel gtest-devel
```
较新版本的 fedora 似乎需要 `libpfm-devel`:
```
$ yum install -y clang libzstd-devel openssl-devel git cmake google-benchmark-devel gtest-devel libpfm-devel
```
### MacOS
确保已安装 Xcode 命令行工具,例如 `clang` 和 `cmake`。
```
$ brew install googletest google-benchmark zstd
```
## 手动构建
首先运行 cmake 初始化步骤
```
$ CXX=clang++ cmake -D CMAKE_BUILD_TYPE=Release -S lib -B clang-build-release --install-prefix ${PWD}/install
```
接下来:
```
$ cd clang-build-release && make -j 16 && ctest -j 16
```
# 运行基准测试
我们定义了多个单元测试、sumcheck 和 zk 基准测试。以下是其中的一些:
```
$ ./algebra/fft_test --benchmark_filter='BM_*'
$ ./circuits/sha/flatsha256_circuit_test --benchmark_filter=BM_ShaZK_fp2_128
```
标签:Bash脚本, C++, 安全测试工具, 密码学, 手动系统调用, 数字凭证, 数据擦除, 网络安全, 隐私保护, 零知识证明