主要观点:过去一年在利用 TPMs 的工具上进行探索,对设备认证功能感兴趣,进而想出实现 SSH 证书颁发机构的项目。在企业和个人设置中,利用 TPM 可更好地进行身份认证和设备管理,通过登录 IdP 并证明拥有特定设备来颁发 SSH 证书,ssh-tpm-ca-authority
是一个基于此的项目,分为两部分,第一部分介绍其使用,第二部分解释设备和身份认证的实现,项目部分依赖ssh-tpm-agent
,并阐述了威胁模型、客户端认证流程(包括创建认证密钥、TPM 绑定密钥创建、/attest
和/submit
请求等),还给出了演示视频及指出项目存在的问题(IdP 部分仓促,依赖sigstore
DEX 实例安全性不足等),所有代码可在https://github.com/Foxboron/ssh-tpm-ca-authority获取。
关键信息:
- 利用 TPM 实现远程设备认证和密钥管理。
ssh-tpm-ca-authority
通过 REST API 实现证书颁发机构服务。- 配置文件包含主机、用户等信息,用户需配置用户名、
oidc_connector
、EK 等。 - 客户端通过
match host exec
在 ssh 配置中向 CA 服务器请求证书。 - 客户端认证流程涉及 TPM、
ssh-tpm-agent
和ssh-tpm-ca-authority
之间的交互。 - 存在 IdP 相关的问题,如不同提供商的 OIDC 实现差异等。
重要细节:
- 生成 TPM 密钥通过
ssh-tpm-keygen
。 ca_file
用于签名 CA 证书。- 客户端通过
./cmd/getek
获取 EK。 - SSH 服务器需将
id_ecdsa.pub
作为TrustedUserCAKey
。 - 客户端认证流程中的序列图详细展示各步骤交互。
- 演示视频展示了在本地运行 CA 服务器和
ssh-tpm-agent
时的使用情况。 - 指出 IdP 部分存在的具体问题及可能的改进方向。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。