HTTPS协议原理

ops/2024/10/22 19:24:23/

HTTPS协议原理

  • 一.前言-为何要有https协议
  • 二.加密与中间方劫持
    • 1.什么是加密
    • 2.为何要加密
    • 3.对称加密
      • 1.小例子
        • 2.好处和缺点
    • 4.非对称加密
    • 5.数据指纹/数据摘要
  • 三.站在设计者的角度提出方案
    • 1.只使用非对称加密 : 且只有server有密钥
    • 2.只使用非对称加密 : 且双方都有密钥
    • 3.非对称+对称 : client一个对称,server一对非对称
    • 4.如何解决中间人攻击问题
  • 四.CA证书
    • 1.介绍
    • 2.CA证书如何防止中间人攻击

https_1">一.前言-为何要有https协议

http协议在功能方面已经非常完善了,只不过安全性没有保障,因为数据都是明文传输的
get方法直接将数据以url参数的方式进行传递,post方法将数据以请求体的方式进行传递
虽然post比get安全那么一点,但是只要数据是明文传递的,那就一定不安全(隐私泄漏,数据被篡改等等安全问题)

所以大佬们在http协议之上引入了一个加密层,设计出了https协议

二.加密与中间方劫持

1.什么是加密

加密就是把 明文(要传输的信息)经过一系列变换,转换成密文
解密就是把 密文经过一系列变换,转换成明文

在这个加密和解密的过程中需要一些数据来辅助进行,这些数据被称为密钥

加密和解密涉及到密码学的范畴,我们只需要知道总是有很多方法对数据进行加密解密的,至于怎么加密和解密,有密码学的大佬负责研究

2.为何要加密

因为只要数据是明文传递的,那就一定不安全(隐私泄漏,数据被篡改等等安全问题)
在数据传输过程中,有中间方会进行劫持,窃取隐私信息或者篡改内容等等(至于中间方是谁? 技术既能向善又能向恶,都是被金钱蒙蔽了双眼…)
(想象一下,如果你在使用支付宝进行支付操作时,你的用户账号,密码和支付密码被中间方盗取了…当然这种情况现在不会发生了,因为有了https,人脸识别,指纹识别等等技术)

3.对称加密

对称加密是指:

加密和解密所用的密钥是相同的

特点: 加密解密计算量小,速度快

1.小例子

比如: 利用按位异或的可交换性和抵消性就可以搞一个对称加密
小明和小红要进行通信,它们都持有密钥key=1234

小明发送一个"hello",这个"hello"的每个字符都跟key进行按位异或(也就是加密),然后才发给小红
小红收到数据之后再将数据的每个字符跟key进行按位异或(也就是解密),转换回了"hello"

这个密钥key就是对称密钥,在这期间即使数据被中间方劫持了,中间方也不知道你们的密钥是什么
(不考虑中间方恶意穷举破解密钥,因为有可能获取到的非法利益还不够破解密钥的成本呢…)
因此它也就无法获取隐私信息或者篡改信息
(因为你改消息是为了误导接收方,获取非法利益,你都不知道接收方解密用的密钥是什么,你怎么误导他?? 所以篡改信息没意义)

2.好处和缺点

使用对称加密,理论上来说已经能够解决数据安全性的问题,但是在实践上,单纯只靠对称加密是行不通的
https://img-blog.csdnimg.cn/direct/778d460c6b374359aeee697090258d6d.png" alt="在这里插入图片描述" />
https://img-blog.csdnimg.cn/direct/c8a3adef29a04ea79388224ca9e33117.png" alt="在这里插入图片描述" />
小结一下: 如果只采用对称加密,实践当中为何不能解决数据安全性问题

  1. 所有的用户的对称密钥都是一样的
    中间方也能够得知对称密钥,此时加密解密就形同虚设了,因此行不通
  2. 所有用户的对称密钥都不同
    对称密钥的交换缺少安全性,中间方能够进行拦截获取对称密钥,此时加密解密就形同虚设了,而且还会增加服务器维护密钥的成本,因此行不通
  3. 对用户通过源IP地址和源端口号进行划分,分配并使用不同的对称密钥
    无法保证跟中间方密钥相同的用户的数据安全,而且如果中间方扩大影响力,获取多个密钥,那危害也是很大的,因此行不通

总和起来,都是因为

  1. 密钥进行交换/协商时,无法保证自身的安全性
  2. 对称密钥既能对数据进行加密,又能对数据进行解密,一旦被中间方获取,那么双方通信时的加密就形同虚设了

4.非对称加密

非对称加密:需要通过两个密钥来进行加密和解密
一个密钥被称为公钥,另一个被称为私钥

加密解密时有两种使用方式:

  1. 公钥加密,私钥解密
  2. 私钥加密,公钥解密

特点: 算法复杂,加密解密效率低

稍后我们再来分析使用非对称加密能解决数据安全性问题吗,现在我们先介绍其他很重要的知识

5.数据指纹/数据摘要

https://img-blog.csdnimg.cn/direct/77656bd7ab3141ecb2f1e87d05563be1.png" alt="在这里插入图片描述" />

三.站在设计者的角度提出方案

下面我们站在https协议设计者那些大佬的角度来思考一下如何对数据进行加密,解密

刚才我们已经看出只使用对称加密是不行的,那么我们只使用非对称加密呢?

1.只使用非对称加密 : 且只有server有密钥

https://img-blog.csdnimg.cn/direct/2d5053bd0fa54cea91496fb269d77095.png" alt="在这里插入图片描述" />
其实如果考虑中间方欺骗client和server的话,从client到server也是不安全的
https://img-blog.csdnimg.cn/direct/1fabf88175684655b07b22ae6b7ce571.png" alt="在这里插入图片描述" />
因此这种方案果断pass

2.只使用非对称加密 : 且双方都有密钥

欺负我client没有密钥…那我们给client也配上密钥
我们依然先不考虑中间方欺骗client和server,

刚才server -> client不安全是因为server发送数据使用私钥S’加密,但是中间方有公钥S,
因此server发送数据一定不能用自己的私钥S’加密,而要用client的公钥/私钥来加密
https://img-blog.csdnimg.cn/direct/10da005b232349b9887aafd035614256.png" alt="在这里插入图片描述" />
中间方搞事情:
https://img-blog.csdnimg.cn/direct/a555a3c9a9b845608a673ae2879364ae.png" alt="在这里插入图片描述" />
这个方案还有一个问题
全都用非对称加密,效率太低了!!!
而且你看,client都能把公钥C"安全"的发给server了,也就是说公钥C这个密钥非常"安全"

而对称密钥缺的不就是安全嘛,人家还非常快,因此把C换成对称密钥不好吗,双方通信时都用对称密钥
因此下一个版本

3.非对称+对称 : client一个对称,server一对非对称

https://img-blog.csdnimg.cn/direct/bc4bbf4bac5b4f8491d47fb1504c393a.png" alt="在这里插入图片描述" />
但是中间方依旧能搞事情
https://img-blog.csdnimg.cn/direct/0dba377d3ada4bbb8504f92599b0cc43.png" alt="在这里插入图片描述" />

4.如何解决中间人攻击问题

经过三个版本,我们发现,中间方能搞事情的原因都是因为:
client被骗了,他认为自己受到的公钥M就是server发送的公钥S

也就是说client无法判断收到的公钥的合法性

现实生活当中,如何区分假钱和真钱? -> 验钞机 , 验钞机具体如何区分呢? 根据: 磁性、尺寸、厚度等特征 -> 这些特征谁规定和保证的? -> 国家相关组织

因此我们这里也有相关组织: CA机构(Certificate Authority,证书授权机构)专门解决这一问题

四.CA证书

1.介绍

在server使用HTTPS之前需要向CA机构申请CA证书,CA证书里面含有证书申请者信息,公钥信息等等
client访问server时默认会检查该网站的CA证书,
如果CA证书过期了,或者不可靠等等,浏览器就会给我们安全警报,我们看到之后就会关闭该网页
https://img-blog.csdnimg.cn/direct/8f48f7c9a9264231b89b3ba8ce71045b.png" alt="在这里插入图片描述" />
如果CA证书有效,那么浏览器就会从CA证书里面获取公钥

CA证书就相当于server的合法证书,证明server公钥是正确安全的

整个流程:
https://img-blog.csdnimg.cn/direct/b55e7a0069624937af980af8fc585bc1.png" alt="在这里插入图片描述" />

2.CA证书如何防止中间人攻击

https://img-blog.csdnimg.cn/direct/1bc91a5fca77407aa74fece72eb7d86c.png" alt="在这里插入图片描述" />
从技术的角度,中间人对CA证书想怎么改就怎么改,掉包都可以,但是你怎么改都没用,掉包就暴露你了,到时候进局子了就

CA证书=企业的明文数据+用CA私钥加密的 用企业明文数据生成的数据指纹

https://img-blog.csdnimg.cn/direct/fefa055879c64ff190af7411e0111e70.png" alt="在这里插入图片描述" />
因此HTTPS协议的最终方案是:
CA证书+非对称加密(client用server的公钥加密对称密钥发送给server)+对称加密
既保证安全,又保证了效率

以上就是HTTPS协议原理的全部内容,希望能对大家有所帮助!!


http://www.ppmy.cn/ops/45481.html

相关文章

Flutter 中的 IndexedStack 小部件:全面指南

Flutter 中的 IndexedStack 小部件:全面指南 Flutter 是一个功能强大的 UI 框架,它提供了多种方式来构建动态和响应式的用户界面。IndexedStack 是 Flutter 中的一个有趣的小部件,它允许开发者根据索引值来显示一组子元素中的一个。这使得 I…

Visual Studio 的调试

目录 引言 一、调试的基本功能 设置断点 启动调试 检查变量 逐步执行代码 调用堆栈 使用即时窗口 二、调试技巧 条件断点 日志断点 数据断点 异常调试 三、调试高级功能 远程调试 多线程调试 内存调试 性能调试 诊断工具 四、调试策略与最佳实践 系统化的…

Unity开发——好用的数值概率公式

1、血量、伤害两个因素作用,击杀目标 正常状态下:hp - attackValue; 特殊状态下:attackValue *2; //伤害翻倍 如飞机/坦克大战中,击杀对方;受到伤害时,装备道具磨损失效; public int…

正则项学习笔记

目录 1. L2 正则化 岭回归 1.1 L2 norm计算例子 2. L1 正则化 3. 弹性网正则化 4. Dropout 1. L2 正则化 岭回归 在 PyTorch 中,L2 正则化通常通过设置优化器的 weight_decay 参数实现。以下是一个简单的例子: 介绍博文: 正则化(1)&a…

ArcGIS中离线发布路径分析服务,并实现小车根据路径进行运动

ArcGIS中离线发布路径分析服务,您可以按照以下步骤操作: 准备ArcMap项目: 打开ArcMap并加载包含网络分析图层的项目。在ArcMap中,使用 Network Analyst Toolbar 或 Catalog 创建网络数据集(Network Dataset&#xff09…

Java中的正则表达式Regex

正则表达式(regulation expression)简称regex。是一个文本处理工具,用于匹配查找替换某种符合格式的字符串。 有两个最重要的类是pattern和matcher。 Pattern是正则表达式的编译表现形式。Matcher是用来执行匹配操作的引擎,具体…

Azure Chatgpt demo部署——本地CentOS Docker

参见上一篇 http://t.csdnimg.cn/JcyfM 由于本地部署环境,与之前系统、网络、配置等环境不同,可能会遇见一些新的问题。 取2023年8月27日代码 git checkout -b a02796b063381c10ca9ca8189590b289a4d09129 由于本地情况的网络等环境不太一样&#xff0c…

车载电子电器架构 —— 智能座舱标准化意义

车载电子电器架构 —— 智能座舱标准化意义 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消…