matter-labs/vault-auth-tee

GitHub: matter-labs/vault-auth-tee

为 Hashicorp Vault 提供基于 TEE 硬件的远程证明身份认证插件,解决可信环境的身份绑定与防伪造问题。

Stars: 16 | Forks: 9

# vault-auth-tee TEE 远程证明插件,适用于 Hashicorp Vault ## 免责声明 此插件尚未经过审计。请自行承担风险使用。 ## 许可证 除非另有说明,所有代码均根据 Mozilla Public License 2.0 许可。 大部分 Vault 插件代码基于 Vault 的 `builtin/credential/cert` 插件。 ## 构建配置 ``` $ wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | sudo apt-key add - $ sudo bash -c 'echo "deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu focal main" > /etc/apt/sources.list.d/intel-sgx.list' $ sudo apt update $ sudo apt install -y --no-install-recommends \ libsgx-headers \ libsgx-enclave-common \ libsgx-urts \ libsgx-dcap-quote-verify \ libsgx-dcap-quote-verify-dev ``` ## 配置 通过 `${plugin}/tees/$name` 端点进行 `创建` 或 `更新` ``` { "name": "TEE_role_name", "token_policies": "policy1,policy2,...", "types": "sgx", "sgx_mrsigner": "298037d88782e022e019b3020745b78aa40ed95c77da4bf7f3253d3a44c4fd7e", "sgx_mrenclave": "18946b3547d3ca036f4df7b516857e28fd512d69fed3411dc660537912faabf8", "sgx_isv_prodid": 0, "sgx_min_isv_svn": 0, "sgx_allowed_tcb_levels": "Ok,ConfigNeeded,OutOfDate,OutOfDateConfigNeeded,SwHardeningNeeded,ConfigAndSwHardeningNeeded" } ``` * 必须至少设置 `sgx_mrsigner` 或 `sgx_mrenclave` 之一。如果两者都设置,则两者都用于匹配。 * `sgx_isv_prodid` 是可选的,默认为 `0`。 * `sgx_min_isv_svn` 是可选的,默认为 `0`。 * `sgx_allowed_tcb_levels` 是可选的,默认为 `Ok`。 ## 身份验证 - 客户端 TEE 生成自签名 TLS 客户端证书 - 客户端 TEE 生成证明报告,其中包含客户端证书公钥的哈希值(对于 SGX,是公钥的 SHA256 值) - 客户端 TEE 通过例如 Intel DCAP([`tee_qv_get_collateral`](https://github.com/intel/SGXDataCenterAttestationPrimitives/blob/4cb5c8b81f126f9aa3ee921d7980a909a9bd676d/QuoteVerification/dcap_quoteverify/inc/sgx_dcap_quoteverify.h#L234-L238))获取所有配套材料 - 客户端 TEE 使用客户端证书通过 TLS 连接向 Vault 发送 POST 请求 通过 `${plugin}/login` 端点发送名称、证明报告和证明配套材料 - 可选挑战可以包含在 POST 请求中,随后包含在 Vault 响应的证明报告中 ``` { "name": "The name of the TEE role to authenticate against.", "quote": "The quote Base64 encoded.", "collateral": "The collateral Json string encoded.", "challenge": "An optional challenge hex encoded." } ``` 响应包含 Vault 令牌,如果包含挑战,则 包含 Vault 证明报告,该报告必须在报价的 report_data 中包含挑战字节。 ``` { "auth": { "client_token": "The Vault token.", "....": "...." }, "data": { "quote": "The vault quote Base64 encoded.", "collateral": "The vault collateral Json string encoded." } } ``` ### 配套 JSON 编码 请参考 [sgx_ql_lib_common.h](https://github.com/intel/SGXDataCenterAttestationPrimitives/blob/4cb5c8b81f126f9aa3ee921d7980a909a9bd676d/QuoteGeneration/quote_wrapper/common/inc/sgx_ql_lib_common.h#L202-L227) ``` { "major_version": uint16, "minor_version": uint16, "tee_type": uint32, "pck_crl_issuer_chain": []byte, "root_ca_crl": []byte, "pck_crl": []byte, "tcb_info_issuer_chain": []byte, "tcb_info": []byte, "qe_identity_issuer_chain": []byte, "qe_identity": []byte } ```
标签:DCAP, EVTX分析, Hashicorp Vault, Intel SGX, JSONLines, SGX, TEE, TLS客户端证书, Vault插件, 加密硬件, 可信执行环境, 可视化界面, 安全启动, 安全固件, 日志审计, 机密计算, 认证插件, 证书认证, 远程证明, 远程验证, 零信任