Chrome 或将于2018年正式弃用 HPKP 公钥固定标准

Stella981
• 阅读 861

早些年谷歌工程师为了提高互联网整体的安全性避免因证书颁发机构违规操作而设计了 HPKP 公钥固定标准。公钥固定允许网站在服务器部署证书颁发机构的哈希值, 若网站使用的证书与固定的哈希不对应则拒绝连接。公钥固定的现实意义在于如果有 CA 证书颁发机构违规向某个域名私自签发证书那么也无法实现对网站的劫持。但是现在谷歌浏览器已经决定弃用 HPKP 公钥固定标准,预计将会在 2018 年 5 月份到来的正式版里正式弃用。

Chrome 或将于2018年正式弃用 HPKP 公钥固定标准

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

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

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

server { listen 443 ssl http2; ssl on; ssl_certificate /usr/local/nginx/conf/vhost/crt/www.landiannews.com.crt; ssl_certificate_key /usr/local/nginx/conf/vhost/crt/www.landiannews.com.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,使用该标准的网站可以提前撤销固定了。

本文地址:http://www.linuxprobe.com/chrome-abandon-hpkp.html编辑:清蒸github,审核员:逄增宝

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
SSH公钥免密登录其他主机
在多台主机之间使用SSH免密登录,假设主机A免密登录主机B:1\.在主机A上生成自己的ssh公钥:root@A~sshkeygentrsa执行上面命令,一路回车,完成后,会在~/.ssh目录下生成2个文件:id\_rsa(私钥)和id\_rsa.pub(公钥)2\.将主机A上生成的公钥
高防加速CDN 高防加速CDN
1年前
为什么安装了SSL证书,网站还是显示不安全?
SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。SSL证书就是遵守SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。由于http明文方式
Chase620 Chase620
3年前
ssh-keygen详解
sshkeygen用来生成ssh公钥认证所需的公钥和私钥文件。ssh秘钥登录特点:1.安全;2.免输密码。对于安全级别较高的服务器,建议配好ssh登录后禁掉密码登录。缺点:略繁琐。如果你的只是临时登录一次,那么还是密码吧。一、生成秘钥秘钥对需要在你自己的机器上生成,然后把公钥放到服务器相应用户的~/.ssh目录执行下面命令,默认
Wesley13 Wesley13
3年前
RSA加密
rsa加密的解决方案都是需要证书或者文件的,对于服务端提供了公钥,没有给证书或者pem文件的rsa加密:把公钥和你需要编码得Nsstring都转换成NSData用rsa公钥编码你所需要编码得内容最后转换成Nsstring//库 SecKeyWrapper//RSA加密\(NSString\)encryptWithStr
Stella981 Stella981
3年前
Linux CA
CA(CertificateAuthority)证书颁发机构主要负责证书的颁发、管理以及归档和吊销。证书内包含了拥有证书者的姓名、地址、电子邮件帐号、公钥、证书有效期、发放证书的CA、CA的数字签名等信息。证书主要有三大功能:加密、签名、身份验证。1.什么是CA认证?CA认证,即CA认证机构,为电子签名相关各方提供真实性、可靠性验证
Wesley13 Wesley13
3年前
HTTPS安全通信过程
一、两对公私钥1、CA公私钥:CA公钥:预装在操作系统,内置在浏览器中。备注:微软等公司会根据一些权威安全机构的评估选取一些信誉很好并且通过一定的安全认证的证书发布机构,把这些证书发布机构的证书默认安装在操作系统中,并且设置为操作系统信任的数字证书。CA私钥:由CA机构保管,不会外泄。2、服务公私钥:服
Stella981 Stella981
3年前
CentOS 6.5 配置 SSH 免密登录
1、生成公钥:sshkeygentrsa然后一直回车即可_:sshkeygentrsaGeneratingpublic/privatersakeypair.Enterfileinwhichtosavethekey(/root/.ssh/id_rsa):Created
Wesley13 Wesley13
3年前
Java基础学习总结(16)——Java制作证书的工具keytool用法总结
一、keytool的概念  keytool是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。在JDK 1.4以后的版本中都包含了这一工具,它的位置为%JAVA\_HOME%\\bin\\keytool.exe,如下图所示:
Wesley13 Wesley13
3年前
VC++网络安全编程范例(2)
数字证书采用公钥体制,即利用一对互相匹配的密钥进行加密、解密。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用于加密和验证签名。当发送一份保密文件时,发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密,这样信息就可以安全无误地到达目的地了。通过数字的手段
Stella981 Stella981
3年前
Let’s Encrypt & Certbot 浅谈
前言当我们想给网站启用HTTPS,通常需要从证书颁发机构购买证书,并配置到现有的HTTP服务上来实现HTTPS.这里暗藏的痛点是:1.我们需要花钱(买证书)2.证书颁发机构(质量参差不齐,不一定靠谱)3.需要手动添加配置(各类webserver的配置都不大一样)4.证书是会过期滴(意味我们要不断的再来