Ce este HPKP?

click fraud protection

HPKP este un antet de răspuns de securitate web învechit, acronimul înseamnă HTTP Public Key Pins. Acesta era menit să împiedice o autoritate de certificare compromisă sau necinstită să emită un certificat HTTPS de încredere public, dar controlat de hackeri, pentru un site web. În acest scenariu, hackerii ar putea decripta orice trafic HTTPS interceptat către site-ul web afectat.

Sfat: anteturile de răspuns web sunt fragmente de metadate pe care serverul le include atunci când răspunde la solicitări. Un mic subset dintre acestea este denumit antete de securitate, deoarece activează și configurează diverse caracteristici de securitate.

Infrastructura certificatelor HTTPS

Infrastructura de certificate pe care este construit HTTPS se bazează pe o rețea de încredere. Un număr de companii acționează ca autorități de certificare (CA) care publică unul sau mai multe certificate rădăcină. Un set de certificate rădăcină este inclus în toate dispozitivele dintr-un magazin de încredere. Când un site web solicită un certificat HTTPS propriu de la o CA, certificatul este semnat de un certificat rădăcină. Când computerul vede un certificat HTTPS, verifică semnătura. Dacă certificatul este semnat de un certificat rădăcină în care are încredere, atunci computerul dvs. are încredere și în certificatul HTTPS.

Sfat: O CA poate avea și certificate intermediare semnate de certificatul rădăcină. Aceste certificate intermediare pot fi folosite și pentru a semna certificate HTTPS pentru site-uri web.

Sarcina unei autorități de certificare este să emită un certificat numai atunci când a verificat că persoana care le solicită este proprietarul autentic al site-ului web. Ideea cu această structură este că, dacă un hacker își creează propriul certificat pentru un site web, acesta nu va fi semnat de un CA în care computerul tău are încredere și, astfel, vei vedea un avertisment.

Ce a făcut HPKP?

Întregul sistem de certificate se bazează pe încrederea autorităților de certificare. Inițial, totuși, nu existau protecții împotriva ca un CA să fie compromis de hackeri sau să devină necinstiți și să aleagă să emită incorect certificate.

HPKP a fost conceput pentru a fi o protecție împotriva acestei posibilități. Permite site-urilor web să specifice o listă exclusivă de certificate care pot fi de încredere pentru site-ul web într-un proces numit fixare. A fost posibil să fixați certificatul rădăcină sau intermediar, permițând în esență unei singure CA să emită certificate pentru site-ul web. De asemenea, a fost posibilă fixarea certificatului site-ului web în sine, împiedicând chiar și CA corectă să emită un alt certificat valabil.

Din punct de vedere tehnic, nu certificatul în sine este fixat, ci un hash al cheii certificatului. Un hash este o funcție criptografică unidirecțională. Aceasta înseamnă că este posibil să se verifice dacă certificatul prezentat browserului de către site-ul web se potrivește cu un certificat fixat, dar nu este posibil să se folosească hash-ul pentru a face un certificat valid.

HPKP a cerut să fie fixate cel puțin două chei, dintre care cel puțin una trebuie să fie o copie de rezervă și nu în lanțul de certificate actual. Această copie de rezervă vă permite să configurați o predare fără probleme la un nou certificat care nu împiedică utilizatorii să se poată conecta.

Dacă certificatul HTTPS prezentat browserului de către site-ul web nu se potrivește cu unul dintre cele fixate certificate, atunci browserul trebuie să îl respingă și să împiedice utilizatorul să ocolească certificatul mesaj de eroare.

Structura HPKP

Antetul HPKP are trei părți obligatorii și două opționale. Antetul trebuie să fie intitulat „Public-Key-Pins”, următoarele două sau mai multe certificate trebuie să aibă un hash SHA256 codificat în base64 fixat în formatul „pin-sha256=".”’. Ultima parte obligatorie este „vârsta maximă”, care reprezintă o contorizare în secunde pentru cât timp ar trebui să aplice browserul restricțiile.

Sfat: SHA256 este algoritmul de hashing folosit de HPKP. Base64 este un set de caractere cu 64 de caractere: 0-9, a-z, A-Z și caracterele speciale „+” și „/”. „=” este folosit pentru a completa până la ultimele două caractere, dacă este necesar.

Setările opționale sunt „includeSubDomains” și „report-uri”. „includeSubDomains instruiește browserul să aplice protecțiile HPKP oricărui subdomeniu al site-ului web curent pe durata temporizatorului „max-age”. „report-uri” este o caracteristică care permite specificarea unui site web unde pot fi trimise rapoarte de eroare și este concepută pentru a ajuta la identificarea și rezolvarea problemelor.

Există o a doua variantă a antetului intitulată „Public-Key-Pins-Report-Only”. Totul este la fel, totuși, dacă se găsește o eroare, nu se întreprinde nicio acțiune în afară de returnarea unui mesaj de eroare către browser și către „report-uri” dacă este configurat unul. Varianta doar pentru raport a fost concepută pentru a permite testarea la scară completă a antetului înainte de implementare, unde erorile nu ar cauza probleme utilizatorilor.

Probleme cu HPKP

HPKP a fost depreciat din două motive principale. Au existat două moduri în care antetul ar putea cauza probleme serioase pentru site-ul web care îl folosește, acestea au fost denumite HPKP Suicide și Ransom PKP.

HPKP Suicide este o problemă în care proprietarii legitimi ai site-ului web pierd accesul la toate cheile fixate. Acest lucru se poate întâmpla prin ștergere accidentală, piratare, viruși, coruperea datelor sau din multe alte motive. Datorită complexității implementării corecte a HPKP și mai ales menținerii lui actualizate în timpul rotațiilor de certificate, este relativ ușor să faci o eroare de configurare. Cu HPKP, totuși, dacă înțelegi greșit, toți vizitatorii recenti ai site-ului tău web vor fi împiedicați să poată accesa site-ul tău pe durata cronometrului „vârsta maximă”. Site-ul web smashingmagazine.com a postat un articol detaliându-și experiența cu exact această problemă, care, în esență, a scos site-ul offline pentru majoritatea vizitatorilor timp de patru zile înainte de implementarea unei remedieri.

Ransom PKP este un atac teoretic în care un hacker obține acces la un server web, apoi fură toate certificatele și cheile de încredere și apoi cere o răscumpărare pentru returnarea lor. Într-o configurare normală, puteți genera chei și certificate noi și puteți avea site-ul web să funcționeze și să funcționeze în mai puțin de o oră. Cu HPKP activat, totuși, acele chei sunt fixate, dacă nu puteți trimite un certificat fixat utilizatorilor, aceștia nu vor putea accesa site-ul web pe durata cronometrului „vârsta maximă”. În funcție de configurație și dacă există copii de rezervă, ar putea fi imposibil să rezolvi această problemă.

Cu ambele probleme, noii utilizatori ar putea accesa site-ul web în mod normal, așa cum ar face-o nu am văzut niciodată vechiul antet HPKP care le-a instruit browser-ul să aibă încredere doar în cele care lipsesc acum certificate. Totuși, toți vizitatorii recenti, cum ar fi clienții și cititorii obișnuiți, ar trebui să aștepte întreaga durată a temporizatorului „vârsta maximă”.

Având în vedere gravitatea acestor probleme și complexitatea configurației și întreținerii, utilizarea antetului HPKP a fost foarte redusă. În cele din urmă, browserele majore au fost de acord să renunțe în întregime la suportul pentru acesta și în câțiva ani, antetul HPKP a fost depreciat în mod universal.