网络请求签名系统的作用与原理

网络请求签名系统的作用与原理(以HTTPS POST请求为例)

一、签名系统的作用

签名系统就像快递包裹的“封条”。当你在网上点外卖时,商家会在包装袋贴上一个封条。如果封条破损,你就知道包裹可能被打开过。签名系统在HTTP请求中的作用类似,主要解决以下问题:

  1. 防篡改:确保请求参数(如金额、用户ID)在传输过程中未被修改 。
  2. 身份验证:证明请求来自合法用户(比如证明你是外卖平台的注册商家)。
  3. 防重放攻击:避免黑客截获请求后重复发送(比如多次扣款)。

二、核心概念:AK、SK、Sign
  1. AK(Access Key)

    • 作用:类似“用户名”,用于标识请求方的身份。
    • 特点:公开的,会直接放在请求中(如URL参数或请求头)。
    • 例子:外卖平台给每个商家分配一个唯一的AK,如 AK=12345
  2. SK(Secret Key)

    • 作用:类似“密码”,用于生成签名。
    • 特点:严格保密,只在客户端和服务端存储,绝不传输。
    • 例子:商家收到SK SK=abcde,但请求中不会出现这个值。
  3. Sign(签名)

    • 作用:由SK和请求内容生成的“指纹”,用于验证请求的合法性。
    • 生成方法:将请求参数、时间戳、AK等数据按规则拼接,再用SK加密(如HMAC-SHA256算法)。
    • 例子:请求参数拼接成 user=小明&price=100,用SK加密后得到 sign=xyz987

三、签名系统的原理(以网购为例)

假设你在APP下单购买100元的商品:

  1. 客户端生成签名
    • 步骤1:收集请求参数(商品ID、价格、时间戳等),按字母顺序排序并拼接,如 amount=100&item=phone&time=202503121200
    • 步骤2:将SK(如 SK=abcde)作为密钥,用加密算法(如HMAC-SHA256)对拼接后的字符串生成签名。
    • 步骤3:将AK和签名附加到请求中,如:
     POST /api/order  
     AK=12345&amount=100&sign=xyz987  
  1. 服务端验证签名
    • 步骤1:根据AK找到对应的SK(如数据库查询 AK=12345 对应 SK=abcde)。
    • 步骤2:用同样的规则拼接请求参数,并用SK生成签名。
    • 步骤3:对比客户端传来的签名和服务端计算的签名。如果一致,说明请求合法;否则拒绝。

四、AK/SK和Sign的产生方法
  1. AK和SK的分配

    • 服务端(如支付宝)为每个用户生成一对AK/SK,通过安全渠道(如加密邮件)分发给客户端。
    • AK示例AK=8adc3f9d(随机字符串)。
    • SK示例SK=5a7e2b8c(更复杂的随机字符串)。
  2. Sign的生成规则

    • 规则1:参数排序(如按字母顺序)。
      例如:原始参数 timestamp=123&user=小明 → 排序后 timestamp=123&user=小明
    • 规则2:拼接后加密。
      例如:拼接字符串 amount=100&timestamp=123 + SK → 通过HMAC-SHA256生成 sign=xyz987
    • 规则3:加入时间戳和随机数,防止重放攻击(如1分钟内有效)。

五、类比帮助理解
  1. 信封类比

    • AK像信封上的“寄件人姓名”(公开可见)。
    • SK像信封的“火漆印章秘钥”(只有你和收件人有)。
    • Sign像火漆印章的图案(用秘钥生成,他人无法伪造)。
  2. 网购订单类比

    • 你填写订单(请求参数)后,用SK生成一个“防伪码”(Sign)。
    • 平台收到订单后,用同样的SK重新计算防伪码。如果一致,说明订单未被篡改。

六、总结
  • 签名系统是网络请求的“安全卫士”,通过AK/SK和Sign的组合,解决了身份验证、防篡改、防重放三大问题。
  • AK用于“你是谁”,SK用于“证明你是你”,Sign是“证明过程”的结果。
  • 实际开发中,只需按照接口文档的规则生成Sign即可,加密算法由服务端实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值