谈谈数据传输中的安全性

昨天写了一篇用户密码存储的安全性后,有读者留言询问关于如何保障客户端和服务端数据传输的安全性,这个话题在过去几年正好是我特别关注的一个点,因此我今天试着用个人经验来解答这个问题。浏览器


和密码存储同样,若是客户端的发出来Request经过明文传输是至关危险的,数据包一旦被中途截取到,经过经常使用的抓包软件,Charles或者Fiddler都能直接解析拿到客户端的请求数据,例如用户名密码之类。因此咱们须要数据加密,包括走HTTPS协议。
安全


数据加密的方式微信


对于数据传输加密,简单来看分为两类(实际上还有一类叫作单向加密,这里不展开):对称加密方式非对称加密方式架构

顾名思义,对于对称加密方式,发送方和接收方都使用同一个密钥对信息进行加密、解密。因此对称加密的优势和不足都是很明显的: 优势是对称加密方式速度很快,缺点是不一样类型的通讯端须要维护不一样的密钥,同时因为客户端和服务端都须要保存密钥,因此密钥泄密的潜在可能性也更大。加密

非对称方式规定了密钥须要有一对儿一个公钥(Public Key)和一个私钥(Private Key/Security Key),若是用公钥加密信息,就须要用相同配对的私钥才能解密,反之亦然。非对称方式的特色是数据可靠性至关强,很大程度上保证了身份认证。rest


数字证书的做用
cdn


不过不管是对称或者非对称方式,都不具有防护中间人攻击的能力。当主机A和主机B通讯时,即使他们中间插入了一个"转发"主机C, A、B都不会意识到,而继续觉得它们之间是在直接通讯。C能够不只窃听A、B的通讯还能够对信息进行篡改再传给对方,C即可以将恶意信息传递给A、B以达到本身的目的。get

防止中间人攻击的方法实际上就是身份证认证方式,目前主流方式就是数字签名的方式,可是也是存在利用不对称信息、时间戳、生物信息、物理信息等其它成熟或者是不成熟,公开或不公开的解决方式。it

数字证书是通过权威机构(CA)认证的公钥,经过查看数字证书,能够知道该证书是由那家权威机构签发的,证书使用人的信息,使用人的公钥。它有如下特色:io


一、由专门的机构签发的数字证书才安全有效。

二、签发数字证书是收费的。

三、不会被冒充,安全可信。

四、数字证书有使用期限,过了使用期限,证书变为不可用。CA也能够在试用期内,对证书进行做废操做。

所以,在实际中数字证书+ RSA加密的办法来保障数据传输的安全性。


API访问改走HTTPS


上面提到的数字证书在现实中实施的实例就是HTTPS协议,因此除了代码层面上经过RSA加密,咱们还会将API访问统一改走HTTPS协议,能够从根本上解决数据被篡改的可能性:


1. 避免运营商强插广告,甚至在正常结果前面插一条广告(天朝特点)
2. 手机客户端上被浏览器或者恶意软件篡改或者劫持
3. 阻止用户数据泄露


考虑到以前OpenSSL的滴血漏洞,数据传输的安全性毫不是一劳永逸的,须要时刻保持警戒。

扫描二维码或手动搜索微信公众号【架构栈】: ForestNotes

欢迎转载,带上如下二维码便可

相关文章
相关标签/搜索