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 将执行下面这些操作:
- 为了验证 Bob 的数字签名, PGP 需要从 Alice 的公钥串中寻找 Bob 的公钥。
- Alice 的公钥串中包含 Bob 的公钥,因为前几天约会之后 Alice 导入了 Bob 的公钥。
- PGP 发现 Bob 的公钥带有 Alice 的数字签名。
- 为了验证 Alice 的数字签名,PGP 需要从 Alice 的公钥串中寻找 Alice 自己的公钥。
- PGP 使用 Alice 的公钥对 Bob 的公钥上的 Alice 的数字签名进行验证。如果验证成功,则可以确认这的确就是 Bob 的公钥。
- PGP 使用合法的 Bob 的公钥对邮件上附带的 Bob 的数字签名进行验证。
2.场景2:通过自己完全信任的人的数字签名进行确认
Alice 有一个叫 Trent 的男朋友。在 Alice 的公钥串中,也包含带有 Alice 的数字签名的 Trent 的公钥。 Alice 非常信任 Trent ,她想:经过他签名的公钥一定是合法的。
假设 Alice 收到了一封来自 Carrol 的邮件