一条声称是来自爱丽丝的信息(尽管只有鲍伯可以阅读)。为了防止这种情况,爱丽丝首先用她的私钥加密信息,再用鲍伯的公钥加密信息,最后把结果发送给鲍伯。鲍伯用他的私钥解密信息,然后再用爱丽丝的公钥解密。如果他没得到无用的数据,那么他便明白只有知道爱丽丝私钥的人才能发送这条信息(爱丽丝经常只加密她信息的一个密码散列[63],这是一种概括,但我们可以忽略这一细节)。
公钥系统有许多伟大的特性,但速度不是其中之一。所以,它们常常与对称系统结合使用。
爱丽丝生成一串被称为会话密钥的随机比特,她将其用作与鲍伯进行通信(只有一次!)的密钥。然后,她使用公钥系统加密这个密钥(缓慢地),发送给鲍伯。再然后,她用这个有些像3DES或IDEA的密钥来加密她信息的主要部分(快速地),她知道鲍伯可以用他自己的私钥解密会话密钥,然后使用会话密钥解密信息。
互联网上流行的一种被称为PGP的通信包,就是使用的这个方案:RSA加密会话密钥,IDEA加密信息(还有许多其他的安全措施来防止存储的密钥的无意泄露、管理密钥的集合等)。
像DES一样的对称系统,以及像RSA一样的公钥系统中使用的算法有一个有趣又极为重要的特性:将使用的密钥长度加倍通常只会使加密或解密的时间略微延长一点,但却让破解密钥的难度以天文数字般增加(从技术上来讲,加密时间通常是n2,n是密钥的长度,但破解密钥的时间经常上升到2n,它上升得更快——这就是所谓的多项式增长和指数增长)。这意味着,当使用传统计算机时(换言之,除非算法突破,我们稍后详述),爱丽丝和鲍伯可以轻而易举地保持对伊芙和马洛里的领先,方法是随着计算机计算速度的加快,慢慢增加密钥长度。这样做可以让他们海量地增加伊芙和马洛里的工作量,而自己的工作量却不会增加很多。
使用对称和公钥加密系统的这些基本技术,我们可以制造出各种各样的产品。一个重要的应用是为通信(和存储文件)保密,但是还有很多其他的应用。我们可以制造电子的、不可伪造的现金(根据定义,现金是匿名的),无论它在反复易手时是否需要通过网络链接到银行,这取决于设计。我们可以保证匿名性,通过加密邮件并用世界各地的其他机器关系网发送它们,最终解密并将信息同发信人分离开来(密码朋克重邮器完成这些事情)。我们可以编写协议,只有在十二人当中的七人(或其他人数)同意解密的时候才允许解码信息。我们可以对数据进行盲