HTTPS的加密过程

HTTPS是HTTP的孪生兄弟,HTTPS在HTTP的基础上,引入了一个加密层。

为什么要引入这个加密呢?

因为当年存在着臭名昭著的“运营商劫持”。

正常的下载情况:

被运营商劫持了的下载情况:

被劫持后这里下载了某Q浏览器,为什么呢?原因一目了然。

所以,为了避免这个问题,就引入了HTTPS,用来对传输数据加密。

对于加密,这里解释三个名词:

  • 明文:要传输的原始信息
  • 密文:原始信息背后的秘密,要密钥才能解开
  • 密钥:解开明文背后密文的钥匙

接下来,我们简单模拟一下加密的实现过程。


HTTPS中引入的加密层,称为SSL,或者最新也叫TLS

在其中,涉及的加密操作,主要是两种方式:

  1. 对称加密
  2. 非对称加密

对称加密就是客户端和服务器都使用同一个密钥,这个密钥既能加密,也能解密。

在网络上传输的是密文,服务器收到密文后,需要用密钥解开。

但是如何保证客户端和服务器持有同一个密钥呢?尤其是一个服务器对应了很多客户端的时候。

这时就需要每个客户端都有一个不同的密钥,否则黑客很简单就能获取公共密钥。   

所以这里就需要客户端主动生成密钥给服务器,或者服务器生成密钥告诉客户端。

反正这个密钥会在网络上传输,如下: 

既然密钥都在网络上传输了,那么黑客又很简单获取了。

所以想要传密钥,还需要对密钥进行加密。


如何对密钥加密呢?这里就需要引入非对称加密。

非对称加密有两个密钥,分别叫做公钥和私钥。

公钥,人人都能看见,用来加密。私钥,只有自己才知道,用来解密。

比如小区里的信箱,快递小哥有个锁头,你有这个信箱的钥匙。

锁头能把信塞进信箱,只有你才能用钥匙打开信箱。        

在这里客户端和黑客都有公钥,只有服务器有私钥。

客户端可以用这个公钥,给密钥加密。这样黑客拿到密钥也没有私钥解密。


上述操作看似完美,但是任有缺陷,叫做“中间人攻击”。

首先,客户端会问服务器公钥是啥。

服务器会返回一个公钥。

在这个返回的途中,黑客可以自己生成一个公钥和私钥。

于是,黑客将自己的公钥返回给客户端,客户端拿这个公钥加密密钥后要传输出去。

黑客拿到后,就可以用自己的私钥来解密,于是拿到了密钥。

为了伪装,再用之前服务器的公钥给密钥加密,再给服务器。

服务器就不知道发生了啥,却“正常”地收到了看似没问题地密钥。

上述过程就是“中间人攻击”。


为了解决这个问题,关键就在于客户端要知道这个公钥是服务器的,不是伪造的。

于是就出现了第三方的公信机构,由他们给服务器一个独一无二的证书。

这样服务器传送公钥的时候,会一起把这个证书传给客户端。客户端看到证书才会加密。

黑客虽说也能仿造证书,但是证书也有认证机制,客户端也可以向公信机构求证。

有的客户端内部还自带公信机构的信息,这样就能进行本地认证,更加快速。

    

感谢你能看到这ヽ( ̄ω ̄( ̄ω ̄〃)ゝ

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

丶chuchu丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值