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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

光端机的使用方法

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

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

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

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

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

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

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

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

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

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

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

大牛服务器超时位置模拟失败,大牛模拟定位掉线怎么办 | 手游网游页游攻略大全...

发布时间:2016-07-07在第四期"微分享"活动中,有许多游戏大牛向小智讲述了关于玩游戏的妙招.巧招和绝招,现小智将这些内容推送给大家! 1.如何在3v3中取得好名次?(由"天才的小白"玩家供稿) 打3v3 ...标签:游乐网 游戏攻略发布时间&am…

宋佳乐博客全站正版PHP源码下载丨自助建站源码丨音乐外链源码丨最新图床源码丨官方网站源码丨网页跳转源码丨云相册源码丨打包下载

本套源码共包含了六套网站系统,请在下方看演示站: 一:主页跳转演示地址:http://ssl.songjiale.com(无演示图) 二:官方网站演示地址:http://ssl.songjiale.com/upload (…

css3怎么排除第一个,css怎么排除第一个子元素

css排除第一个子元素的方法:1、通过使用伪类选择器“:not”实现排除;2、通过使用“nth-of-type”或者“nth-child”实现排除;3、通过使用“”或者“~”兄弟选择符实现获取排除第一个之外的子元素。本文操作环境:windows7系统、HTM…

如何解决光端机的开关量问题?

光端机开关量问题可以说是光端机的常见问题之一,对监控效果有比较大的影响,那么,我们应该如何解决光端机的开关量问题呢?接下来就由杭州飞畅科技的小编来为大家详细讲解下吧,感兴趣的朋友就一起来了解下! …

什么是电视光端机?电视光端机是怎么分类的?

现如今,随着国内通信网络的发展,电视光端机应用的监控范围也越来越广。在高速公路、银行、电力、电信等的监控领域都要求对视频信号进行远程的传输,目前主要的解决方法是利用光端机将视频信号转化为数字信号通过光纤进行传输。那么&#xff0…

mysql存储过程语法 if_mysql存储过程语法 if

MySql存储过程MySQL 存储过程是从 MySQL 5.0 开始增加的新功能。存储过程的优点有一箩筐。不过最主要的还是执行效率和SQL 代码封装。特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句。特别…

什么是模拟量光端机?模拟光端机品牌有哪些?

模拟光端机采用了 PFM 调制技术实时传输图象信号。发射端将模拟视频信号先进行 PFM 调制后,再进行电-光转换,光信号传到接收端后,进行光电转换,然后进行 PFM 解调,恢复出视频信号。由于采用了PFM 调制技术,…

什么是物理隔离?物理隔离光端机是什么?

什么是物理隔离? 物理隔离,是指采用物理方法将内网与外网隔离从而避免入侵或信息泄露的风险的技术手段。物理隔离主要用来解决网络安全问题的,尤其是在那些需要绝对保证安全的保密网,专网和特种网络与互联网进行连接时&#xff0c…

太极虚拟服务器,太极 中标 云服务器

太极 中标 云服务器 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。云服务器组是对云服务器的一种逻辑划分,云服务器组…

什么是自愈环网光端机?

对于光端机这块,相信大家都有所了解。但是,什么是自愈环网光端机呢?想必很多朋友对此不是很了解,相信大家可能会很感兴趣了解下自愈环网光端机吧。接下来就由飞畅科技的小编来为大家详细介绍下什么是自愈环网光端机吧,…

gui界面怎么分页_什么是用户界面和体验设计

本文译自 Mikos Philips 的 UI vs UX  —  A Guide to UI Design因为发现仍然有小伙伴跑来问我比较基础的专业划分问题,所以翻译了这篇科普文。——用户界面(UI, User Interface)设计是设计软件产品所涉及到的几个交叉学科之一。不论是用户…