本篇讲解一下,如何设计安全的 API 接口通信策略。主要包含以下三个方面: 1. 启用 HTTPs 2. 数据加密(RSA) 3. 参数签名(MD5)
本篇之后,将继续撰写两篇文章,使用代码实例,讲解 Server 与 Client 的通信处理过程。
HTTPs 协议是由 SSL + HTTP 协议构建的可进行加密传输、身份认证的网络协议,要比 HTTP 协议安全。 使用 HTTPs 对网络传输的内容进行加密,可防止内容监听和内容篡改。 启用 HTTPs 服务,需要申请 SSL 证书 StartSSL
网络安全是一个整体的事件,涉及到个人计算机的安全,协议的安全,传输数据的安全,以及软件开发公司和网站的安全。 单纯的依靠一个 HTTPs 协议并不能解决所有的问题。 因此,为了保证网络传输中数据的安全,不可读性。我们引入 RSA 非对称加密算法。 平台端与客户端,共享各自的公钥,双方加密的信息只有各自的私钥才能解密,只要私钥不泄漏,通信就是安全的。 对于较大的数据,需要进行分段加密。
RSA 算法历史背景
1977 年,三位数学家 Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做 RSA 算法。从那时直到现在,RSA 算法一直是最广为使用的"非对称加密算法"。毫不夸张地说,只要有计算机网络的地方,就有 RSA 算法。
这种算法非常可靠,密钥越长,它就越难破解。根据已经披露的文献,目前被破解的最长 RSA 密钥是 768 个二进制位。也就是说,长度超过 768 位的密钥,还无法破解(至少没人公开宣布)。因此可以认为,1024 位的 RSA 密钥基本安全,2048 位的密钥极其安全。
当接口服务启用了 HTTPs,并使用 RSA 算法对数据进行加密之后,理论上数据的安全性已经很高了。
为了进一步防止传输中的数据被篡改,再增加一道防线:参数签名。
将接口中所有参数名按照字典顺序排序。再把所有参数“参数名1参数1的值a参数名2参数2的值b...”连接起来,使用 MD5 算法,计算出一个签名字符串,与加密的数据一起传输。可防止数据在传输的过程中被篡改。
基于 HTTPs,使用 RSA 加解密算法,并结合 MD5 进行参数签名的通信流程图解。
参考链接
HTTPs 那些事(一)HTTPs 原理
RSA 算法原理(一)
2017-10-20