升级打怪-图解HTTP(第七章)

14 篇文章 0 订阅
7 篇文章 0 订阅

7 确保Web安全的HTTPS

7.1 HTTP缺点

7.1.1通信使用明文(不加密),内容可能会被窃听

TCP/IP协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窥视,例如:抓包工具或嗅探器

7.1.2 不验证通信方的身份,因此有可能遭遇伪装

  • 无法确定请求发送至目标的web服务器是否按真实意图返回响应的那台服务器.有可能是已伪装的web服务器
  • 无法确定响应返回到的客户端是否按真实意图接收响应的那个客户端.有可能是已伪装的客户端
  • 无法确定正在通信的对方是否具备访问权限.因为某些web服务器上保存着重要的信息,只想发给特定用户通信的权限
  • 无法判定请求是来自何方,出自谁手
  • 即使是无意义的请求也会照单全收.无法阻止海量请求下的Dos攻击

7.1.3 无法证明报文的完善性,所以有可能已遭篡改

接收到的内容可能有误,没有任何办法确认,发出的请求/响应和接收到的请求/响应是前后相同的

7.2 HTTPS请求流程

在这里插入图片描述

1.客户端对服务器发起请求,服务器收到请求,返回给客户端一个经过CA组织验证的证书.(里面包含了加密数据的公钥和服务器一系列描述信息)
2.客户端收到证书,利用本地浏览器经过认证的解析程序解析证书,若证书安全形成一个随机值,利用证书的公钥加密该随机值(形成对称加密的私钥),该随机值是用于后面服务器的对称解密措施.
3.客户端把该私钥发送给服务器,服务器利用证书中的私钥进行解密.服务器利用证书中的私钥进行解密.到这一步,服务器和客户端都安全的获取一个对称加密的密钥.
4.客户端利用对称密钥进行加密,并发送服务器
5.服务器利用对称密钥进行解密,至此HTTPS的传输过程完成.

需要注意的是:证书的作用是利用非对称加密,让客户端与服务端安全的获取一个对称加密的密钥。所以,要注意只有开始认证证书的时候有非对称加密。后面的都是对称加密。
这样做的好处是:保证安全的同时,能提高访问速度。因为非对称加密所耗费的时间比对称加密要长。这也叫做混合加密法。

WireShark抓Https数据流程分析

在这里插入图片描述
整个HTTPS请求过程如下:

  • TCP三次我输
  • 使用TLSv1.2进行SSL握手
  • 使用握手协商好的密钥对HTTP进行加密传输
  • TCP四次握手

参考链接:Wireshark 抓包理解 HTTPS 请求流程

7.3 HTTPS安全通信机制

在这里插入图片描述

  • 步骤一:客户端通过发送Client Hello 报文开始SSL通信.报文中包含客户端支持的SSL的指定版本,加密组件列表.
  • 步骤二:服务器可进行SSL通信,会以Server Hello报文作为应答.和客户端一样,在报文中包含SSL版本以及加密组件.服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的
  • 步骤三:之后服务器发送Certificate报文.报文中包含公开密钥证书,
  • 步骤四:最后服务器发送Server Hello Done报文通知客户端,最初阶段的SSL握手协商部分结束
  • 步骤五:SSL第一次握手结束之后,客户端以Client key Exchange报文作为回应.报文中包含通信加密中使用的一种被称为Pre-master secret的随机密码串.该报文已用步骤3中的公开密钥进行加密
  • 步骤六:接着客户端继续发送Change Cipther Spec报文.该报文会提示服务器,再次报文之后的通信会采用Pre-master secret密钥加密
  • 步骤七:客户端发送Finished报文.该报文包含连接至今全部报文的整体校验值.这次握手协商是否能成功,要以服务器是否能够正确解密该报文作为判定标准
  • 步骤八:服务器同样发送Change Cipher Spec报文
  • 步骤九:服务器同样发送Finished报文
  • 步骤十:服务器和客户端的Finished报文交换完毕之后,SSL连接就算建立完成.当然,通信会受到SSL的保护.从此处开始进行应用层协议的通信,即发送HTTP请求
  • 步骤十一:应用层协议通信,即发送HTTP响应
  • 步骤十二:最后由客户端断开连接.断开连接时.发送close_notify

7.4 加密,认证,完整性保护

7.4.1 SSL

定义

安全套字接(Secure Socket Layer,SSL)协议时web浏览器与web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别和保密.
SSL是Netscape于1994年开发的,后来成为了世界上最著名的web安全机制,所有主要的浏览器都支持SSL协议
目前有三个版本:2、3、3.1,最常用的是第3版,是1995年发布的。

特性
  1. 保密:在握手协议中定义了会话密钥后,所有的消息都被加密
  2. 鉴别:可选的客户端认证,和强制的服务器端认证。
  3. 完整性:传送的消息包括消息完整性检查(使用MAC);
工作原理

1.握手协议
2.记录协议
3.警报协议

握手协议

该协议允许服务器和客户机相互验证,协商加密和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据

记录协议

记录协议在客户机和服务器握手成功后使用,即客户机和服务器鉴别对方和确定安全信息交换使用的算法后,进入SSL记录协议,记录协议向SSL连接提供两个服务:
(1)保密性:使用握手协议定义的秘密密钥实现
(2)完整性:握手协议定义了MAC,用于保证消息完整性

警报协议

客户机和服务器发现错误时,向对方发送一个警报消息。如果是致命错误,则算法立即关闭SSL连接,双方还会先删除相关的会话号,秘密和密钥。每个警报消息共2个字节,第1个字节表示错误类型,如果是警报,则值为1,如果是致命错误,则值为2;第2个字节制定实际错误类型。

参考资料:SSL协议详解

7.4.2 互相交换密钥的公开密钥加密技术

  • 公开密钥加密技术就是非对称加密
  • 共享密钥加密就是对称加密
共享密钥加密的困境

发送密钥就有被窃听的风险,但不发送,对方就不能解密.再说密钥若能安全送到,那数据也能安全送达

使用两把密钥的公开密钥加密

发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,在使用自己的私有密钥进行解密.

采用混合加密机制

1.使用公开密钥加密方式安全的交换在稍后的共享密钥加密中要使用的密钥
2.确保交换的密钥是安全的前提下,使用共享密钥加密方式进行通信

证明公开密钥正确性的证书

公开密钥加密方式存在的问题:无法证明公开密钥本身就是货真价实的公开密钥

为解决上述问题:使用有数字证书机构和其他相关机关颁发的公开密钥证书

流程如下:
1.服务器把自己的公开密钥登录至数字证书认证机构
2.数字证书认证机构用自己的私有密钥项服务器的公开密码部署数字签名并颁发公钥证书
3.客户端拿服务器的公钥证书后,使用数字证书认证机构的公开密钥,向数字证书认证机构验证公钥证书上的数字签名,已确认服务器的公开密钥的真实性
4.使用服务器的公开密钥对报文加密后发送
5.服务器用私有密钥对报文解密

EV SSL证书
  • 证明通信一方服务器是否规范
  • 证明服务器背后运营企业是否真实存在
客户端证书

证明服务器正在通信的对方始终是预料之内的客户端,其作用很和服务器证书一样

认证机构证书

建立在器信用绝对可靠的认证机构颁发的证书

自认证机构证书

OpenSSL这套开源程序,每个人都可以构建一套属于自己的认证机构,从而自己给自己颁发服务器证书

7.5 SSL和TLS

  • TLS是以SSL3.0为原型开发的协议
  • 当前主流的版本是SSL3.0和TLS1.0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值