当前位置:首页-正文

谷歌浏览器Google Chrome开发团队宣布将停止支持HPKP公钥扎钉

早些年谷歌工程师为了提高互联网整体的安全性避免因证书颁发机构违规操作而设计了 HPKP 公钥固定标准

公钥固定允许网站在服务器部署证书颁发机构的哈希值, 若网站使用的证书与固定的哈希不对应则拒绝连接。

公钥固定的现实意义在于如果有CA证书颁发机构违规向某个域名私自签发证书那么也无法实现对网站的劫持。

但是现在谷歌浏览器已经决定弃用 HPKP 公钥固定标准,预计将会在2018 年5月份到来的正式版里正式弃用。

那么问题到底发生在哪里?

HPKP公钥固定所携带的是中级证书或者根证书的哈希值,并与终端浏览器约定此哈希通常会在1年左右失效。

例如蓝点网目前使用的是TrustAsia(中级CA)提供的证书,我们已经将TrustAsia的中级证书哈希进行固定。

server { listen 443 ssl http2; ssl on; ssl_certificate /usr/local/nginx/conf/vhost/crt/landian.vip.crt; ssl_certificate_key /usr/local/nginx/conf/vhost/crt/landian.vip.key; # 启用严格安全传输HSTS	add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";	# 启用 HPKP 公钥固定 add_header Public-Key-Pins 'pin-sha256="IiSbZ4pMDEyXvtl7Lg8K3FNmJcTAhKUTrB2FQOaAO/s="; pin-sha256="klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; max-age=2592000; includeSubDomains'; ssl_session_timeout 5m; }

如果1年后蓝点网不再使用TrustAsia 签发的证书而换成其他,这会造成实际使用证书与固定的证书哈希不同。

那么浏览器就会直接拦截用户与蓝点网服务器之间的连接,浏览器会认为新更换的CA可能是想进行恶意劫持。

由此可引发非安全方面的拒绝访问攻击:

安全研究员斯科特称攻击者可劫持用户访问并返回恶意 HPKP 头,这种操作并不会造成用户的数据发生泄露。

但恶意HPKP头在被浏览器接收后会阻止用户正常访问网站,因为浏览器校验到的HPKP头与真实服务器不同。

因此恶意攻击者可以利用 HPKP 公钥固定策略无差别的对所有HTTPS网站发起这种有点另类的拒绝访问攻击

虽然网站所有者始终没有丢失对网站和服务器的控制权, 但由于固定哈希已经被接收因此没有办法清除缓存。

撰写该标准的谷歌工程师称HPKP很可怕:

参与撰写和制定该标准(RFC 7469)的谷歌工程师称公钥固定变得非常可怕,该标准会对生态造成严重危害。

除了恶意攻击者可以伪造 HPKP 头进行拒绝访问攻击外,如果证书发生泄露需要进行吊销也会引发较大问题。

因为吊销旧证书后再请求签发新证书只能选择此前固定的CA 机构,你不能再选择新的CA 机构为你签发证书。

基于此方面考虑HPKP标准在制定时已要求网站至少固定两份哈希,如蓝点网固定的是TrustAsia 和Comodo。

因此最终更换证书时我只能继续选择由TrustAsia或 Comodo 签发的证书, 其他的证书浏览器则会拒绝接受。

Google Chrome v67版开始弃用HPKP:

目前已经支持HPKP公钥固定的浏览器有Google Chrome 浏览器、Mozilla Firefox浏览器以及Opera浏览器。

既然作为标准参与制定的谷歌都决定放弃支持,Mozilla Firefox和Opera 势必也会在后续停止支持公钥固定。

谷歌去年8月的数据显示全球启用HPKP的站点仅只有375 个,这个数字对于整个互联网来说真的是微不足道

同时由于很多网站使用CDN或者如CloudFlare类的DDoS防护,此类服务本身就没准备支持 HPKP 公钥固定。

最终谷歌会在2018年5月份发布的Chrome v67版中正式弃用HPKP,使用该标准的网站可以提前撤销固定了。

本文来源蓝点网 原创,由山外的鸭子哥转载或编译发布,如需转载请联系原作者。