A HPKP egy elavult webes biztonsági válaszfejléc, a mozaikszó a HTTP Public Key Pins rövidítése. Célja volt, hogy megakadályozza, hogy egy feltört vagy csaló tanúsító hatóság nyilvánosan megbízható, de hackerek által ellenőrzött HTTPS-tanúsítványt adjon ki egy webhelyhez. Ebben a forgatókönyvben a hackerek képesek lennének visszafejteni az érintett webhelyre irányuló elfogott HTTPS-forgalmat.
Tipp: A webes válaszfejlécek olyan metaadatok részei, amelyeket a kiszolgáló a kérések megválaszolásakor tartalmaz. Ezek egy kis részhalmazát biztonsági fejlécnek nevezik, mivel ezek engedélyezik és konfigurálják a különféle biztonsági funkciókat.
HTTPS tanúsítvány infrastruktúra
A HTTPS-alapú tanúsítvány-infrastruktúra a bizalomhálón alapul. Számos vállalat működik tanúsító hatóságként (CA), amelyek egy vagy több gyökértanúsítványt tesznek közzé. Gyökértanúsítvány-készlet minden eszközben megtalálható egy megbízható tárolóban. Amikor egy webhely saját HTTPS-tanúsítványt kér a CA-tól, a tanúsítványt egy gyökértanúsítvány írja alá. Amikor a számítógép HTTPS-tanúsítványt lát, ellenőrzi az aláírást. Ha a tanúsítványt olyan gyökértanúsítvány írja alá, amelyben megbízik, akkor a számítógép a HTTPS-tanúsítványban is megbízik.
Tipp: A CA-nak lehetnek köztes tanúsítványai is, amelyeket a gyökértanúsítvány ír alá. Ezek a köztes tanúsítványok a webhelyek HTTPS-tanúsítványainak aláírására is használhatók.
A tanúsító hatóság feladata, hogy csak akkor állítson ki tanúsítványt, ha igazolta, hogy az azt kérő személy a webhely valódi tulajdonosa. Ennek a struktúrának az az ötlete, hogy ha egy hacker saját tanúsítványt hoz létre egy webhelyhez, azt nem fogja aláírni egy olyan CA, amelyben a számítógép megbízik, és ezért figyelmeztetést fog látni.
Mit csinált a HPKP?
Az egész tanúsítványrendszer a tanúsító hatóságok megbízhatóságán alapul. Eredetileg azonban nem volt semmiféle védelem az ellen, hogy egy CA-t feltörjenek a hackerek, vagy szélhámoskodjanak, és helytelenül állítsák ki a tanúsítványokat.
A HPKP-t úgy tervezték, hogy védelmet nyújtson ezzel a lehetőséggel szemben. Lehetővé teszi a webhelyek számára, hogy meghatározzák a tanúsítványok kizárólagos listáját, amelyek megbízhatóak lehetnek a webhely számára a rögzítésnek nevezett folyamat során. Lehetőség volt a gyökér- vagy köztes tanúsítvány rögzítésére, ami lényegében lehetővé tette, hogy egyetlen CA bocsásson ki tanúsítványokat a webhelyhez. Lehetőség volt magának a webhelynek a tanúsítványának rögzítésére is, ami megakadályozza, hogy még a megfelelő hitelesítésszolgáltató is újabb érvényes tanúsítványt adjon ki.
Technikailag nem maga a tanúsítvány van rögzítve, hanem a tanúsítvány kulcsának kivonata. A hash egy egyirányú kriptográfiai funkció. Ez azt jelenti, hogy ellenőrizhető, hogy a webhely által a böngészőnek bemutatott tanúsítvány egyezik-e egy rögzített tanúsítvánnyal, de a hash segítségével nem lehet érvényes tanúsítványt készíteni.
A HPKP-nak legalább két kulcsot kellett rögzítenie, amelyek közül legalább az egyiknek biztonsági másolatnak kell lennie, és nem az aktuális tanúsítványláncban. Ez a biztonsági mentés lehetővé teszi egy új tanúsítvány zökkenőmentes átadását, amely nem akadályozza meg a felhasználókat a csatlakozásban.
Ha a webhely által a böngészőnek bemutatott HTTPS-tanúsítvány nem egyezik a rögzítettek egyikével tanúsítványokat, akkor a böngészőnek el kell utasítania azt, és meg kell akadályoznia, hogy a felhasználó megkerülje a tanúsítványt hiba üzenet.
A HPKP felépítése
A HPKP fejlécnek három kötelező és két választható része van. A fejlécnek „Public-Key-Pins”-nek kell lennie, a következő két vagy több tanúsítványnak base64 kódolású SHA256 hash-nek kell lennie a pin-sha256= formátumban rögzítve.
Tipp: Az SHA256 a HPKP által használt kivonatolási algoritmus. A Base64 egy 64 karakterből álló karakterkészlet: 0-9, a-z, A-Z, valamint speciális „+” és „/” karakterek. A „=” az utolsó két karakterig való kitöltésre szolgál, ha szükséges.
Az opcionális beállítások a következők: „includeSubDomains” és „report-uri”. Az "includeSubDomains" utasítja a böngészőt, hogy alkalmazza a HPKP védelmet az aktuális webhely bármely aldomainjére a "max-age" időzítő időtartama alatt. A „report-uri” egy olyan szolgáltatás, amely lehetővé teszi egy webhely megadását, ahová hibajelentéseket lehet küldeni, és célja a problémák azonosítása és megoldása.
A fejlécnek létezik egy másik változata is, „Public-Key-Pins-Report-Only” címmel. Minden a régi, de ha hibát talál, nem történik más teendő, mint a hibaüzenet visszaküldése a böngészőnek és a „report-uri”-nak, ha az be van állítva. A csak jelentésváltozatot úgy tervezték, hogy lehetővé tegye a fejléc teljes körű tesztelését a telepítés előtt, ahol a hibák nem okoznak problémákat a felhasználók számára.
Problémák a HPKP-val
A HPKP-t két fő ok miatt érvénytelenítették. A fejléc kétféleképpen okozhat komoly problémákat az azt használó webhely számára, ezek a HPKP Suicide és Ransom PKP nevet kapták.
A HPKP öngyilkosság olyan probléma, amelyben a webhely jogos tulajdonosai elveszítik az összes rögzített kulcshoz való hozzáférést. Ez történhet véletlen törlés, feltörés, vírusok, adatsérülés vagy sok egyéb ok miatt. A HPKP helyes megvalósításának bonyolultsága és különösen a tanúsítványrotáció során történő frissítése miatt viszonylag könnyű konfigurációs hibát elkövetni. A HPKP-val azonban, ha valamit rosszul csinál, a webhely minden közelmúltbeli látogatója nem tud hozzáférni a webhelyéhez a „max-életkor” időzítő hosszáig. A smashingmagazine.com webhely közzétett egy cikk pontosan ezzel a problémával kapcsolatos tapasztalatait részletezi, amely lényegében a legtöbb látogató számára négy napig offline állapotba hozta a webhelyet a javítás bevezetése előtt.
A Ransom PKP egy elméleti támadás, amelynek során egy hacker hozzáfér egy webszerverhez, majd ellopja az összes megbízható tanúsítványt és kulcsot, majd váltságdíjat követel visszaadásukért. Normál beállítás esetén egyszerűen létrehozhat új kulcsokat és tanúsítványokat, és kevesebb mint egy órán belül visszaállíthatja a webhely működését. Ha a HPKP engedélyezve van, ezek a kulcsok rögzítve vannak, ha nem tud rögzített tanúsítványt kiszolgálni a felhasználóknak, akkor a „max-age” időzítő időtartama alatt nem férhetnek hozzá a webhelyhez. A konfigurációtól és a biztonsági másolatok létezésétől függően előfordulhat, hogy a probléma megoldása lehetetlen.
Mindkét probléma esetén az új felhasználók a megszokott módon hozzáférhetnek a webhelyhez soha nem látták a régi HPKP fejlécet, amely arra utasította volna böngészőjét, hogy csak a most hiányzóban bízzanak tanúsítványok. Azonban minden közelmúltbeli látogatónak, például törzsvásárlónak és olvasónak várnia kell a „max-életkor” időzítő teljes időtartama alatt.
Tekintettel a problémák súlyosságára, valamint a konfiguráció és a karbantartás összetettségére, a HPKP fejléc használata nagyon alacsony volt. Végül a nagyobb böngészők beleegyeztek abba, hogy teljesen megszüntetik a támogatást, és néhány éven belül a HPKP fejlécet általánosan elavulttá vált.