【网络篇】- https

https
前言
在写https之前,先简单梳理一下http的一些问题通信使用明文(不加密) , 内容可能会被窃听由于 HTTP 本身不具备加密的功能, 所以也无法做到对通信整体(使用 HTTP 协议通信的请求和响应的内容) 进行加密
TCP/IP是可能被窃听的网络:
互联网窃听图
加密处理防止被窃听手段通信的加密:通过和 SSL(Secure Socket Layer, 安全套接层)或 TLS(Transport Layer Security, 安全层传输协议) 的组合使用,加密 HTTP 的通信内容
加密后通信图
内容的加密:将参与通信的内容本身加密的方式。 由于 HTTP 协议中没有加密机制, 那么就对 HTTP 协议传输的内容本身加密。 即把 HTTP 报文里所含的内容进行加密处理
该方式不同于
SSL或TLS将整个通信线路加密处理, 所以内容仍有被篡改的风险
加密后的内容图
不验证通信方的身份, 因此有可能遭遇伪装任何人都可发起请求
如图
隐患:
无法确定请求发送至目标的 Web 服务器是否是按真实意图返回响应的那台服务器
无法确定响应返回到的客户端是否是按真实意图接收响应的那个客户端
无法确定正在通信的对方是否具备访问权限。 因为某些
Web服务器上保存着重要的信息, 只想发给特定用户通信的权限无法判定请求是来自何方、 出自谁手
即使是无意义的请求也会照单全收。 无法阻止海量请求下的
DoS攻击(Denial of Service, 拒绝服务攻击)
查明对手的证书可以使用SSL确认通信方,SSL不仅提供加密处理, 而且还使用了一种被称为证书的手段,可用于确定方
确认通信方
通过使用证书, 以证明通信方就是意料中的服务器。 这对使用者个人来讲, 也减少了个人信息泄露的危险性
无法证明报文的完整性, 所以有可能已遭篡改所谓完整性是指信息的准确度.若无法证明其完整性, 通常也就意味着无法判断信息是否准确
接收到的内容可能有误
原因:由于
HTTP协议无法证明通信的报文完整性, 因此, 在请求或响应送出之后直到对方接收之前的这段时间内, 即使请求或响应的内容遭到篡改, 也没有办法获悉,换句话说, 没有任何办法确认, 发出的请求 / 响应和接收到的请求 / 响应是前后相同的
如图
像这样, 请求或响应在传输途中, 遭攻击者拦截并篡改内容的攻击称为中间人攻击(Man-in-the-Middle attack, MITM)
中间人攻击
如何防止篡改
常用的是
MD5和SHA-1等散列值校验的方法,以及用来确认文件的数字签名方法
HTTPS
HTTPS=HTTP+ 加密 + 认证 + 完整性保护
概念
HTTP 加上加密处理和认证以及完整性保护后即是 HTTPS,我们把添加了加密及认证机制的 HTTP 称为 HTTPS(HTTP Secure)
使用 HTTPS 通信
本质
HTTPS 是身披 SSL 外壳的 HTTP
HTTPS 并非是应用层的一种新协议。 只是 HTTP 通信接口部分用 SSL(Secure Socket Layer) 和 TLS(Transport Layer Security) 协议代替而已HTTP
与 HTTPS 通信方式区别图
在采用 SSL 后, HTTP 就拥有了 HTTPS 的加密、 证书和完整性保护这些功能,SSL是独立于 HTTP 的协议, 所以不光是 HTTP 协议, 其他运行在应用层的 SMTP 和Telnet 等协议均可配合 SSL 协议使用。 可以说 SSL是当今世界上应用最为广泛的网络安全技术
相互交换密钥的公开密钥加密技术
加密方法:SSL采用一种叫做公开密钥加密(Public-key cryptography) 的加密处理方式,近代的加密方法中加密算法是公开的, 而密钥却是保密的。 通过这种方式得以保持加密方法的安全性
共享密钥加密的困境加密和解密同用一个密钥的方式称为共享密钥加密(Common key crypto system) , 也被叫做对称密钥加密
加密和解密同用一个密钥的方式图
密钥发送问题图
使用两把密钥的公开密钥加密
公开密钥加密方式很好地解决了共享密钥加密的困难
公开密钥加密使用一对非对称的密钥。一把叫做私有密钥 (
private key),另一把叫做公开密钥(public key)。顾名思 义,私有密钥不能让其他任何人知道,而公开密钥则可以随意发 布,任何人都可以获得
使用公开密钥加密方式
HTTPS 采用混合加密机制HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥加密与共享密钥加密相比,其处理速度要慢。所以应充分利用两者各自的优势,将多种方法组合起来用于通 信。在交换密钥环节使用公开密钥加密方式,之后的建立通信交 换报文阶段则使用共享密钥加密方式
混合加密机制图
HTTPS 的安全通信机制
HTTPS
通信图
步骤:客户端通过发送
Client Hello报文开始SSL通信。 报文中包含客户端支持的SSL的指定版本、 加密组件(Cipher Suite) 列表(所使用的加密算法及密钥长度等)服务器可进行 SSL 通信时, 会以Server Hello报文作为应答。 和客户端一样, 在报文中包含SSL版本以及加密组件。 服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的之后服务器发送Certificate报文。 报文中包含公开密钥证书最后服务器发送Server Hello Done报文通知客户端,最初阶段的SSL握手协商部分结束最后服务器发送Server Hello Done报文通知客户端,最初阶段的SSL握手协商部分结束接着客户端继续发送Change Cipher Spec报文。 该报文会提示服务器, 在此报文之后的通信会采用Pre-master secret密钥加密客户端发送Finished报文。 该报文包含连接至今全部报文的整体校验值。 这次握手协商是否能够成功, 要以服务器是否能够正确解密该报文作为判定标准服务器同样发送Change Cipher Spec报文服务器同样发送Finished报文服务器和客户端的Finished报文交换完毕之后, SSL 连接就算建立完成。 当然, 通信会受到SSL的保护。 从此处开始进行应用层协议的通信, 即发送HTTP请求应用层协议通信, 即发送HTTP响应最后由客户端断开连接。 断开连接时, 发送close_notify报文。 上图做了一些省略, 这步之后再发送TCP FIN报文来关闭与TCP的通信
完整流程图解
CBC
模式(Cipher Block Chaining): 又名密码分组链接模式。 在此模式下, 将前一个明文块加密处理后和下一个明文块做 XOR 运算, 使之重叠, 然后再对运算结果做加密处理。 对第一个明文块做加密时, 要么使用前一段密文的最后一块,要么利用外部生成的初始向量(initial vector, IV)
HTTPS
使用 SSL(Secure Socket Layer) 和 TLS(Transport Layer Security) 这两个协议
缺点:
1)
HTTPS也存在一些问题, 那就是当使用SSL时, 它的处理速度会变慢2) 与纯文本通信相比, 加密通信会消耗更多的
CPU及内存资源。 如果每次通信都加密, 会消耗相当多的资源, 平摊到一台计算机上时, 能够处理的请求数量必定也会随之减少
HTTPS
使用SSL图
综合以上缺点
如果是非敏感信息则使用
HTTP通信, 只有在包含个人信息等敏感数据时, 才利用HTTPS加密通信











评论