先来看一下CA机构的定义。
CA机构,又称为数字证书认证(Certificate Authority)中心,作为网络活动中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。
上一部分的教程 CA基础知识培训(一)里面,我们只提到了最基本的三种算法,以及数字签名的原理。并没有提到CA,在信息传输时只需要拥有私钥和公钥就行了,公钥和私钥是通信双方通过算法来约定的,与CA没有关系。
之前提到,非对称算法可以有效防止中间人对信息的窃听。因为中间人只拿到算法和公钥是没办法破解加密的数据的。但是此时假设中间人不仅可以窃听通信双方的数据,还能修改。
中间人在双方在交换公钥之前,伪造了双方的公钥,如下图所示:
张三与李四在交换公钥的时候,王五截取了两边的数据,并把自己的公钥发送给张三和李四,张三和李四在传输数据时候都使用王五的公钥,王五收到信息之后,使用自己的私钥解密,获取到了双方的信息。
这种情况下需要解决的问题就是:如何判断公钥的真实性?
回到上面CA机构的定义,CA机构“承担公钥体系中公钥的合法性检验的责任”,可以引出CA以及CA如何证明公钥的有效性。
在CA基础知识培训(一)中,我们把数字签名的原理简单描述了一下,为了证明一串公钥字符串的真实,CA机构使用自己的私钥对该公钥字符串做数字签名,CA的数字签名加上公钥本身,我们称其为数字证书。
实际上,CA签发的数字证书中,除了包含公钥,还包含了一些其他的信息,比如有效期(根据安全需求,公私钥对通常一定周期需要换一次),这张证书签发给谁?(公钥持有者的身份),以及一些其他信息。
接下来我们看看在IE浏览器中的一张实际的证书:
这张证书从上往下看,有以下这些属性是比较重要的:
这幅图中,可以比较准确的说明公钥与公钥数字证书的区别。
公钥 | 数字证书 |
---|---|
仅仅是密钥 | 是一个签名 |
不包含身份信息 | 包含公钥私钥持有者身份 |
含有公钥 |
如果你信任了CA,那么CA进行数字签名的公钥证书你也可以信任,由此产生了一条信任链。
一个人只需要信任一个CA机构,那么就无需担心CA机构认证过的证书会被篡改。中间人无法通过修改通信双方的公钥证书来进行攻击。
既然普通的公钥可能被篡改,需要CA机构来进行数字签名(数字签名需要私钥,说明CA也拥有自己的公钥)来认证公钥的真实性,那么CA的公钥又由谁来认证呢?
找到一张沃通的根证书:
和普通证书的不同的一点是,它的颁发者与使用者都是相同的,都是CA沃通根证书。
也就是说在信任链的起点,证书都是自签名的,不需要别人认证。
例如国产SM2算法的根证书,就由国家签发:
那么是否有可能伪造根证书来进行中间人攻击呢?
答案是:几乎不可能
在国家电子认证根CA的网页中,可以下载到中国的SM2密钥算法根,以及其认证的共49家(2017年6月统计数据)中国CA机构根证书。
这意味着你只需要信任一张证书,那么在中国大陆使用的上亿数字证书真实性你都可以进行甄别。