跳到主要内容

API 安全

我们的 API 基于 HTTPS 协议,使用 POST 方法传输 JSON 数据。为了确保安全并防止数据被篡改,API 要求客户端进行认证,并支持两种认证方式:Basic Auth 和 RSA 签名认证。为保护敏感数据,需要加密部分字段,我们提供两种加密方式:AES 和 RSA。本文将介绍这两种认证机制,并讨论加密敏感数据的两种方式。

认证

1. RSA 签名认证(推荐)

RSA 签名认证通过使用私钥对请求数据进行签名,接收方可以使用发送方的公钥来验证请求的真实性,确保消息未被篡改并确认发送者身份。

工作原理:

客户端使用自己的 RSA 私钥对请求报文进行签名。服务器通过交换过来的客户端的 RSA 公钥验证签名的有效性。

优点:

  • 相比 Basic Auth,安全性更高,采用非对称加密和数字签名。
  • 能有效确保发送方的身份和消息的完整性。
  • 防止重放攻击和中间人攻击。

缺点:

  • 实现复杂度较高,涉及公私钥管理。

2. Basic Auth

Basic Authentication 是一种简单的认证方式,它通过将用户名和密码(或令牌)进行 Base64 编码后在请求头中发送。这种认证方法主要用于简单的身份验证,但本质上并没有加密,因此需要结合 HTTPS 和IP白名单来确保通信安全。

提示

当前版本暂不支持 Basic Auth,将在下一个版本上线,敬请期待!

工作原理:

请求方将用户名和密码以 用户名:密码 形式组合,并使用 Base64 进行编码。编码后的字符串作为 HTTP 请求头中的 Authorization 字段传递。服务器通过解码来验证用户名和密码的有效性。

优点:

  • 实现简单。
  • 许多 HTTP 客户端和服务器端库天然支持 Basic Auth。

缺点:

  • Base64 编码仅是简单的编码,无法提供足够的安全性。
  • 用户名和密码在每次请求中都会被传递,增加了暴露风险。
  • 需要配合HTTPS和IP白名单使用,否则容易遭受中间人攻击。

我们推荐使用 RSA 签名认证而非 Basic Auth,因为 RSA 提供了更高的安全性,能够防止数据篡改,并确保通信双方身份的安全。

数据加密

为了确保敏感数据在传输过程中不会被泄露或篡改,我们的 API 支持使用 RSA 或 AES 加密对敏感数据进行保护。

1. RSA 加密(推荐)

RSA 是一种非对称加密算法,使用一对密钥:公钥用于加密,私钥用于解密。RSA 加密非常安全,适用于加密少量的敏感数据。

工作原理:

发送方使用接收方的公钥对数据进行加密。只有接收方可以使用自己的私钥解密数据。

优点:

  • 安全性极高,适用于需要高安全性的场景。
  • 不需要共享私钥,公钥可公开分发。

缺点:

  • 实现复杂度较高,涉及公私钥管理。

2. AES 加密

AES 是一种对称加密算法,即使用相同的密钥进行加密和解密。AES 的加密速度非常快,适合加密大量数据。

提示

当前版本暂不支持 AES 加密,将在下一个版本上线,敬请期待!

工作原理:

发送方和接收方共享同一密钥,用于加密和解密。

优点:

  • 加解密速度快,效率高。
  • 适合加密大数据量,如文件、长文本等。

缺点:

  • 双方需要安全地交换密钥,因为加密和解密使用相同的密钥。
  • 密钥管理复杂,在分布式系统中尤其具有挑战性。

我们的API只是加密少量的敏感数据,推荐使用 RSA 加密,安全性更高。