# 客户端

为了加强系统的安全性呢,一般情况下,防篡改使用的密钥,都是一户一密的,即每个用户都是不一样的。这样就算客户端暴露在不法分子面前,攻破的也是个别用户,而无法大批量的攻克。

同时,当用户切换设备时,也要更换密钥对,做到一户一密的同时,还要做到同一用户不同设备也使用不同的密钥对,以加强安全性,另外这样做也能做到当用户切换设备时,老设备被踢下线。

因为此时,服务端缓存的是用户的新密钥,老设备的老密钥请求接口时,验签失败,自然也就被踢下去了。

# 服务端

服务端响应数据时,一般都是固定的一个密钥对。但固定密钥对,会有无法更新,或者过期更新难的问题,所以我建议服务端响应数据加签时,使用多对密钥中随机的一个,并在响应数据时,告诉客户端本次使用的是哪一个密钥对。

举个例子:

  1. 服务端生成5对公私钥对,分别用索引a、b、c、d、e表示
  2. 客户端预存这5对公私钥,或其它方法安全的给到客户端。
  3. 服务端响应数据时,随机选一个进行加签,然后告诉客户端本次用的是哪个索引下的。
  4. 客户端验的时候,就用对应索引下的公钥来验签。

这样做的好处呢,有以下几点:

  1. 服务端加签的密钥对是不固定的,增加了破解难度
  2. 如果某一个索引下的密钥被攻破了,就废弃掉不用了
  3. 当密钥对被攻破时,可立刻生成新的,并放在新的索引下,然后将新的公钥证书下发到客户端,即可。