HTTP
HTTP(HyperText Transfer Protocol)超文本传输协议,用于浏览器与服务器之间传输信息。它是以明文的方式去传输数据的,没有任何安全的措施来保障传输的安全性。假设此时攻击者将传输报文抓取,很容易导致敏感信息(身份证号,银行卡号,密码等)的泄露。这是HTTP最致命的缺陷。
HTTPS
为了弥补HTTP的不安全性,在HTTP的基础上加了一层安全套接字SSL/TLS协议,就是HTTPS(Hyper Text Transfer Protocol over SecureSocketLayer)安全套接字层超文本传输协议。SSL/TLS协议有两个作用:
第一、依靠证书来验证服务器的身份
第二、为浏览器和服务器之间的通讯进行加密
谷歌浏览器HTTPS提示 谷歌浏览器HTTP提示
宏观区别
-
http协议是无状态的,而https协议是由SSL/TLS+HTTP构建的加密安全、身份认证的网络协议
-
响应速度
-
端口不同:HTTP—80,HTTPS—443
-
HTTPS需要申请证书,一般是付费的,称为CA数字证书
-
HTTPS是加密的、安全的传输协议;HTTP则是明文传输,无安全性
理论上HTTP响应速度更快,因为他只需要TCP三次握手,而HTTPS除了TCP三次握手之外还需要TLS四次握手来验证身份和建立安全链接
HTTPS如何保证连接的安全性
要研究清楚这个问题,不得不了解一下加密技术,也就是密码学中的知识。
对称加密与非对称加密
对称加密:加密解密使用同一个秘钥
数据发送方将数据明文和加密秘钥经过加密算法生成复杂的秘文,之后向接受方发送秘文。对方收到秘文之后,使用秘钥和加密算法和逆运算将秘文进行解密,拿到明文。
对称加密有一定安全隐患,攻击若拿到加密的秘钥,就可破解秘文,得到数据
非对称加密:加密解密使用不同秘钥
传输过程涉及两个秘钥称为公钥和私钥,公钥是可见的,而私钥则是私有,除了发送双方任何人都拿不到的。其中公钥加密的信息只能用私钥来解密,私钥加密的信息只能用公钥来解密。
数据发送方将数据明文使用接收方的公钥和加密算法进行加密,接受方接受信息后,使用自己私钥和加密逆算法来对密文进行解密,得到明文。
非对称加密有两个目的:
-
传输安全——公钥加密,私钥解密
-
验证身份——私钥加密,公钥解密【由于非对称加密的原理,私钥加密的只能公钥解密,也就验证了身份的真实性】
HTTPS的连接过程【敲重点】
首先是TCP的三次握手,这个我这里就不赘述了,之后是SSL/TLS协议的四次握手连接。
TLS可以理解为升级版的SSL协议,现在我们一般用的都是TLS,只不过已经习惯了SSL这个称呼。两者大体机制大差不差,我这边主要讲TLS 的四次握手过程[下面附图片帮助理解]
TLS四次握手
1.第一次握手ClientHello
客户端向服务端发送ClientHello信息,其中包括客户端的协议版本、支持的加密套件和客户端随机数[Rondom1]
2.第二次握手ServiceHello
服务端接受信息后,向客户端发出响应信息,包括协议版本、加密套件、服务端随机数[Rondom2]和CA数字证书,这是验证身份的关键(实际为用CA私钥加密的服务端公钥)
3.第三次握手[关键]
因为颁发证书的机构是很少的,会提前把CA的公钥内置到浏览器或者操作系统内部,客户端使用内置的CA公钥来对证书进行解密,这样就验证了服务端身份的真实性。然后会对证书的过期时间、版本号、颁发机构等其他参数进行校验。验证通过之后,会根据特殊算法,生成一个随机数,这就是预主密钥[pre_master_key]。使用服务端公钥对预主密钥进行加密,发送给服务端。
4.第四次握手[Finished报文]
服务端使用服务端私钥对客户端信息进行解密,得到预主密钥[pre_master_key]。此时,服务端和客户端都有了三个随机数,分别是客户端随机数、服务端随机数和预主密钥[pre_master_key]。两者都会根据前两次握手约定好的加密套件中的加密算法,将三个随机数加密生成一个会话秘钥[session_key],服务端会将握手信息使用会话秘钥[session_key]加密发送给客户端,这个报文也被称做Finished报文。
客户端使用会话秘钥[session_key]解密,拿到握手信息,验证通过。
注意:其中前两个随机数【客户端随机数,服务端随机数】,不是安全的,只要花点功夫,是完全可以拿到的。但最后一个随机数【预主密钥pre_master_key】是万万不能被其他人拿到的
至此,TLS四次握手完毕,客户端与服务端的安全通道已建立,之后两者之间的通信都使用会话秘钥[session_key]进行加密,属于对称加密阶段。
HTTPS连接过程中是对称加密还是非对称加密?
答案是两者都有
HTTPS中的连接过程先进行非对称加密,后面进行对称加密,两种加密方式都有。可以这样理解,非对称加密的目的就是建立一个安全通道,建这个安全通道是很费资源的,在安全通道建立完成后,就是用对称加密来节省资源文章来源:https://www.toymoban.com/news/detail-827123.html
文章来源地址https://www.toymoban.com/news/detail-827123.html
到了这里,关于HTTPS与HTTP有何区别?【让你彻底搞懂的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!