HPKP er en utdatert websikkerhetssvarhode, akronymet står for HTTP Public Key Pins. Det var ment å forhindre en kompromittert eller useriøs sertifikatmyndighet fra å utstede et offentlig pålitelig, men hackerkontrollert, HTTPS-sertifikat for et nettsted. I dette scenariet vil hackerne kunne dekryptere all avskjært HTTPS-trafikk til det berørte nettstedet.
Tips: Nettsvarhoder er biter av metadata som serveren inkluderer når den svarer på forespørsler. En liten undergruppe av disse omtales som sikkerhetshoder, da de aktiverer og konfigurerer ulike sikkerhetsfunksjoner.
HTTPS-sertifikatinfrastruktur
Sertifikatinfrastrukturen som HTTPS er bygget på er basert på et tillitsnett. En rekke selskaper fungerer som Certificate Authorities (CA) som publiserer ett eller flere rotsertifikater. Et sett med rotsertifikater er inkludert i alle enheter i en tillitsbutikk. Når et nettsted ber om et eget HTTPS-sertifikat fra en CA, signeres sertifikatet av et rotsertifikat. Når datamaskinen ser et HTTPS-sertifikat, sjekker den signaturen. Hvis sertifikatet er signert av et rotsertifikat det stoler på, stoler datamaskinen din også på HTTPS-sertifikatet.
Tips: En CA kan også ha mellomsertifikater signert av rotsertifikatet. Disse mellomsertifikatene kan også brukes til å signere HTTPS-sertifikater for nettsteder.
Jobben til en sertifiseringsinstans er å bare utstede et sertifikat når de har bekreftet at personen som ber om det er den ekte eieren av nettstedet. Ideen med denne strukturen er at hvis en hacker oppretter sitt eget sertifikat for et nettsted, vil det ikke bli signert av en CA datamaskinen din stoler på, og du vil derfor se en advarsel.
Hva gjorde HPP?
Hele sertifikatsystemet er avhengig av påliteligheten til sertifikatmyndighetene. Opprinnelig var det imidlertid ingen beskyttelse mot at en CA ble kompromittert av hackere eller ble useriøs og valgte å feilaktig utstede sertifikater.
HPKP ble designet for å være en beskyttelse mot denne muligheten. Den lar nettsteder spesifisere en eksklusiv liste over sertifikater som kan stoles på for nettstedet i en prosess som kalles pinning. Det var mulig å feste rot- eller mellomsertifikatet, noe som i hovedsak tillot en enkelt CA å utstede sertifikater for nettstedet. Det var også mulig å pinne sertifikatet til selve nettstedet, og forhindret til og med den rette CA fra å utstede et annet gyldig sertifikat.
Teknisk sett er det ikke selve sertifikatet som er festet, men en hash av sertifikatets nøkkel. En hash er en enveis kryptografisk funksjon. Dette betyr at det er mulig å verifisere at sertifikatet presentert for nettleseren av nettstedet samsvarer med et festet sertifikat, men det er ikke mulig å bruke hashen til å lage et gyldig sertifikat.
HPKP krevde at minst to nøkler ble festet, hvorav minst én må være en sikkerhetskopi og ikke i gjeldende sertifikatkjede. Denne sikkerhetskopien lar deg konfigurere en jevn overlevering til et nytt sertifikat som ikke hindrer brukere i å kunne koble seg til.
Hvis HTTPS-sertifikatet presentert for nettleseren av nettstedet ikke samsvarer med en av de festede sertifikater, må nettleseren avvise det og hindre brukeren i å omgå sertifikatet feilmelding.
Strukturen til HPKP
HPKP-overskriften har tre obligatoriske deler og to valgfrie. Overskriften må ha tittelen "Public-Key-Pins", neste to eller flere sertifikater må ha en base64-kodet SHA256-hash festet i formatet 'pin-sha256='
Tips: SHA256 er hashing-algoritmen som brukes av HPKP. Base64 er et tegnsett med 64 tegn: 0-9, a-z, A-Z og spesialtegnene "+" og "/". "=" brukes til å fylle ut opp til de to siste tegnene om nødvendig.
De valgfrie innstillingene er "includeSubDomains" og "report-uri". "includeSubDomains instruerer nettleseren om å bruke HPKP-beskyttelsen på et hvilket som helst underdomene på det gjeldende nettstedet for varigheten av "maks-alder"-timeren. "report-uri" er en funksjon som lar et nettsted spesifiseres hvor feilrapporter kan sendes, og er designet for å hjelpe med å identifisere og løse problemer.
Det er en andre variant av overskriften med tittelen "Public-Key-Pins-Report-Only". Alt er det samme, men hvis en feil blir funnet, blir det ikke gjort noe utover å returnere en feilmelding til nettleseren og til "report-uri" hvis en er konfigurert. Den eneste rapportvarianten ble designet for å muliggjøre fullskala testing av overskriften før distribusjon, der feil ikke ville forårsake problemer for brukerne.
Problemer med HPP
HPKP ble avviklet av to hovedårsaker. Det var to måter som overskriften kunne forårsake alvorlige problemer for nettstedet som bruker den, disse ble kalt HPKP Suicide og Ransom PKP.
HPKP-selvmord er et problem der de legitime eierne av nettstedet mister tilgang til alle de festede nøklene. Dette kan skje ved utilsiktet sletting, hacking, virus, datakorrupsjon eller av mange andre årsaker. På grunn av kompleksiteten ved å implementere HPKP riktig, og spesielt å holde den oppdatert under sertifikatrotasjoner, er det relativt enkelt å gjøre en konfigurasjonsfeil. Men med HPKP, hvis du tar feil, vil alle nylige besøkende på nettstedet ditt bli forhindret fra å få tilgang til nettstedet ditt så lenge "maks-alder"-timeren varer. Nettstedet smashingmagazine.com la ut en artikkel beskriver sin erfaring med akkurat dette problemet, som i hovedsak tok nettstedet offline for de fleste besøkende i fire dager før en løsning ble distribuert.
Ransom PKP er et teoretisk angrep der en hacker får tilgang til en webserver, stjeler alle pålitelige sertifikater og nøkler og krever løsepenger for retur. I et normalt oppsett kan du bare generere nye nøkler og sertifikater og få nettsiden oppe og kjøre på mindre enn en time. Med HPKP aktivert, er imidlertid disse nøklene festet, hvis du ikke kan levere et festet sertifikat til brukere, vil de ikke kunne få tilgang til nettstedet i løpet av "maks-alder"-timeren. Avhengig av konfigurasjonen og om det finnes sikkerhetskopier, kan det være umulig å løse dette problemet.
Med begge disse problemene vil nye brukere kunne få tilgang til nettstedet som normalt, som de ville aldri har sett den gamle HPKP-headeren som instruerer nettleseren deres om å bare stole på de nå savnede sertifikater. Alle nylige besøkende, som vanlige kunder og lesere, måtte imidlertid vente på hele varigheten av "maks-alder"-timeren.
Gitt alvorlighetsgraden av disse problemene og kompleksiteten til konfigurasjonen og vedlikeholdet, var bruken av HPKP-overskriften svært lav. Til slutt ble store nettlesere enige om å droppe støtten for det helt, og i løpet av et par år ble HPKP-overskriften universelt avviklet.