密码学基础知识


一、密码学基础体系

现代密码学主要分为:

1
2
3
4
5
密码学
├── 对称加密
├── 非对称加密
├── 哈希算法
└── 数字签名

二、对称加密(Symmetric Encryption)

核心思想

加密和解密使用同一把钥匙。

1
2
3
4
5
6
7
8
9
明文

AES(Key)

密文

AES(Key)

明文

例如:

1
2
3
4
5
6
7
8
9
10
11
原文:
hello

密钥:
123456

加密后:
A8F9D2...

解密时:
还是123456

生活例子

你和朋友约定:

1
所有信息都用一本密码本编码

双方都持有同一本密码本。

发送:

1
今晚吃火锅

编码后:

1
X9A3D8

别人拿到看不懂。

朋友拿着同样密码本:

1
2
X9A3D8
→ 今晚吃火锅

优点

速度极快。

例如:

AES

每秒可处理:

1
GB级数据

因此:

1
2
3
4
数据库加密
文件加密
磁盘加密
TLS数据传输

最终都是 AES 在干活。


缺点

密钥交换困难。

例如:

1
A ←→ B

第一次通信时:

1
怎么把AES密钥发过去?

如果:

1
2
3
微信发
邮件发
QQ发

攻击者截获:

1
密钥泄露

整个加密失效。


三、非对称加密(Asymmetric Encryption)

解决:

1
密钥交换问题

核心思想

两把钥匙:

1
2
公钥(Public Key)
私钥(Private Key)

特性

公钥加密

只能私钥解密

1
2
3
公钥 → 加密

私钥 → 解密

例如:

服务器:

1
2
3
4
5
公钥:
PK

私钥:
SK

用户拿到:

1
PK

发送:

1
hello

变成:

1
Encrypt(PK,hello)

只有服务器私钥:

1
SK

才能解开。


为什么安全

因为:

1
PK 推不出 SK

数学上极其困难。


四、RSA原理

最经典的非对称加密算法。

由:

Ron Rivest、
Adi Shamir、
Leonard Adleman

提出。


核心基于:

1
大整数分解难题

例如:

1
17 × 19 = 323

容易。

但是:

1
323 = ?

要反推质因数。

数字足够大:

1
2
2048 bit
4096 bit

目前几乎不可行。


五、哈希算法(Hash)

哈希不是加密。

很多人误解这一点。


例如:

1
hello

经过 SHA256:

1
2cf24dba...

特点:

1 不可逆

1
2
3
4
5
hello

hash

2cf24d...

不能反推。


2 固定长度

无论:

1
2
3
1个字节

1TB文件

输出长度固定。


3 雪崩效应

1
hello

1
Hello

只差一个字符。

结果完全不同。


常见算法:

  • MD5(已不安全)
  • SHA1(已不安全)
  • SHA256
  • SHA512

六、数字签名

很多人理解反了。

签名不是加密。

签名是证明:

1
真的是我发的

原理

反过来使用非对称加密。

1
2
私钥签名
公钥验证

例如:

服务器拥有:

1
2
SK
PK

消息:

1
hello

先计算哈希:

1
2
3
hash(hello)
=
ABC123

然后:

1
Sign(SK,ABC123)

得到签名:

1
XYZ999

发送:

1
2
3
hello

XYZ999

客户端:

1
2
3
hash(hello)
=
ABC123

然后:

1
Verify(PK,XYZ999)

验证成功。

说明:

1
2
3
消息没被修改

确实来自私钥持有者