当前位置: 首页 > news >正文

TLS详解

什么是TLS

TLS(Transport Layer Security)传输层安全性协议 ,它的前身是SSL(Secure Sockets Layer)安全套接层,是一个被应用程序用来在网络中安全的通讯协议, 防止电子邮件、网页、消息以及其他协议被篡改或是窃听。是用来替代SSL的,是一种密码协议,用来提供计算机之间交互的安全通信。主要用于https通信,也用于email,即使通信等。
它实现了将应用层的报文进行加密后再交由TCP进行传输的功能。
SSL 即安全套接字层,它在 OSI 七层网络模型中处于第五层,SSL 在 1999 年被 IETF(互联网工程组)更名为 TLS ,即传输安全层,直到现在,TLS 一共出现过三个版本,1.1、1.2 和 1.3 ,目前最广泛使用的是 1.2,所以接下来的探讨都是基于 TLS 1.2 的版本上的。
所有现代浏览器都支持 TLS 协议,它们都要求服务器提供一个有效的digital certificate(数字证书)来确认身份以建立安全连接。如果客户端和服务器都能提供自己的数字证书,则它们可以互相认证。

TLS基于TCP,建立两个应用进程之间的安全传输连接,如下:
完成身份鉴别(鉴别服务端或客户端)
安全地共享一对协商密钥(主密钥)来进行实现对称加密
保证报文的完整性,防篡改
预防恶意的重放攻击

TLS协议结构

TLS是一个协议簇,由多个子协议组成,其中最主要的协议有两个:
TLS握手协议:用于加密、身份鉴别。
TLS记录协议:用于保证报文的完整性和防重放攻击。

TLS的握手协议

TLS握手协议用于实现在进行安全传输之前必要的身份鉴别和安全参数协商(共享协商密钥),握手协议是TLS握手协议的一部分,负载生成共享密钥以及交换证书。其中,生成共享密钥是为了进行密码通信,交换证书是为了通信双方相互进行认证。
握手协议这一名称中的“握手”,是服务器和客户端在密码通信之间交换一些必要信息这一过程比喻。
由于握手协议的信息交换是在没有加密的情况下进行的(即使用“不加密”这一密码套件),也就是说,在这一协议中所收发的所有数据都可能被窃听者窃听,因此在这一过程中必须使用公钥密码或DH密钥交换。

服务器认证阶段:

1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;

2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;

3)客服根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;

4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。

用户认证阶段:

在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。

TLS的建立过程总共有13个包,第一次建立至少需要9个包。

TLS和Https的关系

HTTPS其实是由两部分组成:HTTP +SSL/ TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。
HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 整体架构如下:

HTTPS 的全称是 Hypertext Transfer Protocol Secure,它用来在计算机网络上的两个端系统之间进行安全的交换信息(secure communication),它相当于在 HTTP 的基础上加了一个 Secure 安全的词眼,那么我们可以给出一个 HTTPS 的定义:HTTPS 是一个在计算机世界里专门在两点之间安全的传输文字、图片、音频、视频等超文本数据的约定和规范。HTTPS 是 HTTP 协议的一种扩展,它本身并不保传输的证安全性,那么谁来保证安全性呢?在 HTTPS 中,使用传输层安全性(TLS)或安全套接字层(SSL)对通信协议进行加密。也就是 HTTP + SSL(TLS) = HTTPS。

相关文章:

  • 【高性能内存池】page cache 5
  • 数据结构:串 及串的模式匹配(KMP)
  • Cortex-A7和Cortex-M7架构处理器取中断向量全流程分析
  • 单片机串口AT指令操作SIM800、900拨打电话
  • 【QT 开发日志】QT 基础控件详解:按钮、文本框与标签的使用
  • 量化交易backtrader实践(三)_指标与策略篇(1)_指标简介与手工双均线策略
  • C语言课程设计题目六:学生信息管理系统设计
  • OpenCV视频I/O(10)视频采集类VideoCapture之从视频流中检索一帧图像函数 retrieve()的使用
  • Java面试常见问题总结
  • L8打卡学习笔记
  • [数据集][目标检测]猪数据集VOC-2856张
  • 开放式蓝牙耳机哪个品牌更靠谱?5款高性价比开放式耳机推荐
  • RHCS认证-Linux(RHel9)-Ansible
  • 元宇宙的未来趋势:Web3的潜在影响
  • 集成MinIO实现文件存储管理:文件上传、文件下载、文件删除、获取文件访问地址、获取文件访问地址
  • HashMap剖析之内部结构
  • JavaScript异步流程控制的前世今生
  • Median of Two Sorted Arrays
  • node学习系列之简单文件上传
  • PHP 的 SAPI 是个什么东西
  • React-redux的原理以及使用
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 观察者模式实现非直接耦合
  • 聊聊hikari连接池的leakDetectionThreshold
  • 如何实现 font-size 的响应式
  • 如何使用 JavaScript 解析 URL
  • 源码安装memcached和php memcache扩展
  • 交换综合实验一
  • ​2021半年盘点,不想你错过的重磅新书
  • # .NET Framework中使用命名管道进行进程间通信
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • #70结构体案例1(导师,学生,成绩)
  • #预处理和函数的对比以及条件编译
  • (10)ATF MMU转换表
  • (23)Linux的软硬连接
  • (3)选择元素——(17)练习(Exercises)
  • (C#)获取字符编码的类
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (力扣)循环队列的实现与详解(C语言)
  • (排序详解之 堆排序)
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • ******IT公司面试题汇总+优秀技术博客汇总
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .java 9 找不到符号_java找不到符号
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .Net FrameWork总结
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比