什么是PGP?
PGP(Pretty Good Privacy)加密,由一系列散列、数据压缩、对称密钥加密,以及公钥加密的算法组合而成,每个步骤支持几种算法。
PGP支持消息认证和完整性检测:
①完整性检测被用来检查消息在传输过程中是否变更过(即验证消息完整性);
②消息认证则是被用来决定消息是否确由某特定的人或实体发出(即数字签名验证)。
在PGP中,这些特性默认是和消息加密同时开启的,而且同样可以被应用到明文的验证。
发送者只需使用PGP为消息创建一个数字签名,即以数据或信息创建一个散列,然后使用发送者的私钥利用散列生成数字签名。
PGP加密流程
PGP Cryptographic Function
假设在一个数据
M
M
M传输的过程中,发送者为
A
A
A、接受者为
B
B
B,公私钥对
(
p
k
,
r
k
)
(pk, rk)
(pk,rk),会话密钥
s
k
sk
sk
散列函数(哈希函数)用
H
H
H代替,公钥密码算法以
R
S
A
RSA
RSA为例,对称加密算法以
A
E
S
AES
AES为例
1️⃣数据经过散列处理
H
H
H形成摘要:
H
(
M
)
H(M)
H(M)
2️⃣用公钥密码算法
R
S
A
RSA
RSA对摘要数字签名:
s
i
g
R
S
A
−
r
k
A
(
H
(
M
)
)
sig_{RSA-rk_A}(H(M))
sigRSA−rkA(H(M))
3️⃣链接数据与数字签名得到证书,(并进行压缩,压缩可省略):
s
i
g
R
S
A
−
r
k
A
(
H
(
M
)
)
∣
∣
M
sig_{RSA-rk_A}(H(M))||M
sigRSA−rkA(H(M))∣∣M
4️⃣对称加密算法
A
E
S
AES
AES加密前一步得到的证书:
A
E
S
s
k
(
s
i
g
R
S
A
−
r
k
A
(
H
(
M
)
)
∣
∣
M
)
AES_{sk}(sig_{RSA-rk_A}(H(M))||M)
AESsk(sigRSA−rkA(H(M))∣∣M)
5️⃣公钥密码算法
R
S
A
RSA
RSA构造数字信封,封装密钥:
R
S
A
p
k
B
(
s
k
)
RSA_{pk_B}(sk)
RSApkB(sk)
6️⃣链接,完成PGP加密:
R
S
A
p
k
B
(
s
k
)
∣
∣
A
E
S
s
k
(
s
i
g
R
S
A
−
r
k
A
(
H
(
M
)
)
∣
∣
M
)
RSA_{pk_B}(sk)||AES_{sk}(sig_{RSA-rk_A}(H(M))||M)
RSApkB(sk)∣∣AESsk(sigRSA−rkA(H(M))∣∣M)
✔ 除了上述利用
H
、
R
S
A
、
A
E
S
H、RSA、AES
H、RSA、AES的PGP加密原理应用,还可以用
S
M
2
、
S
M
3
、
S
M
4
SM2、SM3、SM4
SM2、SM3、SM4构建一个同样具有机密性和认证服务的文件传输方案
S
M
2
p
k
B
(
s
k
)
∣
∣
S
M
4
s
k
(
s
i
g
S
M
2
−
r
k
A
(
S
M
3
(
M
)
)
∣
∣
M
)
SM2_{pk_B}(sk)||SM4_{sk}(sig_{SM2-rk_A}(SM3(M))||M)
SM2pkB(sk)∣∣SM4sk(sigSM2−rkA(SM3(M))∣∣M)