公钥基础结构
公钥加密 (也称为非对称密钥加密) 使用密钥对来加密和解密内容。 密钥对由一个与数学相关的公钥和一个私钥组成。 打算与他人安全通信的个人可以分发 公钥 ,但必须对 私钥 保密。 使用其中一个密钥加密的内容可以通过使用另一个密钥解密。 例如,假设 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 公钥基础结构: