CA机构、数字证书、数字签名分别是什么?
CA机构、数字证书、数字签名分别是什么?
公钥加密体系
公钥加密体系,也称为非对称加密。它与传统的对称加密有根本的不同。
核心概念:
在非对称加密中,有一对密钥:
- 公钥:公开给所有人,就像你的银行账号,可以告诉任何人。
- 私钥:绝对保密,只有自己持有,就像你的银行密码,绝不能告诉别人。
这对密钥在数学上是关联的,但从公钥几乎不可能推算出私钥。可以把公钥和密钥类比为“阴阳”一对钥匙,“阳”则是公开的,谁都可以看到,但是“阴”只有自己手里有,而且不能告诉任何人。
两大核心功能:
1. 加密和解密
- 目的:为了保密性。
- 过程:
- 发送者用接收者的公钥对信息进行加密。
- 加密后的密文只能由对应的接收者的私钥来解密。
- 比喻:就像很多人可以把信投进一个只能由你用专用钥匙打开的邮箱里。
- 例子:A想给B发送一条秘密消息。A找到B的公钥,加密消息后发送。B收到后,用自己的私钥解密阅读。即使中间有人截获了消息,因为没有B的私钥,也无法解密。
2. 数字签名 - 目的:为了身份认证和完整性(确保信息未被篡改)。
- 过程:
- 发送者用自己的私钥对信息的“摘要”(哈希值,可以用MD5或SHA摘要算法)进行加密,这个加密后的结果就是“数字签名”。
- 接收者用发送者的公钥来解密这个签名。如果解密成功,就能证明两件事:
- 身份认证:这条信息确实来自持有对应私钥的发送者。
- 完整性:信息在传输过程中没有被篡改。
- 比喻:就像在一份文件上盖上你的个人印章,别人可以通过这个印章来验证文件确实是你发出的。
证书颁发机构CA
CA,全称证书颁发机构,是一个在公钥加密体系中扮演“公证人”或“公安局户口管理处”角色的可信第三方机构。
CA 诞生的原因:中间人攻击
在纯公钥加密体系中,存在一个根本问题:如何确定你拿到的公钥真的是对方的?
比如,你想访问 www.jhacker.cn,一个攻击者可能会截获你的请求,然后把他自己的公钥发给你,冒充是银行的公钥。如果你用这个假公钥加密信息,攻击者就能用他的私钥解密,窃取你的数据。这就是“中间人攻击”。
CA 的解决方案:数字证书
CA 通过颁发数字证书来解决身份信任问题。
数字证书是什么?
数字证书就像一个数字身份证,它绑定了某个实体(如网站、公司、个人)的身份信息和他的公钥。这个证书由受信任的CA进行数字签名。
数字证书的主要内容:
- 证书持有者的信息(如网站域名、公司名称)
- 证书持有者的公钥
- 颁发者(CA)的信息
- 有效期
- CA 对以上所有信息的数字签名
CA 的工作流程:
- 申请:一个网站(如
jhacker.cn)生成一对公钥和私钥。然后向CA提交自己的公钥和公司信息。 - 验证:CA会严格验证申请者的真实身份(例如,确认它确实拥有
jhacker.cn这个域名)。 - 签发:验证通过后,CA将网站的信息和公钥打包成一个证书请求,并用CA自己的私钥对这个证书进行数字签名,生成最终的数字证书。
- 部署:网站将这个数字证书部署到自己的服务器上。
访问 HTTPS 网站流程
当你用浏览器访问 `https://jhacker.cn 时:
- 建立连接:浏览器向
jhacker.cn服务器发起请求。 - 发送证书:服务器将其数字证书发送给浏览器。
- 验证证书:这是最关键的一步:
- 浏览器里内置了一个受信任的CA根证书列表(包含这些CA的公钥)。
- 浏览器用对应CA的公钥去解密证书里的CA数字签名。如果解密成功,就证明这个证书确实是由该CA签发的,证书内容(包括网站的公钥)是可信的、未被篡改的。
- 浏览器还会检查证书上的域名是否与正在访问的域名一致,以及证书是否在有效期内。
- 生成会话密钥:证书验证通过后,浏览器会生成一个随机的对称加密密钥(会话密钥)。
- 加密会话密钥:浏览器用从证书中获取的网站的公钥加密这个会话密钥,然后发送给服务器。
- 解密会话密钥:服务器用自己的私钥解密,得到会话密钥。
- 安全通信:此后,浏览器和服务器都使用这个会话密钥,采用对称加密的方式来加密传输所有数据。之所以切换到对称加密,是因为它的计算开销远小于非对称加密,效率更高。

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小鱼吃猫!

