HTTP Public Key Pins (HPKP)

HTTP Public Key Pins (HPKP)

Hlavička HPKP měla za cíl zabránit HTTPS komunikaci při vystavení falešných certifikátů.

HTTP Public Key Pinning zajišťuje, aby prohlížeč přijímal odpověď serveru pouze tehdy, když přijde i s certifikátem, jehož veřejný klíč odpovídá tomu, co má prohlížeč zapamatováno. Zabraňuje to vystavování falešných certifikátů pro doménu. HPKP má také report-only variantu v podobě hlavičky Public-Key-Pins-Report-Only.

Proč (ne)používat Public-Key-Pins

Hlavičku HPKP přestaly některé prohlížeče respektovat (Chrome), neboť se zjistilo, že neopatrnou správou klíčů s certifikáty může dojít k naprostému zablokování stránek. Při správě je potřeba mít pečlivě uchovány zálohy klíčů.

V prohlížeči Chrome 72 (leden 2019) byla hlavička HPKP zcela odstraněna. "Má velmi nízké osvojení a přestože poskytuje bezpečnost proti zneužití certifikátů, vytváří také riziko odmítnutí služby a nepřátelské připínání.".

Syntaxe

Public-Key-Pins: pin-sha256="<pin-value>";
                  max-age=<expire-time>;   
                  includeSubDomains;        
                  report-uri="<uri>";      

Ukázka nastavení Public-Key-Pins

Public-Key-Pins: 
pin-sha256="cnEPOUcTAaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs="; 
pin-sha256="T0T0resMztCzM3elUxkcjR2S5P4hhyBNf6HkmjAhpGP="; 
max-age=5184000; includeSubDomains; 
report-uri="https://www.domenaxyz.cz/hpkp-report"

Potenciální chyby v nastavení

HPKP bylo zajímavé řešení, ale v případě vložení špatného certifikátu nebo ztráty klíče či jiného problému, bude web nedostupný do vypršení max-age.

Užitečné zdroje