项目中一直在使用HTTPS做C/S结构的网络通信,本文当做HTTPS的一个简要总结.
Apple更加注重网络传输安全了,从iOS9开始我们的App就已经默认开启ATS(App Transport Security),当然ATS是可以手动关闭的。关于:ATS
一、HTTP的隐患
- 使用http通信是明文的,相当于裸奔,内容随便被窃听.(被抓包工具或嗅探工具爬数据)
- 数据传输时没有验证通信方的身份,身份可能是其他人伪装的.(不确认通信方.服务器被DoS攻击)
- 无法证明交互报文的完整性,请求或者响应报文可能被篡改.(MITM中间人攻击)
二、HTTPS (HTTP Secure)
HTTPS是披着SSL外壳的HTTP
HTTPS不是应用层的新协议,只是在HTTP的接口部分使用SSL(Secure Socket Layer)或TSL(Transport Layer Security)协议.因为TSL是以SSL为原型开发的协议,所以有时会统一称为SSL.
HTTPS是使用对称加密(AES)和非对称(RSA)加密两者并用的混合加密机制.
1.先使用非对称加密的方式安全的交换稍后将要使用的对称秘钥.
2.在确保安全交换了对称秘钥的前提下,使用对称秘钥加密进行网络通信.
数字证书认证机构(CA,Certificate Authority)是客户端(Client)和服务器(Server)双方都信任的第三方机构.
- 服务器和数字证书认证机构之间
1.服务器把自己的公开秘钥登录给CA.
2.CA用CA的私钥对我们服务器的公开秘钥进行数字签名并颁发公钥证书. - 客户端和服务器之间 (协商秘钥)
1.客户端和服务器进行通信,客户端拿到公钥证书后,使用CA的公开秘钥,验证公钥证书的数字签名,来确认服务器公开秘钥的真实性.(CA的公开秘钥早已内置于我们的机器)
2.一旦验证通过,客户端使用公钥证书内的公钥对报文进行加密后发送给服务器.
3.服务器用私有秘钥对报文进行解密.
对CA感兴趣的同学可以看看这个CA 机构是如何保护自己私钥的?
三、HTTPS的慢
- 通信变慢
和HTTP相比,SSL通信要消耗网络资源,网络负载会变慢2-100倍.除去和传输层TCP的连接,发送HTTP的请求/响应外,还要进行SSL通信,所以整体的通讯量的增加不可避免. - 硬件资源的消耗
SSL要进行服务器和客户端双方的加密及解密运算,所以会消耗CPU和内存等硬件资源.
网友评论