一.知识回顾:
之前我们一起学习了HTTP1.0、HTTP1.1、HTTP2.0协议之前的区别、以及URL地址栏中输入网址到页面展示的全过程&&DNS域名解析的过程,接下来我们就来学习一下和HTTP协议的相关的考点:【强烈建议收藏:计算机网络面试专题:HTTP协议基本概念以及通信过程、HTTPS基本概念、SSL加密原理、通信过程、中间人攻击问题、HTTP协议和HTTPS协议区别】
二.HTTP协议你知道吗?通信的过程是什么样的?
2.1 HTTP协议基本概念
- HTTP协议,俗称超文本传输协议(Hypertext Transfer Protocol)。HTTP 协议是用来规范超文本的传输。超文本的意思就是在网络上传输包括文本在内的各式各样的消息。
- HTTP 是应用层协议,它以 TCP(传输层)作为底层协议,默认端口为 80。
- HTTP 是一个无状态(stateless)协议,也就是说服务器不维护任何有关客户端过去所发请求的消息。
- HTTP协议扩展性强、速度快、支持跨平台。
2.2 HTTP协议通信过程
- 服务器在 80 端口等待客户的请求。
- 浏览器发起到服务器的 TCP 连接(创建套接字 Socket)。
- 服务器接收来自浏览器的 TCP 连接。
- 浏览器(HTTP 客户端)与 Web 服务器(HTTP 服务器)交换 HTTP 消息。
- 关闭 TCP 连接。
三.那你知道HTTPS协议吗?HTTPS通信过程能讲讲吗?
3.1 HTTPS协议基本概念
- HTTPS 协议(Hyper Text Transfer Protocol Secure),是 HTTP 的加强安全版本。
- HTTPS 是基于 HTTP 的,也是用 TCP 作为底层协议,并额外使用 SSL/TLS 协议用作加密和安全认证。默认端口号是 443。
- HTTPS 协议中,SSL 通道通常使用基于密钥的加密算法,密钥长度通常是 40 比特或 128 比特。
- HTTPS协议保密性好、信任度高。
3.2 SSL/TLS 加密原理
HTTPS在内容传输的加密上使用的是对称加密,非对称加密只作用在公钥和私钥证书验证阶段
- 非对称加密:SSL/TLS 的核心要素是非对称加密,非对称加密只作用在公钥和私钥证书验证阶段。非对称加密采用两个密钥(一个公钥,一个私钥)。在通信时,私钥仅由解密者保存,公钥是由任何一个想与解密者通信的加密者所获取。
- 对称加密:SSL/TLS 实际对消息的加密使用的是对称加密。如果SSL/TLS采用非对称加密方案来通信, 但是非对称加密设计了较为复杂的数学公式算法,实际通信过程,代价高,效率低。所以,我们使用堆成加密的算法来对信息进行加密。
3.3 HTTPS通信过程
- 证书验证阶段
(1).浏览器发起 HTTPS 请求
(2).服务端返回 HTTPS 证书
(3).客户端验证证书是否合法,如果不合法则提示告警 - 数据传输阶段
(1).当证书验证合法后,在本地生成随机数
(2).通过公钥加密随机数,并把加密后的随机数传输到服务端
(3).服务端通过私钥对随机数进行解密
(4).服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输。
具体过程如下图所示:
四.那你知道HTTPS会有什么样的不安全的问题吗?
4.1 中间人攻击
4.1.1 中间人攻击背景分析
如果CA机构不颁发证书,任何人都可以制作证书,此时就缺少对证书的验证,所以客户端发起的是 HTTPS 请求,但客户端完全不知道自己的网络已被拦截,传输内容被中间人全部窃取。那么就会出现中间人攻击的问题,足以可见有一个权威认证机构的好处。
4.1.2 中间人攻击具体过程
- A服务器本地请求被劫持,所有请求均发送到中间人C的服务器
- 中间人C服务器返回中间人C自己的证书
- A客户端创建随机数,通过C中间人证书的公钥对随机数加密后传送给C中间人,然后凭随机数构造对称加密对传输内容进行加密传输
- 中间人C因为拥有客户端的随机数,可以通过对称加密算法进行内容解密
- 中间人客户端C的请求内容再向正规网站B发起请求
- 因为中间人C与正规网站服务器B的通信过程是合法的,正规网站B通过建立的安全通道返回加密后的数据
- 中间人C凭借与正规网站B建立的对称加密算法对内容进行解密
- 中间人C通过与客户端A建立的对称加密算法对正规内容返回的数据进行加密传输
- 客户端A通过与中间人C建立的对称加密算法对返回结果数据进行解密
4.2 HTTPS一定是安全的吗?
4.2.1 HTTPS协议中本地随机数可能被盗取
4.2.1.1 本地随机数被盗取
证书验证是采用非对称加密实现,但是传输过程是采用对称加密,而其中对称加密算法中重要的随机数是由本地生成并且存储于本地的HTTPS
4.2.1.2 如何保证随机数不会被窃取?
其实 HTTPS 并不包含对随机数的安全保证,HTTPS保证的只是传输过程安全,而随机数存储于本地,本地的安全属于另一安全范畴,应对的措施有安装杀毒软件、反木马、浏览器升级修复漏洞等。
4.2.2 HTTPS是会被抓包的
HTTPS协议会被抓包,HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,是可以构建“中间人”网络,代理软件可以对传输内容进行解密。
4.2.2.1 如何防止HTTPS被抓包
HTTPS可以防止用户在不知情的情况下通信链路被监听,对于主动授信的抓包操作是不提供防护的,因为这个场景用户是已经对风险知情。要防止被抓包,需要采用应用级的安全防护,例如采用私有的对称加密,同时做好移动端的防反编译加固,防止本地算法被破解。
五.HTTP协议和HTTPS协议的区别?
- 端口号 :HTTP 默认是 80,HTTPS 默认是 443。
- URL书写格式 :HTTP 的 URL 前缀是 http://,HTTPS 的 URL 前缀是 https://。
- 安全性:HTTP 协议运行在 TCP 之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS 是运行在 SSL/TLS 之上的 HTTP 协议,SSL/TLS 运行在 TCP 之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。
- 耗费资源:HTTPS安全性高,但耗费更多服务器资源;HTTP安全性低,仅需要少量的服务器资源。
六.总结
当前看完了这篇文章,我们一起闭上眼睛仔细的想一想学会了哪些东西?看看你是否能回想起来。
这篇文章我们一起学习了如下的知识:
- HTTP协议你知道吗?通过的过程是什么样的?
- HTTPS协议吗?HTTPS通信过程能讲讲吗? SSL/TLS 加密原理?
- HTTPS会有什么样的不安全的问题吗?中间人攻击、本地加密对儿丢失、如果HTTPS授信登陆后会被抓包
- HTTP协议和HTTPS协议的区别?
内容不在多、而且于精、在于分类,在于我们分类整理之后对于整个知识体系的把控,这个是更加重要的,就好比我们该房子,先有构想,在画图纸,最后实操,整个过程形如流水,你自己也会感觉很舒服,给别人也会一种及其舒适的感觉。加油,相信自己,你一定可以的。
最后,想送给大家一句话。此刻你累了,就放松休息一下,调整一下状态,继续前行,因为时间不等人,你在成长,需要去承担起整个家庭更多的责任。坚持一点,在坚持一点。加油!
我是硕风和炜,我们下篇文章见哦!