公钥信任问题 — 数字证书与 CA

网络安全篇,面对复杂多变的网络环境,我们需要掌握哪些关于网络安全的相关知识,聊一聊与网络安全相关的:HTTPS、SSL、TLS 等。


在介绍今天的内容之前,我们先来回顾下保证安全的四大特性:机密性、完整性、身份认证和不可否认;到目前为止,综合使用对称加密、非对称加密和摘要算法,安全通信的四大特性我们都已经实现了,整个过程是不是已经完美了呢?

答案不是的,这里还有一个“公钥的信任”问题。因为谁都可以发布公钥,我们还缺少防止黑客伪造公钥的手段,也就是说,怎么来判断这个公钥就是你或者某网站的公钥呢?

下面我们就来讨论下该问题,看下 TLS 是如何做的?


公钥的信任问题

你可能会想再次利用类似密钥交换的方法来解决公钥认证问题,用别的私钥来给公钥签名,显然,这会陷入无穷的信任验证过程。

这次实在是“没招”了,要终结这个“死循环”,就必须引入“外力”,找一个公认的可信第三方,让它作为“信任的起点,递归的终点”,构建起公钥的信任链。

  1. CA(Certificate Authority,证书认证机构)

这个第三方就是 CA。它就像网络世界里的公安局、公正中心,具有极高的可信度,由它来给各个公钥签名,用自身的信誉来保证公钥无法伪造,是可信的。

  • CA 中心为每个使用公钥的用户发放一个数字证书,用以证明证书中列出的用户,合法拥有证书中列出的公钥。CA 结构的数字签名使得攻击者不能伪造和篡改证书。

世界上知名的 CA 没有几家,如 DigiCertVeriSignEntrustLet`s Encrypt 等,它们签发的证书分为三种,区别在于其可信程度。DV 是最低的,只是域名级别的可信,背后是谁不知道。EV 是最高的,经过了法律和审计的严格核查,可以证明网站拥有者的身份(在浏览器地址栏会显示出公司的名字,例如 Apple、GitHub 的网站)。

  1. DV(域名验证性证书)。最基本的审核级别,认证机构通常使用自动机制审核域名拥有权,所以成本也比较低。

  2. OV(组织验证)。申领可以证明他拥有管理某域名的权力,审核程序通常需要经过人手处理。

  3. EV(扩展验证)。这是最严格的审核级别,审核过程可能牵涉专业法律人员的调查及独立审计人员的确认,成本也自然更高。

CA 对公钥的签名

CA 对公钥的签名认证也是有格式的,不是简单地把公钥绑定在持有者身份上就完事了,还要包含序列号、用途、颁发者、有效时间等等,把这些打成一个包再签名,完整地证明公钥关联的各种信息,形成“数字证书”

证书里的证明对象是一个“实体”(Common Name),可以证明任何东西,但是在互联网的环境下,这个“实体”就通常是域名了。

  1. 数字证书(Certificate)

CA 中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA 机构的数字签名使得攻击者不能伪造和篡改证书。

数字证书的实质是证书权威机构(CA)用自己的私钥,对普通用户提交的公钥和名称的绑定关系的数字签名。

证书体系


不过 CA 如何证明自己呢?这本质还是信任链的问题。“小一点”的 CA 可以让“大 CA” 签名认证,但链条的最后,也就是 Root CA,就只能自己证明自己了,这个就叫“自签名证书”(Self-Signed Certificate)或者“根证书”(Root Certificate)。对于根证书我们必须无条件相信,否则整个证书信任链就走不下去了。

有了这个证书体系,操作系统和浏览器都内置了各大 CA 的根证书,上网的时候只要服务器发过来它的证书,就可以验证证书里的签名,顺着证书链(Certificate Chain)一层层地验证,直到找到根证书,就能够确定证书是可信的,从而里面的公钥也是可信的。

根证书是自签名证书,也就是自己证明自己,是信任的起点,所以作为用户,也就是“你”,就必须信任它,否则就没有从它开始的整个证书链。所谓自签名,就是用证书里的公钥来证明证书里的公钥,自己证明自己。

1. 证书认证过程

假设现在有一个三级的证书体系(Root CA=> 一级 CA=> 二级 CA),它是如何完成证书信任链验证过程的呢?

前面我们说过,由于操作系统和浏览器都内置了各大 CA 的根证书,上网的时候只需要服务器发送来它的证书,就可以验证证书里的签名,顺着证书链(Certficate Chain)一层层地验证,直到找到根证书

如果服务器返回的是一个二级证书,操作系统和浏览器内置的根证书(根公钥)只能解密根证书签名的证书,无法解密二级证书,只有使用一级证书的(公钥)才能解密二级证书,那么操作系统和浏览器是如何自上而上地层层解析得到根证书的呢?其实服务器返回的是一个证书链,然后操作系统或浏览器就可以使用信任的根证书(根公钥)解析根证书得到一级证书的公钥+摘要验签,然后拿一级证书的公钥解密一级证书得到二级证书的公钥+摘要验签,再然后拿二级证书的公钥解密二级证书得到服务器的公钥和摘要验签名,验证过程就此结束


服务器在握手的时候会返回整个证书链,但通常为了节约数据量,不会包含最终的根证书,因为根证书通常已经在浏览器或者操作系统里内置了。

在这样一条信任链中,CA 的诚实可信是公钥信任体系的信任根。一旦计算机的“受信任根证书颁发机构”列表中,混入了不可信任的根证书,就可以随时签发任何名称的数字证书。由于计算机对所有受信任更证书所签发的数字证书基于不区分的平等信任,混入信任列表的恶意根证书签发的伪造证书将会危害计算机的所有安全通信,机密的信息会被解析窃听,显示为有效的数字签名和安全的 HTTPS 的连接其实际是不可信的。

2. 证书体系的弱点

证书体系(PKI,Public Key Infrastructure)虽然是目前整个网络世界的安全基础设施,但绝对的安全是不存在的,它也有弱点,关键还是信任二字。

1. CRL & OCSP

如果 CA 失误或者被欺骗,签发了错误的证书,虽然证书是真的,可它代表的网站确实假的。针对这种情况开发出了 CRL(证书吊销列表,Certificate revocation list)和 OCSP(在线证书状态协议,Online Certificate Status Protocol),两种协议用于及时废止有问题的证书。

2. 黑名单

还有一种更糟糕的情况,CA 如果被黑客攻陷,或者 CA 有恶意,因为它(即根证书)是信任的源头,整个信任链里的所有证书也就都不可信了。该种场景因为涉及的证书太多,就只能操作系统或者浏览器从根上“下狠手”了,撤销对 CA 的信任,列入“黑名单”,这样它颁发的所有证书就都会被认为是不安全的。


最后

今天我们主要了解了公钥信任的问题,CA 与数字证书。安全问题不知道有没有让你有一种“盗梦空间”的感觉?真是一环接一环。

大家也可以根据各大网站小锁头里的来理解该部分内容,下图我们可以看到由 DigiCert 签发的 github.com

总结

  1. 公钥的分发需要使用数字证书,必须有 CA 的信任链来验证,否则就是不可信的。
  2. 作为信任链的源头 CA 有时也会不可信,解决办法有 CRL、OCSP 和终止信任。

网络安全涉及了方方面面太多的知识,尤其是网络的基础知识对我们来说还是非常重要的,关于这部分大家又有什么要分享的?欢迎你的分享留言或指正。


网络安全系列专题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270