HTTP协议与HTTPS协议

什么是HTTP协议?

HTTP协议全称Hyper Text Transfer Protocol,翻译过来就是超文本传输协议,位于TCP/IP四层模型当中的应用层。

640?wx_fmt=png

HTTP协议通过 请求 >>> 响应的方式,在客户端和服务器之间进行通信

HTTP协议有一个致命的缺点,不够安全

HTTP协议的信息传输是以明文的方式直接传输,不做任何加密,很容易被中间人获取数据,之后篡改数据。

解决方法可以通过对称加密和非对称加密对信息进行加密。

对称加密

对称加密是 客户端和服务端定义好加密方式和随机生成一个秘钥,客户端获取秘钥对信息进行加密,服务端获取信息通过秘钥解密

但是也存在一种问题是:对称加密需要在客户端和服务器第一次请求定义好加密方式和秘钥,存在不安全性

非对称加密

非对称加密,为秘钥的传输做多一层额外的保护

非对称加密的一组秘钥中,包含一个公钥和一个秘钥,明文既可以用公钥加密,用私钥解密,也可以用私钥加密,用公钥解密

加密方式:

服务端生成一个公钥Key1发送给客户端,客户端接收到公钥Key1,再生成一个用于对称加密的秘钥Key2,并且用公钥Key1对Key2进行加密。之后把生成的key发送给服务端。

服务端通过非对称加密的私钥,解开公钥Key1的加密,获得Key2的内容,之后就可以通过Key2进行对称加密的通信。

客户端加密图片是:

但是,即使加密方式是这样,黑客还是能够破解。

就是,在服务端生成公钥key1发送给客户端的时候,拦截key1,并且自己定义一个公钥key3,将公钥key3发送给客户端,客户端并且不知道公钥key1被替换了,这时客户端就使用公钥key3进行加密,将自己生成的key2加密到key3中,发送给服务端。

再次被黑客拦截,并且用自己私钥解开key3的加密,获取到key2,之后再用当时服务器发来的key1进行加密,发送给服务器。

黑客知道了key1和key2,就又可以篡改数据。

证书

这时候。我们可以引入第三方,证书来做处理。

服务端生成key1发送给证书机构,向证书颁发机构申请证书。

证书颁发机构也有属于自己的一对公钥私钥,机构利用自己的私钥来加密key1,并且通过服务端网址等信息生成一个证书签名,证书签名同样通过机构的私钥加密,制作完成之后,发送给服务端

当客户端请求通信服务端的时候,服务端不再返回key1,而且返回证书给客户端

客户端需要校验证书的真伪,浏览器和操作系统已经推出所有权威机构的名称和公钥,所以客户端只需要知道哪个机构的证书,就可以找到对应的机构公钥,解密出证书签名。

之后客户端根据同样签名方式,生成证书签名,如果签名一致,就说明证书有效。

验证成功之后,客户端就可以通过证书,解密出key1

之后还是生成客户端的key2,通过key1加密key2发送给服务端。

服务端用自己的key1解密,获取到key2,就可以开始用key2进行对称加密了。

 

很绕,但是你可以把证书理解为一个中间人,第一次的时候,客户端和服务端都要遵循这个中间人定义的规则来。而客户端需要校验这个中间人是不是真的有效。

说到底,非对称加密和证书加密这种,其实都是在第一次校验的时候,加密,之后当客户端和服务端验证正确之后,就通过对称加密进行通信。

而https是在http的基础上增加了SSL安全层,刚才的对称加密和非对称加密就是在SSL安全层完成的。(仅仅只是笔记。勿喷)

 

参考网址:https://blog.csdn.net/forezp/article/details/89666603

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值