Https协议之握手流程(加密方式,从常见场景分析)

前提
首先先假设一个场景:故事的主人公小A此时正通过自己手机浏览网站,当他只是看一些新闻类的时候,用Http协议是没有问题的,但是当他在网上购物(网站B)的时候,涉及到一些重要账号信息交互的时候,问题就来了。如果小A发送携带账号重要信息的网络包被有心之人拦截,事情就大发了。
解决上述这种危险场景一般的思路就是加密,加密有两种方式:对称加密和非对称加密

对称加密

对称加密算法中,加密和解密所用的密钥是相同的,所以对称加密算法要保证安全性的话,密钥要做好保密,只能让小A和网站B知道。加密后的信息就算被有心之人拦截了,他也无法解密,所以是安全的。

可是你以为这样就万无一失了吗?
这里存在一个很大的问题,这个密钥怎么去商定,如果这个密钥也是通过网络来传输的,那么这个密钥被有心之人给拦截了,同样也就能获取到你的信息了。这里就进入一个死循环了,就算小A和网站B约定一个暗号,只有对上暗号才能得到密钥,同样存在问题,这个暗号如何商定呢。对于这个问题,我们先放一边,看看另一种加密方式

非对称加密
非对称加密中,加密的密钥和加密的密钥是不相同的,一把是公开的密钥,称为公钥,一把是除了自己谁都不能给的密钥,称为私钥。经过公钥加密的信息,只有私钥才能解密。同理私钥加密的信息,公钥才能解密。

来看看之前的场景,私钥放在网站B中,不会在网络上传输,但是私钥对应的公钥,是在网络上公开的,小A得到这个公钥,就可以愉快地去购物了。小A把自己的账号信息用公钥加密,就只有具有私钥的网站B能够解密,从现状来看,这是安全的。

但是你以为这样就天衣无缝了吗?
从上述可知,这个公钥可不止小A有,有心之人也是能够得到这个公钥,既然他能够得到这个公钥,那么他就能解密网站B发送的信息,同时他也可以去模拟这个购物的过程。

看了上述问题,难道就真的无解吗?
其实不然,从上述问题中,我们能够得知,只有一对公钥和私钥是不够的。小A也同样也应该有自己的公钥和私钥,自己保留私钥,把公钥给网站B

了解了上述两种加密方式,对称加密的效率是高于非对称加密的,所以在交互的场景下多用的是对称加密。可能看到这里你心中还有很多疑问,说了两种加密方式,但是这两种方式似乎都不是完美的方案。别急,继续往下看,你的疑惑会慢慢解开。

数字证书

上面看了非对称加密,细心的人可能早就发现了,非对称加密也有同样的问题,如何将公钥给信息交互的双方呢?就算公钥给到对方,对方怎么判定你这个公钥就是你本人呢,而不是套牌的,假冒的呢?毕竟网络环境是复杂的,你不知道在传输的过程中有人动了什么手脚。

所以这个时候就有权威机构(CA)的介入了,CA机构专门用于给各个网站签发数字证书,从而保证浏览器可以安全的获得各个网站的公钥。

这个流程具体是:
服务端向CA机构进行申请,将自己的公钥给CA机构。CA机构则会使用我们我们提交的公钥加上一系列信息,如网站域名,有效时长等等来制作证书。证书制作完成后CA机构会用自己的私钥进行加密,并将加密后的数据返回给服务端。服务端只需要把获得的加密数据配置到网站上就可以了。当有浏览器请求我们网站时候,就会把这段加密数据返回给浏览器,此时浏览器会用CA机构的公钥来对这段数据解密。

但是上面还有个问题,就是CA机构的公钥怎么来。正版的操作系统会将CA机构的公钥内置到操作系统中。所以我们不用额外获取,解密只需要遍历系统中所有内置的CA机构的公钥。

但是这个时候又有个问题,如果黑客知道我们的网站是在哪家CA机构申请的证书。那他也可以去CA机构申请一个合法的证书,在浏览器请求的abc.com对返回的加密证书数据进行替换。所以加密证书证据里面有域名存在就可以避免这个情况了。

花了大篇幅对上面两种加密方式以及数字证书的讲解,是为了大家能够好地消化接下来的正餐,接下来我们来看看今天的主题:

HTTPS的工作模式

https把上述两种加密方式结合起来,先来看看下图(图片来自谈网络协议):
在这里插入图片描述
左边为小A(客户端),右边为网站B(服务端)

  1. 当小A访问网站B的时候,此时是HTTPS协议,所以小A客户端就会发送Client Hello到网站B,以明文方式传输版本信息,加密套件列表,和一个随机数等
  2. 网站B收到的信息后,发送Server Hello给小A,告诉小A,自己的协议版本,加密套件,和一个随机数。
  3. 然后网站B会给小A一个证书
  4. 小A就会去判断这个证书是否套牌,假冒。怎么判断呢,从CA仓库中拿公钥去解密证书,如果能够成功解密,就说明证书来源合法,同时小A也会获取到证书中的公钥。这个时候小A会再发送一个随机数Pre-master,并用刚刚得到的公钥加密证书,发送给网站B。
  5. 网站B拿到这个数据,可以用自己的私钥解密,得到这个随机数字。
  6. 注意此时,小A和网站B都得到三个随机数,这随机数当然不是随随便便发着玩,小A和网站B会利用这三个随机数来生成对称密钥,之后的信息交互就是应用对称加密了。

小结:
Https结合两种加密算法,保证传输安全的同时,也提高了传输效率。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值