一个安全的传输通道是如何建立的?

0. 前言

此文章只是本人的自己的猜测,我自己的理解。可能有很多错的地方,希望多多指正。

1. 场景介绍

有这么一个场景:

  • 角色: 发送方,接收方
  • 消息: 给小刘 转100w。

意思是这样:发送方要给接收方发一个消息,那么这个消息的内容为:“给小刘转100万”

2. 使用明文传输

那么使用明文在网络上传输,那么必定会造成安全方面的问题。比如有一个人–小张,他截获了这个消息,并把这个消息改为:“给小张转100万”。如下图

那么造成了什么问题呢?

很显然:小刘并没有获得钱。发送方也白给了100w。

在这里插入1描述

3. 使用对称加密

3.1 什么是对称加密?

加密系统的 加密密钥和解密密钥相同,或者虽然不同,但从其中的任意一个可以很容易地推导出另一个。

3.2 问题的解决

上面的问题主要是使用明文进行传输,所以接收者可以接获到消息并进行修改,所以我们可以将消息进行加密,之后再进行发送,如图:

在这里插入图片描述

3.3 产生的新问题

那么又带来一个问题,那么这个密文解密的密钥如何告诉接收方呢?

如果你将解密的密钥传过去,万一让攻击者再次截获,那么他就可以使用此密钥对消息进行解密,然后将消息进行更改,在使用此密钥进行加密重新发送给接收方。那么在此种情况下,接收方也是不会发现的。

4. 使用非对称加密

4.1 什么是非对称加密?

非对称加密体制又称公钥密码体制:创建两个密钥,一个作为公钥,另外一个作为私钥。私钥由密钥拥有人个人保管,公钥和加密算法可以公开。用公钥加密的数据只有私钥才能解开,同样,用私钥加密的数据也只能用公钥才能解开。

4.2 问题的解决

发送方使用接收方的公钥进行加密之后进行发送。由于使用的是接收方的公钥对消息进行加密的,那么只能使用接收方的私钥进行解密,再由于接收方的私钥只有接收方才有,所以按照此思想来想,信息是不会被别人修改和窃取的。如图:

在这里插入图片描述

4.3 产生的新问题

看上面的陈述,好像是完美的不行。。。。

那么其实有一个问题,上面的图中并没有给出。那么此问题是什么呢?

这个问题就是:接收方的公钥是如何获得?

直接从接收方进行获取?那么必然会产生一个问题,那么在向接收方获取公钥的时候,攻击者可以拦截到消息,并将此公钥切换成攻击者的公钥。

接收方拿到的是攻击者的公钥,那么使用此公钥进行加密,之后攻击者拦截到此消息,自然可以使用自己的私钥进行解密,这样可以顺理成章的拿到消息并改写,之后在使用接收方的公钥进行加密 再发送给接收方。

此时接收方拿到消息,依旧可以使用自己的私钥进行解密,获得消息。那么此时接收方获得的消息已经是攻击者进行篡改之后的消息了。阐述如图所示:

在这里插入图片描述

5. 使用数字证书

5.1 什么是数字证书

数字证书(Digital Certificate)又称为数字标识(Digital ID),提供一种在Internet上验证身份的方式,用来标识和证明网络通信双方身份的数字信息文件。其由第三方机构即CA中心签发。

ITU的X.509数字证书包含如下的内容:

  • 证书的版本号
  • 证书的序列号
  • 证书所使用的签名算法标识符
  • 证书的发行机构名称
  • 证书的有效期
  • 证书所有人的名称
  • 证书所有人的公开密钥及相关参数
  • 证书发行机构ID
  • 证书所有人ID
  • 扩展域
  • 证书发行机构对证书的签名

5.2 什么是CA?

CA(Certificate Authority,认证中心)作为权威的、可信赖的、公正的第三方机构,专门负责发放并管理所有参与网上交易的实体所需的数字证书。其主要职责如下:

  • 颁发证书;
  • 管理证书;
  • 用户管理;
  • 吊销证书;
  • 验证申请者信息;
  • 保护证书服务器;
  • 保护CA私钥和用户私钥;
  • 审计和日志检查。

5.3 问题的解决

上面的问题主要是因为 获得的公钥不知道其身份,那么数字证书解决了这一个问题。数组证书中含有公钥,并且也含有一些确定身份的一些主要信息。那么我们拿到了数组证书,也就却道了公钥的身份。也就可以放心的使用对应的公钥进行加密了。

那么势必会产生这么一个问题:那么怎么确定数字证书的真伪呢?

其实因为数字证书是由CA 颁发的,上面有CA的签名,因为签名是CA使用其私钥进行的。所以我们使用CA的公钥,对签名进行验证,就可以知道证书的真伪了。那么所有的问题也就迎刃而解了。

那么其过程如图:

在这里插入图片描述

6. 关于数字签名

6.1 什么是数字签名?

与人们手写签名的作用一样,数字签名系统向通信双方提供服务,使得A向B发送签名的消息P,以便达到:

  • 接收方可以验证消息P确实来源于 发送方(P使用 发送方 的私钥加密);

  • 发送方 以后不能否认发送过P;

  • 接收方 不能编造或改变消息P。

在上面5节的阐述中,只是保证了安全的传输,但是没有讲过接收方的事儿,那么接收方会有什们问题呢?

很显然,接收方无法验证接收的消息是否来自于发送方。那么就涉及到了数字签名。

通俗来讲,数字签名就是:发送方把消息签名**(使用自己的私钥加密)** ,再将签名后的消息使用 接收方的公钥进行加密并传送。那么接收方接收到消息,使用自己的私钥进行解密,获得消息之后,在使用发送方的公钥进行签名的验证,如果通过,则可以证明是发送方发送的消息。发送方就无法抵赖了,因为这个消息的签名我用你的公钥进行验证,通过了,那么这个消息就是发送方发的,所以发送方是无法抵赖的。

7. 总结

其实也没什么要说的。。。。。。。。。。。。快乐生活每一天。

猜你喜欢

转载自blog.csdn.net/weixin_42041788/article/details/108297684