https加密

在这里插入图片描述

http和https的区别

http和https最主要的区别就是:中间多了一个安全层。
在http中,http直接与tcp交换数据,但是https中,http首先要与安全层交换数据,再与tcp层交换数据。
安全层的算法是否可靠,便关乎着https是否安全。

众所周知,加密算法通常分为两大类,一类是对称加密,一类是非对称加密
而将这两种加密技术应用在网络传输过程中时,都不可避免地表现出一定的缺点:

  • 对称加密的秘钥是明文传输的,加密算法也是公开的,所以很容易被黑客拿到秘钥窃取数据。
  • 而非对称加密使用公钥、私钥对来加解密,效率低,并且黑客可以获取到公钥,因此也不是十分安全。

而将这两者结合在一起,安全性能大大提高。

https的加密过程,概括来说,有几个重要的部分:
master-secret、公钥、数字证书、数字签名。

先从数字证书说起。

数字证书

首先,由于浏览器无法分辨服务器,需要有一个权威的机构来证明服务器的唯一性。
CA(Certificate Authority)便是一个权威的证书颁发机构。它是可以信任的。
它有自己的公钥和私钥。它会使用hash算法将服务器提交的明文信息进行计算,形成摘要。然后将摘要进行私钥加密,生成数字签名,与服务器公钥、组织信息、有效时间等信息放在一起,形成数字证书

master-secret

  • 客户端和服务器在三次握手建立连接以后,客户端首先会将自己支持的对称加密套件(算法)列表、非对称加密套件列表,以及生成的随机数client-random发送给服务器。
  • 服务器会挑选出自己支持的对称加密套件和非对称加密套件,同时也生成一个随机数sevice-random,并将数字证书返回给浏览器。
  • 浏览器首先将数字证书中的明文信息,利用CA公开的hash算法进行加密,生成信息摘要A,再对数字签名使用CA公开的公钥进行解密,生成信息摘要B,对比A和B,若一致,则说明证书是有效的。
  • 确认证书有效后,浏览器再次生成一个随机数pre-master,并用数字证书中的服务器公钥加密,发送给服务器确认。
  • 服务器收到后使用私钥解密,拿到pre-master。
  • 此时,客户端和服务器同时都拥有了client-random、service-random、pre-master。两者使用加密算法对三者混合,生成一个master-secret秘钥

这个秘钥是比较安全的。至于为什么安全,引用大佬评论,可以选择查看这里↓

( ECDHE 算法,其实是浏览器生成了一对非对称秘钥,其中私钥c,公钥即 client-random
发给服务器;而服务器也同理生成非对称秘钥,其中私钥s,公钥即 service-random
发给浏览器。然后根据离散对数和椭圆曲线的数学基础,可以得出 pre-Master = f(c, service-random,
client-random) = f(s, service-random,
client-random)。即根据不同私钥得出相同的秘钥。而离散对数是非常难逆推破解的,计算量非常大,因此比较安全)

之后,客户端和服务器便会用这个安全的秘钥来对数据进行加密。
整个过程如图所示
在这里插入图片描述

参考:浏览器工作原理与实践-极客时间

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值