仅使用 API 密钥和 SSL 的 REST 安全性

信息安全 tls 休息
2021-08-30 02:20:37

我正在寻找构建一些简单的 REST Web 服务,其中:

  • 它们只需要由服务器端客户端调用(即没有移动/javascript/桌面)
  • 它们只能通过 HTTPS 访问(不能降级到 HTTP)
  • 客户端将仅部署到安全、受信任的位置
  • 每个客户端都有一个唯一的 API 密钥
  • 每个服务都将保存一个允许的客户端密钥列表

访问 Web 服务时,客户端将在每个请求正文中提供其唯一的客户端密钥,以对该服务进行身份验证。

问题:这种简单的方法是否足以限制只有已知客户才能访问服务?

1个回答

因此,原则上,如果您遇到服务器到服务器通信的情况,那么一些关于用户身份验证的标准问题并没有发挥作用,您所拥有的听起来很合理,但有些事情需要考虑(以及这些是否relvant 很大程度上取决于您的威胁模型)

  • 使用的 API 密钥是否具有足够的熵来防止猜测或暴力破解攻击?
  • 如果其中一个客户的安全性受到威胁,您是否有密钥撤销/重新颁发的流程。
  • 您是否使用证书固定或类似的东西来减轻客户端计算机遭受 MITM 攻击的风险,其中攻击者有能力从“受信任的”CA 颁发证书。
  • 将密钥加载到客户端和服务器的过程是否降低了参与者复制/滥用密钥的风险?
  • 您如何在服务器端存储密钥?是明文、可逆加密格式还是散列格式?