HPKP je zastaraná hlavička odpovede na webovú bezpečnosť, skratka znamená Piny verejného kľúča HTTP. Jeho cieľom bolo zabrániť napadnutej alebo podvodnej certifikačnej autorite vo vydaní verejne dôveryhodného, ale hackermi kontrolovaného HTTPS certifikátu pre webovú stránku. V tomto scenári by hackeri boli schopní dešifrovať akýkoľvek zachytený prenos HTTPS na dotknutú webovú stránku.
Tip: Hlavičky webovej odpovede sú časti metaúdajov, ktoré server zahŕňa pri odpovediach na požiadavky. Malá podmnožina z nich sa označuje ako hlavičky zabezpečenia, pretože umožňujú a konfigurujú rôzne funkcie zabezpečenia.
Infraštruktúra certifikátov HTTPS
Certifikačná infraštruktúra, na ktorej je HTTPS postavená, je založená na sieti dôvery. Množstvo spoločností pôsobí ako certifikačné autority (CA), ktoré zverejňujú jeden alebo viac koreňových certifikátov. Sada koreňových certifikátov je zahrnutá vo všetkých zariadeniach v dôveryhodnom úložisku. Keď webová lokalita požaduje vlastný certifikát HTTPS od certifikačnej autority, certifikát je podpísaný koreňovým certifikátom. Keď váš počítač uvidí HTTPS certifikát, skontroluje podpis. Ak je certifikát podpísaný koreňovým certifikátom, ktorému dôveruje, potom váš počítač tiež dôveruje certifikátu HTTPS.
Tip: CA môže mať aj prechodné certifikáty podpísané koreňovým certifikátom. Tieto prechodné certifikáty možno použiť aj na podpisovanie HTTPS certifikátov pre webové stránky.
Úlohou certifikačnej autority je vydať certifikát len vtedy, keď overí, že osoba, ktorá ich požaduje, je skutočným vlastníkom webovej stránky. Myšlienka tejto štruktúry je taká, že ak hacker vytvorí svoj vlastný certifikát pre webovú stránku, nebude podpísaný CA, ktorej váš počítač verí, a preto sa vám zobrazí varovanie.
Čo urobil HPKP?
Celý certifikačný systém sa spolieha na dôveryhodnosť certifikačných autorít. Pôvodne však neexistovala žiadna ochrana proti tomu, aby bola CA kompromitovaná hackermi alebo nečestným a zvolila si nesprávne vydávanie certifikátov.
HPKP bol navrhnutý ako ochrana proti tejto možnosti. Umožňuje webovým stránkam špecifikovať exkluzívny zoznam certifikátov, ktorým možno pre webovú stránku dôverovať v procese nazývanom pripnutie. Bolo možné pripnúť koreňový alebo prechodný certifikát, čo v podstate umožnilo jedinej CA vydávať certifikáty pre webovú stránku. Podarilo sa tiež pripnúť certifikát samotnej webovej stránky, čím sa zabránilo aj tej správnej CA vo vydaní iného platného certifikátu.
Technicky nie je pripnutý samotný certifikát, ale hash kľúča certifikátu. Hash je jednosmerná kryptografická funkcia. To znamená, že je možné overiť, či sa certifikát predložený prehliadaču webovou stránkou zhoduje s pripnutým certifikátom, ale nie je možné použiť hash na vytvorenie platného certifikátu.
HPKP vyžadovalo pripnutie aspoň dvoch kľúčov, z ktorých aspoň jeden musí byť záložný a nie v aktuálnom reťazci certifikátov. Táto záloha vám umožňuje nakonfigurovať hladké odovzdanie na nový certifikát, ktorý nebráni používateľom v pripojení.
Ak sa certifikát HTTPS predložený prehliadaču webom nezhoduje s jedným z pripnutých certifikáty, potom je prehliadač povinný ho odmietnuť a zabrániť používateľovi obísť certifikát chybná správa.
Štruktúra HPKP
Hlavička HPKP má tri povinné časti a dve voliteľné. Hlavička musí mať názov „Public-Key-Pins“, ďalšie dva alebo viac certifikátov musí mať pripnutý hash SHA256 kódovaný base64 vo formáte „pin-sha256=“
Tip: SHA256 je hašovací algoritmus, ktorý používa HPKP. Base64 je znaková sada so 64 znakmi: 0-9, a-z, A-Z a špeciálnymi znakmi „+“ a „/“. „=“ sa používa na vyplnenie posledných dvoch znakov, ak je to potrebné.
Voliteľné nastavenia sú „includeSubDomains“ a „report-uri“. „includeSubDomains dáva pokyn prehliadaču, aby aplikoval ochranu HPKP na akúkoľvek subdoménu aktuálnej webovej lokality počas trvania časovača „max-age“. „report-uri“ je funkcia, ktorá umožňuje špecifikovať webovú stránku, kam je možné odosielať chybové hlásenia, a je navrhnutá tak, aby pomohla identifikovať a vyriešiť problémy.
Existuje druhý variant hlavičky s názvom „Public-Key-Pins-Report-Only“. Všetko je rovnaké, ak sa však nájde chyba, nevykoná sa žiadna akcia okrem vrátenia chybovej správy do prehliadača a do „report-uri“, ak je nakonfigurovaný. Variant iba pre zostavy bol navrhnutý tak, aby umožnil úplné testovanie hlavičky pred nasadením, kde chyby nespôsobujú používateľom problémy.
Problémy s HPKP
HPKP bol zastaraný z dvoch hlavných dôvodov. Existovali dva spôsoby, ktorými by hlavička mohla spôsobiť vážne problémy webovej stránke, ktorá ju používa, tieto boli pomenované HPKP Suicide a Ransom PKP.
Samovražda HPKP je problém, pri ktorom legitímni vlastníci webových stránok stratia prístup ku všetkým pripnutým kľúčom. Môže k tomu dôjsť v dôsledku náhodného vymazania, hackerstva, vírusov, poškodenia údajov alebo z mnohých iných dôvodov. Vzhľadom na zložitosť správnej implementácie HPKP a najmä jeho aktualizácie počas rotácií certifikátov je pomerne jednoduché urobiť chybu v konfigurácii. S HPKP však, ak sa niečo pomýlite, všetkým nedávnym návštevníkom vašej webovej stránky bude zamedzený prístup k vašej webovej lokalite po dobu „max-age“ časovača. Webová stránka smashingmagazine.com zverejnila článok podrobne popisuje svoje skúsenosti presne s týmto problémom, ktorý v podstate prerušil stránku pre väčšinu návštevníkov na štyri dni pred nasadením opravy.
Ransom PKP je teoretický útok, pri ktorom hacker získa prístup k webovému serveru, potom ukradne všetky dôveryhodné certifikáty a kľúče a potom požaduje výkupné za ich vrátenie. V bežnom nastavení by ste mohli len vygenerovať nové kľúče a certifikáty a webovú stránku obnoviť a spustiť za menej ako hodinu. S povoleným HPKP sú však tieto kľúče pripnuté, ak nemôžete používateľom poskytnúť pripnutý certifikát, nebudú mať prístup na webovú stránku počas trvania časovača „max-age“. V závislosti od konfigurácie a existencie záloh nemusí byť možné tento problém vyriešiť.
S oboma týmito problémami by noví používatelia mohli pristupovať na webovú stránku ako zvyčajne nikdy som nevidel starú hlavičku HPKP, ktorá inštruovala ich prehliadač, aby dôveroval len tým, ktorí teraz chýbajú certifikáty. Všetci nedávni návštevníci, ako sú stáli zákazníci a čitatelia, by však museli čakať na celú dobu trvania časovača „max-age“.
Vzhľadom na závažnosť týchto problémov a zložitosť konfigurácie a údržby bolo použitie hlavičky HPKP veľmi nízke. Nakoniec hlavné prehliadače súhlasili s úplným zrušením podpory a v priebehu niekoľkých rokov bola hlavička HPKP všeobecne zastaraná.