# 安全通信所需要的特征

  1. 机密性: 只有通信双方能够理解通信的内容
  2. 报文完整性: 报文传递过程不会被修改,篡改
  3. 端点鉴别: 能够知道对方不是伪装的,确实是我们想要通信的人

# 实现安全通信的三块"积木"

# 对称秘钥系统

通信双方使用相同的秘钥,对数据加解密, 但是前提需要使用线下的方式来商讨秘钥,防止泄露.

# 公开秘钥系统

也就是一个公钥和一个私钥. 消息的接收方, 生成一对秘钥, 然后向外部公布公钥, 所有使用公钥加密的数据, 只能由私钥解密, 这样的话, 就能保证, 只要是发送给自己的数据, 就不会被别人知道.

私钥加密的数据也只能由公钥去解密.

但是可能会被中间人修改和篡改.

# 密码散列函数.

一份数据通过hash算法进行散列, 生成一个唯一对应这个数据的字符串. 相当于数据的指纹, 一个数据只能对应一个散列值. 不同数据的散列值一定不相同.

比如md5算法,就是这种算法, 生成一个文件的唯一标识, 一旦文件被修改, 再次生成的md5就不同了.

# 如何保证报文完整性和端点鉴别?

# 数字签名

如何保证数据一定来自于对方? 端点鉴别的原理, 既然想要知道数据一定来自某一方, 那就需要将某一方独有的特征携带过来即可, 这个东西就是数字签名

对方需要将密文和明文一起发送过来, 然后接收方使用公钥对密文进行解密, 如果解密后的密文与明文完全相同,则可以证明确实是这个人发送的数据. 传输的文件的校验码.

注意数字签名,无法保证数据的机密性, 仅仅是保证数据不会被篡改和完整性

# 加密算法

img

# https原理

https ( http over ssl ) 运行在ssl上的http协议, 在应用层和传输层之间添加的 安全套接字层. 后来ssl的版本升级 变为了tls(传输层安全).

我们知道传统的http协议以明文传输数据. 在网络上各个路由结点,都有可能获取,篡改我们的数据. 因此如何保障传输数据的安全呢?

# 对称算法

使用对称算法加密: 发送和接收双方都使用一个秘钥,对数据进行加解密. 但是如何保证, 对称算法的秘钥,不会在网络中传播时,被窃取呢.

# 非对称算法

因此出现了无法窃取的非对称加密算法(公开密钥系统), 会生成一对公私钥, 它有三个特点:

  1. 公钥加密,只能私钥解密
  2. 私钥加密,只能公钥解密
  3. 公钥无法解密公钥.

因此,想要接收私密数据的一方, 生成一对公私钥, 公钥可以发布给所有人. 但是私钥永远只有自己知道. 发送方使用公钥加密数据, 之后由接收方通过私钥解密.

# CA机构(可信的证书颁发机构)

虽然能够保证, 接收方接收的数据是被加密的. 但是无法知道是否有中间人, 在客户端和服务器之间, 将请求拦截, 相互伪装成各自的服务器和客户端, 让客户端以为自己在与"正确"的服务器通信, 让服务器以为自己在给"正确"的客户端通信.

为了防止这个问题, 因此出现了CA机构, CA机构存储着正确服务器的证书. 当客户端请求服务器时, 服务器会返回一个证书, 客户端拿着CA机构内置在操作系统的公钥去解密CA机构发来的证书,如果证书的数字签名与服务器返回的证书的签名相同,则保证了访问的是正确的服务器. 再通过证书中的公钥去与服务器通信生成一个对称性加密算法的秘钥.

更新时间: 2024年5月26日星期日下午4点47分