[18]JAVAEE-一文搞懂HTTPS协议

目录

一、什么是HTTPS

二、为什么要有HTTPS

运营商劫持

三、加密

对称加密

非对称加密

中间人攻击

引入证书


一、什么是HTTPS

HTTPS是基于HTTP的一个协议,比HTTP多了一个“加密层”,简单来说,HTTPS=HTTP+加密层

二、为什么要有HTTPS

运营商劫持

HTTPS设计的初衷,是为了解决像运营商劫持这种臭名昭著的问题。在早期的互联网时代,用户下载网络资源大多在一些官方网站,例如你要在官网下载一个网易云音乐,未被劫持的效果,就是点击下载按钮后,下载网易云音乐

而运营商劫持之后,点击下载网易云音乐,下载来的成了qq音乐,这种通过替换下载地址修改数据内容的操作,就是运营商劫持

并非只有运营商可以修改数据,很多人都可以修改,在复杂的网络环境中,处处充满危险,而HTTP这个协议,在网络传输中都是明文传输的,这就有很大的安全隐患,所以为了改善这个问题。HTTPS就应运而生了

三、加密

加密是HTTPS针对HTTP的各种header,body进行加密

对称加密

对称加密:指通过一个密钥来进行加密解密

明文+key=密文

密文+ket=明文

特点是比较迅速,计算起来比较快

这是传输过程,假如现在存在一个黑客要获取数据

如果黑客没有key,那么很显然黑客就无法获取两方传输的数据,安全性大大提高,但对称加密也存在一个隐患:黑客是可以获取key的

一个服务端要同时对多个客户端进行服务,很显然,每个客户端的key都是不同的,在客户端连接服务端之前,需要自己生成一个key,然后在第一次连接服务端时,通过网络传输把key给传输给服务端,随后服务端记住这个客户端的key,随后基于这个key对此客户端进行数据传输的加密解密,但是在第一次传输key时,是明文传输的,也就是说,这个key仍然有被黑客截获的危险,一旦黑客截获了key,那么加密就形同虚设了

所以为了解决这个问题,我们就需要引入非对称加密 


非对称加密

非对称加密:指通过两个密钥来进行加密解密

其中一个叫做公钥(pub),一个叫做私钥(pri)

明文 + pub = 密文

密文 + pr = 明文

特点是更加安全,但是计算起来比对称加密更慢

这是非对称加密的加密过程

  • 1.由服务端生成一对公钥私钥
  • 2.客户端向服务端发起请求,获取公钥
  • 3.客户端生成key,并通过公钥对其进行加密
  • 4.服务端获取到了key,并通过私钥进行解密,拿到了客户端的key
  • 5.即使有黑客截获了全部的发送过程,但私钥从始至终都没有通过网络明文传输,黑客只能获取公钥和被公钥加密后的key,但是没有私钥无法进行解密也就无法获取key,但是客户端和服务端都拿到了key
  • 6.从此以后双方仍使用对称加密进行通信

但正所谓道高一尺,魔高一丈,即使是上述看似天衣无缝的加密过程,仍然有被破解的风险

中间人攻击

这是中间人攻击的流程

当客户端向服务器获取公钥pub1时,黑客自己生成一对新的公钥pub2和私钥pri2,同时将pub2发送给客户端,然后客户端使用pub2对key进行加密,黑客拿到之后使用pri2进行解密,这样黑客就拿到了key,然后黑客在将key使用pub1进行加密转发给服务端,这个过程中,双方都没有感知到黑客的存在,黑客神不知鬼不觉的拿到了key,这就是中间人攻击

引入证书

虽然魔高一丈,但道还可以“再高一尺”。为了避免中间人攻击这种数据泄漏的风险,还可以通过引入证书的方式,来保证传输的安全

这里的证书,并不是纸质证书,而是一串数据,证书由“权威机构”颁布,证书类似于一个对象,里面包含了各种数据

  • 服务器的公钥
  • 颁发证书的机构
  • 有效时间
  • ......
  • 被加密的签名(校验和)

校验:

在证书中,存在一个被加密的签名,这个签名被权威机构的私钥加密,同时通过一个复杂的算法,将证书中的各个元素整合在一起算出一个值sum1

当客户端拿到证书后,使用同样的算法将证书中的各个元素再算一次,拿到一个值sum2

同时,使用证书的公钥对加密的签名进行解密拿到sum1(证书的公钥在操作系统中内置)

对比sum1和sum2,如果相同,则说明没被篡改。

一个服务器架设的时候,需要先去权威机构申请证书,同时把自己的公钥提交过去,这样在服务器通信时就变成了这样

在这个过程中,黑客是无法使用中间人攻击的。

黑客虽然也可以拿到权威机构的公钥、证书等信息,但黑客一旦将证书中的公钥篡改,客户端算出来的校验和必然和签名不同,而黑客是无法篡改签名的。因为签名被权威机构的私钥加密。也就是说,黑客想要篡改证书,只能拿到权威机构的私钥,但是要拿到权威机构的私钥,或许只能使用一些物理手段了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不卷啊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值