HTTPS加密解密那些方案记录

众所周知:

Http1.0主要是无状态无连接,浏览器每次请求都要与服务器创建TCP连接,就要三次握手四次挥手,处理完就断开。所谓无状态就是服务器不跟踪客户端也不记录请求。
http1.1 连接方式从1.0的close变成了keep-alive 持久连接。避免连接建立和释放的开销,服务器必须按照客户端请求的先后顺序回送结果。
不允许同时存在两个并行的响应。
http2.0:二进制分帧和多路复用。

HTTPS

可以理解为HTTP+SSL/TLS
在HTTP与TCP之间多加了一层SSL或TLS。达到安全的目的。

如果想理解加密策略要一步一步来

1.对称加密方案

一套秘钥,和数据一起发送,然后接受方直接使用秘钥进行解密。
流程是:
①客户端生成秘钥
②秘钥加密数据
③客户端发送数据+秘钥
④服务端接收后,利用秘钥解密数据。

特点:速度快,不太耗费资源。
问题:就很不安全!中间数据被截获,直接就顺手用密钥破解了。

2.非对称加密方案

公开密钥加密,用一对非对称的密钥。服务端持有一把私钥,一把公钥,公钥可以公开发布给多个客户端。客户端使用得到的公钥进行数据加密,发送数据给服务端,服务端使用私钥解密。

整个流程就是:
①服务端持有公钥、私钥
②客户端请求公钥
③服务端返回公钥给客户端
④客户端使用 公钥加密数据
⑤发送数据
⑥服务端使用私钥解密数据

特点:安全,没有私钥,就算劫持了数据也无法进行解密。
问题:耗费资源,用户体验不好,一般不会使用。

3.对称非对称加密相结合的方案

服务端依然持有公钥和私钥。不过客户端请求到公钥之后,会对应公钥生成一个秘钥,并用这个秘钥去加密数据。然后使用公钥加密生成的秘钥。再把加密后的数据和加密后的秘钥发送给服务端。此时,服务端使用私钥解密得到秘钥,再通过这个秘钥去解密数据。

整个流程:
①服务端持有公钥A,私钥A
②客户端请求公钥
③服务器返回公钥A给客户端
④客户端生成对称秘钥B
⑤秘钥B加密数据,然后公钥A加密秘钥B
⑥发送数据和秘钥B
⑦服务端使用私钥A解密得到了秘钥B,然后通过秘钥B解密数据,得到数据。

看到这里,有人就会疑问,这不是更费劲了吗?实则不然,如果我们只使用非对称的话,每次请求我们都要进行非对称的加密解密。但是如果我们采用这种方式,我们只需要在第一次客户端请求的时候使用非对称加密,当服务端拿到了客户端的秘钥之后,就不需要再去非对称获取了。

看了上面的感觉安全了吗?实则不然,存在个中间人攻击。

中间人攻击

这个图就展示了中间人攻击。通过这个中间人,就可以了解信息,并进行操作的窃听和篡改。并且服务器可以说消息不是自己发出的。

那么怎办???
此时传说中的大家都知道的证书要出场了!!!

为了避免中间人攻击,客户端需要确保拿到的公钥的确是你服务器的,这个公钥不能被伪造。那么证书的意义就有了,证书里面包括了网站地址,加密公钥和证书的颁发机构,客户端获取证书之后先验证证书的的有效性,包括了证书的有效期和颁发机构之类的。

HTTPS采用的就是,通过服务端证书和对称非对称相结合的方案。第一次处理会慢一些,后续会比较快。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值