automata-network/amd-sev-snp-attestation-sdk
GitHub: automata-network/amd-sev-snp-attestation-sdk
用于生成AMD SEV-SNP远程证明报告并将其转换为可链上验证的零知识证明的Rust开发套件。
Stars: 20 | Forks: 16
# Automata AMD SEV-SNP Attestation SDK
[](LICENSE)
## 概述
Automata AMD SEV-SNP Attestation SDK 是功能最完备的 AMD SEV-SNP 开发 SDK,它由两部分组成:
* SEV-SNP 库:它帮助开发者在不同的云服务提供商 (CSP) 中生成 AMD SEV-SNP Attestation Report。
* Risc0 和 Succinct ZK 主机及 guest 程序,用于与相应的 zkVM 服务器交互以生成证明,并构建 [Automata AMD SEV-SNP Attestation](https://explorer-testnet.ata.network/address/0xDe510E1F9258c94c5520B717210a301Cc8297F1F) 合约调用以执行链上验证。
### 环境准备
参考 [SEV-SNP](./sev-snp/README.md) 在不同的云服务提供商 (CSP) 中设置 AMD SEV-SNP CVM。
## AMD SEV-SNP Attestation 生成
使用 [SEV-SNP](./sev-snp/README.md#generate-attestation) 生成带有 VEK Cert 的 AMD SEV-SNP Attestation Report,你可以在 [sev_snp_attestation](./sev-snp/examples/attestation.rs) 中找到一个示例。
## AMD SEV-SNP Attestation 验证
结合 Attestation 生成和 ZK 优化,你可以使用 AMD SEV-SNP Attestation Report 和 VEK Cert 输出生成 Risc0 或 SP1 ZK 证明,并通过 [verifyAndAttestWithZKProof](https://explorer-testnet.ata.network:443/address/0xDe510E1F9258c94c5520B717210a301Cc8297F1F?tab=read_contract#57859ce0) 方法进行验证。
```
/**
* @param output the zkVM output.
* @param zkCoprocessor 1 - RiscZero, 2 - Succinct.
* @param proofBytes the zk proof.
*/
function verifyAndAttestWithZKProof(
bytes calldata output,
ZkCoProcessorType zkCoprocessor,
bytes calldata proofBytes
)
```
### 部署信息
| Network | ChainID | SEVAgentAttestation | SP1Verifier | RiscZeroGroth16Verifier |
| ------- | -------- | ------------------------------------------ | ------------------------------------------ | ------------------------------------------ |
| Sepolia | 11155111 | 0x84d19f7F2e07766ea16D1c24f7e0828FA11273A2 | 0x397A5f7f3dBd538f23DE225B51f532c34448dA9B | 0x925d8331ddc0a1F0d96E68CF073DFE1d92b69187 |
| Hoodi | 560048 | 0x84d19f7F2e07766ea16D1c24f7e0828FA11273A2 | 0x7DA83eC4af493081500Ecd36d1a72c23F8fc2abd | 0x32Db7dc407AC886807277636a1633A1381748DD8 |
| Automata Testnet | 1398243 | 0x84d19f7F2e07766ea16D1c24f7e0828FA11273A2 | 0x7291752B7c1e0E69adF9801865b25435b0bE4Fc6 | 0xaE7F7EC735b6A90366e55f87780b36e7e6Ec3c65 |
| ZkType | Program ID |
| ------ | ----------- |
| Risc0 | 0x280160e5f541ac4a9015ae6bb4b65e0b4791354e30ff9a393dd50c3bb24dc377 |
| SP1 | 0x00d2342d2400bed28302507269281dcb2c621bae91a0626796ce637f01c928d8 (BN254); 0x691a1692002fb4a0604a0e4d1281dcb26310dd744681899e2d9cc6fe01c928d8 (BabyBear 32-bit BE word) |
### ZK 优化
#### Risc0
首先,你需要安装以下内容:
* [Rust](https://doc.rust-lang.org/cargo/getting-started/installation.html)
* [Foundry](https://getfoundry.sh/)
* [RISC Zero](https://dev.risczero.com/api/zkvm/install)
##### 配置 Boundless
通过 Boundless proving network,你可以生成可在链上验证的 [Groth16 SNARK proof]。
你可以通过设置以下环境变量开始使用:
```
export BOUNDLESS_RPC_URL="https://..." # Boundless network RPC endpoint
export BOUNDLESS_PRIVATE_KEY="0x..." # Your wallet private key (hex-encoded)
export PINATA_JWT="..." # Pinata JWT for IPFS storage (for ELF uploads)
```
有关更多信息,请参阅 [Boundless documentation](https://docs.boundless.network/developers/quick-start)。
#### Succinct
首先,你需要安装以下内容:
* [Rust](https://doc.rust-lang.org/cargo/getting-started/installation.html)
* [SP1](https://docs.succinct.xyz/docs/sp1/getting-started/install)
* [Docker](https://docs.docker.com/get-started/get-docker/)
***注意:*** *SP1 5.2 默认包含主网支持。如需申请 SP1 生产网络的白名单地址,请[在此填写表格](https://docs.google.com/forms/d/e/1FAIpQLSd-X9uH7G0bvXH_kjptnQtNil8L4dumrVPpFE4t8Ci1XT1GaQ/viewform)。*
通过 SP1 Proving Network,你可以生成可在链上验证的 [Groth16 SNARK proof] 或 [Plonk SNARK proof]。
你可以通过使用你的白名单地址设置以下环境变量开始使用:
```
export SP1_PROVER=network
export SP1_PRIVATE_KEY="0x..." # Your whitelisted private key
# SP1_RPC_URL 是可选的 - SP1 5.2 默认为生产主网端点
```
## 致谢
我们要感谢以下项目,它们的先前工作对本项目的实现起到了至关重要的作用。
* [virtee/sev](https://github.com/virtee/sev),[AMD Secure Encrypted Virtualization (SEV)](https://www.amd.com/content/dam/amd/en/documents/epyc-technical-docs/programmer-references/55766_SEV-KM_API_Specification.pdf) API 和 [SEV Secure Nested Paging Firmware (SNP)](https://www.amd.com/content/dam/amd/en/documents/epyc-technical-docs/specifications/56860.pdf) ABI 的一个实现。
## 免责声明
本项目正在开发中。所有源代码和功能均未达到生产就绪状态。
标签:AMD SEV-SNP, ATA, Automata, CSP, Risc0, Rust, SP1, TEE, Web3, Zenmap, ZK, 云服务, 区块链安全, 去中心化, 可信执行环境, 可视化界面, 安全标准, 密码学, 手动系统调用, 数据完整性, 智能合约验证, 机密计算, 硬件安全, 网络安全, 网络流量审计, 请求拦截, 远程证明, 通知系统, 链上验证, 隐私保护, 零知识证明