HTTP Public Key Pinning

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

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

  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

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.
Kembali kehalaman sebelumnya