EMP信道
EMP信道由客户端与服务器握手流程建立,建立后客户端和服务器之间的通信数据将经过加密传输。EMP信道协议已从1.0版本更新至1.4版本。
1 通用功能
- 加密传输。建立信道后,客户端与服务端将使用密文传输,同时会对请求和响应内容做完整性校验。
- 密钥有效期。信道协商的密钥存在有效期,当客户端在有效期内没有访问服务器时,服务器会将信道数据删除。
- 一次一密。在一些特殊场景(如输入密码),请求中的某个参数需要二次加密,来提高该参数传输的安全性。此时客户端会与服务器在信道中协商一个临时密钥,对该请求参数进行加密传输和解密获取。
2 1.0版本功能
- 单向验证。客户端本地会存放一个根证书,在信道握手流程中,使用该根证书校验服务器返回的公钥证书,从而验证服务器身份。
3 1.1版本新增功能
- 请求防重放。信道建立时,客户端和服务器会协商一个序列号,客户端每次请求需要发送一个比服务端序列号大的值。服务器接收到请求后,会判断客户端序列号和本地序列号大小。如果客户端大,则更新本地序列号,并继续后续处理。否则会拒绝本次访问。
4 1.2版本新增功能
- 双向验证。与单向验证类似,服务器本地也会保存一个根证书。在握手时,客户端会生成一个服务器签发的证书并发送给服务器,服务器使用根证书校验该客户端证书,从而验证客户端身份。
5 1.3版本新增功能
- 客户端防篡改。在服务端上传客户端包自描述文件,在握手建立成功后,客户端对本地自描述文件计算摘要并发送给服务器,服务器使用对应平台的自描述文件对摘要进行验证。如果客户端程序被篡改,那么自描述文件也会发生变化,服务器将校验失败,并销毁建立的信道
6 1.4版本新增功能
- 并发请求。支持异步请求方重放功能。握手过程中,客户端和服务端会协商多组序列号,客户端请求时会将组别和序列号同时上传给服务器,服务器检验对应组别的序列号是否有效。各组的序列号分别维护,互不影响。客户端发送异步请求时,会使用不同组的序列号。使用同一组的序列号只能发送同步请求。解决了之前版本的并发请求问题:客户端发送异步请求时,可能发生序列号较大的请求先到达了服务器,导致序列号较小的请求被拒绝。