HPKP je zastaralá hlavička odpovědí webového zabezpečení, zkratka znamená HTTP Public Key Pins. Jeho cílem bylo zabránit kompromitované nebo podvodné certifikační autoritě ve vydání veřejně důvěryhodného, ale hackery kontrolovaného HTTPS certifikátu pro web. V tomto scénáři by hackeři byli schopni dešifrovat veškerý zachycený přenos HTTPS na dotčený web.
Tip: Záhlaví webových odpovědí jsou části metadat, které server zahrnuje při odpovídání na požadavky. Malá podmnožina z nich se nazývá hlavičky zabezpečení, protože umožňují a konfigurují různé funkce zabezpečení.
Infrastruktura certifikátů HTTPS
Certifikační infrastruktura, na které je HTTPS postavena, je založena na síti důvěry. Řada společností působí jako certifikační autority (CA), které publikují jeden nebo více kořenových certifikátů. Sada kořenových certifikátů je součástí všech zařízení v úložišti důvěryhodnosti. Když web požaduje vlastní certifikát HTTPS od CA, certifikát je podepsán kořenovým certifikátem. Když váš počítač uvidí HTTPS certifikát, zkontroluje podpis. Pokud je certifikát podepsán kořenovým certifikátem, kterému důvěřuje, pak váš počítač důvěřuje také certifikátu HTTPS.
Tip: CA může mít také zprostředkující certifikáty podepsané kořenovým certifikátem. Tyto přechodné certifikáty lze také použít k podepisování certifikátů HTTPS pro webové stránky.
Úkolem certifikační autority je vydat certifikát pouze tehdy, když ověří, že osoba, která je požaduje, je skutečným vlastníkem webu. Myšlenka této struktury spočívá v tom, že pokud hacker vytvoří vlastní certifikát pro web, nebude podepsán certifikační autoritou, které váš počítač důvěřuje, a tak se vám zobrazí varování.
Co udělal HPKP?
Celý certifikační systém se opírá o důvěryhodnost certifikačních autorit. Původně však neexistovala žádná ochrana proti tomu, aby byla certifikační autorita kompromitována hackery nebo aby se nepokoušela vydávat certifikáty nesprávně.
HPKP byl navržen jako ochrana proti této možnosti. Umožňuje webům určit exkluzivní seznam certifikátů, kterým lze pro web důvěřovat v procesu zvaném připínání. Bylo možné připnout kořenový nebo zprostředkující certifikát, což v podstatě umožnilo jedné CA vydávat certifikáty pro web. Bylo také možné připnout certifikát samotného webu a zabránit tak i správné CA ve vydání jiného platného certifikátu.
Technicky se nepřipíná samotný certifikát, ale hash klíče certifikátu. Hash je jednosměrná kryptografická funkce. To znamená, že je možné ověřit, že certifikát předložený prohlížeči webem odpovídá připnutému certifikátu, ale není možné použít hash k vytvoření platného certifikátu.
HPKP vyžadoval, aby byly připnuty alespoň dva klíče, z nichž alespoň jeden musí být záložní a ne v aktuálním řetězci certifikátů. Tato záloha vám umožňuje nakonfigurovat hladké předání na nový certifikát, který nebrání uživatelům v připojení.
Pokud certifikát HTTPS předložený prohlížeči webem neodpovídá jednomu z připnutých certifikáty, pak je prohlížeč povinen jej odmítnout a zabránit uživateli v obcházení certifikátu chybové hlášení.
Struktura HPKP
Hlavička HPKP má tři povinné části a dvě volitelné. Záhlaví musí mít název „Public-Key-Pins“, další dva nebo více certifikátů musí mít připnutý hash SHA256 kódovaný base64 ve formátu „pin-sha256=“
Tip: SHA256 je hashovací algoritmus používaný HPKP. Base64 je znaková sada se 64 znaky: 0-9, a-z, A-Z a speciálními znaky „+“ a „/“. „=“ se v případě potřeby používá k doplnění posledních dvou znaků.
Volitelná nastavení jsou „includeSubDomains“ a „report-uri“. „includeSubDomains dává prohlížeči pokyn, aby použil ochranu HPKP na jakoukoli subdoménu aktuální webové stránky po dobu trvání časovače „max-age“. „report-uri“ je funkce, která umožňuje určit webovou stránku, kam lze zasílat chybová hlášení, a je navržena tak, aby pomohla identifikovat a vyřešit problémy.
Existuje druhá varianta záhlaví s názvem „Public-Key-Pins-Report-Only“. Vše je stejné, pokud je však nalezena chyba, neprovede se žádná akce kromě vrácení chybové zprávy do prohlížeče a do „report-uri“, pokud je nakonfigurován. Varianta pouze pro sestavu byla navržena tak, aby umožnila úplné testování záhlaví před nasazením, kde by chyby uživatelům nezpůsobovaly problémy.
Problémy s HPKP
HPKP byla ukončena ze dvou hlavních důvodů. Existovaly dva způsoby, jak by hlavička mohla způsobit vážné problémy webu, který ji používá, tyto byly pojmenovány HPKP Sebevražda a Ransom PKP.
Sebevražda HPKP je problém, kdy legitimní vlastníci webu ztratí přístup ke všem připnutým klíčům. K tomu může dojít náhodným smazáním, hackováním, viry, poškozením dat nebo z mnoha dalších důvodů. Vzhledem ke složitosti správné implementace HPKP a zejména jeho aktualizace při rotacích certifikátů je poměrně snadné udělat chybu v konfiguraci. S HPKP však, pokud se něco pokazíte, všem nedávným návštěvníkům vašeho webu bude zabráněno v přístupu na váš web po dobu „max-age“ časovače. Web smashingmagazine.com zveřejnil zprávu článek podrobně popisuje své zkušenosti s přesně tímto problémem, který v podstatě převedl web pro většinu návštěvníků do režimu offline na čtyři dny, než byla nasazena oprava.
Ransom PKP je teoretický útok, kdy hacker získá přístup k webovému serveru, poté ukradne všechny důvěryhodné certifikáty a klíče a poté požaduje výkupné za jejich vrácení. V normálním nastavení stačí vygenerovat nové klíče a certifikáty a web bude znovu spuštěn a spuštěn za méně než hodinu. S povoleným HPKP jsou však tyto klíče připnuté, pokud nemůžete uživatelům poskytnout připnutý certifikát, nebudou mít přístup k webu po dobu trvání časovače „max-age“. V závislosti na konfiguraci a existenci záloh nemusí být možné tento problém vyřešit.
S oběma těmito problémy by noví uživatelé mohli přistupovat na web jako obvykle nikdy jsem neviděl starou hlavičku HPKP, která instruovala jejich prohlížeč, aby důvěřoval pouze tomu, co nyní chybí certifikáty. Všichni nedávní návštěvníci, jako jsou stálí zákazníci a čtenáři, by však museli čekat po celou dobu trvání časovače „max-age“.
Vzhledem k závažnosti těchto problémů a složitosti konfigurace a údržby bylo použití hlavičky HPKP velmi nízké. Nakonec se hlavní prohlížeče dohodly na úplném zrušení podpory pro něj a během několika let byla hlavička HPKP všeobecně zastaralá.