Microsoft Windows 2000 把一个综合的公钥基础结构 (PKI) 引入到 Windows 平台。这利用和扩展了Windows 公钥 (PK) 加密服务(该服务是过去几年中引入的),提供了一整套服务和管理工具,以创建、部署和管理基于 PK 的应用程序。它允许应用程序开发人员利用 Windows NT 的共享机密安全机制或基于 PK 的安全机制,作为其相应的安全机制。同时,企业还因此能够基于统一工具和策略机制,来管理该环境和应用程序。
数字签名本身就是数据,因此可把其与所保护的签名数据一起传输。例如,Bob 可以创建一个给 Alice 的电子邮件消息,并把签名与消息文本一起发送,用它给 Alice 提供验证消息来源所需的信息。此外,数字签名还提供了一种方法,以验证数据在从源到目标的传送过程中,没有被篡改过(无论是意外的还是蓄意的)。因此,数字签名可用来提供一个能高度保障数据完整性的机制。
身份验证
可用 PK 加密来提供可靠的分布式“身份验证”服务。“实体身份验证”可以保证:数据发件人就是收件人所认为的那个实体。验证的一种方法是:数据接收人 Alice 向数据发送人 Bob 发送一个质询,该质询是用 Bob 的公钥进行加密的。Bob 对此质询进行解密,并把它发回给 Alice,证明他有与 Alice 发布质询所用公钥相关联的私钥。另一种方法是:Alice 向 Bob 发送一个明文质询。Bob 把该质询与其他信息(已有数字签名)结合起来。然后,Alice 就用 Bob 的公钥来验证该签名,并证实 Bob 有与此关联的私钥。该质询能够使该消息是唯一的,并可防止有敌意的第三方利用答复进行攻击。这两种情况都称为“证明所有权”协议,因为发送人在此过程中证明自己有特定的私钥。
使用公钥的密钥协议
PK 加密的另一个功能是,它允许双方就使用公共的非安全通信网络的共享机密达成一致。实际就是 Bob 和 Alice 每人都生成一个随机数,分别形成了共享机密密钥的一半。然后,Bob 用 Alice 的公钥,对自己的那一半机密进行加密,再把机密发送给 Alice;而 Alice 则用 Bob 的公钥对自己的那一半机密进行加密,再把机密发送给 Bob。双方都可以把对方发来的消息进行解密,把共享机密中不是自己生成的那一半提取出来,然后把两个一半密码结合起来,生成共享机密。协议完成后,共享的机密就可以用于保障其他通信的安全了。
未预设共享机密的批量数据加密
它是这样实现的:先选择一个密钥加密算法,并生成一个“随机会话密钥”,进行数据加密。如果 Bob 要发送消息,他先用 Alice 的公钥对该会话密钥进行加密。随后,生成的暗记文密钥与加密数据一同发给 Alice。Alice 可用她的私钥来恢复该会话密钥,然后用该会话密钥解密数据。
在私钥加密中,Alice 和 Bob 信任他们的共享机密,因为他们已就此达成一致或是以安全的方式交换的,他们还一致同意把其安全地进行存储,防止被有恶意的第三方窃取。相反,使用 PK 加密技术,Alice 和 Bob 都只需要保护其各自的私钥即可。他们需要共享的唯一信息就是对方的公钥。他们需要能够用高保障来标识彼此的公钥,但不需保密公钥。对使用 PK 加密而言,能够信任公钥与已知实体的关系是至关重要的。
Alice 信任 Bob 的公钥,有可能是因为 Bob 以安全的方式把它直接传递给了 Alice。但这是以 Alice 和 Bob 此前已有安全通信为前提的。更可能是,Alice 通过非安全机制(如从公共目录)获得了 Bob 的公钥,所以必须有其他的机制使 Alice 确信,她所谓的来自“Bob”的公钥,的确是 Bob 的公钥。这样的机制之一就是基于“证书颁发机构”(CA) 颁发的证书。