公钥基础结构
公钥加密(也称为非对称密钥加密)使用密钥对来加密和解密内容。 密钥对由一个公钥和一个与数学相关的私钥组成。 打算与其他人安全通信的个人可以分发 公钥,但必须保留 私钥 机密。 通过使用其中一个密钥加密的内容可以通过使用另一个密钥进行解密。 例如,假设 Bob 希望向 Alice 发送安全电子邮件。 这可以通过以下方式完成:
- Bob 和 Alice 都有自己的密钥对。 他们把自己的私钥安全保存在自己身上,并直接将公钥发送给对方。
- Bob 使用 Alice 的公钥加密消息并将其发送给她。
- Alice 使用她的私钥解密消息。
这个简化的示例突显了 Bob 必须对用于加密消息的公钥的至少一个明显关注。 也就是说,他不确定用于加密的密钥实际上属于 Alice。 有可能另一方监视 Bob 和 Alice 之间的通信通道替换了另一个键。
公钥基础结构概念已演变为帮助解决此问题和其他问题。 公钥基础结构(PKI)由受信任的第三方可用于建立公钥的完整性和所有权的软件和硬件元素组成。 受信任的方(称为 证书颁发机构(CA)通常通过颁发已签名的(加密)二进制证书来实现此目的,这些证书确认证书使用者的身份并将该标识绑定到证书中包含的公钥。 CA 使用其私钥对证书进行签名。 它会向自签名 CA 证书中的所有相关方颁发相应的公钥。 使用 CA 时,可以通过以下方式修改前面的示例:
- 假设 CA 已颁发包含其公钥的签名数字签名证书。 CA 使用与证书中的公钥相对应的私钥自行对此证书进行签名。
- Alice 和 Bob 同意使用 CA 来验证其身份。
- Alice 从 CA 请求公钥证书。
- CA 验证身份、计算构成证书的内容哈希、使用与已发布 CA 证书中的公钥相对应的私钥对哈希进行签名、连接证书内容和签名哈希来创建一个新证书,并使新证书公开可用。
- Bob 检索证书,使用 CA 的公钥解密签名哈希,计算证书内容的新哈希,并比较两个哈希。 如果哈希匹配,则会验证签名,Bob 可以假定证书中的公钥确实属于 Alice。
- Bob 使用 Alice 验证的公钥对她的消息进行加密。
- Alice 使用她的私钥从 Bob 解密消息。
总之,证书签名过程使 Bob 能够验证公钥在传输过程中是否不被篡改或损坏。 在颁发证书之前,CA 使用自己的私钥对内容进行哈希处理、对哈希进行签名(加密),并在颁发的证书中包含加密哈希。 Bob 使用 CA 公钥解密哈希、执行证书内容的单独哈希以及比较两个哈希来验证证书内容。 如果它们匹配,Bob 可以合理确定证书及其包含的公钥尚未更改。
典型的 PKI 由以下元素组成。
元素 | 描述 |
---|---|
证书颁发机构 |
充当公钥基础结构中的信任根,并提供对网络中个人、计算机和其他实体的标识进行身份验证的服务。 |
注册机构 |
由根 CA 认证,以颁发证书以供根允许的特定用途。 在 Microsoft PKI 中,注册机构(RA)通常称为从属 CA。 |
证书数据库 |
保存证书请求,并在 CA 或 RA 上颁发和吊销的证书和证书请求。 |
证书存储 |
将颁发的证书和挂起或拒绝的证书请求保存在本地计算机上。 |
密钥存档服务器 |
将加密的私钥保存在证书数据库中,以便在丢失后进行恢复。 |
证书注册 API 使你能够向认证和注册机构提交证书和密钥存档请求,并在本地计算机上安装颁发的证书。 它不允许直接作证书数据库或证书存储。
以下主题更详细地讨论了Microsoft公钥基础结构: