【网络安全技术】传输层安全——SSL/TLS

一、TLS位置及架构

TLS建立在传输层TCP/UDP之上,应用层之下。

所以这可以解决一个问题,那就是为什么抓不到HTTP和SMTP包,因为这两个在TLS之上,消息封上应用层的头,下到TLS层,TLS层对上层消息整个做了加密,然后套了TLS头下到传输层,套上TCP头给IP,IP套上IP头然后路由,找到下一跳之后ARP问MAC地址,然后封上MAC头,进链路层传输。所以能看到的是TLS头、TCP头,IP头和MAC头。

下面这个图是TLS的架构,TLS内部也分了层,最上层相当于是消息的类型,这几种类型的消息都要下到Record层,套Record头,走Record结构来传输。

握手协议就是建连接的,改变Cipher spec协议就是协商用到的加密算法什么的东西的,Alert协议是返回一些警报,HTTP就是正常的加密的数据,心跳协议是用来维持连接的。

等下可以通过抓到的包来更清晰的看出来这个架构。

二、TLS握手协议

整体流程如下,从RFC 5246文档里偷过来的,

      Client                                               Server

      ClientHello                  -------->
                                                      ServerHello
                                                     Certificate*
                                               ServerKeyExchange*
                                              CertificateRequest*
                                   <--------      ServerHelloDone
      Certificate*
      ClientKeyExchange
      CertificateVerify*
      [ChangeCipherSpec]
      Finished                     -------->
                                               [ChangeCipherSpec]
                                   <--------             Finished
      Application Data             <------->     Application Data

1.Phase 1

一步一步看,先看绿色框起来的两个hello

client hello是第一个消息,注意区分这个握手和TCP握手之间的区别,TCP三次握手是建TCP连接用的,而TLS要走TCP连接,所以在TLS握手之前,TCP已经握完三次手了。

这是访问一个页面https协议的过程,虽然不知道为什么所有包都有两个,但还是可以清晰地看出,TCP三次握手是在TLS ClientHello之前完成的,同时,看TLS下面的这两个TCP ACK,这也说明了TCP在TLS之下,所以TLS不能加密TCP的头。

我们来看看这个hello包长什么样。首先能看出TLS所在的层级,正如刚才所说,他在TCP之上。

其次TLS的内容,这里是handshake Protocol,使用TLS Record protocol封装,所以TLS的所有内容协议,包括握手协议、改变Cipher spec协议、Alert协议、HTTP、心跳协议都是走Record Layer的,所以实际上TLS分两层,在TCP紧上面那层是Record 协议,然后在上边是剩下的协议。

然后看内容吧,对比刚才那张图,这里包括了TLS的版本,随机数,session ID,cipher suite(也就是客户端能接受的加密、认证、密钥交换算法),还有压缩方法。剩下的一堆extension列出了更加细节的客户端所支持的算法,这样服务器只能在这些列出的里面选择。

接下来是Server hello,

他会选择一系列的方法,作为响应回复给Client。这里的一些extension例如session_ticket是用来当session断开时客户端快速连接到服务器的凭证,以及下面的对于应用层协议的下协商。

2.Phase 2

这里阶段二还是抓个包看看,这wireshark不知道抽什么风,这三个Certificate,Server Key Exchange和Server Hello Done都在一层的一个包里,他给分了两个。

看这三个东西还都是封到了Record Layer里,这三个分别顾名思义,证书就是服务器把他的X.509证书给客户端,交换密钥就是服务器通过hello里跟客户端商量的协商密钥算法来交换公钥,这里是椭圆曲线DH。这之后还有可选的服务器向客户端要证书。之后就是server hello done表示他这边结束了,该客户端了。

别忘了这些包都是走的TCP,到了对方那都要回ACK的。

3.phase 3

前面二阶段server发来的证书,client首先会验一下真假,使用CA的公钥来验证证书的签名。对了之后,首先,如果先前服务器要了客户端的证书,客户端会先把他的证书回给服务器。然后他会用server的公钥来验server发来的key exchange参数的签名,之后再生成自己的公钥交换信息,

这就是下面抓到的包,第一个就是client Key exchange的record。

接下来还有一个certificate verify,这个是只有刚才客户端发送了有签名能力的证书才有的一步。

4.phase 4

然后是Change Cipher Spec,这个消息你看长度就1字节,他就是简单的告诉对方我已经将刚才咱们商量的加密什么的投入使用了,所以他发的接下来的包都是使用刚才协商好的东西加密或认证的了。在这之前,客户端和服务器交换完密钥,获得了一个比如DH公共秘密之后,这个公共秘密叫做pre-master secret,这个结合一些其他的例如随机数之类的信息,再来生成最终的session key,Change Cipher Spec代表的就是这个最终的session key投入使用。

后面跟的是client finished,这个永远紧跟在Change Cipher Spec之后,用于验证整个握手的成功。客户端会计算之前所有的握手消息的一个mac,加密之后传给服务器。所以下面抓的包显示这是加密的信息。

这之后,服务器端收到刚才客户端发来的那条消息之后,由于之前在hello里说好了要有new session ticket用来之后快速恢复session,所以这第一个record就是new session ticket,然后是服务器端的Change Cipher Spec,之后是服务器的finish,和client的同理,是计算先前的所有握手消息的mac,同样是加密之后发送。

这之后握手就结束了,这期间任何的错误都会引起alert协议报错,从而终止过程。

三、Alert Protocol

这个就是报各种错误,包括下面这些

• bad_record_mac

• handshake_failure

• decryption_failed

• bad_certificate

四、Heartbeat protocol

这个就是周期性的发送信号,比如用来同步。

他有两个目的,一个是确保双方还活着,另一个是防止有些防火墙会关闭空闲连接。

五、Record protocol

这个刚才也看了,就是封装刚才提到的所有的东西的,格式就是下面这样

content type就会是比如刚才所有握手阶段的Record都是handshake(22),实际发的包的type会是Application Data(23),也可能回事Alert(21)等等。

两个Version就是哪个版本,前面讲的例子都是TLSv1.2,长度就是后面的东西有多长。

接下来看看这个Record是怎么生成的吧,比如有加密、认证、分段、压缩等步骤。

首先拿到具体的数据之后,要分成小于等于2的14次方byte的段,然后如果之前协商了压缩,那么就会压缩。

接下来计算MAC然后接上去,对整个东西加密,然后再套上TLS Record的头,这就是完整的TLS处理完的,可以直接发给下层TCP的东西了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Bert-vits2-v2.2新版本本地训练推理整合包(原神八重神子英文模型miko)

近日&#xff0c;Bert-vits2-v2.2如约更新&#xff0c;该新版本v2.2主要把Emotion 模型换用CLAP多模态模型&#xff0c;推理支持输入text prompt提示词和audio prompt提示语音来进行引导风格化合成&#xff0c;让推理音色更具情感特色&#xff0c;并且推出了新的预处理webuI&am…

GPT-4.5!!!

GPT-4 还没用明白&#xff0c;GPT-4.5 就要发布了。 最近&#xff0c;OpenAI 泄露了 GPT-4.5 的发布页面&#xff0c;除了进一步增强复杂推理和跨模态理解&#xff0c;GPT-4.5 增加了一个更加强大的功能——3D。 3D 功能的进一步支持&#xff0c;也就意味着多模态最后一块版图…

Linux部署Nacos注册中心结合内网穿透实现远程访问UI管理界面

文章目录 1. Docker 运行Nacos2. 本地访问Nacos3. Linux安装Cpolar4. 配置Nacos UI界面公网地址5. 远程访问 Nacos UI界面6. 固定Nacos UI界面公网地址7. 固定地址访问Plik8. 结语 Nacos是阿里开放的一款中间件,也是一款服务注册中心&#xff0c;它主要提供三种功能&#xff1a…

Keil的配置向导

配置向导 配置向导是一个集成的编辑器实用程序&#xff0c;用于在汇编、C/ c或初始化文件中生成类似gui的配置控件。使用源代码中的配置向导注释来生成控件。 官方例子 名称含义 Option 是设备属性&#xff0c;可以用树状结构表示。每个项目都可以有一个解释性的工具提示。V…

阿里云|人工智能(AI)技术解决方案

函数计算部署Stable Diffusion AI绘画技术解决方案 通过函数计算快速部署Stable Diffusion模型为用户提供快速通过文字生成图片的能力。该方案通过函数计算快速搭建了AIGC的能力&#xff0c;无需管理服务器等基础设施&#xff0c;专注模型的能力即可。该方案具有高效免运维、弹…

Ubuntu安装ARM交叉编译器

Ubuntu安装交叉编译器 更新apt # 更新apt sudo apt update安装gcc sudo apt install build-essential查看gcc版本 gcc -v下载交叉编译工具 复制到用户目录 解压 tar -xvf gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf.tar.xz移动到/opt/下 sudo ./gcc-linaro-5.…

天猫数据平台-淘宝天猫数据-天猫销售数据分析:11月天猫平台滑雪运动装备行业销量翻倍!

随着天气变冷、冬季来临&#xff0c;迎来了疫情后的首个滑雪季&#xff0c;加之自冬奥会结束以来&#xff0c;大众参与冰雪运动的热度持续攀升&#xff0c;因此&#xff0c;冰雪运动的需求正集中释放。 根据相关数据显示&#xff0c;11月以来&#xff0c;全国滑雪场门票预订量较…

Leetcode—746.使用最小花费爬楼梯【简单】

2023每日刷题&#xff08;六十一&#xff09; Leetcode—746.使用最小花费爬楼梯 算法思想 参考灵神 实现代码 class Solution { public:int minCostClimbingStairs(vector<int>& cost) {int n cost.size();vector<int> f(n 1);for(int i 2; i < n;…

C# WPF上位机开发(ExtendedWPFToolkit扩展包使用)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 虽然个人人为当前的c# wpf内容已经足够多&#xff0c;但是肯定还是有很多个性化的需求没有满足。比如说不够好看&#xff0c;比如说动画效果不好&a…

从人的安全价值观看企业的安全发展

文章目录 每日一句正能量前言感受之一&#xff0c;安全价值观是体现个人人生价值的最高境界&#xff0c;是人与企业和谐发展的基本保障&#xff0c;也是企业安全发展的理论导向。感受之二&#xff0c;安全价值观是企业承担社会责任的主要表现&#xff0c;是体现企业价值的根基&…

app上架-您的应用在运行时,未同步告知权限申请的使用目的,向用户索取(相机)等权限,不符合华为应用市场审核标准。

上架提示 您的应用在运行时&#xff0c;未同步告知权限申请的使用目的&#xff0c;向用户索取&#xff08;相机&#xff09;等权限&#xff0c;不符合华为应用市场审核标准。 测试步骤&#xff1a;管理-添加-点击二维码&#xff0c;申请相机权限 修改建议&#xff1a;APP在调…

天猫数据分析-天猫查数据软件-11月天猫平台饮料市场品牌及店铺销量销额数据分析

今年以来&#xff0c;饮料是快消品行业中少数保持稳定增长的品类之一。 11月份&#xff0c;饮料市场同样呈现较好的增长态势。根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年11月份&#xff0c;天猫平台上饮料市场的销量为2700万&#xff0c;环比增长约42%&#xf…

数据结构:图文详解 队列 | 循环队列 的各种操作(出队,入队,获取队列元素,判断队列状态)

目录 队列的概念 队列的数据结构 队列的实现 入队 出队 获取队头元素 获取队列长度 循环队列的概念 循环队列的数据结构 循环队列的实现 判断队列是否为空 判断队列是否已满 入队 出队 得到队头元素 得到队尾元素 队列的概念 队列&#xff08;Queue&#xff0…

【网络安全】-Linux操作系统—VMWare软件

文章目录 VMWare软件的安装选择VMWare版本下载VMWare安装过程 VMWare的常用操作创建新的虚拟机配置虚拟机启动和关闭虚拟机安装VMWare Tools VMWare的克隆和快照克隆&#xff08;Clone&#xff09;快照&#xff08;Snapshot&#xff09; 总结 VMWare是一种流行的虚拟化软件&…

物联网对接使用蓝牙还是WiFi,应该如何选择?

蓝牙是一种无线技术协议&#xff0c;可促进连接设备之间短距离的数据交换。它依赖于物理邻近性并使用2.400至2.485 GHz之间的UHF&#xff08;超高频&#xff09;无线电波。蓝牙旨在创建个人区域网络&#xff08;PAN&#xff09;并在笔记本电脑、智能手机和外围设备等计算设备之…

webview 的 title 和 url

在Appium以混合型App进行自动化操作时&#xff0c;遇到WebView时切换至WebView才能进行操作。当遇到多个WebView时&#xff0c;可以利用 title 和 url 切换至相应的 WebView。

✺ch5——纹理贴图

目录 加载纹理图像文件纹理坐标在着色器中使用纹理&#xff1a;采样器变量和纹理单元纹理贴图&#xff1a;示例程序多级渐远纹理贴图各向异性过滤环绕和平铺透视变形材质——更多OpenGL细节补充说明 纹理贴图是在栅格化的模型表面上覆盖图像的技术。 它是为渲染场景添加真实感的…

宏基因组学Metagenome-磷循环Pcycle功能基因分析-从分析过程到代码及结果演示-超详细保姆级流程

大背景介绍 生信分析,凡事先看论文,有了论文就有了参考,后续分析就有底了,直接上硬菜开干: PCycDB: a comprehensive and accurate database for fast analysis of phosphorus cycling genes - PubMed 数据库及部分分析代码github库: GitHub - ZengJiaxiong/Phospho…

docker 与 ffmpeg

创建容器 docker run -it -v /mnt/f/ffmpeg:/mnt/f/ffmpeg --name ffmpeg 49a981f2b85f /bin/bash 在 Linux 上编译 FFmpeg&#xff1a; 安装依赖库&#xff1a; sudo apt-get update sudo apt-get install build-essential yasm cmake libtool libc6 libc6-dev unzip wget下…

SpringCloud-高级篇(八)

&#xff08;1&#xff09;TCC模式 前面学了XA和AT模式&#xff0c;这两种模式最终都能实现一致性&#xff0c;和隔离性&#xff0c;XA是强一致&#xff0c;AT是最终一致&#xff0c;隔离性呢XA是在第一阶段不提交&#xff0c;基于事务本身的特性来完成隔离&#xff0c;AT则是…