编辑: 会说话的鱼 | 2019-07-11 |
76 个域名的、164 张有问题的数字证书[12];
2017 年3月份 Google 和Firefox 的调查人员发现赛门铁克没有按照行业规则、误签发了
127 张SSL 服务器数字证书, 进一步调查发现涉及的数字证书可 能高达
3 万多张[13]. 1.3 针对 CA 机构的网络攻击导致虚假数字证书
2011 年3月,黑客入侵 Comodo 证书认证机构并签发了 包括 mail.google.com、www.google.com、login.yahoo.com、 addons.mozilla.org 等在内的
9 张虚假数字证书[14].
2011 年8月底,荷兰 CA 机构 DigiNotar 的服务器遭受 黑客入侵事件被曝光[15]. DigiNotar 在7月19 日已发现系统 被入侵,但是并没有及时向外界公布.黑客入侵 DigiNotar 后, 至少签发了
531 张虚假数字证书, 包括 Google、 Microsoft、 雅虎、Twitter、Facebook、中情局等在内的网站.黑客利用 这些虚假数字证书实施中间人攻击, 并导致伊朗
30 万Gmail 用户的信息泄露.该安全事件导致 DigiNotar 最终破产.
2014 年7月, 印度国家信息中心 (NIC) 使用 Indian CCA 根证书签发的中间 CA 证书签发了多个 Google 和Yahoo 域名 的虚假数字证书.Indian CCA 被Windows Root Certificate Store 所信任, 这些虚假数字证书可被用于发起大范围的中间 人攻击.Indian CCA 已经撤销了 NIC 持有的中间 CA 证书, 声称 NIC 的证书签发系统遭到了黑客入侵[16]17].
2 数字证书验证安全增强方案 由于大量的虚假数字证书安全事件,研究人员提出了各 种PKI 数字证书验证安全增强方案: 在执行原有的 PKI 数字 证书验证步骤[18]之外,同时再执行额外的验证步骤,从而 抵抗利用虚假数字证书的攻击. 2.1 Pinning 方案 Pinning 方案的基本思想是浏览器记录不同域名网站对 应的公钥数据或者数字证书, 当浏览器下一次访问该网站时, 比较原记录的公钥和接收到的服务器数字证书. Pinning 方案 以HPKP 为代表[1],在HTTP 头部中提示浏览器记录网站服 务器的公钥数据. Pinning 方案的优势是实现简单: 一旦浏览器记录了正确 的公钥数据之后,任何利用虚假数字证书的攻击行为都会检 测到.另一方面,Pinning 方案的最大问题是初始化:如果浏 览器进行初次访问、 记录公钥数据时, 正好处于被攻击状态、 记录了攻击者的公钥,以后就再也无法访问正确网站. 2.2 证书透明化方案 证书透明化方案[2]是由 Google 提出的,在2013 年成为 IETF RFC 标准.证书透明化方案的基本思想是引入额外的 Log Server,公开存储 CA 签发的所有数字证书;
浏览器必须 确认 TLS 服务器数字证书已经存储在 Log Server 上, 才会接 受该服务器数字证书. Log Server 在公开存储了某一张数字证书之后,会对该 证书执行额外的数字签名, 称为 Signed Certificate Timestamp (SCT).在与浏览器进行 TLS 握手时,网站服务器会同时发 送SCT;
浏览器验证 SCT,确认服务器数字证书已经存储在 Log Server 上后、才会接受该数字证书. 由于所有数字证书公开存储在 Log Server 上,其中的虚 假数字证书会被正确的网站服务器发现, 从而采取带外措施、 解决攻击问题.事实上,考虑到正确的网站服务器并不会时 刻密切关注 Log Server 上的所有数字证书;
所以,从虚假数 字证书上载 Log Server、到发现虚假数字证书会有一定的时 间延迟. 2.3 多路径对比方案 由于攻击者发起中间人攻击或者建立虚假网站攻击,通 常还需要结合 DNS 污染或网络链路劫持等, 一般只在一定网 络区域内有效, 浏览器可以通过 TOR 匿名网络、 同时分别建 立多条不同的网络访问路径、使用不同的网络路径从其他区 域访问相同域名的网站,对比从不同路径获得的服务器数字 证书[3].如果发现不同,就向用户报警. 多路径对比方案需要额外的通信连接(而且是使用 TOR 匿名网络),会带来较大的延迟.而且,考虑到同一域名的 网站可能采取分布式部署和 CDN 服务器,多个正确的 TLS 服务器使用不同的数字证书,多路径对比方案会产生虚警. 2.4 数字证书服务范围限定方案 数字证书服务范围限定方案也是一种浏览器端的解决方 案.首先由可信的第三方来总结现有正确服务器数字证书情 况,得到数字证书服务的规律:(1) 不同的特定 CA,只会签 发一定范围顶级域名的服务器数字证书[5];