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](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](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, 云服务, 区块链安全, 去中心化, 可信执行环境, 可视化界面, 安全标准, 密码学, 手动系统调用, 数据完整性, 智能合约验证, 机密计算, 硬件安全, 网络安全, 网络流量审计, 请求拦截, 远程证明, 通知系统, 链上验证, 隐私保护, 零知识证明