HTTPS协议之SSL/TLS详解(下)

news2024/12/29 11:02:07

目录

前言:

SSL/TLS详解

HTTP协议传输安全性分析

对称加密

非对称加密

证书

小结:


前言:

    在网络世界中,存在着运营商劫持和一些黑客的攻击。如果明文传输数据是很危险的操作,因为我们不清楚中间传输过程中就被哪个服务器偷梁换柱了。

    现在网络中大多数使用的都是HTTPS协议。HTTP协议没有加密的概念,就意味着将会进行明文传输,数据很容易就被劫持了。HTTPS协议是HTTP协议的加强版本(S就是SSL或者TLS),引入了证书的概念,很大程度上保证了数据的安全性。

SSL/TLS详解

HTTP协议传输安全性分析

注意:

    明文传输,当数据经过中间黑客控制的服务器时,数据就可以直接被篡改。服务器得到的请求就是篡改后的请求。当响应经过黑客服务器时同样也可以被篡改,那么客户端和服务器所得到的数据就是黑客说了算。就不存在安全性可言。

对称加密

    所谓对称加密就是:同一个密钥既可以加密也可以解密。

    a(明文) + key = b(密文)

    b(密文) + key = a(明文)

    不同的客户端肯定要使用不同的对称密钥来对数据进行加密。那么当客户端生成对称密钥后,就需要将对称密钥和数据一起传输到服务器,服务器才能解密数据。

问题:

    这次传输当经过中间黑客控制的服务器时,那么黑客也可以劫持到密钥,对数据解密进行篡改。那么我们只要解决对称密钥的传输数据就是安全的。

非对称加密

    生成一对密钥,公钥和私钥。用公钥加密,私钥解密(公钥是公开的,密钥是私有的)。

    明文 + 公钥 = 密文

    密文 + 私钥 = 明文

注意:

    服务器生成一对非对称密钥,公钥是公开的,密钥只有自己知道。客户端使用公钥对对称密钥加密传输到服务器。由于黑客控制的服务器不知道私钥,就没有办法解密。当服务器得到数据后,用私钥解密得到对称密钥。那么以后的传输就可以直接使用对称密钥对数据进行加密了。

    为什么有非对称加密还要使用对称加密呢?

    答:非对称加密是比较耗时,而对称加密效率高。如果每次都使用非对称加密,效率会很低。使用非对称加密将对称密钥传输到服务器后,就可以使用对称加密了。效率会有显著提升。

问题:

    中间人攻击,黑客模仿服务器也生成一对公钥和密钥,发给客户端(偷梁换柱得到明文)。由于客户端的公钥也是服务器生成好传输过去的。

注意:

    客户端需要发起请求得到服务器生成的公钥。服务器返回响应时说:公钥是pub1。经过黑客控制的服务器时,黑客保存pub1。并且自己也生成一对非对称密钥(pub2,pri2)。然后返回响应说:公钥是pub2。

    客户端用pub2对对称密钥加密。黑客服务器收到后,使用pri2解密得到对称密钥。然后又使用之前保存的pub1加密,传输到服务器。服务器任然可以使用pri1解密。黑客神不知鬼不觉黑客就得到了对称密钥。

证书

    解决中间人攻击的核心方法就是:让客户端能够辨别得到的公钥是否为服务器发来的公钥。引入一个“证书”(本质上是第三方的公证机构)。

    服务器(网站)在设立之初,需要向公证机构申请证书,服务器生成的公钥也就包含在证书中。客户端向服务器不在是请求公钥了,而是把整个证书都请求过来。

    客户端拿到证书后,就会对证书进行校验。验证一下证书是否是被篡改过的(证书中存在一个加密的签名)。如果证书是无效的,浏览器就会直接弹窗告警。

注意:

    服务器在建立时向认证机构申请证书(提交一些信息,包含公钥),认证机构就会向服务器颁发证书,包含认证机构用自己私钥加密的签名。客户端向服务器请求证书就会获得证书(包含公钥)。

    客户端用认证机构提供的公钥解密签名进行校验(校验的过程类似tcp/udp校验和)。签名是根据证书中内容来生成的,客户端得到数据后,重新根据数据计算一次签名,与之前的签名进行对比。辨别数据是否被篡改。

    黑客如果把证书中的公钥篡改了,客户端计算的签名就会和证书中的签名不一致。黑客根据自己的算法重新生成签名(把签名篡改了)。由于黑客不知道认证机构的私钥,就算生成了也无法加密。黑客直接模仿认证机构重新生成证书,也由于黑客不知道认证机构的私钥,无法生成。

    整个过程就类似于我们使用身份证来证明身份,警察局就是第三方认证机构。这个身份证无法被别人生成,别人就可以通过身份证来辨别我们的身份。

小结:

    理解HTTPS协议的加密过程,当我们使用其协议时就会比较得心应手了。

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

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

相关文章

Spring从精通到入门

Spring1.spring了解2. Spring实现2.1 添加依赖2.2 Spring实现2.2.1 xml配置实现2.2.1.1 Bean标签属性1.spring了解 spring重要性 在当前的系统中,spring的重要性and占比性高达50%,无论是在ssm、ssh等框架中,spring始终屹立在前方,…

Postman创建Elasticsearch(2.4版本)索引

一、创建索引二、删除索引三、其他1、查看es信息2、查看索引test信息3、test索引下mapping查看4、elasticsearch 2.2.1下载一、创建索引 1、请求方式:PUT2、请求地址:地址 索引名3、请求数据 {"settings": {"number_of_shards": …

C语言offsetof(TYPE, MEMBER)全解

offsetof(TYPE, MEMBER) 是一个宏定义,用于计算一个结构体中某个成员的偏移量。 其第一个参数 TYPE 是一个结构体类型,第二个参数 MEMBER 是 TYPE 中的一个成员变量名。 它将返回类型为 size_t 的整数,表示 MEMBER 相对于 TYPE 起始地址的偏…

inode和逻辑块,目录的结构,挂载的实现 源码级分析linux内核的文件系统的结构

bitmap.c 位图相关 封装了set_bit clear_bit find_first_zero clear_block等操作位图的宏 对应i节点位图和逻辑块位图有对应的四个函数 free_inode, new_inode,free_block, new_block new_block 创建逻辑块 通过super_block找到逻辑块位图,给逻辑块位图的第一个…

Spring Boot中的bean注入方式和原理

Spring Boot是一个非常流行的Java框架,它可以帮助开发者快速地构建高效、健壮的应用程序。依赖注入是Spring Boo其中一个重要的功能,就是将一个对象注入到另一个对象中,以便它们可以相互协作。在Spring Boot中,依赖注入是通过bean…

Python如何获取大量电影影评,做可视化演示

前言 《保你平安》今天上映诶,有朋友看过吗,咋样啊 这是我最近比较想看的电影了,不过不知道这影评怎么样,上周末的点映应该是有蛮多人看的吧,可以采集采集评论看过的朋友发出来的评论,分析分析 这周刚好…

2023年斋月倒计时,跨境卖家该如何做好选品和营销?

2023年斋月即将到来,这是一个伊斯兰教徒们非常重要的节日,同时也是跨境卖家们迎接销售高峰的时期。在2023年的斋月期间,跨境卖家应该如何做好选品和营销呢?本文Nox聚星将和大家好好聊一聊。 根据2022年的数据,斋月期间…

【巨人的肩膀】MySQL面试总结(一)

💪 目录💪1、什么是ER图2、数据库范式了解吗3、超键、候选键、主键、外键分别是什么?4、为什么不推荐使用外键与级联5、什么是存储过程6、drop、delete与truncate区别7、数据库设计通常分为那几步8、什么是关系型数据库9、什么是SQL10、MySQL…

SpringBoot整合Redis实现高并发数据缓存

目录什么是缓存为什么要用缓存Redis为什么这么快实现一个用户信息的缓存方式一:利用RedisTemplate实现导入依赖添加配置添加redis工具类及配置类开发mapper接口service层controller层测试方式二:采用SpringBoot注解开启缓存在启动类添加EnableCaching注解…

旋转框目标检测mmrotate v1.0.0rc1 之RTMDet训练DOTA的官方问题解析整理(四)

关于rotated_rtmdet_l-coco_pretrain-3x-dota_ms.py配置文件的batchsize和学习率设置问题:回答:如何在mmrotate中绘制特征图问题:回答:你好AllieLan,您可以尝试使用https://github.com/open-mmlab/mmyolo/blob/main/de…

Java Class 加密工具 ClassFinal

Jar包加密工具 ClassFinal介绍环境依赖使用说明下载加密命令行示例maven插件方式无密码模式机器绑定启动加密后的jar启动参数给密码不加密码参数直接启动1. 密码文件获取2. 交互输入参考资料介绍 ClassFinal 是一款 java class 文件安全加密工具,支持直接加密jar包…

KDHL-600A 回路电阻测试仪

一、产品概述 武汉凯迪正大KDHL-600A回路电阻测试仪是用于测量开关、断路器、变压器等设备的接触电阻、回路电阻的专用测试设备。其采用典型的四线制测量法,通过输出一个直流电流,施加于被测体的两个端钮之间,并测量电流流过被测体所产生的压…

Node.js简介

客户端访问网页时向服务器端发送请求要访问服务器中的页面,服务器收到请求后向数据库中进行搜索,搜索到相关数据然后返回结果给客户端显示; 这个过程就类似于:客人(客户端)去饭馆(服务端&#…

TryHackMe-VulnNet: Active(ez 域渗透)

VulnNet: Active VulnNet Entertainment在他们以前的网络中遇到了不好的时光,该网络遭受了多次破坏。现在,他们移动了整个基础架构,并再次聘请您作为核心渗透测试人员。您的目标是获得对系统的完全访问权限并破坏域。 这应该是我在thm打的最…

Uipath Excel 自动化系列15-Protect Sheet(保护工作表)

活动描述 Protect Sheet(保护工作表):在 Excel 中启用对指定工作表的保护,以便无法对其进行任何其他更改,该活动需与Use Excel File 活动选择的 Excel 文件一起使用。 提示:Protect Sheet活动功能类似Excel文件【审阅】菜单栏下的保护工作簿功能&#…

TencentOS Server 安装 PostgreSQL

TencentOS 简介 2019 年,随着腾讯公司外部客户的需求,以及公司开源协同战略的推进,tlinux 对外开源并进行了品牌升级,升级为 TencentOS Server。TencentOS 包含三大场景,分别如下: TencentOS Server&…

MySQL DQL语句基础(一)

目录 DQL 基本语法 基础查询 1、查询多个字段 2、字段设置别名 3、去除重复记录 条件查询 语法 条件 案例 聚合函数 常见的聚合函数 语法 DQL DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。 基…

java面试-jvm

JVM JVM 是 java 虚拟机,简单来说就是能执行标准 java 字节码的虚拟计算机 JVM 是如何工作的 首先程序在执行之前先要把 Java 代码(.java)转换成字节码(.class),JVM 通过类加载器(ClassLoade…

Linux:创建守护进程,注册信号捕获回调函数,使用shell脚本代码管理守护进程

1.创建守护进程&#xff0c;编译时命名为a.out. 2.在守护进程中注册信号捕捉函数。 3.使用脚本发送自定义信号SIGUSR1给进程a.out。 4.守护进程捕获函数catchSignal&#xff08;&#xff09;捕捉到10号函数SIGUSR1退出进程。 创建守护进程代码&#xff1a; #include <stdi…

第八批国家药品集中采购-(附药品集采目录明细下载)

2023年3月2日&#xff0c;‘国家组织药品联合采购办公室’发出了《全国药品集中采购文件》&#xff0c;宣告了第八批国家组织药品集中采购工作正式开展&#xff0c;其公告中还包含三个附表分别为‘采购品种目录’、‘各地区首年约定采购量’、‘各采购品种首年约定采购量’&…