HTTP公钥固定(HPKP)模拟演示 - 关于本工具
工具简介
HTTP公钥固定(HTTP Public Key Pinning,简称HPKP)是一种安全机制,允许网站通过HTTP响应头告诉浏览器应该信任哪些公钥。本工具是一个交互式的HPKP模拟演示平台,帮助开发者和安全研究人员理解HPKP的工作原理、配置方法以及潜在风险。
- 生成ECDSA P-256密钥对
- 计算SPKI SHA-256 PIN值
- 构建完整的HPKP响应头
- 浏览器验证状态模拟
- 违规报告JSON预览
本工具适用于以下人群:
- Web安全工程师:深入了解HPKP的安全机制和实施细节
- 前端开发者:学习如何在服务器端配置HPKP响应头
- 运维工程师:理解证书固定对网站部署的影响
- 安全研究员:分析HPKP的攻击面和防御效果
- 计算机科学学生:学习公钥基础设施和浏览器安全模型
HPKP的历史背景
HTTP公钥固定(HPKP)于2015年被引入RFC 7469,旨在解决证书颁发机构(CA)被攻破或错误签发证书的安全问题。其核心思想是:网站在首次访问时通过响应头告知浏览器应该信任的公钥指纹,在后续访问中浏览器会验证服务器证书链中是否包含这些公钥。
然而,由于实施复杂、误配置风险高、以及可能导致网站完全无法访问等问题,HPKP逐渐被业界抛弃。Google于2018年在Chrome 72中移除了HPKP支持,Mozilla Firefox也紧随其后。目前,期望签名证书(Expect-CT)和证书透明度(CT)成为了替代方案。
技术原理
HPKP的工作流程可以概括为以下几个步骤:首先,服务器在HTTP响应中包含Public-Key-Pins头,列出当前证书和备份证书的公钥SHA-256哈希值(即PIN值)。浏览器首次收到该头后,会记住这些PIN值。在后续的连接中,浏览器会验证服务器提供的证书链中是否至少有一个公钥的PIN值与之前记录的匹配。如果不匹配,浏览器会中断连接并向报告URI发送违规报告。
每个PIN值都是通过对证书的SPKI(Subject Public Key Info)信息进行SHA-256哈希运算得到的。典型的HPKP头包含max-age(PIN的缓存时间)、includeSubDomains(是否包含子域名)以及report-uri(违规报告地址)等指令。
为什么学习HPKP仍然有价值
虽然HPKP已经不再被浏览器支持,但学习HPKP仍然具有重要的教育价值。首先,HPKP的设计理念——通过公钥固定来防止中间人攻击——在移动端应用和IoT设备中仍然广泛应用。其次,理解HPKP的失败原因可以帮助开发者更好地设计安全机制。最后,HPKP相关的知识(如SPKI计算、证书链验证等)在其他安全领域同样适用。
UD5工具箱