Matrix 精选

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。

文章代表作者个人观点,少数派仅对标题和排版略作修改。


几年前,网络上的我们几乎是透明的,除了数据传输过程本身不安全外,还需要担心下载的文件是否有病毒、蠕虫或流氓插件。而得益于近年来安全标准的不断提高和行业发展的日新月异,及时跟随系统和软件更新并做好必要安全措施的用户「中毒」的可能性已越来越小,「熊猫烧香」想在当下的环境中肆虐可谓难上加难。

这里如果我们要拉一位功臣走上领奖台,CA 认证当之无愧。通过 CA 认证颁发的 SSL 证书可轻松实现网络通讯加密的目标,在保证数据安全的同时还能解决部分网页乱弹广告等运营商劫持问题。

在 Let's Encrypt 对 SSL 证书签发市场做了近乎洗牌般的骚操作之后,越来越多的服务都开始部署 SSL,HTTPS 也顺势成为了 iOS 网络层和 Chrome 等应用程序的强制标准;自 Windows Vista 后加入的 UAC 也在很大程度上依赖 CA 认证做第一步的安全审计。

在今天这篇文章里,我们不妨就来聊一聊这位默默为我们的网络浏览和数字安全保驾护航的 CA 认证。

CA 认证与根证书

CA 全称 Certificate Authority,即证书颁发机构。

CA 颁发的证书就像我们购买商品时看到的防伪标签,在对商品来源一无所知的时候,可以靠它来初步判断商品真伪。通常而言,一份有效的 CA 证书包含公钥和私钥两部分,二者相互加密、解密,即公钥加密、私钥解密私钥加密、公钥解密

这个非对称加密过程(即加密、解密过程使用的密钥不同且成对)保护着互联网大部分通信过程。

CA 认证的逻辑从授权结构上理解大概是:所有的证书都有一定的证书路径,证书路径则从根证书开始。例如操作系统或应用程序自带数个根证书,它们在该操作系统中是被认为可信的;在此前提下,由这些有效根证书颁发的二级、三级证书将一同被认为是可信的。

举个例子,下图是 sspai.com 使用的数字证书,其中包含的证书路径根证书是 Sectigo

少数派的根证书

这些根证书的入库标准则是 CA 组织的信誉。若 CA 组织做出了违背安全原则的颁发操作,各大组织(主要是 Apple、Mozilla 与 Microsoft)会把失信组织的根证书从信任库中删除。某些组织曾因为信度低或是篡改证书签发日期被各大组织从信任证书库中剔除。而由于历史原因,到目前为止 Mozilla 的证书库中的国内组织根证书只有 CFCA(中金金融认证中心)。

这种认证逻辑导致 CA 认证并不是绝对可信的,历史上也曾出现过多次 CA 根证书机构滥用签发权导致不再被信任的事件。

因此根证书在这里的作用可以这样理解:卫龙因为生产辣条时遵守的标准高而受到产业的认可,那么它旗下的产品通常将一并被认可。

可靠的安全保障手段

既然 CA 认证的认证逻辑有漏洞,为什么我们还是可以信任这套体系呢?

一方面,根证书库的更新并不频繁,各大公司对根证书的增、删也较为谨慎。在此条件下,操作系统对安装新的根证书的操作更是百般阻拦、层层设限。

以 iOS 为例,在 iOS 13 中使用的根证书库版本号为 2018121000,大概可以判断出它是 2018 年更新的。同时安装新证书的操作从之前的单纯安装描述文件变成了安装描述文件 +「关于本机」二次信任,在此过程中多次提示操作的危险性,降低了用户被盲目引导安装不可信根证书的可能。

所以在这个体系下造出一个自己的证书并诱导用户安装并开启是有一定难度的,相对应的,那些「有效证书」的信度也相对较高。

iOS 13 的证书信任设置

另一方面,目前针对 HTTP 的证书分为三个等级:EV、OV 和 DV,验证强度和可信程度逐级递减。

EV 是等级最高的证书,不仅要支付一笔不算便宜的申请费,还需要提交邓白氏码等辅助验证信息才可申请。EV 证书的安全性、可信性也是最高的,它的加密算法可选用更高的强度,网页浏览时也将会同步显示公司名称。

基于证书的连接可信提示

而 DV 证书只需要验证域名所有权或是服务器所有权即可颁发,一般只用来保证连接在加密的状态下运行,不在对安全性要求高的场合(如支付、购物等)使用。

微博著名吃瓜博主 @午后狂睡 在讨论这个话题的时候简单粗暴且好用的结论就是:一般诈骗网站都不是 https:// 而是 http://,即地址栏旁边没有小锁。从理论上来讲,诈骗网站申请一个 SSL 证书十分容易,但是部署之后需要解决跨域、CORS 令人更为脑阔疼——且不说不部署证书的「懒」可能还带有筛选群体的意味。

CA 证书体系的实际应用

除了保证连接是加密的,普通用户可以怎样使用这个体系更好地保护自己呢?

个人整理了一些可以轻松注意到的角度供大家参考。

辨别安装包完整性

由于特殊的网络环境,有时我们需要从国内的镜像下载一些专业软件。

那么如何才能知道软件包是否被修改过?通过查看安装包的签名信息,我们可以对安装包的来源有初步的分辨。

如上图所示,Windows 提供的独立更新安装包在安装时就会通过证书来检验安装程序的完整性。但如果有软件包没有经过签名就进行外发,此时这种判断方式可以作为充分条件,而不能作为必要条件。查看一个安装包的数字签名很简单:右击安装包打开属性窗口,在「数字签名」下即可看见签名时使用的证书

在如今的网络形势下,各大公司将签名用证书视为机密文件存储,同时也因为 Code Signing 证书的签发方式与上文提到的 EV 证书签发方式类似甚至更麻烦、价格更高,被修改的安装包通常不带数字签名,更不用说原公司的数字签名了。

正是因为如此,国内某些杀毒软件对已签名的程序默认放行,而未签名的程序通常情况下将被拦截。在下载未知来源的软件包时,通过对比软件开发商名称与安装包数字签名名称可以辅助验证可信程度。

网站信度

网站信度有时候可以与 SSL 部署与否、SSL 证书登记挂钩。例如:人行征信中心等网站通常应使用 EV 等级证书,即点开地址栏左边的小锁,在「证书」一栏下有公司名。

其中有一种例外:EV 不支持通配符证书,支付宝的证书由于需要通配符,没有使用 EV 级别证书。

辨别网络安全性

当连接到一个陌生 Wi-Fi 时,很多人会担心操作泄密或是隐私被截取。

而在业务部署了 HTTPS 的情况下,这种可能性大大降低。而当网络中有尝试解密 SSL 流量的行为时,最简便的方法就是进行 MitM 中间人攻击。这种攻击手段简单理解就是充当客户端与服务器之间的中间人,将会把客户端的全部流量转发给中间人,再由中间人传递给服务器。

类似的攻击手段在 HTTP 时期十分好用,因为当时验证消息私密性的手段并不多;而在 HTTPS 时代,由于中间人需要让客户端、服务器相信连接是私密的,它需要部署一张对所有域都有效的证书。

要达到该目的,需要中间人持有一张有效的根证书,可操作性十分低;同时各大浏览器都对 MitM 攻击有显眼的提醒,下图为百度在证书错误时 Microsoft Edge (Chromium 内核版) 给出的警告,这些警告也不应该被轻易忽视。

值得注意的是,这张截图是在我未登录一个 Portal 认证的 Wi-Fi 时截取的,这种认证方式通常在学校或是公共场合使用,认证前出现该情况可以不必担心。

其他

Windows 下的证书保护机制通常依赖于 UAC 和 SmartScreen,所以若非必要请勿关闭 UAC 或是直接使用 Administrator 账户

大多数网站为了保证安全性,在可能存在 MitM 攻击时主动设置为不可访问。如果你在一个需要登陆的 Wi-Fi 下无法跳转到登陆页面,可以尝试使用 HTTP 网页或是未开启 HSTS 的网站,个人常用的有www.cnki.netconnect.rom.miui.com/generate_204

若你在工作中遇到一台旧电脑或是机房电脑无法访问大部分网站,试着查看本地时间是否设置正确。SSL 证书都有时效性,若时间设置为十年之前会导致 SSL 证书无效,从而无法访问经过使用 SSL 加密传输的服务。

写在最后

如今的网络环境下,大面积爆发杀伤力强大的木马病毒的几率逐渐在变小,最近的一次 WannaCry 病毒借助操作系统漏洞传播,但及时更新补丁包的普通用户被波及的可能性并不高。除此之外,我们在网络上的通讯变得可靠了、连接变得私密了,运营商劫持也因为 SSL 的加入慢慢淡出主流视线。

而这些改进,有很一大部分要归功于 CA 证书的引入。再次回想 HTTP 时代,数据包经过的任何一跳都可以对它进行修改、拦截,数据安全没有保障。令人高兴的是,互联网越来越重视隐私保护与信息安全,营造更好的互联网空间。

> 下载少数派 客户端、关注 少数派公众号,了解更多数码小知识 💻

> 特惠、好用的硬件产品,尽在 少数派sspai官方店铺 🛒