Strona główna Kryptografia Wymiana kluczy Diffiego-Hellmana

🤝 Wymiana kluczy Diffiego-Hellmana

Dwie strony ustalają wspólny sekret przez niezabezpieczony kanał. Analogia mieszania barw czyni problem logarytmu dyskretnego intuicyjnym.

Kryptografia2DŁatwy60 FPS
diffie-hellman ↗ Otwórz osobno
Interfejs samej symulacji jest w języku angielskim.

O wymianie kluczy Diffiego-Hellmana

Ta symulacja pokazuje, jak dwie strony, Alicja i Bob, ustalają wspólny sekret przez otwarty kanał, nigdy go nie przesyłając. Wykorzystuje potęgowanie modularne w skończonej grupie cyklicznej: z publicznych wartości, liczby pierwszej p i generatora g, każda strona oblicza g podniesione do swojego prywatnego wykładnika, modulo p. Bezpieczeństwo opiera się na problemie logarytmu dyskretnego, co czyni tę operację praktyczną funkcją jednokierunkową.

Publiczną liczbę pierwszą p i generator g wybierasz z rozwijanych list, a następnie ustawiasz sekret a Alicji i sekret b Boba za pomocą suwaków. Panel krok po kroku oblicza A = g^a mod p, B = g^b mod p oraz wspólny sekret g^(ab) mod p, podczas gdy płótno z mieszaniem kolorów ilustruje tę ideę. Diffie-Hellman stanowi podstawę uzgadniania kluczy w HTTPS, SSH i VPN na całym świecie.

Najczęściej zadawane pytania

Czym jest wymiana kluczy Diffiego-Hellmana?

To metoda, opublikowana w 1976 roku, która pozwala dwóm stronom, które nigdy się nie spotkały, ustalić wspólny tajny klucz przez publiczny kanał. Każda strona zachowuje liczbę prywatną i wymienia jedynie wyprowadzoną wartość publiczną. Podsłuchujący widzi wartości publiczne, ale nie może praktycznie odtworzyć sekretu.

Jak faktycznie działa protokół?

Obie strony uzgadniają publiczną liczbę pierwszą p i generator g. Alicja oblicza A = g^a mod p, a Bob B = g^b mod p, po czym jawnie wymieniają A i B. Alicja podnosi B do potęgi swojego sekretu a, Bob podnosi A do potęgi swojego sekretu b, i obie strony dochodzą do tej samej wartości g^(ab) mod p.

Co robią elementy sterujące na tej stronie?

Rozwijane listy Liczba pierwsza p i Generator g ustawiają publiczne parametry widoczne dla wszystkich. Suwaki Alicja a i Bob b, w zakresie od 2 do 20, ustawiają dwa prywatne wykładniki. Zmiana dowolnego elementu natychmiast przelicza klucze publiczne i wspólny sekret w panelu matematycznym.

Dlaczego obie strony otrzymują ten sam sekret?

Ponieważ potęgowanie jest przemienne: (g^a)^b mod p równa się (g^b)^a mod p, oba równe g^(ab) mod p. Alicja oblicza B^a, a Bob A^b, więc obie strony trafiają na identyczną liczbę, mimo że żadna nie poznała prywatnego wykładnika drugiej.

Czym jest problem logarytmu dyskretnego?

Mając p, g oraz wartość g^a mod p, odzyskanie wykładnika a to problem logarytmu dyskretnego. Nie istnieje znany efektywny algorytm dla dużych liczb pierwszych, więc ta trudność chroni wspólny sekret nawet wtedy, gdy klucze publiczne są widoczne.

Co widzi podsłuchujący i dlaczego nie może tego złamać?

Ewa obserwuje p, g, A i B, wszystkie wysyłane jawnie. Aby znaleźć sekret, musiałaby rozwiązać logarytm dyskretny, by odzyskać a lub b. Przy małych liczbach pierwszych użytych tutaj jest to łatwe ręcznie, ale przy liczbach pierwszych 2048-bitowych jest to obliczeniowo niewykonalne przy obecnym sprzęcie.

Czy ta symulacja jest kryptograficznie dokładna?

Matematyka jest dokładna: wykorzystuje prawdziwe potęgowanie modularne za pomocą szybkiego podnoszenia do kwadratu i mnożenia na dużych liczbach całkowitych, więc A, B i wspólny sekret są poprawne. Małe liczby pierwsze i ograniczony zakres suwaków wybrano dla przejrzystości, a nie bezpieczeństwa, więc prawdziwe systemy używają znacznie większych parametrów.

Jaka jest rola generatora g?

Generator g to podstawa, której potęgi, wzięte modulo p, przechodzą przez duży zbiór reszt. Dobry generator daje wiele różnych wartości, co zwiększa liczbę możliwych wspólnych sekretów. W praktyce g dobiera się tak, by generowana przez niego grupa była duża i nie miała małych podgrup, które osłabiłyby wymianę.

Czy Diffie-Hellman zapewnia uwierzytelnianie?

Nie. Zwykły Diffie-Hellman zapewnia poufność klucza, ale nie tożsamość, więc jest podatny na atak man-in-the-middle, w którym ktoś umieszcza się między stronami. Rzeczywiste wdrożenia łączą go z podpisami lub certyfikatami, aby uwierzytelnić wartości publiczne przed zaufaniem im.

Gdzie Diffie-Hellman jest wykorzystywany w praktyce?

Zabezpiecza etap uzgadniania klucza w TLS dla stron HTTPS, w zdalnych logowaniach SSH, w IPsec i innych VPN oraz w aplikacjach do przesyłania wiadomości. Nowoczesne warianty, takie jak efemeryczny Diffie-Hellman i Diffie-Hellman na krzywych eliptycznych, dodają leśność kluczy (forward secrecy) i wykorzystują mniejsze, szybsze klucze.

Podobne symulacje