HTTPS加密原理

发布于:2025-06-21 ⋅ 阅读:(15) ⋅ 点赞:(0)

一、什么是HTTPS?

1.1 https是在http协议上加了一层加密解密层

如图:

https协议就是在http协议的基础上经过一层加密解密层发送,然后接收端同样需要经过加密解密层才能获取到发送过来的数据,这样就可以保证数据传输的安全性;

1.2 什么是加密?什么是解密?什么是明文?什么是密文?什么是秘钥?

明文加密后就是密文,密文解密后就是明文,除了明文跟密文外的用来辅助加密跟解密过程的其他数据为秘钥;

举例一个很简单的加密解密过程:

如图,明文7经过秘钥5加密后得到密文2,密文2再由秘钥5解密后得到明文7;

其中5是用来辅助整个加密解密过程的,5是一个秘钥;

1.3 常见的加密方式:

①、对称加密:一个秘钥:加密和解密所用的秘钥是同一个;

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

图示:

②、非对称加密:两个秘钥:需要两个秘钥来进行加密和解密:

特点:当用公钥加密时只有拥有私钥的人才能进行解密,算法复杂,运行速度慢;

图示:

二、HTTPS采用的加密方案

我们从最简单的加密方案开始,一步步优化,最后得到比较完善成熟的加密方案就是现在的HTTPS的采用的加密方案:

2.1、方案一:只使用对称加密

这种方案有两种情况:情况一:

这种情况存在的问题:因为服务端一般是少数的,而客户端是大量的,如果大量的客户端都用这个秘钥A,如果当某一天Server端更换A秘钥时,大量的客户端都需要跟着更换秘钥,这样会非常的麻烦;

如果不想这么麻烦换一个方法就是以下这种情况二:

以上方法是先从Server里获取到秘钥后再用这个秘钥来加密,这样可以不用担心Server端的秘钥更改带来的麻烦,但是如此一来加密工作形同虚设,因为中间人可以在第二个步骤时捕获到A秘钥,所以只用对称加密的方案是行不通的;

2.2 方案二:只使用非对称加密

方案二存在的问题:中间人在第二步捕获公钥保存起来,然后再在第④步时捕获Server的响应,然后通过公钥对其进行解密得到明文内容,因为这里的密文是Server通过A'(私钥)形成的,用之前保存的公钥可以破解;

2.3 方案三:双方都使用非对称加密

方案三存在的问题是:非对称加密所使用的加密算法复杂,且如果双方都是用非对称运行速度会很慢;

2.4 方案四:对称加密+非对称加密

方案四是从方案一一步步优化升级过来的策略,已经属于比较成熟熟的方案了,但是这样就真的没问题了吗?

中间人伪造秘钥:

以上之所以能被破解是因为客户端在获取到Server的S公钥时,它自身不能够辨别出接收到的是否是Server的公钥!!

那么如何才能让客户端精准正确的分辨出它所接受到的公钥的的确确是其请求的Server所发回来的公钥呢??

三、引入证书

3.1、在了解证书之前我们先对数据摘要&&数据指纹有一个了解

数据摘要也叫数据指纹,下文为了统一我就用数据摘要来进行描述:

某个数据经过哈希函数运算后生成一个散列值,这个散列值就是数据摘要;

这个散列值具有的特点:固定长度、有非常低的概率会发生冲突、唯一性、不可逆:

意思是:

因此,经过哈希运算后得到的这个字符串就是数据摘要,它能表示唯一的一篇原文数据!!

3.2、数字签名

数字签名很好理解,数字签名就是在数据摘要的基础上再进行加密!!

3.3、有了以上两个背景知识我们在来了解证书

证书就是:一坨数据经过哈希算法后得到一个数据摘要,在给这个数据摘要加密得到一个数字签名,把这个数字签名附加在这坨数据上,得到的就是证书!

看图:

CA机构:一个大家都知道都公认的具有权威信的一个机构,只有这个机构才能签名跟颁发证书;

CA机构怎么对数据摘要进行加密的:CA机构拥有一对公钥、私钥,CA机构用它的私钥进行加密,然后把它的公钥发给大家,大家可以通过这个公钥对其进行解密!

然后回归正题,在前面2.4第四个方案那里我们谈到,如何让客户端分辨出它所接收到的公钥是真正想请求的Server端的公钥呢?

第一步:Server端向CA机构申请证书,提交Sever端的域名、申请人、公钥

第二步:CA机构审核通过后给Server颁发证书

第三步:Client向Server端申请Server的公钥之前,Client端早已把CA结构发给大家的公钥保存好;

第四步:Client获取到Server的证书,这个证书上面除了数据+签名外还写有Server的公钥;Client开始验证这个公钥的真实性:只需要用提前保存好的CA公钥来解密这个证书上的签名,得到一个数据摘要,然后同时把这个证书上的数据通过哈希运算得到一个数据摘要,然后这两个数据摘要进行对比,如果一样说明这个证书上携带的公钥是通过CA机构审核的,是真实的!!

因此得到的方案五:

3.4、方案5:非对称加密+对称加密+证书认证

此时再遇到中间人攻击:①中间人把数据篡改,Client把处理后的两个数据摘要一对比就能发现;

②中间人把签名进行篡改,Client无法通过CA公钥解密签名;

③中间人直接把这个证书调包:这个证书申请时有域名、申请人等信息,不会存在两个一样的域名,Client一样能识别出来;

以上是HTTPS目前最为成熟的加密方案,也就是通过:非对称+对称加密+证书认证(但并不能保证百分百安全,往后可能还会出现某些防范不了的安全问题,所以方案没有唯一的,都是在不停的完善当中);

以上为本次分享的所有内容,如果对你有所帮助,麻烦点赞收藏+关注哦!!谢谢!!!

咱下期见!!!


网站公告

今日签到

点亮在社区的每一天
去签到