Blog 24/7

forward secrecy

TAB. 1Hasłopo angielsku
Po angielskuforward secrecy
Którą formą pisaćpo angielsku Polski odpowiednik istnieje, ale w praktyce nikt tak nie pisze. Zostaw angielski, polski trzymaj jako synonim.
Inne formyPFS · perfect forward secrecy · utajnianie z wyprzedzeniem (kalka słownikowa, wyłącznie opisowa — nie do tytułu hasła) · doskonałe utajnianie z wyprzedzeniem
KategoriaKryptografia, tożsamość i uwierzytelnianie

Forward secrecy (także perfect forward secrecy, PFS) to właściwość protokołu uzgadniania kluczy, dzięki której późniejsze ujawnienie długoterminowego klucza serwera nie pozwala odszyfrować wcześniej nagranych rozmów. RFC 9325 opisuje ją jako obronę przed atakującym, który zapisuje zaszyfrowany ruch w sytuacji, gdy klucze sesji są chronione wyłącznie długoterminowymi kluczami stron [2]. W protokole TLS 1.3 każdy mechanizm wymiany kluczy oparty na kluczu publicznym zapewnia forward secrecy [1].

Jak działa

Połączenie szyfrowane używa dwóch rodzajów kluczy. Klucz długoterminowy serwera, związany z jego certyfikatem, służy do potwierdzenia tożsamości. Klucze sesji, którymi faktycznie szyfruje się dane, powstają przy każdym połączeniu.

Bez forward secrecy klucz sesji był przesyłany zaszyfrowany kluczem publicznym serwera. Tak działa tzw. statyczna wymiana RSA (RSA key transport). Kto później zdobędzie klucz prywatny serwera, odszyfruje nim klucze sesji z nagranego ruchu, a potem sam ruch. RFC 9325 odradza takie zestawy szyfrów właśnie dlatego, że nie zapewniają forward secrecy [2].

Z forward secrecy klucz sesji wynika z efemerycznej wymiany Diffiego-Hellmana na liczbach (DHE) albo na krzywych eliptycznych (ECDHE). To zastosowanie kryptografii asymetrycznej, w którym obie strony tworzą jednorazowe pary kluczy. NIST jako okres użycia efemerycznego klucza uzgadniania podaje jedną transakcję uzgadniania klucza [3]. Klucz długoterminowy tylko podpisuje parametry wymiany, więc potwierdza tożsamość, ale nie chroni samego klucza sesji. Po zakończeniu połączenia klucze efemeryczne się usuwa i nie ma z czego odtworzyć sesji.

RYS. 1Nagranie ruchu i późniejszy wyciek klucza

Odmiany

W TLS 1.2 forward secrecy zależy od zestawu szyfrów wybranego przez serwer. TLS 1.3 usunął statyczne zestawy RSA i Diffiego-Hellmana [1]. Nadal ma jednak trzy tryby wymiany kluczy [1], a nie każdy z nich daje tę samą ochronę.

MechanizmForward secrecyUwagi
Statyczny RSA (TLS 1.2 i starsze)nieodradzany przez RFC 9325 [2]
DHE / ECDHEtakpreferowany przez RFC 9325 [2]
TLS 1.3: (EC)DHEtakpełne uzgodnienie [1]
TLS 1.3: PSK z (EC)DHEtakwznowienie z nową wymianą [1]
TLS 1.3: sam PSK, dane 0-RTTniedane szyfrowane kluczem z PSK [1]

RFC 8446 zaznacza, że dane wysyłane w trybie 0-RTT nie mają forward secrecy, bo są szyfrowane wyłącznie kluczami wyprowadzonymi z oferowanego klucza współdzielonego (PSK) [1].

W WordPressie

Forward secrecy nie jest ustawieniem WordPressa. Zależy od serwera WWW, który zestawia połączenie TLS: Apache, nginx, serwera pośredniczącego (reverse proxy) albo sieci CDN przed witryną. Na hostingu współdzielonym konfiguracją zarządza dostawca; właściciel strony może ją tylko sprawdzić i w razie braków zgłosić.

Dla witryny ma to znaczenie przy danych, które powinny pozostać poufne długo: hasła administratorów, tokeny sesji z ciasteczek, dane klientów sklepu. CERT Polska zaleca dopuszczenie wyłącznie TLS 1.2 i TLS 1.3 oraz wyłączenie starszych protokołów [7]. Wśród słabości konfiguracji wymienia zbyt krótkie parametry wymiany klucza Diffiego-Hellmana [7]. Dla systemów federalnych USA NIST wymagał obsługi TLS 1.3 od 1 stycznia 2024 roku [6], a w tej wersji wszystkie wymiany oparte na kluczu publicznym mają forward secrecy [1].

Przykładowy fragment konfiguracji nginx, który ogranicza protokoły do wersji zalecanych przez CERT Polska:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;

Znaczenie

Forward secrecy chroni przed scenariuszem „nagraj teraz, odszyfruj później”. Ma znaczenie wszędzie tam, gdzie ktoś może zapisać ruch: w publicznych sieciach Wi-Fi, u operatora albo w węźle pośredniczącym.

Właściwość ta ma też granice. Nie chroni przed aktywnym atakiem man-in-the-middle (MITM) w czasie rzeczywistym, bo dotyczy tylko ruchu już nagranego. Nie chroni też przed wyciekiem klucza pojedynczej sesji ani przed przejęciem samego serwera, który ma dostęp do odszyfrowanych danych. Opis błędu Heartbleed odsyła do zastrzeżenia, że wyciek biletów sesji (session tickets) może tę ochronę osłabić [4]. Forward secrecy nie zastępuje więc rotacji kluczy ani ochrony klucza prywatnego.

Jak się bronić

Właściciel strony nie włącza forward secrecy jednym przełącznikiem. Może natomiast wymagać od serwera albo od dostawcy hostingu konfiguracji, która ją zapewnia.

  • Dopuścić wyłącznie TLS 1.2 i TLS 1.3, a wyłączyć SSL 2.0, SSL 3.0, TLS 1.0 i TLS 1.1 [7].
  • W TLS 1.2 preferować zestawy z wymianą ECDHE albo DHE i nie negocjować statycznej wymiany RSA [2].
  • Wyłączyć szyfry RC4 i 3DES, szyfry eksportowe oraz zestawy NULL i aNULL, a stosować m.in. AES-GCM i ChaCha20-Poly1305 [7].
  • Nie używać zbyt krótkich parametrów wymiany Diffiego-Hellmana [7].
  • Trzymać klucz prywatny certyfikatu wyłącznie na serwerze, który go używa [7].

Historia i przykłady

Najczęściej przywoływanym przykładem jest błąd Heartbleed w OpenSSL, oznaczony CVE-2014-0160 i ujawniony 7 kwietnia 2014 roku [4]. Podatne były wersje od 1.0.1 do 1.0.1f, a poprawkę przyniosła wersja 1.0.1g [4]. Błąd pozwalał odczytywać pamięć serwera, w tym klucze prywatne certyfikatów [5]. Autorzy opisu podkreślali, że wykradzione klucze pozwalają odszyfrować przeszły i przyszły ruch chronionych usług [4]. Forward secrecy powinna chronić przeszłą komunikację przed takim odszyfrowaniem, ale w 2014 roku była rzadko włączona [4].

Sekurak w artykule o Heartbleed przytaczał definicję forward secrecy i podawał, że OpenSSL wspierał mechanizmy PFS od wersji 1.0 [5]. Według tego samego tekstu w kwietniu 2014 roku tylko 6,3% witryn z TLS używało zestawów szyfrów z forward secrecy wobec przeglądarek [5]. Kolejne standardy zmieniły ten stan: RFC 9325 z 2022 roku wymaga, by implementacje obsługiwały i preferowały zestawy z forward secrecy [2], a TLS 1.3 w ogóle nie ma już statycznej wymiany RSA [1].

TAB. 2

Przypisy

7
  1. [1] RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3 · IETF
  2. [2] RFC 9325: Recommendations for Secure Use of TLS and DTLS (BCP 195) · IETF
  3. [3] SP 800-57 Part 1 Rev. 5: Recommendation for Key Management · NIST
  4. [4] The Heartbleed Bug · Black Duck
  5. [5] Heartbleed – krytyczny błąd w OpenSSL · Sekurak
  6. [6] SP 800-52 Rev. 2: Guidelines for the Selection, Configuration, and Use of TLS Implementations · NIST
  7. [7] Bezpieczna konfiguracja TLS · CERT Polska
TAB. 3

Hasła w tym artykule

11
TAB. 4

Linkują tutaj

4

Wszystkie kategorie → · Hasło w słowniku →

Blog 24/7
05.11CISA i FBI wzywają do zabezpieczenia sterowników chłodzenia po atakach w Europietherecord.media05.11Midnight Blizzard atakowała iPhone'y i Androidy przez zainfekowane strony w Europie i USAsecurityweek.com05.11APT29 kradła dane z iPhone'ów i Androidów przez przejęte i podrobione stronytherecord.media05.11Grupa APT29 przejęła skrypt Plerdy i atakowała niezałatane iPhone'y i Androidythehackernews.com05.11Microsoft wykrył 7,3 mld wiadomości phishingowych w III kwartale 2026microsoft.com05.11DigiCert ujawnia wyciek danych klientów i skanów dokumentów tożsamościbleepingcomputer.com05.11CWPdoor podmienia serwer cwpsrv w Control Web Panel i otwiera tylne wejście do Linuksableepingcomputer.com05.11Brytyjskie NCSC ostrzega, że narzędzia AI zwiększyły liczbę wykrywanych luk zero-daythehackernews.com05.11Skaner RootEvidence sprawdza starą lukę w Cisco IOS i dodaje nagłówki Opt-Outisc.sans.edu05.11Włamanie do portalu grantowego Norad, zagrożone dane 20 614 użytkownikówhelpnetsecurity.com