Zabezpieczanie danych podczas ich przesyłania w Internecie zwykle wymaga ochrony na dwa sposoby:
- Poufność - zapewnienie nikogo oprócz docelowi odbiorcy mogą odczytać dane
- Integralność - zapewnienie, że nikt nie może modyfikować ani naruszać danych podczas przesyłania.
Poufność jest zapewniana za pomocą szyfrowania symetrycznego, a integralność jest zapewniana za pomocą kodu uwierzytelniania wiadomości (MAC).
Zarówno szyfrowanie symetryczne, jak i MAC wymagają, aby obie strony miały identyczne i tajne klucze („klucz” w tym sensie będący po prostu liczbą konwertowaną na binarny).
Problem polega więc na tym, że Jak obie strony ustanawiają identyczne i tajne klucze w Internecie? (lub jakikolwiek inny niezabezpieczony nośnik). Nazywa się to „ problemem wymiany kluczy ”.
Jednym z rozwiązań tego problemu jest algorytm Diffiego-Hellmana.
Diffie-Hellman pozwala dwóm stronom na ustalenie wspólnego sekretu na niezabezpieczonym medium . Lub, mówiąc prościej…
Wyobraź sobie, że ty i twój przyjaciel staliście w zatłoczonym pokoju, otoczeni przez podejrzanie wyglądających ludzi. Załóżmy, że ty i twój znajomy musieliście uzgodnić identyczną liczbę, ale nie chcę, aby ktokolwiek w pokoju wiedział, jaki to numer. Diffie-Hellman pozwoliłby Tobie i Twojemu przyjacielowi na sprytną wymianę kilku liczb i na podstawie tych liczb obliczyć inną liczbę, która jest identyczna. I chociaż wszyscy w pokoju słyszeli wymieniane numery, nie mają możliwości określenia ostatecznego numeru, na który przybyliście z przyjacielem.
Przykład tego możemy zobaczyć na poniższym obrazku. Alice i Bob wykorzystają wymianę kluczy Diffie-Hellman do ustalenia wspólnego sekretu.
Każdy, kto „podsłuchuje” rozmowę, „słyszy” tylko liczby wymienione w środku: 13
, 6
, 2
, 9
. Nie ma spójnego sposobu połączenia tych czterech liczb w celu uzyskania ostatecznego wspólnego hasła: 3
bez znajomości jednej z prywatnych wartości Alicji lub Boba ( 5
lub 4
), które nigdy nie były udostępniane.
To jest pięknem Diffie-Hellmana.
Liczby użyte w powyższym przykładzie są małe, aby matematyka była prosta. W rzeczywistości liczby używane we współczesnych giełdach Diffiego-Hellmana mają (lub powinny być) co najmniej 2048 bitów - co wymagałoby około 617 cyfr, aby je zapisać !!
Po zakończeniu wymiany kluczy Diffiego-Hellmana obie strony mają teraz identyczną wartość, znaną tylko każdej ze stron.
Ta wartość staje się „punktem wyjścia”, od którego można wygenerować dodatkowe klucze.
Wcześniej wspomnieliśmy o szyfrowaniu symetrycznym i kodach uwierzytelniania wiadomości, z których każdy wymaga tajnego klucza. Cóż, weź swój wspólny sekret DH i połącz go z kilkoma innymi wartościami, a teraz masz potrzebne klucze szyfrowania i MAC.
Dodatkową korzyścią jest łączenie wartości w celu tworzenia kluczy jest łatwe ... Może być wykonywane tyle razy, ile potrzeba.
W rzeczywistości wiele protokołów bezpieczeństwa (SSL / TLS, IPsec itp.) generuje jeden zestaw kluczy do zabezpieczenia ruchu w każdym kierunku - łącznie cztery klucze (szyfrowanie MAC + w jednym kierunku, szyfrowanie MAC + w drugim). Wszystkie cztery klucze wygenerowane z tej samej początkowej wartości początkowej, pochodzącej od Diffie-Hellmana.