本文共 1334 字,大约阅读时间需要 4 分钟。
PGP 简介
什么是 PGP
PGP(Pretty Good Privacy,良好的隐私性)是由 Zimmermann 于 1991 年发布的一个完整的电子邮件安全软件包,提供了私密性、认证、数字签名和压缩功能。
PGP 使用 IDEA(International Data Encryption Algorithm,国际数据加密算法)128 位的块密码来加密数据,使用 RSA 来管理加密密钥,使用MD5 来保证数据完整性。
PGP 接收明文信息,最后输出一个签过名的密文,并且该密文是 Base64 格式。
PGP 原理
以 A 向 B 发送邮件来说明 PGP 原理,已知信息如下:
- A 要发送的明文: P P P
- A 的私钥和公钥: D a D_a Da、 E a E_a Ea
- B 的私钥和公钥: D b D_b Db、 E b E_b Eb
PGP 运行步骤:
- 使用 MD5 算法计算出明文 P P P 的散列值 P m d 5 P_{md5} Pmd5
- 使用 A 的私钥 D a D_a Da 对 P m d 5 P_{md5} Pmd5 进行加密,将加密的结果同 P 拼接在一起得到 P 1 P1 P1
- 对 P 1 P1 P1 进行 ZIP 压缩,得到 P 1 z i p P1_{zip} P1zip
- 使用随机生成的 128 位密钥 K m K_m Km 根据 IDEA 算法对 P 1 z i p P1_{zip} P1zip 进行加密得到 P 2 P2 P2
- 使用 B 的公钥对密钥 K m K_m Km 进行加密,并将其与 P 2 P2 P2 进行拼接得到 P 3 P3 P3
- 将 P 3 P3 P3 进行 Base64 编码,得到最终要发送的 ASCII 文本内容 P b a s e 64 P_{base64} Pbase64
- 将 P b a s e 64 P_{base64} Pbase64 放在邮件体中,发送给 B,如此邮件内容有望不被记录或篡改的到达接收人
- B 接收到 PGP 邮件后,先做 Base64 解码,得到 P 3 P3 P3
- 在使用自己的私钥 D b D_b Db 将 P 3 P3 P3 中的 K m K_m Km 解密出来
- 使用 K m K_m Km 解密 P 2 P2 P2 得到 P 1 z i p P1_{zip} P1zip
- 对 P 1 z i p P1_{zip} P1zip 进行解压缩,得到 P 1 P1 P1
- 使用 A 的公钥对 P 1 P1 P1 中的签名进行解密,得到 P m d 5 P_{md5} Pmd5
- 对明文 P P P 进行 MD5 计算,并将结果同 P m d 5 P_{md5} Pmd5 进行比较
- 如此,便可以确定该信息是否被篡改,是否的确来自 A
在 PGP 的整个过程中,主要的且繁重的加密任务是由 IDEA 完成的,而 RSA 虽然耗时,但是其只是加密了 128 位的 MD5 散列值和 128 位的 IDEA 密钥,所以可以接受。
另外,可以根据需要选择 PGP 运行时使用的 RSA 密钥长度。
- 临时(384位)
- 商用(512位)
- 军用(1024位)
- 星际(2048位)
转载地址:http://utdws.baihongyu.com/