HTTPS协议原理

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

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

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

二.加密与中间方劫持

1.什么是加密

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

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

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

2.为何要加密

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

3.对称加密

对称加密是指:

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

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

1.小例子

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

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

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

2.好处和缺点

使用对称加密,理论上来说已经能够解决数据安全性的问题,但是在实践上,单纯只靠对称加密是行不通的
在这里插入图片描述
在这里插入图片描述
小结一下: 如果只采用对称加密,实践当中为何不能解决数据安全性问题

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

总和起来,都是因为

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

4.非对称加密

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

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

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

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

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

5.数据指纹/数据摘要

在这里插入图片描述

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

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

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

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

在这里插入图片描述
其实如果考虑中间方欺骗client和server的话,从client到server也是不安全的
在这里插入图片描述
因此这种方案果断pass

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

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

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

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

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

在这里插入图片描述
但是中间方依旧能搞事情
在这里插入图片描述

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

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

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

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

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

四.CA证书

1.介绍

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

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

整个流程:
在这里插入图片描述

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

在这里插入图片描述
从技术的角度,中间人对CA证书想怎么改就怎么改,掉包都可以,但是你怎么改都没用,掉包就暴露你了,到时候进局子了就

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

在这里插入图片描述
因此HTTPS协议的最终方案是:
CA证书+非对称加密(client用server的公钥加密对称密钥发送给server)+对称加密
既保证安全,又保证了效率

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

  • 14
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

program-learner

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值