W jaki sposób wymiana kluczy Diffie-Hellman zapewnia szyfrowaną komunikację?


Skuteczna polityka bezpieczeństwa cybernetycznego obejmuje nowoczesną kryptografię w celu bezpiecznej transmisji danych. Szyfrowanie danych chroni poufne informacje podczas wymiany komunikacji, dzięki czemu dostęp do nich mają tylko osoby upoważnione do odszyfrowania tych danych. Bez szyfrowania wszystkie dane przesyłane przez publiczny Internet są narażone na przechwycenie i ponowne wykorzystanie w nieuczciwy sposób. Szyfrowanie pomaga zapobiegać kradzieży danych za pomocą różnych narzędzi, w tym szyfrów kryptograficznych, takich jak wymiana kluczy Diffie-Hellman.

Ten artykuł zawiera krótki przegląd funkcji wymiany kluczy Diffiego-Hellmana do szyfrowania w publicznym kanale komunikacyjnym, identyfikuje potencjalne narażenie na ryzyko podczas korzystania z liczb pierwszych Diffiego-Hellmana oraz przedstawia trzy rozwiązania zabezpieczające korzystanie z algorytmu Diffiego-Hellmana.

Co to jest wymiana kluczy kryptograficznych?

W kryptografii wymiana kluczy odnosi się do procesu, w którym klucze szyfrowania są wymieniane między dwiema lub więcej stronami. Klucz umożliwia każdej ze stron szyfrowanie wiadomości, które chcą wysłać, i odszyfrowywanie otrzymanych wiadomości.

Szyfrowanie zapewnia warstwę bezpieczeństwa między Twoimi danymi a potencjalnymi napastnikami. Złożone algorytmy szyfrowania chronią dane przed potencjalnym odszyfrowaniem przez ataki brute force, które mogą odgadnąć klucz szyfrowania. Dostępnych jest wiele zestawów szyfrowania ze zmiennymi składnikami. Standardy szyfrowania stale się zmieniają, ale korzystanie z różnych narzędzi dostępnych dla infrastruktury klucza publicznego, takich jak szyfrowanie asymetryczne i szyfrowanie kluczem symetrycznym, może pomóc w utrzymaniu silnej postawy w zakresie cyberbezpieczeństwa.

Szyfrowanie asymetryczne opiera się na parze kluczy (klucz publiczny i klucz prywatny), gdzie klucz publiczny szyfruje dane, a klucz prywatny je odszyfrowuje. Wiadomość lub dane są nazywane tekstem jawnym. Po zaszyfrowaniu za pomocą klucza jest on określany jako szyfrogram. Szyfrowanie kluczem asymetrycznym jest podstawą protokołów SSL/TLS, które zapewniają bezpieczną komunikację za pośrednictwem protokołu HTTPS.

W przypadku szyfrowania kluczem symetrycznym nadawca i adresat używają jednego identycznego klucza do odszyfrowywania wiadomości. Wymiana kluczy Diffiego-Hellmana jest jedną z najczęściej stosowanych metod szyfrowania symetrycznego stosowanych w kryptografii klucza publicznego.

Wymiana kluczy Diffie-Hellman

Algorytm wymiany kluczy Diffiego-Hellmana to metoda uzgadniania i obliczania tajnego klucza symetrycznego między stronami w niezabezpieczonym kanale lub sieci publicznej. Klucze mogą być efemeryczne (używane dla pojedynczej sesji), statyczne (długoterminowe) lub będące kombinacją tych dwóch kluczy (półstatyczne). Jego nazwa pochodzi od Whitfielda Diffiego i Martina Hellmana, którzy w 1976 roku opublikowali swoją współpracę nad algorytmami klucza publicznego. Hellman zasugerował zmianę nazwy na Diffie-Hellman-Merkle key exchange, aby uwzględnić wkład Ralpha Merkle'a.

Wymiana kluczy Diffiego-Hellmana zazwyczaj łączy zmienną publiczną i operatora modulo z dwiema zmiennymi prywatnymi, co daje w wyniku współdzielony symetryczny klucz szyfrowania. Wymiana kluczy Diffiego-Hellmana używa dużych liczb pierwszych do obliczania kluczy. Wymiana wymaga porozumienia w sprawie początkowej liczby pierwszej i operatora modulo, tak aby obliczenia dla kluczowej umowy były spójne między obiema stronami, mimo że nie wymieniają tajnych informacji kanałami publicznymi.

W przypadku wymiany kluczy Diffiego-Hellmana obie strony zgadzają się na wspólną zmienną publiczną (generator) o pewnej wartości całkowitej i module, który jest zazwyczaj dużą liczbą pierwszą o długości 2000 lub 4000 bitów. Każda strona ma swoją własną zmienną prywatną (czasami nazywaną kluczem prywatnym), która zapewni funkcję wykładniczą. Chociaż zmienne te są czasami określane jako klucze publiczne i prywatne, ważne jest, aby pamiętać, że szyfrowanie Diffie-Hellmana nie jest szyfrowaniem kluczem asymetrycznym, ale raczej metodą obliczania współdzielonego klucza symetrycznego poprzez potęgowanie.

Każda ze stron przeniesie zmienną publiczną do potęgi swojej zmiennej prywatnej, uruchamiając operację modulo w celu uzyskania wyniku liczbowego, a następnie wymieni wynik. Gdy każda ze stron otrzyma zmienną publiczną do potęgi zmiennej prywatnej nadawcy, przenosi ten wynik do potęgi swojej własnej zmiennej prywatnej i uruchamia operację modulo, która oblicza ten sam wynik końcowy dla obu stron. Wynikiem tych obliczeń jest współdzielony tajny klucz.

Ponieważ współdzielony klucz tajny wymaga zarówno zmiennej publicznej, która jest wymieniana, jak i zmiennych prywatnych, które nie są wymieniane, osobie atakującej trudniej jest określić współdzielony klucz tajny, ponieważ obliczeniowo trudno jest pobrać pierwiastek równania, a osoba atakująca nie ma bezpośredniego dostępu do zmiennej prywatnej żadnej ze stron. Gdy moduł jest wyjątkowo duży, operacja modulo staje się niezwykle trudna do złamania. Użycie dużych liczb pierwszych Diffiego-Hellmana utrudnia obliczanie logarytmu dyskretnego, dlatego Diffie-Hellman jest często wdrażany jako część zestawu szyfrów.

Istnieją jednak ograniczenia, ponieważ wymiana kluczy Diffie-Hellman nie wymaga uwierzytelniania między stronami. Na przykład luka w zabezpieczeniach Logjam (CVE-2015-4000) umożliwia osobie atakującej obniżenie poziomu bezpiecznego połączenia i zastosowanie wstępnego obliczenia logjam dla znanych liczb pierwszych używanych w implementacjach 512-bitowych i 1024-bitowych. Podczas określania zestawów szyfrowania i wybierania algorytmu kryptograficznego upewnij się, że wszystkie ograniczenia między składnikami zostały zrównoważone.

Ustalenia dotyczące ryzyka Diffiego-Hellmana

Algorytm Diffiego-Hellmana zapewnia metodę określania tajnej liczby, która jest stosunkowo prosta do osiągnięcia i obliczeniowo trudna do złamania. Nadal istnieje pewne ryzyko związane z używaniem Diffiego-Hellmana, szczególnie jeśli liczba pierwsza jest słaba lub powszechna.

Możesz także użyć narzędzia do automatycznego skanowania, które uwzględnia niezbędne dane, aby zapewnić szybką identyfikację wszelkich słabych ogniw w standardach szyfrowania zasobów zewnętrznych. UpGuard BreachSight zapewnia ciągłe monitorowanie i automatyczne skanowanie pod kątem potencjalnych zagrożeń, w tym znanych luk w zabezpieczeniach związanych z wymianą kluczy Diffie-Hellman:

  • Słaba liczba pierwsza Diffiego-Hellmana używana w wymianie kluczy
  • Wspólna liczba pierwsza Diffiego-Hellmana używana w wymianie kluczy

Małe rozmiary kluczy i przewidywalne liczby pierwsze mogą pozwolić atakującym na złamanie klucza szyfru Diffiego-Hellmana. Niektóre klucze Diffiego-Hellmana używają tych samych popularnych liczb pierwszych. Poprzednie luki w zabezpieczeniach, takie jak luka w zabezpieczeniach logjam, pozwalały atakującym na złamanie tych znanych liczb pierwszych, co może prowadzić do pasywnego słuchania przez nieautoryzowanych agentów i ataków typu man-in-the-middle (znanych również jako ataki typu person-in-the-middle). UpGuard skanuje również w poszukiwaniu luki w zabezpieczeniach Logjam za pomocą stwierdzenia Podatne na CVE-2015-4000 (Logjam).

Aby zapobiec słabym liczbom pierwszym, upewnij się, że używasz liczb pierwszych o długości co najmniej 2048 bitów lub większej. Można również przełączyć się na wymianę kluczy ECDHE (Elliptic-Curve Diffie-Hellman Ephemeral), która wykorzystuje protokół Diffiego-Hellmana z kluczami efemerycznymi i kryptografią krzywych eliptycznych.

Oprócz dwóch ustaleń Diffiego-Hellmana, UpGuard ocenia również słabe lub niezabezpieczone zestawy SSL/TLS i szyfrów, aby upewnić się, że Twoja witryna wdraża silne środki bezpieczeństwa cybernetycznego. Aby zrozumieć, w jaki sposób UpGuard ocenia te wyniki, przeczytaj nasz artykuł na temat słabego SSL.

Obecni użytkownicy UpGuard mogą zalogować się i uzyskać dostęp do swojego profilu ryzyka, aby wyszukać wyniki wymiany kluczy Diffie-Hellman wśród swoich aktywów. Jeśli nie jesteś obecnym użytkownikiem UpGuard i chcesz uruchomić automatyczne skanowanie swoich zasobów za pomocą BreachSight, zarejestruj się, aby skorzystać z wersji próbnej.

Po zidentyfikowaniu zagrożenia związanego z szyfrowaniem wśród zasobów możesz skonfigurować środki bezpieczeństwa, aby rozwiązać ten problem, aby użytkownicy pozostali chronieni podczas uzyskiwania dostępu do Twojej witryny.

Jak zaimplementować wymianę kluczy Diffie-Hellman do szyfrowania SSL/TLS

Wymiana kluczy Diffie-Hellman jest korzystna dla szyfrowania w sieciach publicznych. Aby upewnić się, że korzystanie z usługi Diffie-Hellman zapewnia niezbędne środki ostrożności, można wdrożyć wymianę Diffie-Hellman dla protokołu TLS (Transport Layer Security) z następującymi trzema zaleceniami.

Wyłącz eksportowanie zestawów szyfrowania

Eksportowe zestawy szyfrowania to zestawy szyfrowania szyfrowania o niskiej sile, które mogą wprowadzać ataki typu downgrade na połączenia TLS. Zestawy szyfrowania eksportu są słabe z założenia i powinny zostać usunięte, chyba że jest to jawnie wymagane ze względu na potrzeby regulacyjne.

Wdrażanie efemerycznej krzywej eliptycznej Diffiego-Hellmana (ECDHE)

Kryptografia krzywych eliptycznych wykorzystuje krzywe eliptyczne w skończonych polach, aby pomóc w wygenerowaniu klucza szyfrowania. Używając tymczasowych, efemerycznych kluczy do wymiany kluczy Diffie-Hellmana, każda wymiana szyfrowania będzie wymagała nowego klucza, a nie ponownego użycia klucza statycznego. Szyfrowanie ECDHE dodaje również krzywą eliptyczną do problemu logarytmu dyskretnego, zwiększając złożoność problemu przy jednoczesnym obniżeniu progu bitowego dla tego samego poziomu bezpieczeństwa. ECDHE umożliwia również opcję doskonałego utajniania z wyprzedzeniem. Większość przeglądarek preferuje wymianę kluczy Diffiego-Hellmana (ECDH) krzywej eliptycznej zamiast pola Diffiego-Hellmana.

Użyj silnej grupy Diffiego-Hellmana

Aby zapobiec wstępnym obliczeniom i potencjalnym podsłuchiwaniom, należy użyć silnej grupy Diffiego-Hellmana o długości co najmniej 2048 bitów lub większej. Większość nowoczesnych przeglądarek internetowych, w tym Google Chrome, Mozilla Firefox i Microsoft Internet Explorer, wymaga rozmiaru grupy co najmniej 1024 bitów do szyfrowania kluczem publicznym Diffie-Hellmana, a obliczenia stają się trudniejsze do złamania przy większych rozmiarach bitów.

Aby upewnić się, że serwer używa silnych parametrów ECDHE, zaimplementuj zalecane przez Mozillę zestawy szyfrowania podczas konfigurowania serwera. Protokół TLS po stronie serwera Mozilli zapewnia przewodnik po konfiguracji i zalecane zestawy szyfrowania dla bezpieczeństwa. Za pomocą Generatora konfiguracji SSL można wygenerować kod konfiguracyjny zgodnie z potrzebami serwera i środowiska.

Niektórzy dostawcy oprogramowania serwerowego oferują również porady dotyczące wdrażania:

  • Microsoft Internet Information Services (IIS): Zaktualizowana obsługa wymiany kluczy Diffie-Hellman
  • Amazon Elastic Load Balancing: Predefiniowane zasady zabezpieczeń SSL dla klasycznych systemów równoważenia obciążenia
>

W przypadku innego oprogramowania użyj odpowiedniego pliku konfiguracyjnego, aby wprowadzić zmiany:

  • Serwer Apache HTTP: [.rt-script]httpd.conf[.rt-script] lub dla określonych hostów wirtualnych znajdujących się w katalogu [.rt-script]/etc/apache2/sites-available/[.rt-script]
  • Apache Tomcat: [.rt-skrypt]server.xml[.rt-skrypt]
  • Dovecot: [.rt-skrypt]/etc/dovecot.conf[.rt-skrypt]
  • HAProxy: [.rt-skrypt]/etc/haproxy/haproxy.cfg[.rt-skrypt]
  • Lighttpd: [.rt-skrypt]/etc/lighttpd/lighttpd.conf[.rt-skrypt]
  • Nginx: blok serwera przechowywany w katalogu [.rt-script]/etc/nginx/sites-enabled/default[.rt-script]
  • Postfiks SMTP: [.rt-skrypt]/etc/postfix/main.cf[.rt-skrypt]
  • Sendmail: [.rt-skrypt]/etc/mail/sendmail.mc[.rt-script]

Po zaimplementowaniu zaktualizowanych ustawień konfiguracyjnych możesz rozszerzyć korzystanie z Diffie-Hellman o inne narzędzia kryptograficzne, takie jak podpisy cyfrowe do uwierzytelniania. Można na przykład użyć certyfikatów ECDHE-RSA, aby algorytm RSA mógł uwierzytelnić źródło wiadomości.