Kilka miesięcy temu grupa badaczy odkryła podatność protokołu TLS (Transport Layer Security) dotyczącą sposobu wdrożenia algorytmu wymiany kluczy Diffie-Hellmana. Opublikowane wczoraj błędy narażają na ataki – mogące prowadzić do podsłuchania transmisji danych – połączenia HTTPS, SSH i VPN.
Protokół Diffiego-Hellmana
Protokół wymiany kluczy Diffiego-Hellmana (DH) jest popularnym algorytmem pozwalającym na bezpieczne uzgadnianie kluczy kryptograficznych. Wykorzystywany jest w wielu innych protokołach takich jak HTTPS, SSH czy IPSec. Jedną z jego głównych zalet jest wsparcie dla Perfect Forward Secrecy.
Algorytm DH, opracowany i opublikowany przez Whitfielda Diffie and Martina Hellmana w 1976 roku, pozwala na bezpieczną wymianę sekretów w sytuacji, gdy muszą zostać one przekazane publicznym kanałem. Od strony matematycznej bezpieczeństwo protokołu DH bazuje na problemie logarytmu dyskretnego. Często dla ułatwienia zrozumienia zasady działania i korzyści, które zapewnia protokół DH przedstawiany jest on na obrazowym schemacie w którym zamiast olbrzymich liczb wykorzystuje się kolory:
Mimo, że początkowo Alice i Bob znali tylko jedną wspólną wartość (kolor żółty) dzięki właściwościom protokołu DH (swoim prywatnym kolorom) mogli w sposób bezpieczny przekazać sobie wzajemnie informacje o wspólnym sekrecie (kolor ciemnozielony).
Logjam
Atak nazwany Logjam (CVE-2015-4000) dotyczy protokołu TLS i pozwala atakującemu na zmniejszenie bezpieczeństwa procesu wymiany sekretów za pomocą algorytmu DH, poprzez wymuszenie stosowania krótszych, 512 bitowych kluczy. Dzięki temu złamanie kluczy szyfrujących staje się dużo prostsze co w konsekwencji może prowadzić do przechwycenia całej szyfrowanej transmisji danych. Jak wskazują sami badacze atak ten jest bardzo zbliżony do, odkrytego całkiem niedawno, ataku znanego jako FREAK.
Na atak Logjam podatne są platformy posiadające wsparcie dla eksportowych zestawów szyfrów DH. W momencie tworzenia raportu przez odkrywców błędu zagrożenie dotyczyło około 8,4% serwerów HTTP z tych obsługujących milion najpopularniejszych domen.
Problemem, który rozszerza skalę zagrożenia jest powszechnie zjawisko wykorzystywania na wielu serwerach tych samych liczb pierwszych do wymiany kluczy metodą DH. Dzięki temu złamanie kluczy szyfrujących dłuższych niż 512 bitowych, może mieć miejsce dużo szybciej i taniej niż mogłoby się wydawać. Dotyczy to kluczy o długości 768 bitów, a nawet tych 1024 bitowych, gdy – jak wskazuje raport – pod uwagę weźmiemy moce obliczeniowe jakimi dysponuje NSA.
Czy jestem podatny?
Weryfikacji przeglądarki można dokonać na stronie https://weakdh.org/. Jeżeli okaże się ona podatna na atak Logjam to chyba najrozsądniejszym rozwiązaniem będzie poczekanie (praktyczny atak nie jest prosty do wykonania) na odpowiednie aktualizacje, które powinny pojawić się lada chwila.
Co do strony serwerowej. Jeżeli Twój serwer HTTP, pocztowy czy każda inna usługa wykorzystująca protokół TLS posiada w konfiguracji włączone eksportowe wersje algorytmu DH to tak, jest on podatny.
Do najprostszego testu sprawdzającego wsparcie dla szyfrów eksportowych można wykorzystać to polecenie narzędzia OpenSSL:
openssl s_client -connect kryptosfera.pl:443 -cipher „EXP”
Oczekiwanym wynikiem jest brak możliwości zestawienia połączenia.
Jeżeli posiadamy wsparcie dla zestawów szyfrów wykorzystujących protokół DH (niekoniecznie wersje eksportowe), co można sprawdzić w ten sposób (możliwość nawiązania połączenia wskazuje na wykorzystywanie DH):
openssl s_client -connect kryptosfera.pl:443 -cipher „EDH”
to warto także zweryfikować długość kluczy, które wykorzystuje. W wyniku powyższego polecenia należy wyszukać ciąg “Server Temp Key” (wymagany OpenSSL 1.0.2), którego wartość nie powinna być mniejsza niż 2048 bitów.
Server Temp Key: DH, 2048 bits
Aby nie być podatnym na atak Logjam należy nie korzystać z eksportowych wersji szyfrów DH, a jako parametry algorytmu DH stosować unikalne klucze o długości co najmniej 2048 bitów.