http协议在功能方面已经非常完善了,只不过安全性没有保障,因为数据都是明文传输的
get方法直接将数据以url参数的方式进行传递,post方法将数据以请求体的方式进行传递
虽然post比get安全那么一点,但是只要数据是明文传递的,那就一定不安全(隐私泄漏,数据被篡改等等安全问题)
所以大佬们在http协议之上引入了一个加密层,设计出了https协议
加密就是把 明文(要传输的信息)经过一系列变换,转换成密文
解密就是把 密文经过一系列变换,转换成明文
在这个加密和解密的过程中需要一些数据来辅助进行,这些数据被称为密钥
加密和解密涉及到密码学的范畴,我们只需要知道总是有很多方法对数据进行加密解密的,至于怎么加密和解密,有密码学的大佬负责研究
因为只要数据是明文传递的,那就一定不安全(隐私泄漏,数据被篡改等等安全问题)
在数据传输过程中,有中间方会进行劫持,窃取隐私信息或者篡改内容等等(至于中间方是谁? 技术既能向善又能向恶,都是被金钱蒙蔽了双眼…)
(想象一下,如果你在使用支付宝进行支付操作时,你的用户账号,密码和支付密码被中间方盗取了…当然这种情况现在不会发生了,因为有了https,人脸识别,指纹识别等等技术)
对称加密是指:
加密和解密所用的密钥是相同的
特点: 加密解密计算量小,速度快
比如: 利用按位异或的可交换性和抵消性就可以搞一个对称加密
小明和小红要进行通信,它们都持有密钥key=1234
小明发送一个"hello",这个"hello"的每个字符都跟key进行按位异或(也就是加密),然后才发给小红
小红收到数据之后再将数据的每个字符跟key进行按位异或(也就是解密),转换回了"hello"
这个密钥key就是对称密钥,在这期间即使数据被中间方劫持了,中间方也不知道你们的密钥是什么
(不考虑中间方恶意穷举破解密钥,因为有可能获取到的非法利益还不够破解密钥的成本呢…)
因此它也就无法获取隐私信息或者篡改信息
(因为你改消息是为了误导接收方,获取非法利益,你都不知道接收方解密用的密钥是什么,你怎么误导他?? 所以篡改信息没意义)
使用对称加密,理论上来说已经能够解决数据安全性的问题,但是在实践上,单纯只靠对称加密是行不通的


小结一下: 如果只采用对称加密,实践当中为何不能解决数据安全性问题
总和起来,都是因为
非对称加密:需要通过两个密钥来进行加密和解密
一个密钥被称为公钥,另一个被称为私钥
加密解密时有两种使用方式:
特点: 算法复杂,加密解密效率低
稍后我们再来分析使用非对称加密能解决数据安全性问题吗,现在我们先介绍其他很重要的知识

下面我们站在https协议设计者那些大佬的角度来思考一下如何对数据进行加密,解密
刚才我们已经看出只使用对称加密是不行的,那么我们只使用非对称加密呢?

其实如果考虑中间方欺骗client和server的话,从client到server也是不安全的

因此这种方案果断pass
欺负我client没有密钥…那我们给client也配上密钥
我们依然先不考虑中间方欺骗client和server,
刚才server -> client不安全是因为server发送数据使用私钥S’加密,但是中间方有公钥S,
因此server发送数据一定不能用自己的私钥S’加密,而要用client的公钥/私钥来加密

中间方搞事情:

这个方案还有一个问题
全都用非对称加密,效率太低了!!!
而且你看,client都能把公钥C"安全"的发给server了,也就是说公钥C这个密钥非常"安全"
而对称密钥缺的不就是安全嘛,人家还非常快,因此把C换成对称密钥不好吗,双方通信时都用对称密钥
因此下一个版本

但是中间方依旧能搞事情

经过三个版本,我们发现,中间方能搞事情的原因都是因为:
client被骗了,他认为自己受到的公钥M就是server发送的公钥S
也就是说client无法判断收到的公钥的合法性
现实生活当中,如何区分假钱和真钱? -> 验钞机 , 验钞机具体如何区分呢? 根据: 磁性、尺寸、厚度等特征 -> 这些特征谁规定和保证的? -> 国家相关组织
因此我们这里也有相关组织: CA机构(Certificate Authority,证书授权机构)专门解决这一问题
在server使用HTTPS之前需要向CA机构申请CA证书,CA证书里面含有证书申请者信息,公钥信息等等
client访问server时默认会检查该网站的CA证书,
如果CA证书过期了,或者不可靠等等,浏览器就会给我们安全警报,我们看到之后就会关闭该网页

如果CA证书有效,那么浏览器就会从CA证书里面获取公钥
CA证书就相当于server的合法证书,证明server公钥是正确安全的
整个流程:


从技术的角度,中间人对CA证书想怎么改就怎么改,掉包都可以,但是你怎么改都没用,掉包就暴露你了,到时候进局子了就
CA证书=企业的明文数据+用CA私钥加密的 用企业明文数据生成的数据指纹

因此HTTPS协议的最终方案是:
CA证书+非对称加密(client用server的公钥加密对称密钥发送给server)+对称加密
既保证安全,又保证了效率
以上就是HTTPS协议原理的全部内容,希望能对大家有所帮助!!