理解 HTTPS

220 阅读3分钟

[TOC]

1. 密码学基础

1.1 对称加密

1. 过程

信息的发送方和接收方使用同一个密钥去加密和解密数据。

加密过程如下:明文 + 加密算法 + 私钥 => 密文 解密过程如下:密文 + 解密算法 + 私钥 => 明文

2. 特点

  1. 同一个密钥
  2. 加密和解密速度快,适合于对大数据量进行加密

3. 常用算法

DES、AES

AES算法-对称加密

1.2 非对称加密

1. 分类

公钥加密私钥解密
  1. 被公钥加密过的密文只能被私钥解密

  2. 过程如下:

    明文 + 加密算法 + 公钥 => 密文

    密文 + 解密算法 + 私钥 => 明文

  3. 应用于传输数据

    拥有公钥的一方,传输数据给拥有

私钥生签公钥验签

其实就是公钥解密私钥加密

  1. 被私钥加密过的密文只能被公钥解密

  2. 过程如下:

    明文 + 加密算法 + 私钥 => 密文

    密文 + 解密算法 + 公钥 => 明文

  3. 应用于验证身份

    证明拥有私钥的一方的身份

2. 特点

  1. 优点

    私钥被自己保存,不能对外泄露。公钥指的是公共的密钥,任何人都可以获得该密钥。

  2. 缺点

    加密和解密花费时间长、速度慢,只适合对少量数据进行加密

3. 常用算法

RSA (也用于JSONWebToken)

RSA算法原理(一)

RSA算法原理(二)

互质数、欧拉定理

1.3 在 HTTPS 应用

为什么用到对称加密

因为 HTTP 是明文传输,使用加密可以防止传输中途盗窃信息, 而 对称加密 加密解密更快。

为什么用到非对称加密

需要把对称加密的密钥传给对方

公钥加密,私钥解密

  1. 服务端把公钥给客户端
  2. 客户端用公钥加密,用于对称加密的密钥
  3. 服务端要私钥得到客户端的,对称加密的密钥

时序图

2. CA 证书

2.1 中间人攻击

sequenceDiagram
participant C as Client
participant H as Hacker
participant S as Server

C->>S: 1. 发起 HTTTPS 请求
S->>H: 2. 给你非对称加密的公钥A
H->>C: 3. 给你非对称加密的公钥A'
C->>H: 4. 用公钥A' 加密 对称加密密钥B
H->>S: 5. 用公钥A 加密 对称加密密钥B

2.2 防御中间人攻击

  1. 证明 Server 身份,可以应用 私钥加密 公钥解密
  2. 只有用私钥加密的 公钥才能解密
  3. 权威机构使用非对称密钥对,给 Client 公钥,用私钥 加密 Server 身份
  4. 其他人没有权威机构的私钥,无法伪造加密
  5. 权威机构公钥内置在 浏览器和操作系统。

2.2 CA 证书

数字证书的原理

CA, Certificate Authority, 颁发数字证书的机构

sequenceDiagram
participant C as Client
participant S as Server
participant CA as Certificate Authority

Note over CA: 生成非对称密钥对 公钥 C 和 私钥 c
CA->> C: 0. 浏览器、操作系统预置公钥 C

Note over CA,S: 开始颁发证书...
Note over S: 生成非对称密钥对 公钥 A 和 私钥 a
S->> CA: 1. 请求 https 证书, 提交公钥 A

Note over CA: 私钥 c 加密 公钥 A = 公钥 A+
CA->> S: 2. 颁发证书(公钥 A+ )

Note over CA,S: 颁发证书完成。

C->> S: 1. 发起 https 请求
S->> C: 2. 返回证书(公钥 A+ )
Note over C: 公钥C 解密公钥 A+  = 公钥 A 和 域名