关于HTTPS

目录

什么是加密

对称加密

非对称加密

中间人攻击

引入证书


HTTPS是一个应用层的协议,是在HTTP协议的基础上引入了一个加密层.

HTTP协议内容都是按照文本的方式明文传输,这就导致在传输的过程中出现一些被篡改的情况.

运营商劫持事件

未被劫持的效果,点击下载按钮,就会弹出天天动听的下载链接.

天天动听被劫持的效果,点击下载按钮,就会弹出QQ浏览器的下载链接.

由于我们通过网络传输的任何数据包都会经过运营商的网络设备(路由器,交换机等),那么运营商的网络设备就可以解析出你传输的数据内容,并进行篡改.

点击下载按钮,起始就是在给服务器发送了一个HTTP请求,获取到的HTTP响应就包含了该App的下载链接,运营商劫持之后,就发现这个请求是要下载天天动听,那么就会自动的把交给用户的响应给篡改成QQ浏览器的下载地址了.

不止运营商可以劫持,其他的黑客也可以利用类似的手段来进行劫持,来窃取用户的隐私信息或者篡改内容.

所以,在互联网上,明文传输时比较危险的事情.

HTTPS就是在HTTP的基础上进行了加密,进一步的来保证用户的信息安全.


什么是加密

HTTPS=HTTP+加密层(SSL),SSL是用来加密的协议,也叫做TLS.

进行安全传输,核心就是加密.

加密就是把明文(要传输的信息)进行一系列的变换,生成密文.

解密就是把密文在进行一系列变换,还原成明文.

在这个加密和解密的过程中,往往需要一个或者多个中间的数据,辅助进行这个过程,这样的数据成为密钥.


对称加密

加密其中一种最简单有效的办法,叫做对称加密.

加密过程:明文+密钥=>密文;

解密过程:密文+密钥=>明文.

同一个密钥,既可以用来加密,也可以用来解密,这就是对称密钥.

对称加密安全性的前提是,密钥不能被黑客知道.

由于黑客不知道密钥是什么,即使黑客截获了加密的数据,也不知道数据是什么意思.

但事情并没有这么简单,服务器同一时刻是要给很多客户端提供服务的,这么多客户端,每个客户端的密钥必须是不同的(如果是相同的,黑客作为一个客户端就很容易把密钥获得),因此服务器就需要维护每个客户端和每个密钥之间的关联关系,这是个很麻烦的事情.

更理想的做法是在客户端和服务器建立连接的时候,双方协定确定这次的密钥是什么 .

但是如果直接把密钥进行明文传输,那么黑客也就能获得密钥了,此时后续的加密操作就形同虚设了.

因此密钥的传输必须加密传输.

但是此时如果还对密钥的传输采用对称加密的方式,就仍需要双方协定一个密钥的密钥,显然这是行不通的.

那么此时就需要引入非对称加密了.


非对称加密

非对称加密要用到两个密钥,一个叫做公钥,一个叫做私钥.

公钥和私钥是配对的,最大的缺点就是运算速度非常慢,比对称加密要慢很多.

通过公钥对明文加密,变成密文;通过私钥对密文解密,变成明文.也可以反着用.

客户端在本地生成对称密钥,通过公钥加密,发给服务器.

由于中间的网络设备没有私钥,即使截获了数据,也无法还原出内部的原文,也就无法获取到对称密钥.

服务器通过私钥解密,还原出客户端发送的对称密钥,并且使用这个对称密钥加密给客户端返回的响应数据.

后续客户端和服务器的通信都只用对称加密即可.由于该密钥只有客户端和服务器两个主机知道,其他设备不知道密钥即使截获数据也没有意义.

注意:由于对称加密的效率比非对称加密高很多,因此只有在开始阶段协商密钥的时候采用非对称加密,后续的传输仍然使用对称加密.

中间人攻击

有了上述过程之后,那么客户端如何获取到公钥呢?
如果采用简单询问的方式,就会出现中间人攻击的情况.

黑客在中间设备自己也生成一对非对称密钥,称为pub2和pri2.同时黑客自己存下pub1.黑客拿着自己的pri2进行解密,就拿到了对称密钥key,然后黑客继续使用服务器的pub1公钥,对key重新加密,继续传送给服务器.

这就导致对称密钥泄露了,此时黑客就可以拿着这个对称密钥对后续的数据进行篡改了.

引入证书

解决这个中间人攻击的关键,在于让客户端能够辨别当前的公钥响应是服务器真实的公钥.

引入证书就可以解决这个问题.

在客户端和服务器刚建立连接的时候,服务器就不单单给客户端返回公钥了,而是返回一个证书.

在这个证书里就包含了刚才的公钥,也包含了网站的身份信息.

这个证书就好比人的身份证,作为这个网站的身份标识,搭建一个HTTPS网站要在CA机构先申请一个证书(类似去公安局办身份证).

这个证书可以理解成是一个结构化的字符串,里面包含了证书发布机构,证书有效期,公钥,证书所有者,签名等信息.

当客户端获取到这个证书之后,会对证书进行校验(防止证书是伪造的).

如何校验?

  • 判定证书的有效期是否过期.
  • 判定证书的发布机构是否受信任(操作系统中已经内置了受信任的证书发布机构).
  • 验证证书是否被篡改:从系统中拿到该证书发布机构的公钥,对签名进行解密,得到一个hash值,称为数据摘要,设为hash1.然后计算整个证书的hash值,设为hash2.对比hash1和hash2是否是相等的.如果相等,则说明证书是没有被篡改过的.

证书可以在浏览器里查看

黑客能够篡改证书?

认证机构也有一组公钥私钥,私钥用来加密hash值得到签名了,公钥是客户端拥有的使用公钥解密签名获取hash值.

如果黑客替换了公钥,此时客户端计算的hash2和签名解密出来的hash1就对不上了,客户端就知道无效了.

另外黑客不知道认证机构的私钥,即使黑客自己计算好了新的篡改后的hash值,也无法加密生成签名!

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

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

相关文章

Spring Cloud Gateway 常见过滤器的基本使用

目录 1. 过滤器的作用 2. Spring Cloud Gateway 过滤器的类型 2.1 内置过滤器 2.1.1 AddResponseHeader 2.1.2 AddRequestHeader 2.1.3 PrefixPath 2.1.4 RequestRateLimiter 2.1.5 Retry 2.2 自定义过滤器 1. 过滤器的作用 过滤器通常用于拦截、处理或修改数据流和事…

Redis 快速搭建与使用

文章目录 1. Redis 特性1.1 多种数据类型支持1.2 功能完善1.3 高性能1.4 广泛的编程语言支持1.5 使用简单1.6 活跃性高/版本迭代快1.7 I/O 多路复用模型 2. Redis发展历程3. Redis 安装3.1 源码安装3.1.1 下载源码包3.1.2 解压安装包3.1.3 切换到 Redis 目录3.1.4 编译安装 3.2…

slf4j+logback源码加载流程解析

Logger log LoggerFactory.getLogger(LogbackDemo.class);如上述代码所示,在项目中通常会这样创建一个Logger对象去打印日志。 然后点进去,会走到LoggerFactory的getILoggerFactory方法,如下代码所示。 public static ILoggerFactory getILo…

缓存cache和缓冲buffer的区别

近期被这两个词汇困扰了,感觉有本质的区别,搜了一些资料,整理如下 计算机内部的几个部分图如下 缓存(cache) https://baike.baidu.com/item/%E7%BC%93%E5%AD%98 提到缓存(cache),就…

<PDF-Pics> support

If get any questions,email me caohechunhotmail.com

Channel 使用事项和注意细节

&#xff08;1&#xff09;channel 可以声明为只读&#xff0c;或者只写性质 &#xff08;2&#xff09;channel 只读和只写的最佳实践案例 在默认情况下&#xff0c;管道是双向管道&#xff0c;即可读可写。 var ch chan intfunc main() {//声明为只写管道var chan1 chan<…

系统编程--常用命令

这里写目录标题 常用命令tab补齐获取历史命令快捷键相对路径和绝对路径ls补充详细区分文件对自己自身列-l递归ls which命令 系统目录介绍内容补充上一级目录运行一个可执行文件&#xff08;运行一个程序&#xff09; 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录…

linux基于用户身份对资源访问进行控制的解析及过程

linux中用户分为三类 1.超级用户&#xff08;root&#xff09; 拥有至高无上的权限 2.普通用户 人为创建、权限小&#xff0c;权限受到控制 3.程序用户 运行程序的用户&#xff0c;不是给人使用的&#xff0c;给程序使用的&#xff0c;一般不给登录&#xff01; 组账…

第2课 使用FFmpeg读取rtmp流并用openCV显示视频

本课对应源文件下载链接&#xff1a; https://download.csdn.net/download/XiBuQiuChong/88680079 这节课我们开始利用ffmpeg和opencv来实现一个rtmp播放器。播放器的最基本功能其实就两个:显示画面和播放声音。在实现这两个功能前&#xff0c;我们需要先用ffmpeg连接到rtmp服…

解决IDEA 不能正确识别系统环境变量的问题

问题描述 本人laptop 上的是设置了GOOGLE_APPLICATION_CREDENTIALS 这个环境变量的&#xff0c; 正常java or python 的程序能基于这个环境变量使用 某个gcp service account 去访问GCP的资源 [gatemanmanjaro-x13 ~]$ env | grep -i google GOOGLE_APPLICATION_CREDENTIALS/…

ubuntu 安装apisix -亲测可用

官方未提供在ubuntu系统中安装apisix的方式&#xff0c;似乎只能通过源码方式安装&#xff0c;但是并不推荐&#xff0c;非常容易失败&#xff0c; 具体操作方式如下&#xff1a; ubuntu和Debian其实类似的&#xff0c;可使用DEB方式安装&#xff0c;如下截图 注意&#xff1…

年度总结|存储随笔2023年度最受欢迎文章榜单TOP15-part2

TOP11&#xff1a;PCIe在狂飙&#xff0c;SAS存储之路还有多远&#xff1f; 随着科技的飞速发展&#xff0c;固态硬盘&#xff08;SSD&#xff09;已经成为现代计算机系统中不可或缺的一部分。它以其出色的性能和可靠性&#xff0c;改变了我们对于存储设备的期待。当前业内SSD广…

通用定时器PWM波输出原理

1通用PWM波输出原理 总结&#xff1a;PWM波周期或频率由ARR决定&#xff0c;PWM波占空比由CCRx决定 1通用PWM模式 1.1PWM模式1 PWM模式1&#xff1a; 递增&#xff1a;CNT < CCRx&#xff0c;输出有效电平1 CNT > CCRx&#xff0c;输出无效电平0 递减&#xff1a;CNT …

Python面向对象编程 —— 类和异常处理

​ &#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 1. 类 1.1 类的定义 1.2 类变量和实例变量 1.3 类的继承 2. 异常处理 2.1类型异常 2.…

fiddler菜单汉化补丁

【Fiddler汉化补丁下载地址】 一、手机应用市场下载“头条搜索极速版”app 二、头条搜索极速版中搜索“葫芦娃指南”获取 三、汉化过程完整过程 1、安装Fiddler英文版 2、比如我将Fiddler安装在&#xff1a;D:\Programs\Fiddler 3、将【fiddler汉化】文件夹中的FiddlerT…

2024年【茶艺师(初级)】考试技巧及茶艺师(初级)试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 茶艺师&#xff08;初级&#xff09;考试技巧是安全生产模拟考试一点通生成的&#xff0c;茶艺师&#xff08;初级&#xff09;证模拟考试题库是根据茶艺师&#xff08;初级&#xff09;最新版教材汇编出茶艺师&#…

【基于VirtualBox及openEuler20.03 TLS SP1编译openGauss2.1.0源码】

【openEuler 20.03 TLS编译openGauss2.1.0源码】 一、安装环境二、安装步骤 一、安装环境 项目Value虚拟机virtualbox操作系统openEuler 20.03 TLSopenGauss2.1.0openGauss-third_party2.1.0 二、安装步骤 以下操作需要在root用户下执行 编辑/etc/selinux/config vim /etc/s…

分享一个学习Typescript最全的Github网站

一个专注研究Typescript的网站&#xff0c;&#x1f396;&#x1f396;&#x1f396;在这里你可以全面深入学习Typescript相关知识,通过动画方式讲解TS&#xff0c;还有很多常见问题解答。你还可以挑战相应的题目&#xff0c;快来学习吧 我就懒一点&#xff0c;直接原滋原味的…

跟踪SEO性能

他们说&#xff0c;如果你能衡量一些东西&#xff0c;你就可以改进它。 在SEO中&#xff0c;也不例外。专业的SEO跟踪从排名和转化到丢失链接等的所有内容&#xff0c;以帮助证明SEO的价值。衡量你的工作和持续改进的影响&#xff0c;对于你的SEO成功、客户保留和感知价值至关…

工智能基础知识总结--什么是CNN

什么是CNN 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一。CNN最常用于CV领域,但是在NLP等其他领域也有应用,如用于文本分类的TextCNN。 …