[转帖]Https、SSL/TLS相关知识及wireShark抓包分析

https,ssl,tls,相关,知识,wireshark,分析 · 浏览次数 : 0

小编点评

**网络通信的三大风险:** 1. **窃听/嗅探风险**:中间人可以截获客户端、服务器之间的通信数据,一览无遗。 2. **数据篡改风险**:中间人截获数据之后,可以对数据修改之后再发生给对方。 3. **身份伪造风险**:由于网络通信本身的特殊性,通信双方无法具体识别对方的身份,中间人可趁机而入。 **针对上述三大风险的应对措施:** 1. **使用密码加密算法对数据加密**:密码加密可以阻止窃听者截获数据。 2. **使用数字签名算法确保数据完整性**:数字签名可以验证数据来源和数据完整性。 3. **使用数字证书验证通信身份**:数字证书可以证明对方的身份,防止身份伪造。 **其他应对措施:** * 使用 HTTPS 协议对数据进行加密。 * 使用 SSL/TLS 协议在数据传输之前进行加密或数字签名。 * 使用 Wireshark 等工具分析 HTTPS 协议的握手过程。

正文

https://cloud.tencent.com/developer/article/1954070?areaSource=104001.56&traceId=7WZNP412yK3vh7ebw4th0

 

一、网络通信的三大风险

在HTTP协议中,所有报文的发送、接收都是以明文的形式进行的。也就是说,在TCP/IP五层网络模型中,数据直接以明文的形式从应用层(HTTP)发送给传输层(TCP),之间没有任何加密过程,如下图所示:

这将带来以下三大风险:

  • 1、窃听/嗅探风险 中间人可以截获客户端、服务器之间的通信数据,一览无遗。
  • 2、数据篡改风险 中间人截获数据之后,可以对数据修改之后再发生给对方。
  • 3、身份伪造风险 由于网络通信本身的特殊性,通信双方无法具体识别对方的身份,中间人可趁机而入。

那么,针对上面的三大风险,我们有什么样的对策吗?有的。

  • 1、针对窃听/嗅探风险,我们可以对数据使用密码加密算法进行加密,即使中间人截获了我们的数据,由于没有相应的解密密钥,拿到了数据也没法破解。
  • 2、针对篡改风险,我们可以使用相关的数字签名算法,保障数据的完整性。
  • 3、针对身份伪造风险,我们可以通过颁发数字证书来证明对方的身份。

当然了,并不是说HTTP协议本身就一定存在上面的三大风险,我们也可以使用HTTP协议,在数据传输之前对数据进行加密或者数字签名,同样也可以最大程度避免窃听和篡改风险,但是并不能杜绝,因为没有绝对地安全。

二、SSL/TLS协议

SSL/TLS 和 HTTPS 协议联系非常紧密,HTTPS 是在 SSL/TLS 协议基础之上建立起来的。

可以这么理解,HTTPS 中的 S ,指的就是 SSL/TLS 协议本身。

1、发展历史

上面简单总结了关于SSL/TLS协议的发展历程,更加详细的了解,可以参阅维基百科传输层安全性协议。SSL协议是TLS协议的前身,是SSL协议的改进版本。

2、网络层次

SSL/TLS协议位于应用层和传输层之间,用于对上层数据包加密之后传输,同时进行身份、数据完整性校验。

3、基本原理

简单地讲,SSL/TLS就是同时结合各种密码算法、数字签名算法及数字证书等技术的一套协议,目的就是为了保证通信的安全性。

采用SSL/TLS协议,通信双方建立连接之前需要进行握手,目的是协商出会话密钥,用于后续对通信数据的加解密操作。

加密算法分为两大类:

  • 1、对称加密算法 数据加解密使用同一份密钥,加解密速度快,效率高,缺点是密钥的管理难度大,一旦密钥传输泄露,那就没啥用处了。
  • 2、非对称加密算法 数据加解密使用公钥和私钥,公钥用于传输,私钥自己保存,安全性较高,但加解密速度偏慢。

而SSL/TLS则结合两者的优缺点,数据包的加密使用对称加密算法,而对称加密算法的密钥采用非对称加密手段协商获取。

常用的对称加密算法有:DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES

常用的非对称加密算法有:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

常用的数字签名算法有:MAC、MD5、SHA1

三、Wireshark抓包分析

下面使用Wireshark抓包工具简单分析下HTTPS协议的握手过程,以访问百度为栗:https://www.ifeng.com

首先我们要知道握手的目的就是为了解决上面的三大风险,即协商出对话密钥,验证数据完整性、身份认证等。

从上图大致可以总结出握手的基本流程:

  • 1、客户端向服务器端发送一个Client Hello
  • 2、服务器端想客户端返回一个Server Hello
  • 3、服务器端向客户端返回一个Certificate
  • 4、服务器端向客户端返回Server key change,Server Hello Done
  • 5、客户端向服务器端发送Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message
  • 6、服务器端向客户端返回Change Cipher Spec, Encrypted Handshake Message

下面具体分析每一步的详细内容:

  • 1、Client Hello中携带了什么信息呢?

Client Hello中携带了当前客户端支持的TLS协议的版本号(Version)、客户端支持的加密套件(Cipher Suites)、一个随机数、客户端支持的压缩算法(Compression Method)

  • 2、Server Hello中又返回了什么信息呢?

第一步客户端告诉服务端我所支持的相关信息,第二步服务端协商返回确定的信息,如确定使用哪种加密套件(Cipher Suites)或压缩方法等。

  • 3、服务器给客户端下发一份证书
  • 4、服务器端返回给客户端相关D-H算法参数

这些参数后期客户端可以算出会话密钥,如果使用的是RSA算法,那么这一步是不需要的。传递完参数之后,告诉客户端服务器端的握手结束(Done)了。

  • 5、Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message

这一步,客户端根据第四步传过来的公钥,生成一个叫预备-主密钥的pre-master key,然后Client Key Exchange将这个预备-主密钥传给服务器端。服务器端结合自己的私钥解出这个预备-主密钥的信息,得到第三个随机数,所以,到目前为止,客户端和服务器都拥有 Random1 + Random2 + Random3

紧接着两边根据D-H算法及第四步传递的相关参数生成一个会话密钥,后续就使用这个密钥进行通信了。可以看出,会话密钥能不能被破解,关键看第三个随机数能不能被破解,而且第三个随机数用wireShark是抓取不到的。

Change Cipher Spec这一步是告诉服务器端后期的通信都会使用我们协商出来的密钥进行通信。

Encrypted Handshake Message是客户端将前面的握手消息生成摘要再用协商好的秘钥加密(对称加密),这是客户端发出的第一条加密消息。服务端接收后会用秘钥解密,能解出来说明前面协商出来的秘钥是一致的。

  • 6、Change Cipher Spec, Encrypted Handshake Message

同第5步,如果服务器端通过D-H算法能够解密摘要,那么服务器端应该告诉客户端说我们之间协商的会话密钥是一致的。

与[转帖]Https、SSL/TLS相关知识及wireShark抓包分析相似的内容:

[转帖]Https、SSL/TLS相关知识及wireShark抓包分析

https://cloud.tencent.com/developer/article/1954070?areaSource=104001.56&traceId=7WZNP412yK3vh7ebw4th0 一、网络通信的三大风险 在HTTP协议中,所有报文的发送、接收都是以明文的形式进行的。也就是说

[转帖]QUIC & HTTP/3 Support:主流浏览器和服务端对 HTTP/3 的支持情况(2021年12月更新)

https://sysin.org/blog/quic-http3-support/ 1. 相关概念 1.1 TLSv1.3 TLS 1.3 由 IETF 于 2018 年 8 月正式发布。 SSL 即 Secure Sockets Layer 安全套接字层。TLS 即 Transport Laye

[转帖]Nginx-https证书认证详解

https://developer.aliyun.com/article/885650?spm=a2c6h.24874632.expert-profile.306.7c46cfe9h5DxWK 简介: Nginx-https 1.https基本概述 1.1.SSL主要功能 安全套接层 认证用户和服务

[转帖]Springboot配置https访问

https://www.cnblogs.com/feifuzeng/p/14709372.html 介绍 该篇博文主要介绍如何配置Springboot使其打包部署的服务必须通过HTTPS协议才可访问,仅供内部研究使用。 生成https证书 要使用https,首先需要ssl证书,获取SSL证书有两种方

[转帖]Jmeter脚本录:抓取https请求

Jmeter抓取http请求 https://blog.csdn.net/qq19970496/article/details/86595109 代理设置步骤请参照该篇文章。本文件只做补充HTTPS中证书的相关配置。 HTTPS(SSL)原理 https://blog.csdn.net/qq1997

[转帖]何为SSL证书以及SSL证书的类型都有哪些

http://www.tuidc.com/helpinfo/28573.html 简述: 什么是SSL证书呢?我们都知道目前互联网安全威胁愈演愈烈,各类入侵、劫持事件层出不穷,欺诈、钓鱼网站比比皆是。https加密传输方案在传输层可有效防止他人截获,同时客户端浏 什么是SSL证书呢?我们都知道目前互

[转帖]你怎么看Data studio普通用户采用非SSL的方式连接openGauss?

https://zhuanlan.zhihu.com/p/365144226 关闭SSL认证 由于openGauss默认开启SSL认证,个人开发测试并不需要它。因此关闭openGauss的远程用户登录SSL认证模式。 1.找到postgresql.conf。 cd /gaussdb/data/ope

[转帖]SSL 配置优化的若干建议

转载自本人博客:https://dev.tail0r.com/ssl-optimization/ 如果你配置SSL只是为了网站的网址前有一把锁的标志,那不如直接送你把锁好了。 别想了,这句话不是哪个安全专家说的,是我说的(逃) 今天写一篇文章记录一下自己 SSL 的配置优化过程。以下设置均为 Ngi

[转帖]如何在 NGINX 中安全地分发 SSL 私钥

https://my.oschina.net/u/5246775/blog/7812621 原文作者:Owen Garrett of F5 原文链接:如何在 NGINX 中安全地分发 SSL 私钥 转载来源:NGINX 官方网站 NGINX 唯一中文官方社区 ,尽在 nginx.org.cn 本文介

[转帖]IPSec VPN 与 SSL VPN 区别

https://www.cndba.cn/dave/article/3239 SSL VPN,与传统的IPSec VPN技术各具特色,各有千秋。SSL VPN比较适合用于移动用户的远程接入(Client-Site),而IPSec VPN则在网对网(Site-Site)的VPN连接中具备先天优势。这两