Diffie-Hellman

system opiera się na pomyśle, że dwóch rozmówców może wspólnie wygenerować wspólny klucz bez możliwości, aby osoba atakująca, która nasłuchuje wiadomości, mogła go odzyskać.

w tym celu wybierane są dwa numery publiczne, a dla każdego rozmówcy-numer tajny. Korzystając ze wzoru matematycznego, który obejmuje potęgowanie, każdy rozmówca wykonuje serię operacji z dwoma numerami publicznymi i ich tajnym numerem. Następnie rozmówcy publicznie wymieniają wyniki. Teoretycznie odwrócenie tej funkcji jest tak trudne, jak obliczenie logarytmu dyskretnego (sekstylon razy droższe niż potęgowanie używane do konwersji liczb). Dlatego liczba ta jest nazywana wynikiem zastosowania funkcji jednokierunkowej do tajnego numeru.

następnie obaj rozmówcy osobno używają wzoru matematycznego łączącego dwie przekształcone liczby z ich tajną liczbą, a na końcu uzyskują ten sam wynik, który będzie wspólnym kluczem.

szczegółowy opis

Diffie-Hellman

dla dwóch stron Alice i Bob, którzy próbują ustawić tajny klucz, a przeciwnik Mallory, wersja podstawowa wygląda następująco:

  • ustawiany jest prosty P {\displaystyle p}
    p

    i generator g Z Z p {{\displaystyle g \ in \ mathbf {z} _ {p}^{*}}

    g \ in {\mathbf {Z}} _ {{p}}^{{*}}

    (). Są publiczne, znane nie tylko stronom Alicji i Boba, ale także przeciwnikowi Mallory ‘ ego .

  • Alicja wybierz A Z R P-1 {\displaystyle A \ w \ mathbf {R} _ {P-1}}
    a \ w {\mathbf {R}} _ {{P-1}}

    losowy, oblicza a = z a mod P {\displaystyle A = z ^ {a}\; {\bmod { \ ;}} P}

     a=z^{{a}}\; {\bmod \;}p

    , i kieruje {\im umożliwić firmy ляемые standardowymi A}

    W

    Bob

  • Bob wybiera b ∈ Z, p − 1 {\im umożliwić firmy ляемые standardowymi b\in \mathbf {Z} _{p-1}}
    b\in {\mathbf {Z}}_{{p-1}}

    na chybił trafił, oblicza B = g b mod p {\im umożliwić firmy ляемые standardowymi B=g^{b}\;{\bmod {\;}}p}

    B=g^{{b}}\;{\bmod \;}p

    , i wysyła B {\im umożliwić firmy ляемые standardowymi B}

    Alicja

zauważ, że B i A mogą obliczyć wartość K = g ⋅ b mod p {\im umożliwić firmy ляемые standardowymi K=g^{a\cdot b}\;{\bmod {\;}}p}

K=g^{{a\cdot b}}\;{\bmod \;}p

. En efecto, lo podemos demostrar usando las propiedades del grupo Z p ∗ {\displaystyle \mathbf {Z} _{p}^{*}}

{\mathbf {Z}}_{{p}}^{{*}}

: Para Alice: B a mod p = ( g b mod p ) a mod p = ( ( g b mod p ) ( g b mod p ) ⋯ ( g b mod p ) ⏞ a ) mod p = g b ⋅ a mod p = g a ⋅ b mod p = K {\displaystyle B^{a}\;\;{\bmod {\;}}\;p=(g^{b}\;{\bmod {\;}}p)^{a}\;{\bmod {\;}}p=(\overbrace {(g^{b}\;{\bmod {\;}}p)(g^{b}\;{\bmod {\;}}p)\cdots (g^{b}\;{\bmod {\;}}p)} ^{a})\;{\bmod {\;}}p=g^{b\cdot a}\;{\bmod {\;}}p=g^{a\cdot b}\;{\bmod {\;}}p=K}

B^{{a}}\;\;{\bmod \;}\;p=(g^{b}\;{\bmod \;}p)^{a}\;{\bmod \;}p=(\overbrace {(g^{b}\;{\bmod \;}p)(g^{b}\;{\bmod \;}p)\cdots (g^{b}\;{\bmod \;}p)}^{a})\;{\bmod \;}p=g^{{b\cdot a}}\;{\bmod \;}p=g^{{a\cdot b}}\;{\bmod \;}p=K

Para Bob: A b mod p = ( g a mod p ) b mod p = ( ( g a mod p ) ( g a mod p ) ⋯ ( g a mod p ) ⏞ b ) mod p = g a ⋅ b mod p = K {\displaystyle A^{b}\;{\bmod {\;}}p=(g^{a}\;{\bmod {\;}}p)^{b}\;{\bmod {\;}}p=(\overbrace {(g^{a}\;{\bmod {\;}}p)(g^{a}\;{\bmod {\;}}p)\cdots (g^{a}\;{\bmod {\;}}p)} ^{b})\;{\bmod {\;}}p=g^{a\cdot b}\;{\bmod {\;}}p=K}

A^{{b}}\;{\bmod \;}p=(g^{a}\;{\bmod \;}p)^{b}\;{\bmod \;}p=(\overbrace {(g^{a}\;{\bmod \;}p)(g^{a}\;{\bmod \;}, p)\cdots (g^{a}\;{\bmod \;}p)}^{b})\;{\bmod \;}p=g^{{a\cdot b}}\;{\bmod \;}p=K

Jak obie strony mogą obliczyć K {\im umożliwić firmy ляемые standardowymi K}

K

, to możemy użyć jako wspólny klucz.

ataki Edytuj

ataki pasywne edytuj

przeciwnik Mallory posiadający p, g, A i B mógłby obliczyć wspólny sekret, gdyby miał również jedną z prywatnych wartości (a lub B). Uzyskać A O B z A O B przez odwrócenie funkcji (a = L O G D i C C P p (A ) {\displaystyle A= \ operatorname {log\; disc} _ {P}(A)}

a=\operatorname {log\;disc}_{p} (a)

i B = L O G D i C C P p (B) {\displaystyle B = \ operatorname {log\; disc} _ {P} (B)}

 b = \ operatorname {log\;disc} _ {P}(B)

) jest problemem logarytmu dyskretnego w z p {{\displaystyle \ mathbf {z} _ {p}^{*}}

{\mathbf {Z}} _ {{p}}^{{*}}

, problem, który jest uważany za nierozwiązywalny obliczeniowo, jeśli p jest dużą liczbą pierwszą 200 lub więcej cyfr i nie spełnia pewnych wyniszczających cech.

aktywne ataki Edytuj

protokół jest wrażliwy na aktywne ataki typu Man-in-the-middle. Jeśli wiadomość zostanie przechwycona przez stronę trzecią, osoba trzecia może podszyć się pod nadawcę w stosunku do adresata i odwrotnie, ponieważ nie ma mechanizmu potwierdzania tożsamości uczestników wiadomości. W ten sposób man-in-the-middle mógł pogodzić klucz z każdym uczestnikiem i przekazać sobie DANE, słuchając rozmowy w obie strony. Po ustanowieniu połączenia symetrycznego osoba atakująca musi nadal przechwytywać i modyfikować ruch, aby nie zauważył. Należy pamiętać, że aby atak był operacyjny, osoba atakująca musi znać symetryczną metodę szyfrowania, która ma być używana. Opierając się na ukrywanie symetrycznego algorytmu szyfrowania nie jest zgodne z zasadami Kerckhoffs (skuteczność systemu nie powinna zależeć od projektu pozostanie tajemnicą).

ataki man-in-the-middle w Diffie-Helman.

aby zapobiec tego typu atakom, zwykle stosuje się jedną lub więcej z następujących metod:

  • Kontrola czasu.
  • wstępne uwierzytelnianie stron. Na przykład Użyj uwierzytelniania na poziomie podstawowym w protokole. Moglibyśmy najpierw ustanowić połączenie TLS i zastosować algorytm Diffie-Hellmana na tej warstwie.
  • uwierzytelnianie treści. Na przykład możemy użyć komputera MAC nad treścią wiadomości.
  • szyfrując klucze publiczne za pomocą (asymetrycznego) algorytmu klucza publicznego, unikając problemu Man-in-the-middle, a następnie sprawdzając, czy klucz publiczny różni się od 0 i 1.
  • użyj strony trzeciej (Carol), z którą Alice lub Bob utrzymują bezpieczny kanał. Ta strona trzecia może wykryć man-in-the-middle

jeśli Alice lub Bob nasłuchują/zmieniają się, po prostu rzucając wyzwanie obu testom, sugerując w takim teście klucz publiczny drugiego.Jeśli Mallory zniekształci połączenie Alice-Bob, a także Alice-Carol, nie może zniekształcić bezpiecznego kanału Bob-Carol i zostanie wykryty.A jeśli zniekształcisz Alice-Bob i Bob-Carol, nie możesz zniekształcić Alice-Carol (z definicji musi istnieć jakiś bezpieczny kanał między dwoma z trzech, chociaż pozostałe dwa kanały są zniekształcone przez Mallory). Oznacza to, że metoda Diffie-Hellmana może tworzyć w 100% bezpieczne sieci warstwowe z dwóch wcześniej zabezpieczonych węzłów. Ta metoda jest również używana do testowania kanałów, które mają być niebezpieczne.

EjemploEditar

→ {\displaystyle \prawy pasek }

\ skręt w prawo

← {\ styl wyświetlania \lewa strzałka }

\ lewa strzałka

=

Alicja
S Obliczenie
p, g
i
ga mod p
(gb mod p)mod p
Wszystkie
Obliczenie S.
R, G
B
GB Mod p
( ga mod p) B Mod P
  1. Alice i Bob zgadzają się, użycie liczby pierwszej p=23, a podstawa g = 5.
  2. Alice wybierz numer jeden sekret, w=6, a następnie wysyła do Boba, ga (mod p)
    • 56 mod 23 = 8.
  3. Bob wybiera numer jeden sekret, b=15, a następnie wysyła Alice (gb mod p)
    • 515 mod 23 = 19.
  4. Alicja oblicza (gb mod P)mod p
    • 196 mod 23 = 2.
  5. Bob oblicza ga (mod p) B mod P
    • 815 mod 23 = 2.

przykład z implementacją szyfrowaniazdać

potrzeba tego przykładu: Bob musi wysłać zaszyfrowany tekst do Alice, ale bez udostępniania klucza szyfrowania. Jak to robisz?

  1. Alicja wybiera liczbę tajną a = 6, liczbę pierwszą p=23 i podstawę z = 5. Następnie wysyła Bobowi klucz publiczny Alicji (ga mod p), p i g:
    • 56 mod 23 = 8.
    • 23
    • 5
  2. Bob wybiera numer jeden sekret, b = 15, a następnie Bob oblicza klucz szyfrowania wspólny (ga mod P) B mod P
    • 815 mod 23 = 2.
  3. Bob szyfruje, z Szyfrator symetryczny jak AES, wyraźny tekst za pomocą klucza szyfrowania generowanego.
  4. TextoCifrado = CifradorSimetrico (TextoClaro, 2)
  5. Bob wysyła Alice zaszyfrowany tekst i klucz Boba (gb mod p)
    • 515 mod 23 = 19.
    • TextoCifrado
  6. Alicja oblicza (gb mod P)mod p
    • 196 mod 23 = 2.
  7. Alice używa tego wygenerowanego klucza szyfrowania do odszyfrowywania danych wysłanych przez Boba
  8. Textszerokość = deszyfrowanie (tekst zaszyfrowany, 2 )

znacznie większe wartości A, B I P musiałyby uczynić ten przykład bezpiecznym. Ponieważ bardzo łatwo jest sprawdzić wszystkie możliwe wartości gab mod 23 (maksymalnie 22 wartości, nawet jeśli a i B są dużymi liczbami).

oczywiście Alicja musi wysłać Bobowi zaszyfrowane informacje.

Leave a Reply