带有设备和身份认证的 SSH CA:ssh-tpm-ca-authority

主要观点:过去一年在利用 TPMs 的工具上进行探索,对设备认证功能感兴趣,进而想出实现 SSH 证书颁发机构的项目。在企业和个人设置中,利用 TPM 可更好地进行身份认证和设备管理,通过登录 IdP 并证明拥有特定设备来颁发 SSH 证书,ssh-tpm-ca-authority是一个基于此的项目,分为两部分,第一部分介绍其使用,第二部分解释设备和身份认证的实现,项目部分依赖ssh-tpm-agent,并阐述了威胁模型、客户端认证流程(包括创建认证密钥、TPM 绑定密钥创建、/attest/submit请求等),还给出了演示视频及指出项目存在的问题(IdP 部分仓促,依赖sigstoreDEX 实例安全性不足等),所有代码可在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-agentssh-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 部分存在的具体问题及可能的改进方向。
阅读 13
0 条评论