fbpx
维基百科

HTTP公钥固定

HTTP公钥固定(又称HTTP公钥钉扎,英語:HTTP Public Key Pinning,缩写HPKP[1]HTTPS网站防止攻击者利用数字证书认证机构(CA)错误签发的证书进行中间人攻击的一种安全机制,用于预防CA遭受入侵或其他会造成CA签发未授权证书的情况。采用公钥固定时,网站会提供已授权公钥哈希列表,指示客户端在后续通讯中只接受列表上的公钥。

工作原理 编辑

服务器通过Public-Key-Pins(或Public-Key-Pins-Report-Only用于监测)HTTP头向浏览器传递HTTP公钥固定信息。

HTTP公钥固定将网站X.509证书链中的一个SPKI(和至少一个备用密钥)以pin-sha256方式进行哈希,由参数max-age(单位秒)所指定一段时间,可选参数includeSubDomains决定是否包含所有子域名,另一个可选参数report-uri决定是否回报违反HTTP公钥固定策略的事例。在max-age所指定的时间内,证书链中证书的至少一个公钥须和固定公钥相符,这样客户端才认为该证书链是有效的。[2]

RFC 7469规范发布时只允许SHA-256算法。HTTP公钥固定中的哈希算法也可通过RFC 7469规范的附录A中所提到的命令行或其他第三方工具来生成。[3]

网站维护者可以选择将特定CA根证书公钥固定——只有该CA和其签发的中级证书才视同有效,而且可以选择将一个或多个中级证书固定,或将末端证书固定。但是,至少得固定一个备用密钥以便更换现有的固定密钥。在没有备用密钥(备用密钥须不在现有证书链中)时,HTTP公钥固定并不会生效。[4]

HTTP公钥固定在RFC 7469规范中成为标准。[1]把证书公钥的哈希值硬编码在客户端、浏览器中,这被称为“证书固定”,HTTP公钥固定则是“证书固定”的一种扩展。[5]

Chromium浏览器现已经禁止固定自签名根证书的证书链,这样一些内容嗅探、抓包软件如mitmproxy、Fiddler便无法再利用自签证书嗅探加密内容。[6]RFC 7469规范指出,对于此类证书链,建议禁用HTTP公钥固定的违规回报。[7]

违规回报 编辑

客户端进行HTTP公钥固定验证失败后,将把此次错误详情以JSON格式回报给report-uri参数中指定的服务器。若发生客户端向同域名的服务器端回报失败(如违规本身就是由连接问题引起的),服务器端也可指定另一个域名或采用其他回报服务。[8][9]

浏览器支持 编辑

Firefox从版本35.0开始支持HPKP[10]Chrome从版本46开始[11]支持,但在Chrome 67中终止了对HPKP的支持[12]Internet ExplorerMicrosoft Edge目前尚不支持HPKP。[13]

应用现状 编辑

2016年,Netcraft英语Netcraft在有关SSL的调研中称,只有0.09%的证书在使用HTTP公钥固定,加上实际运作中不当的配置,实际有效的HTTP公钥固定证书数量低于3000。造成这种现象的原因是:该技术尚处于萌芽期,网站技术人员对其缺乏重视和理解,更重要的是,错误的部署可能带来网站方面无法接受的严重后果——用户在相当长一段时间内(取决于max-age的配置)因新证书公钥与旧HPKP策略不符,对网站的合法访问都将遭拒。[14]

因为网站部署率过低,Google在2018年5月29日发布的Chrome 67中终止了对HPKP的支持。[12]

Google所主导的证书透明度提供了一个用于监测、审核证书的开放式框架,以保障证书签发流程的安全。[15]这是一项和HTTP公钥固定有着相同目标的较新项目。

参见 编辑

参考资料 编辑

  1. ^ 1.0 1.1 RFC 7469. tools.ietf.org. Internet Engineering Task Force. [2016-12-04]. (原始内容于2018-01-05) (英语). 
  2. ^ Server and Client Behavior. RFC 7469. Internet Engineering Task Force. [2016-12-04]. (原始内容于2018-01-05) (英语). 
  3. ^ Fingerprint Generation. RFC 7469. Internet Engineering Task Force. [2016-12-04]. (原始内容于2018-01-05) (英语). 
  4. ^ About Public Key Pinning. noncombatant.org. [2015-05-07]. (原始内容于2015-05-15) (英语). 
  5. ^ Certificate and Public Key Pinning - OWASP. www.owasp.org. [2015-05-07]. (原始内容于2015-05-18). 
  6. ^ Security FAQ - The Chromium Projects. www.chromium.org. [2015-07-07]. (原始内容于2015-07-09) (英语). 
  7. ^ Validating Pinned Connections. RFC 7469. Internet Engineering Task Force. [2016-12-04]. (原始内容于2018-01-05) (英语). 
  8. ^ HPKP Violation Reporting. Scott Helme. (原始内容于2015-09-28) (英语). 
  9. ^ Reporting Pin Validation Failure. RFC 7469. Internet Engineering Task Force. [2016-12-04]. (原始内容于2018-01-05) (英语). 
  10. ^ Public Key Pinning. mozilla.org. 2015-12-10 [2015-12-22]. (原始内容于2015-12-04) (英语). 
  11. ^ Rolling out Public Key Pinning with HPKP Reporting. Google Developers. 2016-11-30 [2016-12-05]. (原始内容于2016-12-04) (英语). 
  12. ^ 12.0 12.1 Joseph Medley. Deprecations and removals in Chrome 67. Google Developers. 2017-10-29 [2019-01-05]. (原始内容于2019-03-23) (英语). 
  13. ^ . Microsoft. [2016-12-04]. (原始内容存档于2016-12-20) (英语). 
  14. ^ Paul Mutton. Secure websites shun HTTP Public Key Pinning. Netcraft. 2016-03-22 [2016-12-04]. (原始内容于2016-12-20) (英语). 
  15. ^ Google透明度报告中的Certificate Transparency. Google. [2016-12-04]. (原始内容于2016-12-20) (中文). 

外部链接 编辑

  • 在Apache、nginx、Lighttpd上启用HPKP(页面存档备份,存于互联网档案馆
  • 安全网站为何对HPKP敬而远之?(页面存档备份,存于互联网档案馆
  • Certificate Transparency项目网站(页面存档备份,存于互联网档案馆

http公钥固定, 又称http公钥钉扎, 英語, http, public, pinning, 缩写hpkp, 是https网站防止攻击者利用数字证书认证机构, 错误签发的证书进行中间人攻击的一种安全机制, 用于预防ca遭受入侵或其他会造成ca签发未授权证书的情况, 采用公钥固定时, 网站会提供已授权公钥的哈希列表, 指示客户端在后续通讯中只接受列表上的公钥, 目录, 工作原理, 违规回报, 浏览器支持, 应用现状, 参见, 参考资料, 外部链接工作原理, 编辑服务器通过public, pins, 或public. HTTP公钥固定 又称HTTP公钥钉扎 英語 HTTP Public Key Pinning 缩写HPKP 1 是HTTPS网站防止攻击者利用数字证书认证机构 CA 错误签发的证书进行中间人攻击的一种安全机制 用于预防CA遭受入侵或其他会造成CA签发未授权证书的情况 采用公钥固定时 网站会提供已授权公钥的哈希列表 指示客户端在后续通讯中只接受列表上的公钥 目录 1 工作原理 2 违规回报 3 浏览器支持 4 应用现状 5 参见 6 参考资料 7 外部链接工作原理 编辑服务器通过Public Key Pins 或Public Key Pins Report Only用于监测 HTTP头向浏览器传递HTTP公钥固定信息 HTTP公钥固定将网站X 509证书链中的一个SPKI 和至少一个备用密钥 以pin sha256方式进行哈希 由参数max age 单位秒 所指定一段时间 可选参数includeSubDomains决定是否包含所有子域名 另一个可选参数report uri决定是否回报违反HTTP公钥固定策略的事例 在max age所指定的时间内 证书链中证书的至少一个公钥须和固定公钥相符 这样客户端才认为该证书链是有效的 2 RFC 7469规范发布时只允许SHA 256算法 HTTP公钥固定中的哈希算法也可通过RFC 7469规范的附录A中所提到的命令行或其他第三方工具来生成 3 网站维护者可以选择将特定CA根证书公钥固定 只有该CA和其签发的中级证书才视同有效 而且可以选择将一个或多个中级证书固定 或将末端证书固定 但是 至少得固定一个备用密钥以便更换现有的固定密钥 在没有备用密钥 备用密钥须不在现有证书链中 时 HTTP公钥固定并不会生效 4 HTTP公钥固定在RFC 7469规范中成为标准 1 把证书公钥的哈希值硬编码在客户端 浏览器中 这被称为 证书固定 HTTP公钥固定则是 证书固定 的一种扩展 5 Chromium浏览器现已经禁止固定自签名根证书的证书链 这样一些内容嗅探 抓包软件如mitmproxy Fiddler便无法再利用自签证书嗅探加密内容 6 RFC 7469规范指出 对于此类证书链 建议禁用HTTP公钥固定的违规回报 7 违规回报 编辑客户端进行HTTP公钥固定验证失败后 将把此次错误详情以JSON格式回报给report uri参数中指定的服务器 若发生客户端向同域名的服务器端回报失败 如违规本身就是由连接问题引起的 服务器端也可指定另一个域名或采用其他回报服务 8 9 浏览器支持 编辑Firefox从版本35 0开始支持HPKP 10 Chrome从版本46开始 11 支持 但在Chrome 67中终止了对HPKP的支持 12 Internet Explorer Microsoft Edge目前尚不支持HPKP 13 应用现状 编辑2016年 Netcraft 英语 Netcraft 在有关SSL的调研中称 只有0 09 的证书在使用HTTP公钥固定 加上实际运作中不当的配置 实际有效的HTTP公钥固定证书数量低于3000 造成这种现象的原因是 该技术尚处于萌芽期 网站技术人员对其缺乏重视和理解 更重要的是 错误的部署可能带来网站方面无法接受的严重后果 用户在相当长一段时间内 取决于max age的配置 因新证书公钥与旧HPKP策略不符 对网站的合法访问都将遭拒 14 因为网站部署率过低 Google在2018年5月29日发布的Chrome 67中终止了对HPKP的支持 12 由Google所主导的证书透明度提供了一个用于监测 审核证书的开放式框架 以保障证书签发流程的安全 15 这是一项和HTTP公钥固定有着相同目标的较新项目 参见 编辑中间人攻击 HTTP严格传输安全 HTTP Strict Transport Security HSTS RFC 7469参考资料 编辑 1 0 1 1 RFC 7469 tools ietf org Internet Engineering Task Force 2016 12 04 原始内容存档于2018 01 05 英语 Server and Client Behavior RFC 7469 Internet Engineering Task Force 2016 12 04 原始内容存档于2018 01 05 英语 Fingerprint Generation RFC 7469 Internet Engineering Task Force 2016 12 04 原始内容存档于2018 01 05 英语 About Public Key Pinning noncombatant org 2015 05 07 原始内容存档于2015 05 15 英语 Certificate and Public Key Pinning OWASP www owasp org 2015 05 07 原始内容存档于2015 05 18 Security FAQ The Chromium Projects www chromium org 2015 07 07 原始内容存档于2015 07 09 英语 Validating Pinned Connections RFC 7469 Internet Engineering Task Force 2016 12 04 原始内容存档于2018 01 05 英语 HPKP Violation Reporting Scott Helme 原始内容存档于2015 09 28 英语 Reporting Pin Validation Failure RFC 7469 Internet Engineering Task Force 2016 12 04 原始内容存档于2018 01 05 英语 Public Key Pinning mozilla org 2015 12 10 2015 12 22 原始内容存档于2015 12 04 英语 Rolling out Public Key Pinning with HPKP Reporting Google Developers 2016 11 30 2016 12 05 原始内容存档于2016 12 04 英语 12 0 12 1 Joseph Medley Deprecations and removals in Chrome 67 Google Developers 2017 10 29 2019 01 05 原始内容存档于2019 03 23 英语 The status of public key pinning extension in Microsoft Edge is under consideration Microsoft 2016 12 04 原始内容存档于2016 12 20 英语 Paul Mutton Secure websites shun HTTP Public Key Pinning Netcraft 2016 03 22 2016 12 04 原始内容存档于2016 12 20 英语 Google透明度报告中的Certificate Transparency Google 2016 12 04 原始内容存档于2016 12 20 中文 外部链接 编辑在Apache nginx Lighttpd上启用HPKP 页面存档备份 存于互联网档案馆 安全网站为何对HPKP敬而远之 页面存档备份 存于互联网档案馆 Certificate Transparency项目网站 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title HTTP公钥固定 amp oldid 78790225, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。