TLS简单介绍

news2025/2/27 17:05:35

第一篇是我同事讲的,第二篇在网上参考的。
两篇一起看,基本能搞懂TLS。

1、 概述

TLS(Transport Layer Security,安全传输层),TLS是建立在传输层TCP协议之上的协议,服务于应用层,它的前身是SSL(Secure Socket Layer,安全套接字层),它实现了将应用层的报文进行加密后再交由TCP进行传输的功能。
在这里插入图片描述

2、 TLS作用和发展史

TLS协议主要解决如下三个网络安全问题

1、保密(message privacy),保密通过加密encryption实现,所有信息都加密传输,第三方无法嗅探;
2、完整性(message integrity),通过MAC校验机制,一旦被篡改,通信双方会立刻发现;
3、认证(mutual authentication),双方认证,双方都可以配备证书,防止身份被冒充

TLS发展历史

1995: SSL 2.0, 由Netscape提出,这个版本由于设计缺陷,并不安全,很快被发现有严重漏洞,已经废弃。
1996: SSL 3.0. 写成RFC,开始流行。目前(2015年)已经不安全,必须禁用。
1999: TLS 1.0. 互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版。
2006: TLS 1.1. 作为 RFC 4346 发布。主要fix了CBC模式相关的如BEAST攻击等漏洞。
2008: TLS 1.2. 作为RFC 5246 发布 。增进安全性。目前(2015年)应该主要部署的版本。
2015之后: TLS 1.3,还在制订中,支持0-rtt,大幅增进安全性,砍掉了aead之外的加密方式。
由于SSL的2个版本都已经退出历史舞台了,所以本文后面只用TLS这个名字。 一般所说的SSL就是TLS

3、 加密关键词概念解析

概念解析

密钥: 对称加密设置的密码
公钥: 公钥用于加密信息和解密数字签名
私钥: 私钥用于解密信息和加密消息摘要
消息摘要/数字指纹 : 对消息使用HASH算法获取的固定长度的字符串
数字签名: 使用私钥加密的消息摘要
数字证书:CA用自己的私钥,对需要认证的公钥及相关的信息进行加密

1、对称加密:密钥加密,信息的发送方和接收方使用同一个密钥加密和解密数据。

在这里插入图片描述

2、非对称加密:生成两把密钥公钥和私钥。私钥自己保存,公钥用于公开。可以用公钥和私钥中任何一个进行加密,另一个解密。

在这里插入图片描述
在这里插入图片描述

数字证书

数字证书包括:消息+公钥+信息摘要(CA私钥机密后的)
信息摘要=HASH(消息+公钥)

4、 TLS 协议架构

在这里插入图片描述TLS主要分为两层,底层的是TLS记录协议,主要负责使用对称密码对消息进行加密。

上层的是TLS握手协议,主要分为握手协议,密码规格变更协议和应用数据协议4个部分。

握手协议负责在客户端和服务器端商定密码算法和共享密钥,包括证书认证,是4个协议中最最复杂的部分。
密码规格变更协议负责向通信对象传达变更密码方式的信号
警告协议负责在发生错误的时候将错误传达给对方
应用数据协议负责将TLS承载的应用数据传达给通信对象的协议。

5、 TLS握手协议
双向认证
在这里插入图片描述
单向认证
在这里插入图片描述

6、 TLS问题分析方法
TLS握手是建立加密连接的过程,如果握手失败,那么通信将无法建立或者是不安全的。以下是分析和解决TLS握手失败问题的步骤:

(a)确定TLS握手失败的具体原因:TLS握手失败可能有多种原因,例如证书问题、密码套件不匹配、时间戳不正确、密钥长度不支持等。查看TLS握手失败的具体错误信息可以帮助确定问题的根本原因。
(b)检查证书:证书是TLS握手的关键部分。确保证书有效、签名正确、证书链完整,并且证书不过期。如果证书无效,那么TLS握手将无法成功。
©检查密码套件:密码套件是TLS握手的一部分,它决定了客户端和服务器之间使用的加密算法。确保密码套件在客户端和服务器之间匹配,并且支持TLS版本。如果密码套件不匹配,那么TLS握手将无法成功。
(d)检查时间戳:时间戳是TLS握手的一部分,它用于确保握手消息的顺序和一致性。确保时间戳设置正确,并且时钟同步。
(e)检查密钥长度:确保密钥长度符合要求,并且不会因为安全性问题而被拒绝。
(f)检查网络连接:如果网络连接不稳定或者存在中间人攻击等问题,TLS握手可能会失败。确保网络连接稳定,并且不受攻击。
(g)查看TLS日志:TLS日志记录了握手过程中的详细信息,包括每个握手消息的内容和时间戳。查看TLS日志可以帮助诊断问题。
8、 查看服务器TLS具备的能力

下面参考其他网站讲的

1. 对称加密与非对称加密

对称加密

对称加密是通信双方共同拥有一把密钥。
这把密钥可以把明文加密(encryption)成密文,也可以把密文解密(decryption)成明文。
常见的对称加密算法有AES、DES、RC4,其中最常用的是AES。
对称加密的优点是:速度快。
同时也有一个缺点,就是不那么安全,一旦你的密钥被别人窃取了,所有的数据就会在网络的世界里裸奔

非对称加密。

通信双方持有不同的密钥。
服务端的密钥,称之为 私钥(private key),客户端的密钥,称之为 公钥 (public key)。
他们二者的区别是:
1、私钥应仅在服务端保存,绝不可泄露。而公钥可以存在于任何的客户端,即使黑客拿到了也没有关系。
2、公钥加密的密文只有相对应的私钥才能解密
在这里插入图片描述
3、私钥加密的内容,所有与之相对应的公钥都能解密。
4、私钥通常用来生成签名,公钥用来验证签名。
在这里插入图片描述
5、公钥和私钥是相对的,两者本身并没有规定哪一个必须是公钥或私钥。这意味着,公钥只要不对外公开,那就可以做为私钥,私钥公开后也可以做为公钥。

典型的非对称加密算法有 RSA 。

非对称加密的优点,就是安全系数特别高。缺点就是速度会慢一些。

对称与非对称加密结合

当客户端收到的公钥是准确的时候,通信就是安全的。

因为用正确公钥加密过的密文,只有服务端的私钥能解。

那么如何保证,客户端收到正确的公钥呢?

答案是:通过非对称加密来协商对称加密的密钥,服务端一旦把正确的公钥安全地送达到客户端后,后续的通信,为了保证高效通信,再采用对称加密来加密数据。

具体的过程,后面会更加详细的阐述这一过程。

2. 摘要、签名、证书是啥?

信息摘要

一段信息,经过摘要算法得到一串哈希值,就是摘要(dijest)。
常见的摘要算法有MD5、SHA1、SHA256、SHA512等。
关于摘要,有几点需要你明白的:
(a)摘要算法,是把任意长度的信息,映射成一个定长的字符串。
(b)摘要算法,两个不同的信息,是有可能算出同一个摘要值的。
©摘要算法与加密算法不同,不存在解密的过程。
(d)摘要算法不用于数据的保密,而是用于数据的完整性校验。

数字签名

摘要经过私钥的加密后,便有了一个新的名字 – 数字签名。

签名 是在发送方,这是一个加密的过程。
验签 是在接收方,这是一个解密的过程。

那搞懂数字签名的意义是什么?只要回答下面两个问题即可。

第一个问题,有了信息摘要,为何还要有数字签名?
答:信息摘要,虽然也不可逆,但却容易却被伪造。所以信息摘要只用于校验完整性,而要保证信息摘要的正确性,就要依靠数字签名啦。
数字签名的签名和验签是非对称加密,其他人除非拿到私钥,不然没法伪造。

第二个问题,为什么不对内容直接加密,而是对摘要进行加密。
答:由上面我们知道了非对称加密的速度非常慢,如果传输的数据量非常大,那这个加密再解密的时间要远比网络传输的时间来得长,这样反而会得不偿失。

如果我们对传输的内容只有完整性要求,而安全性没有要求(意思是传输的内容被人知道了也没关系)。那就可以对摘要进行加密,到客户端这里解密后得到摘要明文,再用这个摘要明文与传输的数据二次计算的摘要进行比较,若一致,则说明传输的内容是完整的,没有被篡改。

数字证书

在数字签名那里,不知道你有没有发现一个问题?

数字签名是非对称加密,服务端有一个私钥,客户端一个公钥,只有这两个对上了验签。

那假如说你(客户端)拿到的公钥并不是服务端给的呢,而是黑客塞给你的呢?而你却把这个假公钥当成真的,那么当你使用这个假公钥加密一些敏感信息时,黑客就可以截取你的这段信息,由于这信息是用黑客自己的公钥加密的,这样一来,黑客拿自己的私钥就能解密得到你的敏感信息。

这就是问题所在。

要解决这个问题,其实只要保证『公钥』是可信的。只有服务端发给你的公钥你才能拿,而坏人给你的公钥,你要懂得识别并丢弃它。
在这里插入图片描述
数字证书就应运而生了。
要理解数字证书,同样只要搞懂两个问题即可。
(a)数字证书是什么东西?其实它就是一个 .crt 文件
(b)数字证书是谁颁发的?由权威证书认证机构颁发,一般我们简称为 CA 机构
©数字证书如何申请的?或者说如何颁发的?
为了让你理解这一过程,我画了下面这张图:
在这里插入图片描述
1、在自己的服务器上生成一对公钥和私钥。然后将域名、申请者、公钥(注意不是私钥,私钥是无论如何也不能泄露的)等其他信息整合在一起,生成.csr 文件。

2、将这个 .csr 文件发给 CA 机构,CA 机构收到申请后,会通过各种手段验证申请者的组织信息和个人信息,如无异常(组织存在,企业合法,确实是域名的拥有者),CA 就会使用散列算法对.csr里的明文信息先做一个HASH,得到一个信息摘要,再用 CA 自己的私钥对这个信息摘要进行加密,生成一串密文,密文即是所说的 签名。签名 + .csr 明文信息,即是 证书。CA 把这个证书返回给申请人。

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

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

相关文章

C# switch case语句入门and业务必知点

具体的语法形式如下。 switch(表达式) { case 值 1: 语句块 1; break; case 值 2: 语句块 2; break; ... default: 语句块 n; break; } 在这里,switch 语句中表达式的结果必须是整型、字符串…

2023年第一季度京东平台手机品牌销量排行榜

4月19日,调研机构Canalys发布了2023年第一季度的全球智能手机市场报告。根据数据显示,今年Q1全球智能手机市场份额TOP 5分别是三星(22%)、苹果(21%)、小米(含Redmi,11%)、…

git仓库

新的连接:将github账号或者gitee账号与可视化工具连接 操作仓库的大体过程: 连接之后将中央仓库里的东西,clone(克隆)到自己仓库中, 自己改完代码就push(更新)进中央仓库 连接之后…

JavaSE学习进阶day06_03 Collections类和Map集合

第三章 Collections类 3.1 Collections常用功能 java.utils.Collections是集合工具类&#xff0c;用来对集合进行操作。 常用方法如下&#xff1a; public static void shuffle(List<?> list):打乱集合顺序。 public static <T> void sort(List<T> list)…

Jenkins 在Windows下安装配置

下载 下载支持JDK1.8最后的版本&#xff0c;这个版本以上的都是JDK11&#xff0c;12的 https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.346.1/jenkins.war运行 进入目录&#xff0c;运行war java -jar jenkins.war如果你的JDK版本不支持的话就会报错了&#x…

蓝桥杯2023年第十四届省赛真题python A组 (个人的做题记录,没有全对,可以通过部分测试点)

试题 A: 特殊日期 本题总分&#xff1a;5 分 【问题描述】 记一个日期为 yy 年 mm 月 dd 日&#xff0c;统计从 2000 年 1 月 1 日到 2000000 年 1 月 1 日&#xff0c;有多少个日期满足年份 yy 是月份 mm 的倍数&#xff0c;同时也是 dd 的倍数。 【答案提交】 这是一道结果…

SSM整合-Spring整合SringMVC、Mybatis,ssm测试

SSM 整合简介 一、SSM整合介绍 ​ SSM&#xff08;Spring SpringMVC Mybatis) 整合&#xff0c;就是三个框架协同开发。 二、框架分工 Spring 整合 Mybatis&#xff0c;就是将 Mybatis 核心配置分拣当中数据源的配置、事务管理、工厂的配置、Mapper接口的实现类等 交给Sp…

ROS学习第十八节——launch文件(详细介绍)

1.概述 关于 launch 文件的使用已经不陌生了&#xff0c;之前就曾经介绍到: 一个程序中可能需要启动多个节点&#xff0c;比如:ROS 内置的小乌龟案例&#xff0c;如果要控制乌龟运动&#xff0c;要启动多个窗口&#xff0c;分别启动 roscore、乌龟界面节点、键盘控制节点。如果…

月薪10k和40k的程序员差距有多大?

程序员的薪资一直是大家关注的焦点&#xff0c;相较于其他行业&#xff0c;程序员的高薪也是有目共睹的&#xff0c;而不同等级的程序员处理问题的方式与他们的薪资直接挂钩。 接下来就一起看一下月薪10k、20k、30k、40k的程序员面对问题都是怎么处理的吧&#xff01; 场景一 …

软件测试面试10分钟不到被赶出来,问的实在是太变态了...泪流满面

干了两年外包&#xff0c;本来想出来正儿八经找个互联网公司上班&#xff0c;没想到算法死在另一家厂子。 自从加入这家外包公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到11月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资…

产品经理必备数据分析技能

推荐教程:产品经理数据分析精讲&#xff08;一&#xff09; 渠道参数 需求背景&#xff1a;目前我们有很多线上线下的渠道去推广我们的产品&#xff0c;吸引用户了解我们的产品。 线上比较常见的如&#xff1a;百度、支付宝、抖音、小红书等&#xff1b;线下比较常见的如&…

android知识体系汇总

前言 对于一个程序员必须要经历的过程&#xff0c;初入职场你觉得能完成任务就行。 第一阶段可称为搬运工阶段&#xff0c;你不需要了解原理&#xff0c;只要做出来就行。浑浑噩噩可能就5年光景了&#xff0c;你发现你做过很多项目&#xff0c;感觉什么都可以。第二阶段可称为…

docker资源管理

目录 docker资源控制 CPU 资源控制 cgroups四大功能 设置CPU使用率上限 进行CPU压力测试 设置CPU资源占用比 设置容器绑定指定的CPU 对内存使用的限制 对磁盘IO配额控制&#xff08;blkio&#xff09;的限制 面试题 docker数据管理 数据卷 数据卷容器 端口映射 容…

C++变量和数据类型进阶

变量和数据类型进阶 有符号整数和无符号整数 short、int、long、long long 类型的变量&#xff0c;可以表示正数&#xff0c;也可以表示负数&#xff0c;称为有符号的整数类型。 unsigned short&#xff0c; unsigned int, unsigned long,unsigned long long类型的变量&…

linux部署Jenkins

随着软件开发需求及复杂度的不断提高&#xff0c;团队开发成员之间如何更好地协同工作以确保 软件开发的质量已经慢慢成为开发过程中不可回避的问题。Jenkins 自动化部署可以解决集成、测试、部署等重复性的工作&#xff0c;工具集成的效率明显高于人工操作&#xff1b;并且持续…

Vue 自定义指令

文章目录 Vue 自定义指令钩子钩子函数钩子函数参数 Vue 自定义指令 除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令。 下面我们注册一个全局指令 v-focus, 该指令的功能是在页面加载时&#xff0c;元素获得焦点&#xff1a; 实例 <div id"…

C++——入门讲解(2)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年4月18日 内容&#xff1a;C入门内容讲解 目录 前言&#xff1a; 1.函数重载&#xff1a; 2.引用&#xff1a; 3.缺省参数&#xff1a; 结尾&#xff1a; 前言&#xff1a; 在上一篇博客中我们正式的踏入了对C板块的学…

jar包内容修改

准备材料及环境&#xff1a; 1.安装jdk&#xff0c;这里安装了1.8版本&#xff0c;可以自由选择&#xff1b; 2.准备demo.jar 3.复制一份demo.jar该扩展名为demo.zip 4.本次使用的是windows系统 修改jar包内容&#xff1a; 1.解压demo.zip到本文件夹&#xff0c;解压后的…

根文件系统类型

Linux启动时&#xff0c;第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统&#xff0c;则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此&#xff0c;一个系统中可以同时存在不同的文件系统。 不同的文件系统类型有不同的特点&#xff…

浅谈图像生成模型 Diffusion Model 原理

重磅推荐专栏&#xff1a; 《Transformers自然语言处理系列教程》 手把手带你深入实践Transformers&#xff0c;轻松构建属于自己的NLP智能应用&#xff01; 可不可以先 点击下方链接&#xff0c;求赞 点击 like ❥(^_-) 一下我的 Model 和 Space&#xff0c;再看后面的正文~~&…