#

一般来说,在使用 http 协议进行数据交换时,数据都是明文传输的,这就给数据的安全性带来了很大隐患,中间很容易被截获,中间人很容易查看到里面的内容和篡改内容,所以,https 出现了,它会对传输的内容进行加密,让数据传输变得更安全,减少遭受中间人攻击的可能。

# 人物介绍

file

王尼玛:单身汪,打算今天和他的女神王尼美表白(客户端)
王尼美:王尼玛喜欢的人(服务器)
隔壁老王:喜欢搞事的人(中间人)

# 不用加密的后果

王尼玛给尼美发了条我爱你的信息,但被隔壁老王截获了,老王心生一计,于是把信息替换成了我恨你,尼美看到后非常生气,于是把尼玛拉黑了

file

这个故事告诉我们数据传输一定要好好加密,确保两人之间的交流只有自己和对方能看懂,同时别人也不能乱改,那么怎么加密呢

# https 如何加密

# 对称加密

对称加密:产生一个密钥,可以用其加密内容,也可以用它来解密内容

file

在这种加密方式中,王尼玛会先向王尼美询问密匙,然后王尼美告知密匙,之后的内容都会使用这个密匙加密

file

但这种方式并不靠谱,因为中间人一样可以拿到密钥,依然可以进行加密和解密,也依然可以篡改内容

file

因为老王保存了秘钥,所以成功的替换了内容

file

所以这种加密方式并不靠谱,那么其他方式呢

# 非对称加密

非对称加密是指产生一对密钥,一个用于加密,一个用于解密

file

通讯方式如下

王尼美会先生成一对秘钥,假设其中公钥用来加密,私钥用来解密,王尼玛用这个公钥来加密,这样只有保存私钥的王尼美能解密,保证了王尼玛的信息不会被其他人读懂

但是问题是,王尼美的回复王尼玛却看不懂了,因为他没有私钥不能解密

file

# 非对称加密 + 对称加密

为了解决尼玛同学看不到女神回复的问题,又有了第三种加密通讯方式

file

在这个通讯方式里,王尼玛生成一个秘钥(用于对称加密),尼美生成一组秘钥(用于非对称加密),在开始通信时,尼美先把自己的公钥发给尼玛,尼玛收到后,把自己的秘钥通过尼美的公钥加密后,再发回给尼美,之后双方就使用王尼玛的秘钥进行通信

这种加密虽然安全性上升了不少,但是也会被破解

file

首先,隔壁老王拦截王尼美的公钥,然后把自己的公钥发给王尼玛

file

然后王尼玛会用隔壁老王的公钥进行加密,老王有对应的私钥,所以可以进行解密,然后老王再用尼美的公钥重新加密信息,重新发给尼美

然后现在情况就和只用对称加密的一样了,老王依旧可以查看,篡改信息

file

# CA 为中介的加密

为了能顺利把王尼美的公钥交给王尼玛,这时就轮到 CA 出场了,CA 的全称是 Certificate Authority,即证书颁发机构,是可以信任的第三方机构。

CA 会生成一对秘钥,其中公钥用于解密,私钥用于加密,CA 机构的公钥是公开的,也就是说任何人都可以解密,操作系统和浏览器都会内置常见受信任的 CA 机构的公钥。

如果要使用 CA 机构,首先需要生成一张数字证书 (Digital Certificate)

file

一般来说,数字证书会包括下面的内容

  • 网站域名
  • 证书颁发机构
  • 用认证机构私钥加密过的服务器公钥
  • 用认证机构私钥加密过的证书签名

file

其中证书签名会通过证书里的一些信息生成出来

file

证书签名的算法是公开的,它的目的,是为了让每一个拿到证书的终端,可以验证签名是否被篡改

因为证书中的服务器公钥、证书签名是通过 CA 的私钥加密的,所以其他终端只能通过 CA 的公钥解密读取,但是无法篡改和伪造证书,因为其他终端没有颁发机构的私钥,所以无法对篡改过后的证书进行再次加密,如果篡改了,证书签名就会不一致从而验证失败。

浏览器会先对服务器的 CA 证书进行验证
file

如果证书被篡改会验证失败
file

后续的交流
file

因为后续交流时,中间人拿不到用于加密的对称加密的秘钥,所以后续的通讯都无法被解密和篡改
file

更新于 阅读次数