网络安全基础(加密/解密)

1. 对称加密

1.1 什么是对称加密

当加密和解密用的是同一个密钥时, 我们称这种加密方法为对称加密

1.2 常见的对称加密算法有哪些

1.2.1 DES(Data Encryption Standard)(目前已经可以在短时间内被破译, 不建议使用)

  • DES 是一种将 64bit 明文加密成 64bit 密文的对称加密算法, 密钥的长度是 56bit
  • 由于 DES 每次只能加密 64bit 的数据, 遇到比较大的数据, 需要对 DES 加密进行迭代

1.2.2 3DES(Triple DES)

用三个不同的密钥对明文进行加密-解密-加密, 最后获得的就是 3DES 加密后的密文

1.2.3 AES(Advanced Encryption Algorithm)

  • 取代 DES 成为新标准的一种对称加密算法
  • AES 的密钥长度有 128, 192, 256bit 三种

2. 非对称加密

2.1 什么是非对称加密

用公钥进行加密的密文只能用其对应的私钥进行解密, 同样的, 用私钥加密的密文必须用对应的公钥进行解密

2.2 非对称加密解决了密钥配送的问题

2.2.1 密钥配送

在下图中, Alice 要与 Bob 交流, 若是存在窃听者, 则即使使用对称加密, 对窃听者也没有用(因为窃听者获取了对称加密的密钥)

但若是使用非对称加密, Bob 生成非对称加密的公钥 PK1 给 Alice, 而私钥 PK2 自己留着, 而 Alice 将对称加密的密钥 SK1 通过 PK1 加密后发送给 Bob, Bob 就可以使用 PK2 将该消息解密, 从而获取 SK1, 最终达到能够与 Alice 进行对称加密通话的目的

2.2.2 为什么不直接使用非对称加密进行通信

使用非对称加密时, 其加密解密的速度很慢

2.2.3 混合密码

  • 发送方
    1. 发送方随机生成一个对称密钥
    2. 用对称密钥对其将要发送的消息进行对称加密, 生成密文1
    3. 用接收方生成的公钥对对称密钥进行加密, 生成密文2
    4. 将 密文1 和 密文2 发送给接收方
  • 接收方
    1. 用私钥对 密文2 进行解密, 获取对称密钥
    2. 用 对称密钥 对 密文1 进行解密, 从而获取到发送方想要发送的消息

3. 数字签名与证书

3.1 数字签名

3.1.1 数字签名的作用

如下图所示, 当 Bob 收到消息时, 通常会认为这是由 Alice 发过来的, 但实际上这还有可能是其他人伪造信息发给 Bob 的.

为了防止这种情况的发生, 于是就有了数字签名: 当 Alice 想要给 Bob 发送消息时, 必须要附带上数字签名, 防止消息被篡改或者有人冒充 Alice 发送消息.

3.1.2 数字签名的使用

  • 发送消息的过程如下:

    1. 通过单向散列函数, 将要发送的消息进行计算, 获得其散列值
    2. 用自己的私钥对散列值进行加密, 得到自己的签名
    3. 将签名和消息发送出去
  • 接收消息后做如下操作:

    1. 将签名通过公钥进行解密, 获取散列值
    2. 对消息进行散列计算, 验证签名与消息是否匹配

结果: 消息无法被篡改和伪造

  • 若攻击者想要伪造发送信息, 由于其没有私钥, 故而无法成功
  • 若攻击者想要篡改消息, 由于其没有私钥, 故而无法修改签名. 接收方一验证就会发现: 签名与消息并不对应.

3.2 证书

3.2.1 中间人攻击

如下图所示, 当 Bob 发送公钥给 Alice 时, 攻击者 Mallory 可以拦截 Bob 发送的公钥, 而后自己生成一个公钥发送给 Alice. 此后 Bob 和 Alice 所接收到的消息都是由 Mallory 发送的了

为了防止中间人攻击的发生, 保证公钥的合法性, 就有了数字证书

3.2.2 什么是数字证书

数字证书是用来证明公开密钥拥有者身份的电子文件, 包括了

  • 公钥信息
  • 公钥拥有者身份信息
  • 数字认证机构对该文件的数字签名

拥有者凭着此文件,可向电脑系统或其他用户表明身份,从而对方获得信任并授权访问或使用某些敏感的电脑服务

3.2.3 证书的使用

3.3 SSL/TLS(transport layer security)

  1. 由客户端向服务器发送 Client Hello, 其中包含了
    • TLS 版本
    • 支持的密码套件
    • 随机数 client random(用于生成对称密码所需)
  2. 由服务器向客户端发送 Server Hello, 其中包含了
    • TLS 版本
    • 决定使用的密码套件
    • 随机数 server random(用于生成对称密码所需)
  3. 由服务器向客户端发送 Certificate
    • 由 CA 认证的公钥证书
  4. 由服务器向客户端发送 Server Key Exchange, 其中包括
    • 用于实现 ECDHE 算法的一个参数 Server Params
  5. 由服务器向客户端发送 Server Hello Done, 告知客户端协商部分结束

客户端检查公钥证书, 确认服务器的身份

  1. 客户端向服务器发送 Client Key Exchange
    • 用于实现 ECDHE 算法的一个参数 Client Params(通过 Client Params 和 Server Params 结合 ECDHE 计算生成一个新的随机密钥串 pre-master key, 而由 pre-master key + client random + server random 可以生成会话密钥)
  2. 客户端向服务器发送 Change Cipher Spec
    • 告知服务器接下来要用会话密钥对消息进行加密
  3. 客户端向服务器发送 Finished(Encrypted Handshake Message)
    • 由连接开始至今的信息进行摘要, 然后通过会话密钥进行加密发出
  4. 服务器向客户端发送 Change Cipher Spec
  5. 服务器向客户端发送 Finished(Encrypted Handshake Message)
posted @ 2022-10-30 23:17  小阁下  阅读(530)  评论(0)    收藏  举报