1、HTTPS是什么?
1.1、HTTPS的介绍
HTTPS简称:超文本传输安全协议(英语:HyperText Transfer Protocol Secure,缩写:HTTPS);
HTTPS是基于HTTP上扩展出的一种安全的传输协议,在很早之前,HTTP的不安全为人所诟病,而一些金融领域,涉及到敏感信息的通信,HTTP已经远远不满足需求了,所以安全的传输协议已经迫在眉睫了;
HTTPS协议发明出来的主要目的就是保护互联网的传输过程中,保护数据的隐私和完整性,最开始是由网景公司(Netscape)在1994年首次提出的协议,后来就扩展到互联网上了;
1.2、HTTP的痛点
HTTP协议,是我们目前使用最多,也是最广泛的协议,几乎我们无时无刻不在使用着它,但是HTTP有一个致命的缺点,就是不能进行安全的传输;
网络的世界是很复杂的,如果有人想要窃取或者篡改某些你要传输的数据,那么在HTTP协议上是很容易出现的,比如登录、转账这些极其敏感的操作,如果不使用安全的传输协议,那么就很容易被不法分子所利用,导致损失惨重;
那么安全的传输协议也就自然而然的诞生了,而想保证安全性,那么加密这一块,是必不可少的,而HTTPS就是基于这些加密算法,来保证了安全传输;
1.3、HTTPS是怎么工作的?
HTTPS是基于HTTP的基础上进行工作的,通过加密协议对通信进行加密,该协议称之为传输层安全性(TLS),以前是被称作为SSL;
该协议通过协商密钥,以及验证身份的方式,来保证通信的双方数据不被获取到,以此来保证数据传输的安全性;
而这其中涉及到很多算法,比如哈希算法,对称加密算法,非对称加密算法,数字证书等相关知识;
接下来我们来一步步分解,深入探索;
2、什么是加密?
2.1、加密
将内容转换为无法识别的密文,这个过程就叫做加密;
比如有一串中文:我是祖国的花朵。
那么加密后可能就变成:HSUUI&&*768SASKD&7980%8SHOS%^$hUSHHD&6788
那么上面的那一串密文是无法直接读取过来的,必须要通过解密后,才可以看到内容;
而加密的方式有很多,这里就先讲讲几种主要使用的加密方式;
2.2、哈希
哈希算法是不可逆加密算法;
为啥叫不可逆呢?
因为加密后的内容是无法被转化为原来的内容的,那么到这里你是否会有疑问?
既然加密后不能转化为原来的内容,那么这个加密还有什么用呢?
不可逆加密的用途,大多都是用于数据校验,不可逆加密算法有一个很大的特点就是,和原内容强相关,什么意思呢?
就是说原内容,经过不可逆算法生成的值,是和原内容息息相关的,如果原内容被篡改了一个字符或者几个字符时,生成的值就和原来的大不相同了;
所以这种特点非常适合于传输过程中的数据校验,判断数据在传输过程中是否被篡改了;
但是并不能避免数据被篡改,只是可以洞察到这种被篡改的情况;
3、对称加密
3.1、什么是对称加密
对称加密,简而言之就加密和解密使用的密钥是一致的;
也就是说使用对称加密的双方,都持有相同的密钥,用于加密和解密;
下面我们从一张图里可以形象的看出对称加密算法加密解密的流程;
对称加密中,有几种常见的数学算法,目的是为了让被加密的数据尽可能的复杂,避免被很容易的po解,那么常用的数学算法有哪些呢?
3.2、对称加密涉及的数学计算有哪些?
(1) 移位和循环移位
移位就是数码按照一定的顺序进行移动,比如有一段数码为12345678,那么其右移后变成23456781,左移后变成81234567;
(2)置换
将数码中的数据根据置换表,进行移位,移动后的数据会变得杂乱无章; 比如一段置换表为:2,4,1,5,3,6; 那么123456这个数据根据这个置换表,进行置换后,数据就变成了:315246;
当然我这里只是举例,实际的置换表有64位,远远比这个复杂;
(3)扩展
将数码中的数据扩展为比原来更长的数据,可以利用置换表进行扩展;
(4)压缩
将数码中的数据压缩为比原来更短的数据,同理可以利用置换表进行压缩;
(5)异或 为二进制布尔代数运算
(6)迭代
进行多次重复的运算,这在加密算法里很常见,可以让数据变得更复杂和更难以po解;
3.3、DES算法的工作原理
下面我们来分析一下最常见的对称加密算法DES,以及其对应的工作原理;
(1):DES描述
DES算法全称为Data Encryption Standard,即数据加密算法,是IBM公司研发出来的对称加密算法,DES算法是典型的分组加密算法,也是应用最广泛的对称加密算法;
(2):DES工作原理
先来看一张流程图:
这里涉及太多复杂的操作,一时半会讲不完,这里就先缩略了,感兴趣的可以看看这位大佬写的文章:算法科普:神秘的 DES 加密算法
DES非对称加密算法是最为常见的分组加密算法,其核心在于置换与移位的数学运算,由于其加密算法是公开的,那么密钥的保密就非常的关键了,只要密钥泄露了,那么数据就会轻而易举的被po解了;
4、非对称加密
4.1、非对称加密是什么?
非对称加密,理解起来很简单,就是加密和解密的密钥不一样,正如这个名称所说的非对称;
下面我们以RSA非对称加密来举例;
非对称加密有两组密钥,一组为公钥,一组为私钥,这里为啥要组来称呼呢? 这个与非对称加密的原理有关,请继续往下看!
非对称加密的密钥格式为(a,b),a和b可以为任何整数,比如公钥(1234,12),私钥(1234,34)这种;当然我这里只是举例,这里的公钥和私钥没有关联关系;
上面为啥要说我这里随便写的没有关联关系呢?因为公钥和私钥是一一对应的,也就是说用公钥加密的,只能用对应的私钥才能解开;
那么到这里你是否有疑问了,为什么非对称的加密和解密的秘钥不一致?而不和对称加密一样,通过算法可以加密和解密内容;
4.2、RSA非对称加密算法
下面我们来讲讲RSA的加密和解密算法;
假设我们加密的公钥为(n,e);
5、数字证书
5.1、什么是数字签名?
刚看完非对称加密,接下来我们来看看数字签名;
在看下去之前,我们来思考一个问题,在通信的双方,如果发生了第三方攻击,也就是有黑客截取了主机A发送给主机B的数据,并且进行篡改后,在发送给主机B,而这时候主机B拿到的已经不是主机A发过去的原始数据了,数据已经被篡改了,那么我们怎么避免这种情况发生呢?
答案是:数字签名
那么这里可能会有疑问了?我使用非对称加密不就行了吗,第三方就算截取了我的数据,但是还是解密不了;
没错,非对称加密虽然可以防止被po解,但是还是不能防止被篡改,要是攻击者,把截取到的密文,修改了几个字符,那么接收者通过私钥解密后的内容就已经不是原来的内容了,所以这种方案还是不严谨;
我们先来看一下什么是数字签名?
数字签名其实就相当于人类的签名,数字签名就是通信的时候对数据进行签名,签名的作用就是通信的双方可以辨识该数据的身份,以免被伪造身份;
那么数字签名是怎么实现的呢?
假如正在通信的主机A和主机B,主机A持有私钥,主机B持有主机A的公钥;
首先,主机A使用Hash算法对数据生成一段摘要值,然后再用私钥对这个摘要值加密,并将这个摘要值附在数据后面,发送给主机B;
主机B接收到数据后,使用公钥对这个摘要进行解密,然后再使用Hash算法对数据生成摘要值,将生成的摘要值,和解密后的摘要值进行比较,如果一致,那么则认为该数据持有的人是对的人,而不是被假冒的第三方;
第一种情况,使用公钥加密,私钥解密:
第二种情况,使用私钥加密,公钥解密:
看到这里,你是否会有疑惑,这两种情况是否还存在风险呢?
假如第一种情况,公钥被别人盗取了,那么别人就可以用这个公钥来假冒身份进行通信,而通信的对方识别不出来;
第二种情况,私钥泄露了,那么同理别人也可以用这个私钥来假冒身份进行通信;
那么怎么解决以上这两种问题呢?
那么就轮到我们的主角登场了,那就是:数字证书;
5.2、数字证书
数字证书是什么?
说的通俗易懂的,数字证书其实就相当于身份证,用于证明你是你,而不是被别人冒充的你,而数字证书的作用,用于在服务器出示证书验证身份用的;
作用就是为了避免第三方攻击,也就是别人冒充你去和对方进行通信,在通信的时候起到鉴别身份的作用;
数字证书是怎么起到鉴别身份的作用呢?
数字证书是由一个权威机构颁发的,这个权威机构叫CA,英文全称:certificate authority,又被称为证书中心;
这个CA中心,类似于公安局那种权威机构,给我们办理的身份证就是权威的,其他机构可信任的;
而CA中心就是这种原理,颁发的证书,可以被浏览器和客户端所信任;
总结
HTTPS的实现原理
HTTPS的实现,等于HTTP+SSL,而SSL协议做的主要工作是,帮助通信的双方,建立起通信的安全通道,通过四次握手,进行身份验证,密钥协商等操作,让服务器与客户端通过对称加密算法进行数据的加密,然后通过非对称加密算法来进行数据的签名,保证数据的完整性,以此来达到安全传输的目的;
请看最后总结的流程图:
从这里可以看出,最重要的一步,就是SSL协议,是HTTPS的基石;
那么到这里HTTPS相关的知识就已经讲完了,如果你有更好的观点,或者文中有哪些不合理的,都可以在评论区留言;
本文转自 https://juejin.cn/post/6854573206737518606,如有侵权,请联系删除。
最后
全套视频资料:
一、面试合集
二、源码解析合集
三、开源框架合集