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插件, 加密硬件, 可信执行环境, 可视化界面, 安全启动, 安全固件, 日志审计, 机密计算, 认证插件, 证书认证, 远程证明, 远程验证, 零信任