谷歌曾经倡导的HPKP将一去不复返了。
HTTP公钥固定标准(HPKP)是一种安全标准,让浏览器只在特定时间段内访问主机时才接受某些“固定”公钥。2015年,谷歌首次推出了这项功能。尽管它是出于好意,但HPKP没有如预想的那样真正发展起来。
上周五,Chris Palmer在谷歌Chromium的博客上写到:HPKP已经死了。
明年春天,很有可能在五月发布Chrome 67的时候,谷歌将放弃对HPKP的支持。Chrome和Opera是两个主要的完全支持HPKP的浏览器。Firefox没有完成推出对该标准的支持,而苹果和微软甚至从来没有在它们的浏览器上做这种尝试。
谷歌的克里斯•帕尔默在一篇博客中写到:“没有兼容性的风险;任何网站不会因为删除静态或动态PKP而停止运行。”
那么问题到底发生在哪里?
为什么HPKP不值得行业内的一些明星企业如Scott Helme继续采用,关于这一点,已经有很多的讨论了。事实上,我们公司的Vincent Lynch甚至写了一篇文章,阐述为什么HPKP不是一个理想的选择。
本质上是这样的。HPKP在完成多项任务方面是一种较为笨拙的办法,而这些任务其他机制和协议已经可以完成得更好了。
“PKP可以防范伪造证书,通过为网站提供网络暴露机制(HPKP)来限制一系列证书颁发机构(CA),这些机构可以为它们的域名颁发证书。然而,这暴露了开放网络平台面向外部的一些考虑:特别地,选择证书颁发机构是浏览器或OS供应商在产品安全上的一个决定,还有选择和使用次证书颁发机构、跨机构签发和由CA独立确定的其他一些PKI的方面。”
因此,网站运营人员面临选择一系列可靠密钥的困难,并且PKP的采用率一直很低。当网站运营人员的期望与可靠地停驻在现实世界中的客户端机器上不相匹配时,用户就会受到影响。出人意料或虚假的固定错误可能导致用户疲劳,而不是用户安全。
三个具体的风险:
1. 因用户代理信任存储区和CA操作多变,很难创建一个有效的固定设置。
2. 存在站点变得无法使用的风险
3. 如果攻击者获取了被错误颁发的证书,那么就存在恶意固定的风险。目前还没有证实或传闻发生过这种情况,但甚至是对那些没有使用PKP的网站来说,都存在风险。
要特别注意Palmer提出的这三个风险。创建正确的固定设置是很难的。因为不知道他们到底在做什么,很多人创建了错误的固定设置,从而使他们的站点变得无法使用。最后,尽管还没有被利用,但存在一个攻击媒体,可能会造成灾难性的后果。
大致说来,总结起来就是:了解必要知识和背景的人可能会听从专家的建议使用HPKP,并且它也如预期的那样工作地很好,但不幸的是,如果你不知道你在做什么,那么很有可能弊就会大于利。网上有更多的人属于第二种类型而不是第一种。
然后还存在这样一个事实:如果有人获取了被错误颁发的证书,那么HPKP很有可能会被利用来造成潜在性的伤害。通常,这不是一个好兆头,即旨在“防范”证书被错误颁发的机制事实上可能会被利用,使证书被错误颁发变得更糟糕。而这在“恶意固定”的形式中是很有可能会发生的。
在那种情形中,恶意固定可能使网站变得无法使用。此外,HPKP没有修复机制,这就如SSL实验室的Ivan Ristic所说的那样:“是有问题的。”