深入理解数字证书和 CA
原创
在 非对称加密的使用场景 这篇文章中,我们学习了非对称加密的两大应用:
- 加密通信:用公钥加密,用私钥解密,实现机密通信。
- 数字签名:用私钥签名,用公钥验证,证明身份和数据完整性。
但是,非对称加密有一个关键问题没有解决:你怎么确定拿到的公钥是真实可信的?
公钥分发的信任问题
假设你要访问你的银行网站 https://bank.com,银行的服务器会给你发送它的公钥,告诉你:
这是我的公钥,你可以用它加密数据发给我,我用私钥解密。
听起来没问题,但实际上有一个巨大的安全隐患:中间人攻击(Man-in-the-Middle Attack)。
想象一下这个场景:
你的电脑 <---> 黑客的电脑 <---> 银行服务器当你访问 https://bank.com 时,黑客劫持了你的网络请求:
- 黑客拦截了银行发给你的真实公钥。
- 黑客把自己的公钥伪装成银行公钥发给你。
- 你用黑客的公钥加密了你的账号密码,发送出去。
- 黑客用自己的私钥解密,窃取了你的账号密码。
- 黑客再用银行的真实公钥加密,转发给银行服务器。
在这个过程中,你完全不知道自己正在和黑客通信,还以为在和银行通信。
问题的核心在于:你无法确定收到的公钥确实属于银行,而不是黑客伪造的。
这就好比有人给你打电话说「我是银行客服」,你怎么确定对方真的是银行客服,而不是诈骗电话?
解决这个问题,就需要引入一个双方都信任的第三方来做担保,这个第三方就是 证书颁发机构(Certificate Authority,简称 CA)。