[TOC]
1. 密码学基础
1.1 对称加密
1. 过程
信息的发送方和接收方使用同一个密钥去加密和解密数据。
加密过程如下:明文 + 加密算法 + 私钥 => 密文 解密过程如下:密文 + 解密算法 + 私钥 => 明文
2. 特点
- 同一个密钥
- 加密和解密速度快,适合于对大数据量进行加密
3. 常用算法
DES、AES
1.2 非对称加密
1. 分类
公钥加密私钥解密
-
被公钥加密过的密文只能被私钥解密
-
过程如下:
明文 + 加密算法 + 公钥 => 密文
密文 + 解密算法 + 私钥 => 明文
-
应用于传输数据
拥有公钥的一方,传输数据给拥有
私钥生签公钥验签
其实就是公钥解密私钥加密
-
被私钥加密过的密文只能被公钥解密
-
过程如下:
明文 + 加密算法 + 私钥 => 密文
密文 + 解密算法 + 公钥 => 明文
-
应用于验证身份
证明拥有私钥的一方的身份
2. 特点
-
优点
私钥被自己保存,不能对外泄露。公钥指的是公共的密钥,任何人都可以获得该密钥。
-
缺点
加密和解密花费时间长、速度慢,只适合对少量数据进行加密
3. 常用算法
RSA (也用于JSONWebToken)
互质数、欧拉定理
1.3 在 HTTPS 应用
为什么用到对称加密
因为 HTTP 是明文传输,使用加密可以防止传输中途盗窃信息, 而 对称加密 加密解密更快。
为什么用到非对称加密
需要把对称加密的密钥传给对方
公钥加密,私钥解密
- 服务端把公钥给客户端
- 客户端用公钥加密,用于对称加密的密钥
- 服务端要私钥得到客户端的,对称加密的密钥
时序图
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 防御中间人攻击
- 证明 Server 身份,可以应用 私钥加密 公钥解密
- 只有用私钥加密的 公钥才能解密
- 权威机构使用非对称密钥对,给 Client 公钥,用私钥 加密 Server 身份
- 其他人没有权威机构的私钥,无法伪造加密
- 权威机构公钥内置在 浏览器和操作系统。
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 和 域名