https协议原理和四次握手

本文详细介绍了HTTPS的概念、工作原理,包括其加密机制、四次握手流程,以及SSL/TLS的安全威胁。同时探讨了HTTPS的优点如数据加密和身份验证,以及缺点如性能影响和成本问题。
摘要由CSDN通过智能技术生成

https基础概念
https(全称:Hypertext Transfer Protocol Secure)是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP之间)。这个系统提供了身份验证与加密通讯方法。HTTPS =HTTP+TLS/SSL。
HTTPS 协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。设计目标主要有三个。
数据保密性:保证数据内容在传输的过程中不会被第三方查看,内容经过对称加密,每个连接生成一个唯一的加密秘钥——解决信息窃听问题。就像快递员传递包裹一样,都进行了封装,别人无法获知里面装了什么。
数据完整性:及时发现被第三方篡改的传输内容,内容传输经过完整性校验——解决信息篡改问题。就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收。
身份校验安全性:第三方无法伪造服务端身份——解决信息劫持问题。保证数据到达用户期望的目的地。就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方,通过身份校验来确保送对了地方。

数字证书:是互联网通信中的身份标识(主要是用户身份信息和公钥),一般由CA中心颁发,既CA认证中心,或第三方权威机构。数字证书上通常包括:CA的签名,证书所有人的公钥,CA中心的签名算法,指纹以及指纹算法,证书的唯一编号,版本,有效期等。
数字签名、签名算法:对信息的摘要【通过hash算法/摘要算法/指纹算法计算的信息摘要/hash值】使用签名算法进行加密,得到的密文就叫做数字签名
指纹、指纹算法/摘要算法【hash值计算】:对消息使用hash算法/摘要算法进行单向处理,获取一个固定长度的信息的摘要/hash值。
加密算法一般分为两种,一种是非对称加密(也叫公钥加密),另外一种是对称加密(也叫密钥加密)
非对称加密:可以使用公钥、私钥分解进行对应的加密、解密的算法,即加解密使用的是不同的一堆秘钥。
对称加密:使用相同秘钥进行加解密的算法

SSL(Secure Socket Layer,安全套接字层)协议是位于OSI七层模型中的表示层(在五层模型中属于应用层)的可靠的面向连接的协议,SSL通过互相认证、使用摘要算法确保完整性和使用加密算法确保私密性,使客户端和服务器之间实现了安全的通讯。该协议主要由SSL记录协议和SSL握手协议组成。
TLS协议与SSL协议具有相同的目的:解决浏览器与服务器通讯中的认证、保密性和完整性的安全问题。TLS协议也可以分为两个部分:记录协议(Record Protocol)和握手协议(Handshake Protocol)。TLS记录协议是在客户端和服务器发送交互消息的时候使用的一个协议。根据RFC5246的规定,TLS记录协议是一个分层协议,主要负责消息压缩、加密和数据的认证。

https的TLS的四次握手流程
四次握手是三次握手之后进行对http加入安全性引入的,在应用层和tcp层加入tls/ssl协议保证传输的安全性,这就需要四次握手。对称加密不安全,容易被窃取,tls采用非对称加密算法,服务端向ca机构申请证书,ca机构提供公钥和私钥,通过证书把公钥传给浏览器,浏览器使用公钥加密最终生成密钥给服务端,之后使用密钥进行通信,保证安全性,ca机构生成数字签名的算法可以保证原文内容被窃取更改可以被发现。
tls是对称加密和非对称加密一起使用,先非对称后对称,因为ca提供的私钥一直在服务端所以其他人无法解析公钥加密后的数据,保证密钥的安全性。

第一次握手

客户端向服务器发送Client Hello消息,消息以明文的形式传输,里面包括客户端支持的协议版本、加密套件、压缩算法、客户端生成的一个随机数R1、扩展字段等。其中加密套件是四个功能的组合,即:认证算法(Au)、密钥交换算法(KeyExchange)、对称加密算法(Enc)和信息摘要算法,随机数R1则会在后面的密钥生成中使用到。

第二次握手

应对客户端发来的Client Hello,服务器将发送Server Hello消息进行响应,该消息以明文的形式传输,相应消息包括确认使用的协议版本、由服务器生成的随机数R2,确认使用的加密套件、确认使用的压缩方法。在发完Server Hello消息后,服务器会马上将自己的Certificate(公钥证书)发送给客户端。Server Key Exchange并非必需选项,只有在选用了DH算法的情况下,服务器需要将DH参数发送给客户端,若选择了RSA算法则不需要发送Server Key Exchange。Certificate Request也并非必须选项,在对于安全性要求较高的场景中,服务器可要对客户端的身份进行认证,因此发起了对客户端公钥证书的请求,一般情况下浏览器都会内置一对独一无二的公私钥。由于第二次握手中包含一些可选选项,因此需要服务器发送一个结束信号Server Hello Done的消息,用来通知客户端Server Hello过程结束。在客户端收到Server Hello Done之后并没有马上进行第三次握手,而是先对服务器传来的证书进行验证,一般会验证证书是否在有效期内,随后根据CRL或者OCSP查询证书是否有效,最后根据证书链从根CA开始验证直到网站证书,以确保证书的真实性。在这个过程中若出现了验证不通过的结果,则抛出相应的错误;若验证通过,就再生成一个随机数Pre-master,并用服务器公钥进行加密,生成PreMaster Key。

第三次握手

Client Key Exchange就是客户端将PreMaster Key发送给服务器,服务器则会用自己的私钥解密得出Pre-master。到这里客户端和服务器都拥有了三个随机数R1、R2和Pre-master,两边再用相同的算法和这三个随机数生成一个密钥,用于握手结束后传输数据的对称加密。Change Cipher Spec是客户端向服务器通知,后面发送的消息都会使用协商出来的密钥进行加密。Encrypted Handshake Message是客户端向服务发送握手数据加密信息,该信息是客户端将前面的握手消息利用协商好的摘要算法生成摘要,再用协商好的密钥对摘要进行加密而的出来的,最后将加密信息发送给服务器,这是客户端发出的第一条加密信息。而服务器也会用协商好的密钥进行解密,若能成功解密则说明协商出来的密钥是一致的。Certificate是在第二次握手的第4步有进行的情况下,即服务器有向客户端请求证书的情况才会有的,这一步是客户端向服务器发送客户端的证书,而服务器收到证书后也会对证书进行相同的验证。

第四次握手

Change Cipher Spec是服务器向客户端通知,后面发送的消息都会使用协商出来的密钥进行加密。Encrypted Handshake Message与第三次握手类似,是服务器发给客户端的用来确定协商的密钥是一致的,也是一条Server Finish消息。

至此TLS四次握手也就完成了,双方已经协商好使用的加密套件和对称密钥,接下来的交互数据都将经过加密后再使用TCP进行传输。

可以看出,TLS四次握手的过程是相对复杂的,要消耗一定的资源,若每次建立HTTPS连接都要进行TLS四次握手的话将会消耗较多的资源,导致效率较低。为了提高建立HTTPS连接的速度,TLS协议设置了两种绘画缓存机制:session ID和session ticket。其中session ID是协议中标准字段,所以基本所有服务器都支持,session ID和协商的通讯信息会保存在服务器端;而session ticket是一个扩展字段,需要服务器和客户端都支持,服务器会将协商的通讯信息加密后发送给客户端保存,密钥只有服务器直到,这就占用了较少的服务器资源。

SSL/TLS的安全威胁
1、SSL/TLS协议设计不足:这类漏洞源自于协议本身就存在的问题。例如在对消息进行分块加密阶段,往往在最后一个块是一个不完整的块而需要进行填充,使其成为一个完整的块才能进行加密,但是协议并未对填充内容进行检验,由此产生了Lucky Thirteen攻击、POODLE攻击、Bleichenbacher攻击、DROWN攻击等。并且协议至今仍然支持一些已经被证实不安全的算法,诸如RC4、3DES和MD5等
2、SSL/TLS协议实现漏洞:这类漏洞并非源自于协议,而是由人为的错误产生的,具体来讲就是人们在配置SSL/TLS的时候未能严格按照协议的要求来配置,由此便产生了漏洞。常见的这类漏洞有三次握手攻击、SLOTH攻击、降级攻击、Heartbleed、Freak攻击等
3、证书相关问题:这类漏洞一般来自于SSL/TLS所依赖的PKI体系。最常见的攻击方式就是伪造证书进而实现中间人攻击,再者,X509证书基于其解释过程复杂在实际应用中也出现过一些问题。

https优缺点
优点:使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器。
HTTPS 协议是由 SSL+HTTP构建的可进行加密传输、身份认证的网络协议,要比 HTTP安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性。
HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

缺点:相同网络环境下,HTTPS协议会使页面的加载时间延长近50%,增加10%到20%的耗电。此外,HTTPS协议还会影响缓存,增加数据开销和功耗。
HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用。
最关键的,SSL 证书的信用链体系并不安全。特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。
成本方面:SSL的专业证书需要购买,功能越强大的证书费用越高。个人网站、小网站可以选择入门级免费证书。SSL 证书通常需要绑定 固定IP,为服务器增加固定IP会增加一定费用。HTTPS 连接服务器端资源占用高较高多,相同负载下会增加带宽和服务器投入成本。
部署 HTTPS 后,因为 HTTPS 协议的工作要增加额外的计算资源消耗,例如 SSL 协议加密算法和 SSL 交互次数将占用一定的计算资源和服务器成本。在大规模用户访问应用的场景下,服务器需要频繁地做加密和解密操作,几乎每一个字节都需要做加解密,这就产生了服务器成本。随着云计算技术的发展,数据中心部署的服务器使用成本在规模增加后逐步下降,相对于用户访问的安全提升,其投入成本已经下降到可接受程度。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值