cryptojs支持rsa加密_新特性解读 | 从 wireshark 看 MySQL 8.0 加密连接

作者:秦福朗

爱可生 DBA 团队成员,负责项目日常问题处理及公司平台问题排查。热爱 IT,喜欢在互联网里畅游,擅长摄影、厨艺,不会厨艺的 DBA 不是好司机,didi~

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


本文目录:

引言 一、MySQL 5.7 未加密连接的情况 1.1 抓包 1.2 MySQL 通过 tcp 进行连接,并执行测试 SQL 1.3 通过 wireshark 解析抓包 二、MySQL 8.0 加密连接 2.1 抓包 2.2 MySQL 通过 tcp 进行连接,并执行测试 SQL 2.3 通过 wireshark 解析抓包 2.4 分析使用 TLS 加密连接握手过程 写在最后

引言社区之前的文章“快速掌握 MySQL 8.0 认证插件的使用”中说道,MySQL 8.0 使用 caching_sha2_password 认证插件进行加密连接,初步介绍了加密连接,本文从网络抓包层面看一下在使用 caching_sha2_password 插件的 MySQL 8.0 是如何进行加密连接的。一、MySQL 5.7 未加密连接的情况环境:

MySQL 5.7.25

tcpdump 4.9.2

wireshark 3.2.2

1.1 抓包

tcpdump -i eth0 -s 0 host 10.186.65.69 and port 3306 -w ./5.7.cap

1.2 MySQL 通过 tcp 进行连接,并执行测试 SQL

shell> mysql -uroot -pxxxx -h10.186.60.73 -P3306

mysql> show databases;

mysql> select * from qinfulang.sbtest1 limit 1;

mysql> exit

1.3 通过 wireshark 解析抓包

5e5bce05411dec8c6670e6e566ee94ee.png从上图可以分析以下信息:7e4fbc9c9096b2ec433d7bf2a029da69.png从包 9-20 可以看出,没有使用加密连接插件的情况下,在经过抓包工具抓包后,经过 wireshark 就可以直接解析到查询语句,非常不安全。Tips:

此处提供一个小技巧:

在 wireshark 里,编辑-首选项-Protocols-MySQL 里可以设置是否在解析窗口的 info 列里面显示 SQL query 语句以及可以设置 MySQL TCP 默认端口。

776b4d325fb491c4bfc97c0567d8836e.png二、MySQL 8.0 加密连接环境:

MySQL 8.0.15

tcpdump 4.9.2

wireshark 3.2.2

2.1 抓包

tcpdump -i eth0 -s 0 host 10.186.65.69 and port 3306 -w ./8.0.cap

2.2 MySQL 通过 tcp 进行连接,并执行测试 SQL

shell> mysql_8.0 -uroot -pxxxx -h10.186.60.73 -P3306

mysql> show databases;

mysql> select * from qinfulang.sbtest1 limit 1;

mysql> exit

这里在测试 SQL 之外查看一下 status

mysql> status

--------------

./mysql Ver 8.0.15 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)

Current user: root@10.186.65.69

SSL: Cipher in use is DHE-RSA-AES128-GCM-SHA256

Server version: 8.0.15 MySQL Community Server - GPL

Protocol version: 10

Connection: 10.186.60.73 via TCP/IP

TCP port: 3306

可以这里使用的算法为 DHE-RSA-AES128-GCM-SHA256

2.3 通过 wireshark 解析抓包

1ba7c489044100d9255723cdc0e44c2c.png

从上图可以分析以下信息:63a47918f08740fc1b969b8966f5535b.png

2.4 分析使用 TLS 加密连接握手过程

首先,这里为什么是 TLS 而不是 SSL?TLS 为传输层安全性协议,是 MySQL 在客户端与服务器之间进行加密连接的协议。TLS 有时被称为 SSL(安全套接层),但是 MySQL 实际上并不使用 SSL 协议进行加密连接,因为它的加密很弱。TLS 协议通过加密数据来确保在两个通信应用程序之间提供隐私和数据完整性,以便任何第三方都无法拦截通信。它还会验证对等方以验证其身份。通过在两个对等点之间提供安全的通信通道,TLS 协议可以保护消息的完整性并确保其不会被篡改。MySQL 支持多种 TLS 版本协议,此次测试使用 8.0 的 client 为 TLSv1.2。

从 wireshark 中看一下 TLS 握手的步骤:

5ad5a95d2871c768c99e61e4664a95f4.png

分步解析:

包 8:从客户端到服务端进行 ClientHello,进行问候通信,来启动整个握手环节。

bc36c2bca3b03dc4cf096c1572e836a2.png

此处包含:TLS 协议版本号,32 字节的随机数,用于计算 Master secret 及创建加密密钥,客户端用于标识会话的唯一编号 Session ID 以及客户端支持的密码套件列表,打开密码套件列表 Cipher Suites 就能看到 MySQL 8.0 使用的 DHE-RSA-AES128-GCM-SHA256 算法。

包 10:服务器返回的 ServerHello。进行问候返回,

bee8504c0d5f82fbdc19fc8bd38e9bcb.png

此处包含:服务器版本号,服务器的 32 字节随机数,用于生成 Master secret,用来标识与客户端的 Session ID,服务器和客户端都支持的密码套件,此处为 MySQL 8.0 使用的 DHE-RSA-AES128-GCM-SHA256 算法,还有压缩方式,可选,此处为 null。

包 11:

Certificate:服务器向客户端发送 x.509 证书列表对客户端身份进行验证,证书内包含公钥。

0857d5f68bd314002b97267d57fba0cc.png

Server Key Exchange:服务器密钥交换,这里发送服务器使用的 DH 参数。

38573ba14a4e375dca8d66209369574f.png

Certificate Request:客户证书申请,此处是服务器希望对客户端进行身份验证发送的信息,包含了所需要的证书类型。

64867cef64ff93202fc3d897b6431e1f.png

Server Hello Done:服务器打招呼结束,等待客户端返回信息。

89ee57eb338a7c865f7e9b08dd78e7cc.png

包 13:

Certificate:客户端证书。

b288e7be4863535516ae4af5590e801e.png

Client Key Exchange:客户端密钥交换。

75497de8164f1e13eb7976dc7251cef5.png

此处包含:服务器验证客户端协议版本与原始的 client hello 的消息是否匹配,由客户端生成使用服务端公钥加密的随机数 Pre-master secret 以进行服务器对客户端的身份验证。Change Cipher Spec:客户端通知服务器,所有未来的消息都使用刚刚协商的算法与密钥进行加密传输。

fe5db7d90cfb69b9fce14848b5ea8057.png

Encrypted Handshake Message:完成 TLS 消息加密,此处数据已使用刚刚协商的密钥与算法进行了加密。

5bf52332f6c67170e03658d5000b8450.png

包 14:

New Session Ticket:新的会话标签,记录了加密参数。

950b3c386aabe101d464658af4e16559.png

Change Cipher Spec:服务器通知客户机,将使用现有的算法和密钥对信息进行加密。

b3aa6814bb3e9e836500d8fba22e0a4a.png

Encrypted Handshake Message:完成 TLS 消息加密,客户端成功解密并验证了信息,服务器就成功通过了身份验证。

1c1931bd8839a5d51484ed5d21b1400c.png

到此 TLS 消息加密握手过程结束,后面 Application Date 即为加密后的数据流。写在最后MySQL 8.0 的加密插件在使用中兼顾了安全与性能,建议使用默认开启,在 MySQL 8.0.16 后支持 TLSv1.3 协议。目前网络上尝试过对 TLS 解密的手法,经笔者测试均不能在 wireshark 上解密 MySQL 8.0 的 TLS 加密消息。如果有新手法,可留言交流。如果要进行一些 wireshark 对 MySQL 抓包的测试,需要看到 SQL query,目前建议采用 MySQL 5.7 版本或在 MySQL 8.0 上 skip-ssl 关闭加密通信。fb1a0a06dd33d4a5439af9a7437ff68e.png

社区近期动态

ac35820bb135c5ee95b7c9a1cbbbcce3.png

906f44fd5d7288556ffdb256f98326c5.gif 点一下“阅读原文”了解更多资讯

c9d237e8052f8f260f614b6125793cf8.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/343627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021苏州大学计算机考研分数,苏州大学2021考研分数线已公布

基本要求(一)复试分数线1.各基层研究生培养单位根据本单位学科(专业)考生的初试情况和招生计划,自主确定不低于教育部2021年全国硕士研究生招生考试考生进入复试的一区初试成绩基本要求的复试分数线。(1)同一专业学位的全日制与非全日制复试分数线一致。(2)一志愿上…

工业交换机如何预防雷电?

工业交换机需要综合进行防雷防范,因为如果偏重哪一方的防雷只能称为局部防雷,而局部防雷带有“先天不足”问题。所以工业交换机的防雷不能偏重任何一方。那么工业交换机如何防雷呢?接下来我们就跟随飞畅科技的小编一起来详细了解下吧&#xf…

sap-erp实施心得_实施动态代理-比较

sap-erp实施心得有时需要拦截某些方法调用,以便每次调用被拦截方法时都执行自己的逻辑。 如果您不属于Java EE的CDI领域,并且不想使用诸如Aspectj之类的AOP框架,那么您将有一个简单而有效的替代方法。 从1.5版开始,JDK附带了类ja…

保存点云数据_PCL入门系列三——PCL进行数据读写

本节课我们将了解到以下内容:基本的PCL中的数据类型;使用PCL进行简单编程:写文件与读文件。一、PCL库基本数据类型上一节课,我们使用PCL库在本地写入了一个名为test_pcd.pcd的文件。我们划分一下程序的任务步骤:构造pc…

计算机辅助技术课设,《计算机辅助设计技术》课程标准-20210311103339.doc-原创力文档...

.《计算机辅助设计技术》课程标准教研室主任:专业带头人:(部 )主任:教务处处长:教学副院长:审核批准日期:二○一三年 十二月Word 资料.《计算机辅助设计》课程标准(基本信息)课程编码:课程类别&…

工业交换机技术优点

工业领域工作过的人都会知道,工业上的交换机称之为工业以太网交换机,工业以太网交换机就是我们常说的工业交换机,工业交换机是专门为了满足灵活多变的工业应用需求而设计的工业设备,它提供一种高性价比工业以太网通讯解决方案。所…

win8系统的计算机共享在哪里设置方法,win10系统设置与win8系统局域网文件共享的方案...

win10系统使用久了,好多网友反馈说关于对win10系统设置与win8.1系统局域网文件共享设置的方法,在使用win10系统的过程中经常不知道如何去对win10系统设置与win8.1系统局域网文件共享进行设置,有什么好的办法去设置win10系统设置与win8.1系统局…

python中输入字符串中只有字母_python中,只有一个字母的字符串属于类型

python中,只有一个字母的字符串属于类型 答:字符串 智慧职教: 静脉输液流程输液规划的哪一种形式? 答:程序 26. 患者,男性,38岁,体重80kg,从高空坠落后导致肝破裂,入院后须立即进行手术治疗。住院处护理人员首先应 答:护送患者入院 中国大学MOOC: 有人说:“流浪汉都是不想…

光端机的使用方法

光端机是一种不仅可以传输视频信号,还能传输音频、电话、网络、和很多种控制信号的以太网介质传输设备,目前主要使用安防监控行业。那么,光端机是怎么使用的,接下来就由飞畅科技的小编来为大家详细介绍下光端机的使用方法吧&#…

python脚本设置环境变量_详解如何设置Python环境变量?

家好,我是Yivies!相信大家多多少少遇到过这样的情况吧?就是在安装了python之后想完整在命令提示符直接输入python就可以使用的操作,但是会出现输入了python之后找不到命令的情况!例如这样↓↓↓但是!这并不…

vmware服务器虚拟化实施文档,VMware服务器虚拟化

vmware服务器虚拟化技术,简介了服务器虚拟化解决的问题以及vmware服务器虚拟化技术Vm最新版的服务器虚拟化解决方案貌似叫做vSphere_4.1,其中也是包括了ESX和Vcenter来实现功能的,主要能够实现的功能有:1、 Vmotion,实现虚拟机的动…

使用Junit参数在更短的时间内编写更好的单元测试

大多数人都知道单元测试的重要性和好处,以及为什么要在进行的项目中使用它们。 而且,大多数人不喜欢在他们从事的项目中编写单元测试。 TDD的人当然处于另一面,但根据我的经验,他们在IT行业中是少数派。 说到我,我和大…

光端机常见五大故障问题及解决方法

光端机,就是光信号传输的终端设备。光端机在安防中的作用,主要还是起到光端机本身的传输作用。光端机的作用是把一些传输距离比较近的信号转换为传输距离相对较远的信号进行传输,主要的作用是增加传输距离和在监控中起到节约成本的作用。光端…

用香港服务器建收费网站,使用香港站群服务器搭建网站的好处有哪些?

香港站群服务器搭建网站的作用:1、香港站群服务器有利于提高网站被搜索引擎收录情况;2、搭建站群能够有效降低网站被封的风险;3、当网站遭受攻击时,可快速通过带有独立IP的网站来查出问题所在,从而有效提高服务器的维护。香港站群服务器搭建站…

分数化简_分数应用题七讲 (一) 图示法解分数应用题

一、今日一讲图示法就是用线段图(或其它图形)把题目中的已知条件和问题表示出来,这样可以把抽象的数量关系具体化,往往可以从图中找到解题的突破口。运用图示法教学应用题,是培养思维能力的有效方法之一。图示法不仅可以形象地、直观地反映分…

E1光端机和2M光端机有什么区别?

光端机,电信非压缩光端机,就是将多个E1(一种中继线路的数据传输标准,通常速率为2.048Mbps,此标准为中国和欧洲采用)信号变成光信号并传输的设备。E1的定义的就是2048K。 接下来我们就来为大家详细介绍下光端…

javadoc maven_创建Maven源代码和Javadoc工件

javadoc maven许多人都知道Maven源代码和Javadoc工件,但是不知道为什么要创建它们。 我绝对是在这个阵营中–我可以理解为什么人们想要此信息,但是由于需要手动导航Maven存储库,因此获取信息似乎相对效率较低。 然后我被线索棒击中。 这些工…

发送广播_DHCP服务器什么时候发送?为什么request要广播发送?那还不看?

动态主机配置协议:DHCP 用来集中管理、分配IP地址,使网络环境中的主机能够动态获取IP地址、网关地址、DNS服务器地址等信息;DHCP采用客户端服务器模式,端口号:客户端为68(中继模式下67),服务器端为67版本一…

开关量光端机指示灯说明及常见故障问题处理方法

开关量光端机可以使开关量信号通过光缆在光纤上传输双向控制。全数字光传输通道,确保高质量的信号传输。面板上有电源指示灯、光信号指示灯数据信号指示灯,可以直观的检测电源、光信号、数据信号状态。单向系列开关量光端机是高性能,高可靠性…

为特使建立控制平面的指南-部署权衡

部署控制平面组件 构建并设计了控制平面后,您将需要确切确定如何部署其组件。 在这里,您可以选择将控制平面与数据平面共置一处以集中控制平面。 这里还有一个中间立场:部署与控制平面位于同一位置的某些组件,并使某些组件保持集中…