Protokół Diffiego-Hellmana

Protokół Diffiego-Hellmana – protokół uzgadniania kluczy szyfrujących, opracowany przez Witfielda Diffiego oraz Martina Hellmana w 1976 roku.

Jego siła oparta jest na trudności obliczenia logarytmów dyskretnych w ciałach skończonych. Klucz uzgodniony za pomocą tego algorytmu może zostać wykorzystany do szyfrowania komunikacji. Algorytm pozwala bezpiecznie uzgodnić klucz, nawet jeżeli istnieje osoba, która podsłuchuje proces uzgadniania klucza, nie chroni jednak przed atakami typu man in the middle. Algorytm nie nadaje się do szyfrowania i deszyfrowania wiadomości.

Opis protokołu

Protokół Diffiego-Hellmana służy do ustalenia wspólnego tajnego klucza przy użyciu publicznych środków komunikacji. Następujący diagram przedstawia ogólną ideę uzgodnienia klucza na przykładzie kolorów zamiast liczb. Kluczowe dla procesu jest to, że Alicja i Bob używają jedynie prostej operacji mieszania kolorów. Operacja ta powinna być możliwie trudna do odwrócenia (być funkcją jednokierunkową). Wygenerowany klucz jest praktycznie niemożliwy do odtworzenia przez osobę podsłuchującą. Kolor żółty jest znany Alicji i Bobowi:

Protokół Diffiego-Hellmana 
Illustration of the Diffie-Hellman Key Exchange

Poniżej znajduje się wyjaśnienie zawierające nieco matematyki:

Najprostsza, oryginalna wersja protokołu wykorzystuje arytmetykę multiplikatywnych grup modulo p, gdzie p jest liczbą pierwszą, a g pierwiastkiem pierwotnym modulo p. Poniżej przykład, gdzie publicznie znane wartości oznaczono kolorem niebieskim, a tajne pogrubionym czerwonym:

Alicja Bob
Tajne Publiczne Obliczane Wysyłane Obliczane Publiczne Tajne
a p, g p,g b
a p, g, A ga mod p = A A p, g b
a p, g, A B gb mod p = B p, g, A, B b
a, s p, g, A, B Ba mod p = s Ab mod p = s p, g, A, B b, s
  1. Alicja i Bob uzgadniają liczbę pierwszą p=23 i podstawę g=5.
  2. Alicja wybiera tajną liczbę całkowitą a=6, i wysyła Bobowi A = ga mod p
    • A = 56 mod 23
    • A = 15 625 mod 23
    • A = 8
  3. Bob wybiera tajną liczbę całkowitą b=15, i wysyła Alicji B = gb mod p
    • B = 515 mod 23
    • B = 30 517 578 125 mod 23
    • B = 19
  4. Alicja oblicza s = B a mod p
    • s = 196 mod 23
    • s = 47 045 881 mod 23
    • s = 2
  5. Bob oblicza s = A b mod p
    • s = 815 mod 23
    • s = 35 184 372 088 832 mod 23
    • s = 2
  6. Alicja i Bob współdzielą tajną liczbę: s = 2. Jest tak, ponieważ 615 jest tym samym, co 156. Więc jeśli ktoś znałby jednocześnie obie tajne wartości, mógłby także obliczyć s:
    • s = 56⋅15 mod 23
    • s = 515⋅6 mod 23
    • s = 590 mod 23
    • s = 807 793 566 946 316 088 741 610 050 849 573 099 185 363 389 551 639 556 884 765 625 mod 23
    • s = 2

Zarówno Alicja, jak i Bob posiadają tę samą wartość tajną, ponieważ Protokół Diffiego-Hellmana  oraz Protokół Diffiego-Hellmana  są przystające modulo p. Zauważmy, że jedynie a, b i Protokół Diffiego-Hellmana  są trzymane w sekrecie. Pozostałe wartości – p, g, Protokół Diffiego-Hellmana  oraz Protokół Diffiego-Hellmana  – są wysyłane jawnie. Gdy Alicja i Bob obliczą wspólną wartość, mogą użyć jej jako klucza, znanego tylko im, do wysyłania tajnych komunikatów poprzez ten sam otwarty kanał komunikacji. Oczywiście, o wiele większe wartości a, b i p powinny być użyte dla zapewnienia bezpieczeństwa, ponieważ łatwo jest przeprowadzić próbę dla tych kilku możliwych wartości Protokół Diffiego-Hellmana  (są tylko 23 wartości do sprawdzenia). Gdy p jest liczbą pierwszą długości około 300 cyfr dziesiętnych, a a oraz b mają po co najmniej 100 cyfr każda, wtedy nawet najlepszy znany obecnie algorytm nie znajdzie a mając jedynie g, p, Protokół Diffiego-Hellmana  i Protokół Diffiego-Hellmana  nawet przy użyciu całej mocy obliczeniowej dostępnej ludzkości. Problem jest znany jako logarytm dyskretny. Zauważmy g nie musi być duże, i w praktyce wybiera się 2 lub 5.

Poniżej bardziej ogólny opis protokołu:

  1. Alicja i Bob uzgadniają skończoną grupę cykliczną G oraz generator g w G (to się zwykle odbywa na długo przed pozostałą częścią protokołu; przyjmuje się, że g jest znane wszystkim napastnikom). Użyjemy dla grupy G notacji multiplikatywnej.
  2. Alicja losuje naturalną liczbę a i wysyła Protokół Diffiego-Hellmana  Bobowi.
  3. Bob losuje naturalną liczbę b i wysyła Protokół Diffiego-Hellmana  Alicji.
  4. Alicja oblicza Protokół Diffiego-Hellmana 
  5. Bob oblicza Protokół Diffiego-Hellmana 

Oboje posiadają teraz element Protokół Diffiego-Hellmana  który może posłużyć jako tajny klucz.

W celu odszyfrowania wiadomości m z szyfrogramu Protokół Diffiego-Hellmana  Bob (lub Alicja) muszę najpierw obliczyć Protokół Diffiego-Hellmana 

Bob zna Protokół Diffiego-Hellmana  i Protokół Diffiego-Hellmana  Z wartości konstrukcji grupy G, dla każdego x w G, Protokół Diffiego-Hellmana 

Bob oblicza Protokół Diffiego-Hellmana 

Kiedy Alicja wysyła Bobowi szyfrogram Protokół Diffiego-Hellmana  Bob używa Protokół Diffiego-Hellmana  i odzyskuje wiadomość Protokół Diffiego-Hellmana 

„Karta danych”

Poniżej znajduje się tabela przedstawiająca w uproszczeniu, kto co wie. (Ewa podsłuchuje transmisję z nadzieją uzyskania klucza ustalanego przez Alicję i Boba, nie ma jednak możliwości modyfikacji czy podmiany wysyłanych wiadomości).

  • s = wspólny klucz tajny. s = 2
  • g = publiczna podstawa. g = 5
  • p = publiczna (pierwsza) liczba. p = 23
  • a = tajna wartość Alicji. a = 6
  • A = publiczna wartość Alicji. A = ga mod p = 8
  • b = tajna wartość Boba. b = 15
  • B = publiczna wartość Boba. B = gb mod p = 19
Alicja
wie nie wie
p = 23 b = ?
podstawa g = 5
a = 6
A = 56 mod 23 = 8
B = 5b mod 23 = 19
s = 196 mod 23 = 2
s = 8b mod 23 = 2
s = 196 mod 23 = 8b mod 23
s = 2
Bob
wie nie wie
p = 23 a = ?
podstawa g = 5
b = 15
B = 515 mod 23 = 19
A = 5a mod 23 = 8
s = 815 mod 23 = 2
s = 19a mod 23 = 2
s = 815 mod 23 = 19a mod 23
s = 2
Ewa
wie nie wie
p = 23 a = ?
podstawa g = 5 b = ?
s = ?
A = 5a mod 23 = 8
B = 5b mod 23 = 19
s = 19a mod 23
s = 8b mod 23
s = 19a mod 23 = 8b mod 23

Uwaga: Powinno być trudno Alicji odgadnąć tajną wartość Boba (i vice versa). Ewa mogłaby bowiem podmienić własną parę wartości, kładąc publiczną wartość Boba w miejsce jej prywatnej, generując w ten sposób fałszywy współdzielony klucz tajny. Następnie mogłaby obliczyć tajną wartość Boba (oraz użyć jej do obliczenia tajnego klucza współdzielonego). Ewa może próbować wybrać parę wartości taką, że łatwo jej będzie obliczyć prywatną wartość Boba.

Uogólnienie na więcej niż dwie strony

Protokół Diffiego-Hellmana nie jest ograniczony do negocjowania klucza jedynie przez dwoje uczestników. W ustalaniu klucza może brać dowolna liczba uczestników, wykonując kolejne iteracje protokołu uzgadniania. W poniższym przykładzie Alicja, Bob i Cezary będą ustalać wspólny klucz. Jak poprzednio, wszystkie operacje są wykonywane mod Protokół Diffiego-Hellmana 

  1. Uczestnicy uzgadniają parametry algorytmu: p oraz g.
  2. Uczestnicy tworzą prywatne wartości, nazwane odpowiednio a, b oraz c.
  1. Alicja oblicza Protokół Diffiego-Hellmana  i wysyła Bobowi.
  2. Bob oblicza Protokół Diffiego-Hellmana  i wysyła Cezaremu.
  3. Cezary oblicza Protokół Diffiego-Hellmana  i używa jako klucza tajnego.
  4. Bob oblicza Protokół Diffiego-Hellmana  i wysyła Cezaremu.
  5. Cezary oblicza Protokół Diffiego-Hellmana  i wysyła Alicji.
  6. Alicja oblicza Protokół Diffiego-Hellmana  i używa jako klucza tajnego.
  7. Cezary oblicza Protokół Diffiego-Hellmana  i wysyła Alicji.
  8. Alicja oblicza Protokół Diffiego-Hellmana  i wysyła Bobowi.
  9. Bob oblicza Protokół Diffiego-Hellmana  i używa jako klucza tajnego.

Metoda ta wymaga jednak dużej liczby potęgowania modulo p.

Dystrybuowanie klucza na więcej uczestników metodą dziel i zwyciężaj

W naszym przykładzie występuje 8 uczestników: A, B, C, D, E, F, G i H. Podzielimy ich na dwie mniejsze grupy:

  1. Uczestnicy A, B, C i D, wyznaczają jedną wspólną wartość, Protokół Diffiego-Hellmana  jest ona następnie wysyłana do drugiej grupy – uczestnicy E, F, G i H. W odpowiedzi otrzymują Protokół Diffiego-Hellmana 
  2. Uczestnicy A oraz B wyznaczają Protokół Diffiego-Hellmana  która zostaje wysłana do C i D, podczas gdy oni robią to samo i wysyłają Protokół Diffiego-Hellmana  do A i B.
  3. Uczestnik A oblicza Protokół Diffiego-Hellmana  i wysyła do B. Podobnież czyni B i wysyła do A wartość Protokół Diffiego-Hellmana  C i D czynią podobnie.
  4. Uczestnik A wykonuje ostatnią operację, uzyskując tajny klucz Protokół Diffiego-Hellmana  B oblicza tak samo. Znowu, C i D czynią podobnie.
  5. Uczestnicy E, F, G i H jednocześnie wykonują analogiczne operacje, używając Protokół Diffiego-Hellmana  jako wyjściowej wartości.

Bezpieczeństwo

Protokół jest uważany za bezpieczny na ataki podsłuchowe, o ile G oraz g są wybrane poprawnie. Napastnik (Ewa) musi rozwiązać problem Diffiego Hellmana, by uzyskać gab. Obecnie uważa się to za trudne. Efektywny algorytm rozwiązywania problemu logarytmu dyskretnego uczyniłby łatwym do obliczenia a lub b i rozwiązania problemu Diffiego-Hellmana, czyniąc ten oraz wiele innych schematów klucza publicznego bezużytecznymi.

Rząd grupy G powinien być liczbą pierwszą, lub posiadać duży czynnik pierwszy. Zapobiegnie to użyciu algorytmu Pohlinga-Hellmana do uzyskania a lub b. Z tego powodu liczba pierwsza Sophie Germain q jest czasami używana do obliczenia Protokół Diffiego-Hellmana  nazywanej „bezpieczną liczbą pierwszą”, gdyż rząd G jest wtedy podzielny jedynie przez 2 i przez q. g jest natomiast wybierane spośród generatorów podgrupy G rzędu q, zamiast całej G. To powoduje, że symbol Legendre’a ga nie mówi nic o parzystości a.

Jeśli Alicja i Bob używają generatora liczb losowych, którego wyjście nie jest całkiem losowe i wyniki mogą być przewidywane w pewnym stopniu, to zadanie Ewy jest dużo łatwiejsze.

Tajne wartości a i b są porzucane po zakończeniu sesji. Stąd algorytm spełnia trywialnie warunek doskonałej tajności.

W oryginalnej koncepcji protokół Diffiego-Hellmana nie zapewnia uwierzytelniania uczestników, stąd jest podatny na atak man-in-the-middle. Osoba w środku ustanawia dwie sesje protokołu, podając się Alicji za Boba, a Bobowi za Alicję. Pozwala to jej odszyfrowywać (a także odczytywać i zapisywać) i reszyfrowywać wiadomości wysyłane między nimi. Do zapobieżenia tego typu atakowi niezbędna jest wykorzystanie innego algorytmu uwierzytelniającego. W tym celu również mogą zostać użyte inne warianty protokołu Diffiego-Hellmana (np. protokół Station-to-Station(inne języki)).

Inne zastosowania

Ustalanie klucza z uwierzytelnianiem

Gdy Alicja i Bob współdzielą hasło, mogą użyć protokołu PAKE(inne języki) (Password-Authentification Key Agreement) – forma protokołu zabezpieczająca przed atakami man-in-the-middle. Prosty schemat polega na wykorzystaniu g jako hasła. Korzyść jest taka, że napastnik może próbować odgadnąć hasło tylko raz dla każdej strony. To sprawia, że system jest dobrze zabezpieczony przy relatywnie słabych hasłach dostępu. To podejście zostało opisane w zaleceniu ITU-T X.1035 i znajduje zastosowanie w zabezpieczeniu sieci domowych w standardzie G.hn.

Klucz publiczny

Jest możliwym użycie protokołu Diffiego-Hellmana jako części infrastruktury klucza publicznego. Klucz publiczny Alicji to Protokół Diffiego-Hellmana  Aby wysłać wiadomość, Bob wybiera losowe b i wysyła Alicji Protokół Diffiego-Hellmana  (niezaszyfrowane) razem z wiadomością zaszyfrowaną kluczem symetrycznym Protokół Diffiego-Hellmana  Tylko Alicja jest w stanie odszyfrować wiadomość, ponieważ tylko ona zna a. Wykorzystanie klucza publicznego zapobiega także atakom man-in-the-middle.

W praktyce, protokół Diffiego-Hellmana nie jest używany w ten sposób, z racji wykorzystania algorytmu RSA do podpisywania i weryfikacji certyfikatów. Protokół Diffiego-Hellmana nie może także zostać użyty do podpisywania certyfikatów, pomimo że algorytmy podpisywania ElGamal i DSA są z nim powiązane. Jednakże jest wykorzystywany w algorytmach MQV(inne języki), STS(inne języki) oraz IKE – składowej stosu protokołów IPsec zabezpieczającego komunikację IP.


Zobacz też

Przypisy

Tags:

Protokół Diffiego-Hellmana Opis protokołuProtokół Diffiego-Hellmana „Karta danych”Protokół Diffiego-Hellmana Uogólnienie na więcej niż dwie stronyProtokół Diffiego-Hellmana BezpieczeństwoProtokół Diffiego-Hellmana Inne zastosowaniaProtokół Diffiego-Hellmana Zobacz teżProtokół Diffiego-Hellmana PrzypisyProtokół Diffiego-HellmanaAlgorytm symetrycznyAtak man in the middleCiało skończoneKlucz (kryptografia)Logarytm dyskretnyMartin HellmanWhitfield Diffie

🔥 Trending searches on Wiki Polski:

Lista meczów reprezentacji Polski w piłce nożnej mężczyzn (od 2001)KrakówBuddaMarcin BułkaBolesław I ChrobryCyceronReprezentacja Holandii w piłce nożnej mężczyznAdam WoronowiczMateusz MorawieckiTeneryfaAzerbejdżanCesarstwo RzymskieArtur BorucŻydziReprezentacja Ukrainy w piłce nożnej mężczyznŁódźJęzyk polskiChrześcijaństwoRafał TrzaskowskiWołyńBydgoszczNumerariuszInstagramPartie polityczne w PolsceMariusz WalterMistrzostwa Świata w Piłce Nożnej 2006Detektyw MonkSztortJózef PiłsudskiMarcin KierwińskiWojciech JaruzelskiMistrzostwa Europy w Piłce Nożnej 2024/Grupa DHeinrich HimmlerZamach z 11 września 2001 rokuRzeź wołyńskaZbigniew StonogaCyprDaniel James (piłkarz)GrecjaTadżykistanLockheed F-117 NighthawkZakładRudolf HößWaliaAdam GlapińskiBoćkiTadeusz SznukEmilian KamińskiDominikanaJakub BłaszczykowskiKot SchrödingeraNiedziela PalmowaMcLarenWiosnaIzabela BodnarAudi A6BizmutDroga krzyżowaWisława SzymborskaKatarzyna (księżna Walii)Wilhelm (książę Walii)TrójmiastoPalestyna (państwo)EstoniaStany ZjednoczoneRezurekcjaOlga Semeniuk-PatkowskaMads MikkelsenKłamstwo oświęcimskieStepan BanderaArleta BojkeSiogunRzymPremierzy PolskiPesachFord FocusPasja (film 2004)Ku Klux KlanMacedonia Północna🡆 More