#sev-snp #azure #tpm #virtualization

bin+lib az-snp-vtpm

基于 vTPM 的 SEV-SNP 认证,用于 Azure 机密虚拟机

13 个版本 (5 个破坏性更新)

0.6.0 2024 年 7 月 8 日
0.5.2 2024 年 2 月 23 日
0.4.1 2023 年 12 月 19 日
0.4.0 2023 年 11 月 28 日
0.1.1 2023 年 3 月 29 日

#369 in 密码学

Download history 417/week @ 2024-04-15 388/week @ 2024-04-22 119/week @ 2024-04-29 263/week @ 2024-05-06 529/week @ 2024-05-13 279/week @ 2024-05-20 437/week @ 2024-05-27 576/week @ 2024-06-03 689/week @ 2024-06-10 585/week @ 2024-06-17 621/week @ 2024-06-24 265/week @ 2024-07-01 458/week @ 2024-07-08 305/week @ 2024-07-15 657/week @ 2024-07-22 834/week @ 2024-07-29

每月 2,261 次下载

MIT 许可证

46KB
910 代码行

Rust Crate Docs

az-snp-vtpm

此库为 Azure 上的 SEV-SNP CVM 提供了客户端认证流程。请参阅 此存储库 中的文档,了解认证过程详情。

创建 CVM

默认镜像为 Ubuntu 22.04 cvm

export IMAGE_ID=/subscriptions/.../resourceGroups/.../providers/Microsoft.Compute/galleries/.../images/.../versions/1.0.0
make deploy

构建 & 安装

cargo b --release -p az-snp-vtpm
scp ../target/release/snp-vtpm azureuser@$CONFIDENTIAL_VM:

运行二进制文件

检索 SEV-SNP 报告,验证并打印

sudo ./snp-vtpm -p

示例项目

./example 文件夹中有一个项目,展示了如何将 crate 应用于远程认证流程。 注意:代码仅用于说明,未进行详尽的验证,这在生产环境中是必需的。

cargo b -p snp-example

SEV-SNP 报告 & vTPM

通过 vTPM 认证密钥 (AK) 将 vTPM 与 SEV-SNP 报告链接起来。公开的 AK 是运行时数据结构的一部分,当生成 SNP 报告时,将其作为报告数据提交。为了在认证交换中提供新鲜性保证,我们可以请求带有 nonce 的 vTPM 引用。结果是使用 AK 签名的消息。

                              ┌────────────────────────┐
                              │ HCL Data               │
                              │                        │
                              │ ┌──────────────────────┴─┐  ─┐
                              │ │ Runtime Data           │   │
                              │ │                        │   │
    ┌──────────────────────┐  │ │ ┌────────────────────┐ │   ├─┐
  ┌─┤ vTPM AK              ├──┼─┼─┤ vTPM Public AK     │ │   │ │
  │ └──────────────────────┘  │ │ └────────────────────┘ │   │ │
  │         ┌──────────────┐  │ └──────────────────────┬─┘  ─┘ │
  │         │ vTPM Quote   │  │ ┌────────────────────┐ │       │
  │         │              │  │ │ HCL Report         │ │       │
signs ┌─  ┌─┴────────────┐ │  │ │                    │ │     sha256
  │   │   │ Message      │ │  │ │ ┌────────────────┐ │ │       │
  │   │   │              │ │  │ │ │ SEV-SNP Report │ │ │       │
  │   │   │ ┌──────────┐ │ │  │ │ │                │ │ │       │
  │   │   │ │ PCR0     │ │ │  │ │ │ ┌──────────────┴─┴─┴─┐     │
  │   │   │ └──────────┘ │ │  │ │ │ │ Report Data        │ ◄───┘
  │   │   │   ...        │ │  │ │ │ └──────────────┬─┬─┬─┘
  │   │   │ ┌──────────┐ │ │  │ │ └────────────────┘ │ │
  └─► │   │ │ PCRn     │ │ │  │ └────────────────────┘ │
      │   │ └──────────┘ │ │  └────────────────────────┘
      │   │ ┌──────────┐ │ │ 
      │   │ │ Nonce    │ │ │
      │   │ └──────────┘ │ │
      └─  └─┬────────────┘ │
            └──────────────┘

依赖项

~12–25MB
~420K SLoC