证书在加密、散列和签名方面如何工作?

信息安全 加密 证书 证书颁发机构 电子签名
2021-08-27 13:35:30

我想我可能理解这些东西,但我想确保我得到的细节是正确的。关于证书的高级实现以及加密的数学级实现等方面有很多信息,但我在低级细节上没有找到太多信息。

我已经写下了我的理解,尽我所能拼凑起来,但我确信我已经以某种方式弄混了细节。你能告诉我这些错误是什么吗?(我的意思不是我遗漏的内容。我不想讨论 CRL 或 X.509 格式等。所有这些都是实现。我关心的是对过程的半理想化理解。)这里是我的写作。

提前致谢。

从 CA 获取证书

证书颁发机构 (CA) 只是一个拥有公私密钥对并且其他人信任它来验证身份的组织。如果 Alice (alice.com) 想要一个由 CA 签名的数字证书,她会生成一个公私钥对。她创建了一个文档,其中包含一些识别信息,例如 FQDN 和某人的电子邮件地址等,并使用她的私钥对其进行加密。她用她的公钥打包这个加密的文档。这是证书签名请求 (CSR)。

她将 CSR 发送给 CA,并要求他们验证她的身份。他们使用公钥来解密她的文档,向他们证明她持有该对中的公钥和私钥。他们可能会以各种方式验证她的身份,从自动化和技术到冗长和合法,这取决于证书的用途(验证电子邮件地址?网络服务器?),无论是针对个人还是企业,以及他们希望其他人在证书中的信任级别。

一旦 CA 验证了申请人的身份,他们将创建一个包含她的身份信息(可能与她提交的信息相同或可能不同)以及她的公钥的文档,并通过创建一个它的散列并用他们的私钥加密该散列。签名和一些元数据(例如,是哪个 CA 生成的)被附加到文档上,结果就是她的证书。

验证证书

假设 Bob 想要验证 Alice 是她自称的那个人。她将她的证书提供给他,他确定生成证书的 CA。因为他信任 CA,所以他将他们的公钥存储在他的系统上。他可以使用 CA 的公钥来检查签名:他用 CA 的公钥解密散列,并自己计算散列。如果这些值一致,那么他就知道文档没有被篡改,并且 CA 为 Alice 的身份提供担保。

使用中间 CA

可以有一个中间 CA。在这种情况下,中间 CA 的证书颁发用户的证书,并且它拥有由更高级别 CA 签署的自己的证书。为了让其他人信任用户的证书,签名链必须以受信任的根 CA 结束。

1个回答

你的文章检查出来了。一尼特:

正如dave_thompson_085 提到的,加密和签名不是同一个操作。尽管它们可能在教科书RSA 中以相同的方式实现,但这并不意味着它们是相同的。事实上,X.509 支持 ECDSA,其中签名的实现方式完全不同。