十三、PGP——密码技术的完美组合

1 本章概要

本章中,将以密码软件 PGP(Pretty Good Privacy)为题材,思考一下将前面章节中学习的密码技术进行组合的方法。

2 PGP简介

PGP 是 1990 年编写的密码软件。

2.1 PGP 的功能

1.对称密码

2.公钥密码

3.数字签名

4.单向散列函数

5.证书

6.压缩

7.文本数据

8.大文件的拆分和平和

9.钥匙串管理

3 生成秘钥对

4 加密与解密

5 生成和验证数字签名

6 生成数字签名并加密以及解密并验证数字签名

7 信任网

7.1 公钥合法性

在使用 PGP 时,确认自己所得到的公钥是否真的属于正确的人(公钥合法性)是非常重要的,因为公钥可能会通过中间人攻击被替换(参 5.7.4节)。
第十章介绍的证书就是确认公钥合法性的方法之一。证书就是由认证机构对公钥所施加的数字签名,通过验证这个数字签名就可以确认公钥合法性。
然而,PGP 中却没有使用认证机构,而是采用了一种叫信任网(web of trust)的方法。在这种方法中, PGP 用户会互相对对方的公钥进行数字签名
信任网的要点是“不依赖认证机构,而是建立每个人之间的信任关系”。换言之,就是能够自己决定要信任哪些公钥。
下面介绍 PGP 的信任网是如何建立起来的。

1.场景1:通过自己的数字签名进行确认

Alice 和 Bob 约会,在告别的时候, Bob 给了 Alice 一张存储卡,并说“这是我的公钥”。
Alice 回到家中,从存储卡中取出 Bob 的公钥,并存放到自己所使用的 PGP 的公钥串中(导入公钥)。由于 Alice 确信刚刚导入的公钥确实是属于 Bob 本人的,因此 Alice 对这个公钥加上了自己的数字签名。
对 Bob 的公钥加上数字签名,就相当于 Alice 生命“这个公钥属于 Bob 本人(即这个公钥是合法的)”。
随后,Alice 收到了来自 Bob 的邮件,由于这封邮件带有 Bob 的数字签名,因此 Alice 想用 PGP 来验证 Bob 的数字签名。 PGP 将执行下面这些操作:

  1. 为了验证 Bob 的数字签名, PGP 需要从 Alice 的公钥串中寻找 Bob 的公钥。
  2. Alice 的公钥串中包含 Bob 的公钥,因为前几天约会之后 Alice 导入了 Bob 的公钥。
  3. PGP 发现 Bob 的公钥带有 Alice 的数字签名。
  4. 为了验证 Alice 的数字签名,PGP 需要从 Alice 的公钥串中寻找 Alice 自己的公钥。
  5. PGP 使用 Alice 的公钥对 Bob 的公钥上的 Alice 的数字签名进行验证。如果验证成功,则可以确认这的确就是 Bob 的公钥。
  6. PGP 使用合法的 Bob 的公钥对邮件上附带的 Bob 的数字签名进行验证。

2.场景2:通过自己完全信任的人的数字签名进行确认

Alice 有一个叫 Trent 的男朋友。在 Alice 的公钥串中,也包含带有 Alice 的数字签名的 Trent 的公钥。 Alice 非常信任 Trent ,她想:经过他签名的公钥一定是合法的
假设 Alice 收到了一封来自 Carrol 的邮件

8 本章小结

9 小测验