一、客户端与服务器的通行采用安全通道
1、使用SSL/TLS方式通信,客户端与服务器采用双向认证,例如https
二、采用多重加解密方式对客户端与服务器的通信数据进行加密传输
1、客户端软件发布前,客户端保存一个公钥,服务器保存一个私钥,客户端与服务器的基础通信接口采用这对秘钥进行加解密 和签名验证;
2、用户身份验证成功后与设备进行绑定,如果更换设备则需要重新认证用户身份。用户与设备绑定后服务器未每个用户生成加解密证书(非对称加密),如果更新设备需要重新生成新的证书,这个证书用于客户端用户与服务器数据交互的加解密使用;
3、系统设置证书更新策略对用户的证书进行更新。
三、身份确认机制,服务器对每个请求都要验证是否合法
1、客户端对每一个api访问请求需要加入时间戳,客户端对业务数据(业务数据需要加密)加上时间戳使用证书进行签名;
2、服务收到请求后首先对数据包进行签名验证,验证数据是否合法,在网络传输过程中是否被串改;
3、服务器使用当前用户的秘钥对业务数据包进行解密,验证业务数据是否合法。
四、对客户端的请求进行一次性有效校验,防止请求被重放
1、服务器通过接收客户端的签名和时间戳,验证请求是否在有效的时间范围内发送,服务器维护在这个时间范围类的所有请求的签名集合,来验证请求是否被重复处理,从而达到请求被重放的目的;
五、数据格式采用自定义二进制协议(破解难度大,开发成本稍高)