网络加密技术
网络加密技术
加密技术:利用技术手段把数据变为乱码(加密)传送,到达目的地后再用 相同或不同的手段还原(解密)。
哈希加密
基本原理
哈希函数是一个单向函数,它将目标文本转化为固定长度的字符串。由于是单向函数,不具备可逆性,实现加密保护。
Q:我用哈希函数加密了明文,从此以后,不仅攻击者解读不了加密后的字符串,我也不懂了鸭?
A:某些应用场景是不需要解密的,即,被保护的数据只需要做验证,举个栗子:
简单的用户登录场景
你的用户名与密码存储(没有使用哈希加密)在服务器数据库中,当服务器数据库泄露数据时,你的用户名与密码也就泄露了。
假设,你的用户名和密码经过哈希加密,那么服务器数据库中将存储加密后的密文,即使泄露数据也是一大堆哈希字符串。
而正常的登陆验证过程,只需要验证密文是否已知就行不需要知道明文。如下图:
常用的哈希函数
- MD5
- SHA
- MAC
- CRC
- SM3(国产哈希算法)
对称加密(单**加密)
基本原理
加密:
R
=
E
(
S
,
K
e
)
R=E(S,K_e)
R=E(S,Ke)R为密文, S为明文,
K
e
K_e
Ke为**,经过函数
R
R
R后,明文变密文;
解密:
S
=
D
(
R
,
K
e
)
S=D(R,K_e)
S=D(R,Ke)S为密文, R为明文,
K
e
K_e
Ke为**,经过函数
S
S
S后,密文变明文;PS:加密(Encrypt)、解密(Decrypt)
特点
- 加密和解密都是用同一个秘钥
- 加密、解密效率高
- 秘钥被窃取,容易造成数据不安全
常用的对称加密算法
- DES
- 3-DES
- AES
- IDEA
- SMS4
- RC5
- TRIVIUM
DES
加密:
- 明文按64位分组,每组明文经初始排列
- 通过子**k1~k16进行16次乘积变换
- 通过最终排列(第3步)得到64位密文
解密:与加密运算一样,只是所取子** 的顺序相反,从k16到k1
如图:
非对称加密(公开**)
基本原理
公钥:可以告诉全网的**
私钥:只能自己知道的**
特点
- 用公钥加密用私钥解密
- 加密、解密相对于对称加密效率更低,但是比对称加密更安全。
- 公钥可能被中间人伪造,造成数据不安全。
常用的非对称加密技术
- RSA
- EIGamal
- ECC
RSA
算法:
- 选择两个大素数, p p p和 q q q,均应大于 1 0 100 10^{100} 10100;
- 计算 n = p ∗ q n = p * q n=p∗q和 z = ( p − 1 ) ∗ ( q − 1 ) z = (p-1)*(q-1) z=(p−1)∗(q−1);
- 选择一个与 z z z互为质数的数,令其为 d d d;
- 找到一个 e e e使其满足 ( e ∗ d ) m o d z = 1 {(e*d )}mod z =1 (e∗d)modz=1;
对于报文m
加密需计算密文
c
=
m
e
∗
(
m
o
d
n
)
c=m^e*(mod\ n)
c=me∗(mod n);
解密c需计算
m
=
c
d
∗
(
m
o
d
n
)
m=c^d*(mod\ n)
m=cd∗(mod n)。
PS:实施加密需要e和n,实施解密需要d和n。因此,公开**由(e, n)构成,秘***由(dn)或只是d构成。n限制明文块的大小。
举例:
- 取p = 7, q = 11
- n = pq = 77, z = (p-1)(q-1) = 60
- 取e = 43, d= 7 使得e*d mod z = 301 mod 60 = 1
- 得到公钥(e=43, n=77),**(d=7, n=77)
- 设我们的明文为m = 42
- 加密c = m e m^e me mod n = 4 2 43 42^{43} 4243 mod 77 = 14
- 解密m = c d c^d cd mod n = 1 4 7 14^7 147 mod 77 = 42
对称+非对称
由于对称加密效率高,非对称加密效率低,通常将两者结合起来,即用非对称加密进行身份验证,传递对称**,利用对称加密进行数据传输。HTTPS就是一个例子
HTTPS加密
简单的HTTPS加密过程,忽略协议协商等具体细节:
- 客户端发起HTTPS连接
- 服务器返回包含公钥的数字证书
- 客户端生成对称**
- 客户端通过公钥加密,发送对称**
- 客户端与服务器进行密文通信
其中,
第2步保证了服务器公钥的真实性;
第4步为非对称加密;
第5步为对称加密;