主页

索引

模块索引

搜索页面

AK/SK

  • AK:Access Key Id, 用于标示用户;

  • SK:Secret Access Key, 是用户用于加密认证字符串和用来验证认证字符串的密钥,其中 SK 必须保密.

  • 通过使用 Access Key Id / Secret Access Key 加密的方法来验证某个请求的发送者身份。

  • 【使用机制】云主机接收到用户的请求后,系统将使用 AK 对应的相同的 SK 和同样的认证机制生成认证字符串,并与用户请求中包含的认证字符串进行比对。如果认证字符串相同,系统认为用户拥有指定的操作权限,并执行相关操作;如果认证字符串不同,系统将忽略该操作并返回错误码。

流程

判断用户请求中是否包含 Authorization 认证字符串。如果包含认证字符串,则执行下一步操作。 基于 HTTP 请求信息,使用相同的算法,生成 Signature 字符串。 使用服务器生成的 Signature 字符串与用户提供的字符串进行比对,如果内容不一致,则认为认证失败,拒绝该请求;如果内容一致,则表示认证成功,系统将按照用户的请求内容进行操作。 原理:   客户端:     1. 构建 http 请求(包含 access key);     2. 使用请求内容和 使用 secret access key 计算的签名 (signature);     3. 发送请求到服务端。

服务端:     1. 根据发送的 access key 查找数据库得到对应的 secret-key;     2. 使用同样的算法将请求内容和 secret-key 一起计算签名(signature),与客户端步骤 2 相同;     3. 对比用户发送的签名和服务端计算的签名,两者相同则认证通过,否则失败。

AKSK 泄露

  • AKSK 安全存储手段缺失,最直白的如硬编码到业务代码中并上传 github,其次也有明文配置到配置文件并在日志中任意打印等等。

  • AKSK 业务隔离手段缺失,比如多个业务共有一对 AKSK,这样任何一个业务造成的 AKSK 泄露都会导致其他业务受影响。

  • AKSK 安全分发手段缺失,比如直接通过微信、企业微信等即时通讯工具对 AKSK 口口相传等等。

主页

索引

模块索引

搜索页面