《HTTPS协议原理》

news2024/11/19 19:46:18

【一】https协议是啥子?

https也是一个应用层协议,实在http协议的基础上,引入了一个加密层,http协议的内容都是按照文本的方式进行明文传输的, 这就导致了在传输的过程中出现一些被篡改的情况。

【二】啥是加密?

 加密这玩意从概念上是真的不好陈述,等一会我去百度上去复制粘贴一句话哈,咳咳,加密就是把明文进行一系列变化,生成密文,解密就是把密文再进行一系列变化,还原成明文,在这个加密和解密的过程中,往往需要一个或者多个中间的数据来辅助这个进程,这个进行辅助的数据可以称为密钥。

【三】加密的发展历史

经过多年的发展,加密到如今变成一个独立的学科:密码学,而且密码学的奠基人,也是目前计算机科学的鼻祖之一,我们得图灵大佬,长这样:

 

对比我们另外一位祖师爷:冯诺依曼:

 我们可以发现,图灵大佬不仅头发更多了,颜值也更高了,可惜这哥们是弯的啊。其实这也是一个悲伤的故事,这位大佬不仅仅年少有为光奠定了计算机, ⼈⼯智能, 密码学的基础, 并且在⼆战 中⼤破德军的 Enigma 机, 使盟军占尽情报优势, 才能扭转战局反败为胜. 但是因为⼀些原因, 图灵⼤佬 遭到英国皇室的迫害, 41岁就英年早逝了,目前计算机领域中的最高奖项,就是以他名字命名的图灵奖。

【四】为什么需要加密

        臭名昭著的“运营商劫持”,互联网刚出来那段时间,不知道有没有小伙伴发现,自己通过网络下载一些东西的时候,安装的时候发现总是对不上,甚至还出现了一堆捆绑安装。让我来和你们细说原理

        我们通过网络传输数据的时候都是通过运营商的网络设备进行交互的,那么网络运营商的网络设备是可以识别出你的http协议的内容并且进行更改,有的人就要说了,那我不用网络运营商的设备不就行了?问题网线就是网络运营商搭建的,不用他们的设备属实有点不现实。

        我们下载软件的时候就是给服务器发送了一个http的请求,获取到的服务器的响应中其实就包含了这个app的下载链接,运营商劫持之后,就发现这是个下载请求,然后将下载地址修改为其他软件的下载地址了。

        具体流程如下:

所以http是明文传输的,明文数据会经过路由器,wifi热点,通信服务运营商,代理服务器等多个物理节点,如果信息再传输的过程中被劫持,传输的内容就被完全暴漏了,劫持者还能篡改传输的信息且不被双方察觉,这就是中间人攻击,所以我们才需要对信息进行加密。

tips:你以为只有中间人只有运营商?你在一些公共场合连的免费wifi难道不符合这个中间人特征吗?

小伙伴们能想到为什么堂堂运营商会干这种事吗?原因无他:他们给的实在是太多了

所以在互联网上进行明文传输是比较危险的事,https就是在http的基础上,进行加密措施,进一步保证用户的信息安全。

【五】常见的加密方式

对称加密

1.采用单钥密码系统的加密方式,同一个密钥可以同时用作信息的加密和解密,这个加密的方式被称为对称加密,也被称为单密钥加密,特征是:加密和解密的密钥是相同的。

2.常见的对称的加密算法:DES,3DES,AES,TDEA等等

3。特点:算法公开,计算量小,加密速度快,加密效率高

对称加密其实就是通过一个密钥把明文加密成密文,并且也能将密文解密成明文

非对称加密

1.需要两个密钥来进行加密和解密,这两个密钥被称为公钥和私钥

2.常见非对称加密算法:RSA,DSA,ECDSA

3.特点:算法强度复杂,安全性依赖于算法,从而使得加密和解密没有对称解密的速度快

tips:这个私钥和公钥是相对的,并不是绝对的。私钥可以加密密文,但是就需要公钥解密,公钥加密密文,就需要私钥解密

【六】数据摘要和数据指纹

数据指纹(数据摘要),其基本原理是通过单项hash函数,对长篇信息进行运算,从而生成一串固定长度的数字摘要,数字指纹并不是一中加密机制,但是可以用来判断数据有没有被更改。

这玩意,具有不可逆推性,从哈希根本原理来说,你不可能从一个摘要得到这玩意的原文,除非你进行穷举,但是有人计算过,一篇一千字的文章,你想逆推,基本上需要一千多年,没啥意义主要是。

数据签名:将摘要进行加密之后得到的就是数字签名

【七】数据加密的几个典型方案

方案1——只使用对称加密

经过加密之后,即使数据被截获,中间人拿不到密钥,也就不知道请求内容是啥了。

        这种思路的最大问题就是如果让客户端和服务器同时拿到同一份密钥,这件事十分的狗血,无外乎下面这几种情况,在程序的配置文件中包含密钥程序,或者是服务器发送密钥程序。第一种情况下,所有的客服端使用的都是一套的密钥,导致破解收益急剧增加再者中间商可以自己下载一个客户端拿到密钥啊,所以中间商开始赚差价了。第二种情况下,中间商都能拿到密钥了,你的信息不还是相当于明文发送吗?所以这种方案很早就被舍弃了。

        所以这个密钥也是必须经过加密传输了,但是你没发现这就陷入了一个死胡同吗?成了一个先有鸡还是先有蛋的问题了。

方案2——只使用非对称加密

        先将公钥以明文传输的方式发送给浏览器,然后浏览器将明文使用公钥加密后形成密文,只有浏览器有对应的私钥可以进行解密,这个方式看起来十分的安全,但是你只能保证客户端到服务端是安全的,但是你不能保证服务端到客户端是安全的。

所以这个方案也被舍弃了

方案3——双方都使用非对称加密

 

        这样的话,中间商没有对应的公钥所以无法对相应的数据进行解密,所以还是比较安全这个方法的最大问题是,速度太慢了。

方案四——非对称加密+对称加密

        其实这个方案还是没有觉得安全问题只是单纯的解决的效率问题,

 这样中间商即使拿到S‘但是还是无法对c加密的东西进行解密

总结: 上面我们说的都是比较安全,为啥是比较安全呢?因为中间商可以将你的信息进行舍弃,使用自己的信息用s‘密钥进行加密,且你客户端根本识别不出来。

【七】证书机制

        上面这些情况,最大的问题就是,不能确保你获取到的内容是你想要的,这个时候就有人站出来了,成立了一个叫做CA机构,专门给使用https的服务端做身份验证的。而证书就相当于身份证一类的东西,证明服务端的权威性。

【八】非对称加密+对称加密+证书认证

        在客户端和服务器刚建立连接的时候,服务器给客户端返回一个证书,证书包含了之前服务端的公钥,也包含了网站的信息

 

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

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

相关文章

操作系统复习3.1.0-内存

内存 程序是由内存放到CPU才可处理,前面一直有提到外存、内存,外存I/O速度十分慢,而内存I/O速度快,CPU I/O速度也快。 因此内存是缓和外存和CPU间I/O速率差异问题 为区分并发环境下程序数据存放地方,就给内存的存储单…

前端 js 栈内存和堆内存 基本数据类型和复杂数据类型的区别?

前端 js 栈内存和堆内存 基本数据类型和复杂数据类型的区别? 先了解一下JavaScript 数据类型有哪些? javaScript 中有8种基本的数据类型:7种为基本数据类型,而Object 为复杂数据类型 基本数据类型(原始数据类型&#…

OpenMMLab-AI实战营第二期-人体关键点检测与MMPose

人体关键点检测与MMPose 课程链接:https://www.bilibili.com/video/BV1kk4y1L7Xb 这个课程的大致内容是介绍如何从给定的二维影像中恢复出人体的姿态(2D或者3D),大纲如下所示,基本上可以认为流程是:先是恢…

Spring Boot 日志配置(Slf4j)

SLF4J与Logback简介 Java日志框架众多,常用的有java.util.logging, log4j, logback,commons-logging等。 SLF4J (Simple Logging Facade For Java),它是一个针对于各类Java日志框架的统一Facade抽象。SLF4J定义了统一的日志抽象接口&#x…

Linux命令学习之pwd和ls

pwd pwd是查看当前所在目录的命令。 可以看到当前所在目录是/root。在这里需要注意/是根目录,是所有其他目录的父节点,/root目录是root用户的家(home)目录,这是两个不同的目录。 man pwd可以看一下pwd的帮助&#xf…

Power BI 如何生成动态指标散点图

前言 本文介绍如何在Power BI中创建动态散点图,可以自由切换X轴和Y轴的指标。 数据下载: 使用的是CSDN后台的单篇文章分析数据,在“作品数据”页点击“导出数据”。 因为都是累计值,所以用了两天的数据,手动添加…

[数据挖掘02] pandas的分配和聚合函数

一 说明 窗口函数是什么?窗口函数是时间序列的局部属性处理函数,比如,一维卷积滤波、移动平均、指数平均本篇我们将针对pandas对象的窗口函数展开讨论,并以示例展示他们的概念实质。 二 窗口函数、分组函数( GroupBy …

大语言模型速查表;ChatGPT发展路线图;11条市场营销ChatGPT Prompt;使用Midjourney制作专属头像 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 大语言模型速查表 Large Language Model Cheat Sheet ShowMeAI知识星球资源编码:R115 本份速查表的制作目的,是…

Linux4.2LAMP

文章目录 计算机系统5G云计算第一章 LINUX LAMP一、概述二、编译安装Apache httpd服务1.关闭防火墙,将安装Apache所需软件包传到/opt目录下2.安装环境依赖包3.配置软件模块4.编译及安装5.优化配置文件路径,并把httpd服务的可执行程序文件放入路径环境变量…

LInux-文本处理相关命令笔记

目录 文本处理相关命令正则表达式介绍BRE和ERE seqxargs常用选项常用使用方法 uniq介绍常见选项常见使用方法实例 tr常用选项常见使用方法能转换的原因 grep常见选项grep -v 选项 -v和[^..]的区别 常见使用方法使用 总结 cut介绍使用 sort介绍语法参数 使用去重 排序原则按字典…

HarmoneyOS入门--下载与安装DevEco Studio运行helloworld

下载与安装DevEco Studio 在HarmonyOS应用开发学习之前,需要进行一些准备工作,首先需要完成开发工具DevEco Studio的下载与安装以及环境配置。 下载DevEco Studio 下载完成后,双击下载的“deveco-studio-xxxx.exe”,进入DevEco S…

chatgpt赋能python:Python创建空变量的方法

Python创建空变量的方法 Python是一种非常受欢迎的编程语言,因为它易于学习和使用,并且具有动态语言的特点。不管你是新手还是有经验的开发人员,你肯定会经常遇到需要创建空变量的情况。在这篇文章中,我们将探讨Python中创建空变…

AI对话交互场景使用WebSocket建立H5客户端和服务端的信息实时双向通信

WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。 一、为什么需要 WebSock…

设计模式之~工厂系列(简单工厂、工厂方法、抽象工厂)

目录 简单工厂模式 工厂方法模式 简单工厂 VS 工厂方法 抽象工厂模式: 拓展: 利用简单工厂模式优化抽象工厂 利用反射抽象工厂 进行优化 反射配置文件抽象工厂进行优化 简单工厂模式 优点:简单工厂模式的最大优点在于工厂类包含…

Arthas-JVM相关命令使用

tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 开头: 我们先说下生产使用频率较高的有哪些:dashboard、heapdump、jvm…

【mqtt】MQTT安装与入门案例

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍MQTT的c版本入门。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习知识,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路&…

java高频面试题

集合 前言 时间复杂度 时间复杂度是用来来评估代码的执行耗时的,大O表示法:不具体表示代码的真正执行时间,而是表示代码执行时间随数据规模增长的变化趋势。 当n很大时,低阶、常量、系数并不能影响其增长趋势,因此可以…

压缩感知重构之广义正交匹配追踪法

算法的重构是压缩感知中重要的一步,是压缩感知的关键之处。因为重构算法关系着信号能否精确重建,国内外的研究学者致力于压缩感知的信号重建,并且取得了很大的进展,提出了很多的重构算法,每种算法都各有自己的优缺点&a…

RFID在工业自动化产线工艺中的应用

RFID在工业自动化产线工艺中的应用 随着工业自动化技术的不断发展,RFID(Radio Frequency Identification)技术在自动化产线数据采集方面得到了广泛应用。RFID技术是一种通过电磁波进行无线通信和识别的技术,它可以对物品进行追踪…

电子器件系列39:反激式变压器

反激式(Flyback)变压器又称单端反激式或Buck-Boost转换器。因其输出端在原边绕组断开电源时获得能量故而得名。反激式变换器以其电路结构简单,成本低廉而深受广大开发工程师的喜爱。 反激式变压器适合小功率电源以及各种电源适配器。但是反激式变换器的设计难点是变…