CA是什么?有什么作用?
前言
CA 也即证书授权机构,主要职能有颁布、认证和管理数字证书。数字证书用来记录和认证用户的公钥。
在非对称加密体系中,传递加密信息的基础为,用接收方的公钥对信息进行加密,传递给接收方后,接收方用自己藏好的私钥解密获取信息。(其它人可以拿到接收方的公钥,但无法依据公钥推出私钥,因此即使拿到加密信息,也无法解密。)
CA 在非对称加密过程中的作用就是在 CA 本身可信的基础上,让用户可以确认自己拿到的就是接收方的有效公钥,保证公钥的不可伪造性和完整性。
验证过程
简要梳理一下有 CA 参与的非对称加密体系的大致过程:
现有 A 和 B 两位同学需要使用非对称加密体系进行加密通信(A => B)。
- A 首先在 CA 查找 B 的信息,并获取 B 的数字证书。证书上记录着 B 的公钥和 CA 使用自己的私钥加密的数字签名(由 B 的证书信息计算得来)。
- CA 会主动将自己的证书返回给 A,里面包含 CA 的公钥。使用该公钥解密 B 的数字证书上的数字签名可获取 B 的信息摘要,然后再把证书上 B 的信息按相同的哈希算法计算出摘要,两相对比,从而确认获取的 B 的公钥是有效的。
- A 使用 B 的公钥加密信息后,与信息的摘要一起发送给 B。B 用自己的私钥解密后,计算信息摘要,与传递来的摘要对比,从而确认信息的完整性。
一些问题
如何确保 CA 是可信的?
这个问题反过来就是,我能不能伪造一个 CA 出来?
答案是完全可以!只要我有能力去生产非对称密钥对,然后把自己的信息写的看起来可信,然后就可以去骗去偷袭了。用户拿到我伪造的 CA 的证书,选择相信后,我就可以伪造数字证书,然后让用户用伪造的公钥去传递加密信息。
但是,事情也没有那么容易。大部分用户的主机系统中都预设了顶级的可信 CA,这些顶级 CA 有钱有势,相互认证真实性。伪造的 CA 自然无法通过这些大佬的认证,除非想办法把他们全部买通(值得吗?)。
所以,伪造 CA 技术上可行,其它都不可行。普通用户基本不用去考虑 CA 是否可信,除非是在系统上手动配置信任其它的 CA。
如有差错,欢迎讨论