HTTP Public Key Pinning

Z Wikipedii, wolnej encyklopedii

HTTP Public Key Pinning (HPKP)[1] – mechanizm bezpieczeństwa stosowany jako dodatkowe zabezpieczenie szyfrowania komunikacji HTTPS ustandaryzowane w dokumencie RFC 7469 ↓. Rozwiązanie realizowane jest poprzez nagłówek protokołu HTTP, w którym serwer udostępniający zasoby przy pomocy HTTPS przekazuje łączącemu się z nim klientowi (przeglądarce) podpis klucza publicznego wykorzystywanego przez serwer do zabezpieczenia transmisji. Pozwala to klientowi powiązać na przyszłość wskazany klucz publiczny z adresem serwera (domeną)[2]. Rozwiązanie to utrudnia podszycie się pod zabezpieczony serwer przy pomocy sfałszowanego certyfikatu klucza publicznego, o ile klient mógł uprzednio zapamiętać klucze wskazane przez serwer.

Sposób działania[edytuj | edytuj kod]

Zdarza się, że sfałszowane certyfikaty wystawiane są przez złośliwe urzędy certyfikacji[3] lub skompromitowane przez włamywaczy, którym udało się złamać ich zabezpieczenia. Serwer działający w oparciu o HTTPS przechowuje klucze publiczne, w związku z czym przy kolejnych połączeniach klient implementujący HPKP może spodziewać się, iż serwer użyje jednego lub więcej publicznych kluczy ze znanej, wcześniej podanej puli, co pozwala klientowi rozpoznać nieoczekiwane certyfikaty.

Nagłówek protokołu HTTP o nazwie Public-Key-Pins (lub Public-Key-Pins-Report-Only w celach raportowych) umożliwia serwerowi przekazanie przeglądarce informacji o tym, jakiej wartości klucza publicznego powinna ona spodziewać się (przez określony czas) podczas nawiązywania połączenia TLS z danym hostem. Polityka HPKP wykorzystuje następujące dyrektywy:

  • pin-sha256 – określa Funkcje skrótów klucza publicznego[4] jednego z certyfikatów wchodzących w skład łańcucha strony X.509 (oraz co najmniej jeden klucz zapasowy).
  • max-age okres w którym użytkownik powinien „przypiąć” klucz;
  • opcjonalna dyrektywa includeSubDomains określa zbiór wszystkich subdomen (należących do domeny, która wysłała nagłówek) w polityce HPKP
  • opcjonalna dyrektywa report-uri zawiera URL, na który należy wysłać raporty odnośnie do naruszenia polityki.

Co najmniej jeden z kluczy publicznych certyfikatu, należącego do łańcucha musi być zgodny z „przypiętym” kluczem publicznym, aby łańcuch był uznany przez użytkownika za prawidłowy. W chwili wydania standardu RFC 7469 ↓ jedyną dozwoloną funkcją skrótu była SHA-256. Skróty na potrzeby HPKP można wygenerować wolnodostępnymi narzędziami opisanymi w dodatku A dokumentu RFC[5].

Przypisy[edytuj | edytuj kod]

  1. RFC 7469 ↓.
  2. HTTP Public Key Pinning [online], kryptosfera.pl [dostęp 2018-11-11] (pol.).
  3. Jeremy Kirk: Google catches bad digital certificates from Egyptian company. InfoWorld, 2015-03-24. [dostęp 2023-01-09]. (ang.).
  4. RFC 7469 ↓, Subject public key info.
  5. RFC 7469 ↓, Dodatek A.

Bibliografia[edytuj | edytuj kod]