Pytanie:
„Wymiana kluczy Diffie-Hellman” w prostym języku angielskim
user15119
2013-11-24 07:10:08 UTC
view on stackexchange narkive permalink

Czy ktoś może mi wyjaśnić, czym jest wymiana kluczy Diffie-Hellman prostym językiem angielskim? Czytałem na nietechnicznej stronie z wiadomościami, że Twitter właśnie zaimplementował tę technologię, która pozwala dwóm osobom na wymianę zaszyfrowanych wiadomości na niezabezpieczonym kanale. Jak to (jeśli to prawda)?

Wikipedia ma [obrazkowe wyjaśnienie] (https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange#Description).
YouTube ma (przyjemne i łatwe) [wyjaśnienie wideo] (https://www.youtube.com/watch?v=YEBfamv-_do&list=PL87386AD236727A1B&index=8) :)
Ten film okazał się przydatny w zrozumieniu - https://www.youtube.com/watch?v=YEBfamv-_do
Mój ulubiony film DH: https://www.youtube.com/watch?v=NmM9HA2MQGI
Uważam, że analogia kolorów jest błędna (wikipedia i youtube).Mieszanie „prywatnego” koloru z kolorem drugiej strony nie oddaje tego samego, tajemniczego koloru.Właściwie to miksowałem.
Jedenaście odpowiedzi:
tylerl
2013-11-24 13:28:12 UTC
view on stackexchange narkive permalink

Diffie-Hellman to sposób na wygenerowanie wspólnego sekretu między dwiema osobami w taki sposób, że nie można go zobaczyć, obserwując komunikację. To ważna różnica: Nie udostępniasz informacji podczas wymiany kluczy, tworzysz klucz razem.

Jest to szczególnie przydatne, ponieważ możesz użyć tej techniki, aby utworzyć z kimś klucz szyfrowania, a następnie rozpocząć szyfrowanie ruchu za pomocą tego klucza. I nawet jeśli ruch jest rejestrowany i później analizowany, nie ma absolutnie żadnego sposobu, aby dowiedzieć się, jaki był klucz, nawet jeśli wymiany, które go utworzyły, mogły być widoczne. Stąd pochodzi doskonała poufność informacji. Nikt analizujący ruch w późniejszym terminie nie może się włamać, ponieważ klucz nigdy nie został zapisany, nigdy nie został przesłany ani nigdzie nie został ujawniony.

Sposób działania jest dość prosty. Wiele działań matematycznych jest takich samych, jak w przypadku kryptografii z kluczem publicznym, ponieważ używana jest funkcja zapadni. I chociaż problem logarytmu dyskretnego jest tradycyjnie używany (biznes x y mod p ), ogólny proces można zmodyfikować, aby używał również kryptografii krzywych eliptycznych.

Ale mimo że wykorzystuje te same podstawowe zasady, co kryptografia klucza publicznego, nie jest to nie kryptografia asymetryczna, ponieważ nic nie jest nigdy szyfrowane ani odszyfrowywane podczas wymiany. Jest to jednak zasadniczy element konstrukcyjny i faktycznie był podstawą, na której później zbudowano asymetryczne kryptowaluty.

Podstawowa idea działa w ten sposób:

  1. I wymyśl liczbę pierwszą p i liczbę g , która jest względnie pierwsza do p-1 , i powiedz, jakie one są.
  2. Następnie wybierasz tajny numer ( a ), ale nikomu nie mówisz. Zamiast tego obliczasz ga mod p i wysyłasz wynik z powrotem do mnie. (Nazwiemy to A , ponieważ pochodzi z a”).
  3. Robię to samo, ale zadzwonimy na mój tajny numer b i obliczoną liczbę B . Więc obliczam gb mod p i wysyłam wynik (zwany „ B ")
  4. Teraz bierz numer, który ci wysłałem i wykonaj dokładnie tę samą operację na nim . To jest Ba mod p .
  5. Wykonuję tę samą operację z wynikiem, który mi przesłałeś, więc: Ab mod p

„Magia” polega na tym, że odpowiedź, którą otrzymuję w kroku 5, to ta sama liczba , którą otrzymałeś w kroku 4. To nie jest tak naprawdę magia, to tylko matematyka i sprowadza się do fantazyjnej właściwości wykładników modulo. Konkretnie:

a mod p) b mod p = gab mod p
(gb mod p)a mod p = gba mod p

Co, jeśli przyjrzysz się bliżej, oznacza, że ​​otrzymasz tę samą odpowiedź bez względu na to, w jakiej kolejności wykonujesz potęgowanie. Więc robię to w jednej kolejności, a ty w drugiej. Nigdy nie wiem, jakiej tajnej liczby użyłeś do uzyskania wyniku i nigdy nie wiesz, jakiej liczby użyłem, ale nadal otrzymujemy ten sam wynik.

Wynik, liczba, na którą natknęliśmy się w kroku 4 i 5, to nasz wspólny tajny klucz. Możemy użyć tego jako naszego hasła do AES lub Blowfish lub dowolnego innego algorytmu, który używa wspólnych sekretów. I możemy być pewni, że nikt oprócz nas nie zna klucza, który wspólnie stworzyliśmy.

DH to klucz publiczny / asymetryczny * krypto *, ale nie * szyfrowanie *.
Myślę, że warto wspomnieć, że powodem, dla którego jest to bezpieczne, jest to, że w przeciwieństwie do normalnego logu (x), modularny log (x) jest trudny do obliczenia. W przeciwnym razie moglibyśmy po prostu zrobić `log_g (A)` i `log_g (B)`, aby uzyskać `a` i` b`.
Myślę, że możesz również chcieć dodać, że ** `g` ** nie jest zwykłą liczbą pierwszą, ale generatorem (lub pierwiastkiem pierwotnym) **` p` **
@TheRookierLearner ta odpowiedź jest * uproszczonym wyjaśnieniem * DH; dla uproszczenia pominięto kilka ważnych szczegółów. Nie należy tego uważać za samouczek dotyczący implementacji.
Zakładając jednak, że jest to niezabezpieczona sieć, nie mogę po prostu znaleźć źródła „A”, a zatem „a”.i voila!przepraszam za moje amatorskie pytanie, ale muszę się nauczyć: str
@Mero55 Nie tylko znajdujesz pierwiastek A, ale znajdujesz pierwiastki A, A + p, A + 2p, A + 3p, ... aż wynik będzie liczbą całkowitą.
Świetnie wyjaśnione!Wielkie dzięki za jasną odpowiedź: D.
dlaczego to jest budulcem asymetrycznego kryptowaluty?jeśli wykryte i użyte po obu stronach klucze są takie same, czy nie są to klucze symetryczne?
Dlaczego $ g $ musi być liczbą pierwszą?Na przykład, jeśli $ g \ neq2 $ działa, to działa również $ p-g $ (a nawet nie jest liczbą pierwszą).Z pewnością stwierdzenie, że $ g $ jest liczbą pierwszą, ogranicza twoje opcje ... (i tym samym ułatwia odgadnięcie klucza).
bardzo dziękuję za to jasne wyjaśnienie DH :)
Ze względów bezpieczeństwa liczby pierwsze ** a ** i ** b ** powinny być rozsądnie * wysokimi * liczbami i znajdować się w pewnej odległości od siebie.
@whytheq tak, po procedurze DH obie strony otrzymują ten sam tajny klucz.Ten klucz może być następnie (i zazwyczaj jest) używany do szyfrowania wiadomości przy użyciu algorytmu symetrycznego.Ponieważ szyfrowanie asymetryczne jest znacznie wolniejsze niż szyfrowanie symetryczne, jest to często wykonywane.Co więcej, mówi się, że DH jest budulcem asymetrycznego krypto, ponieważ jest bardzo podobny do RSA (który został opracowany później), a pełnoprawny algorytm szyfrowania można wyprowadzić z DH.
co się stanie, jeśli ktoś użyje naszego tajnego klucza, aby oszukać nas w kwestii swojej tożsamości.Jeśli ktoś zna ten sekret, może go użyć do ukrycia swojej tożsamości
@tylerl Możesz po prostu * zauważyć *, że ** g ** i ** p ** mają dodatkowe właściwości.Np. „Wymyślam dwie liczby pierwsze (które mają pewne dodatkowe właściwości, do których nie będziemy się zajmować) ** g ** i ** p ** i powiem ci, jakie one są”.
@tylerl Nie jestem pewien, czy jest to prawidłowe użycie Perfect Forward Secrecy (PFS).Z Twojej odpowiedzi wynika, że PFS obejmuje wymianę kluczy DH, jednak nie powinno to mieć miejsca.Na przykład ECDH i ECDHE są usuwane z DH, ale tylko ta ostatnia ma PFS z powodu generowania klucza efemerycznego w każdej sesji.
@Makif DH jest tym, co umożliwia PFS, ale ECDH (nie efemeryczne) przechowuje i ponownie używa kluczy, co w pewnym sensie pokonuje cel, jeśli PFS jest twoim celem.
Myślę, że mniej zagmatwanym sposobem wyrażenia równania jest to, że „(g ^ a) ^ b = g ^ ab” i „(g ^ b) ^ a = g ^ ba”, wszystko wykonane w trybie modulo p.W ten sposób wszędzie jest mniej „modów”.
Duncan Jones
2014-06-09 19:30:29 UTC
view on stackexchange narkive permalink

Pozostałe odpowiedzi świetnie wyjaśniają matematykę związaną z wymianą kluczy. Jeśli chcesz uzyskać bardziej obrazowe przedstawienie, nic nie przebije doskonałej analogii z farbą pokazanej na wymianie kluczy Diffiego – Hellmana Wpis w Wikipedii:


DH key exchange image

Obraz należy do domeny publicznej

Ten obraz świetnie wyjaśnia, co robi.Mój jedyny problem brzmiał: „Jeśli napastnik zna zwykłą farbę i zna końcowe mieszanki, dlaczego nie może ustalić oryginalnego koloru?”.Odpowiedź brzmi oczywiście, że nie jest to kolor, który musi znać, ale rzeczywista oryginalna mieszanka, a jak wspomniałeś, separacja mieszanki jest droga. Rzeczywista matematyka, która na to pozwala, również byłaby świetna, gdybyśmy ją w skrócie poznali.
Matematyka została wyjaśniona w innym miejscu, ale pomyśl o tym w ten sposób: powiedzmy, że „funkcja mieszania farby” to f (a, b) = (a + b)% 1000.Ty i ja ogłaszamy, że „wspólny sekret to 793”.Następnie powiem ci f (my_secret, 793) = 172. Jaki jest mój sekret?Zauważ, że f (a, f (b, 793)) == f (b, f (a, 793)).Rzeczywista funkcja używana przez DH nie jest taka prosta, ale ważne jest tylko, aby informacja została utracona i ta właściwość przemienności zachowuje.
Przykład koloru ma jedynie charakter poglądowy.Oczywiście obliczenie mieszanin kolorów jest trywialne;problem z dziennikiem dyskretnym, którego używa DH, nie jest.Zobacz https://en.wikipedia.org/wiki/Discrete_logarithm.
To bardzo sprytny i łatwy sposób, aby inni zrozumieli podstawy.
I czy Bob, czy Alice zaczynają to od publicznego wysłania drugiej farby?
@LightCC Powszechna farba jest zwykle znormalizowana, więc oboje wiedzą z góry, czego używa druga.Nie ma potrzeby, aby go wysyłali.W DH ten wspólny kolor nazywany jest "generatorem" lub _g_ i zwykle jest to liczba 2 lub 5. Operacja "+" w rzeczywistym DH to potęgowanie modulo publicznej liczby pierwszej _p_ (która może być lub nie być znana wcześniejwymiany, w zależności od realizacji).Do tego właśnie odnosi się mieszanie farby.Cofnięcie tego modularnego potęgowania jest trudne i to właśnie sprawia, że DH jest bezpieczny.
@forest Zatem fakt, że świat może wiedzieć, co to jest „zwykła farba”, nadal uniemożliwia im ustalenie, czym jest indywidualna tajna farba?A jeśli zaimplementujesz to w ten sposób, czy za każdym razem musisz wybierać losowe tajne kolory farb?Zakładam, że jeśli przez cały czas utrzymasz zwykłe i tajne kolory farby na stałym poziomie, stanie się to możliwe do zhakowania (poprzez zdecydowany, długotrwały wysiłek), a losowe zmienianie jednej (lub obu) i od czasu do czasu ponownego ustanawiania sesji rozwiąże ten problem.kwestia.
@LightCC Powszechna farba nie musi być zmieniana i nie ma problemu z bezpieczeństwem, utrzymując ją bez zmian.Analogia polega na mieszaniu, ale w rzeczywistości jest to modularne potęgowanie.Oblicza "g ^ x mod p", gdzie _g_ to zwykła farba, _x_ to tajna farba, a _p_ to liczba pierwsza, która jest konieczna, aby operacja mieszania była nieodwracalna.Chociaż _ jest_ prawdą, że używanie tego samego _p_ w kółko może _potencjalnie_ skutkować złamaniem systemu po określonym, długotrwałym wysiłku.Więcej informacji można znaleźć w [witrynie słabo dh] (https://weakdh.org/).
W kryptografii czasami to, co intuicyjne, niekoniecznie jest poprawne.Weźmy na przykład kryptosystem Rabin, który szyfruje za pomocą wiadomości _m_, obliczając „m ^ 2 mod pq” dla tajnych liczb pierwszych _p_ i _q_.Ta liczba 2 jest stała i nigdy się nie zmienia, a mimo to system Rabina został _ udowodniony_, że jest tak trudny jak rozkład na czynniki całkowite.Masz rację, że sekretną farbę trzeba często zmieniać.W przypadku standardowego „efemerycznego” DH (zwykle nazywanego DHE w pakietach TLS) zmienia się on przy każdej wymianie kluczy.
user10211
2013-11-24 08:35:19 UTC
view on stackexchange narkive permalink

Diffie-Hellman to algorytm używany do ustalenia wspólnego sekretu między dwiema stronami. Jest używany głównie jako metoda wymiany kluczy kryptograficznych do wykorzystania w algorytmach szyfrowania symetrycznego, takich jak AES.

Algorytm sam w sobie jest bardzo prosty. Załóżmy, że Alicja chce ustalić wspólny sekret z Bobem.

  1. Alicja i Bob uzgadniają liczbę pierwszą, p i podstawę, g , z góry. W naszym przykładzie załóżmy, że p = 23 i g=5.
  2. Alicja wybiera tajną liczbę całkowitą a , której wartość to 6 i oblicza A = g ^ a mod p . W tym przykładzie A ma wartość 8.
  3. Bob wybiera tajną liczbę całkowitą b, której wartość wynosi 15, i oblicza B = g ^ b mod p . W tym przykładzie B ma wartość 19.
  4. Alicja wysyła A do Boba, a Bob wysyła B do Alicji.
  5. Aby uzyskać wspólne hasło, Alicja oblicza s = B ^ a mod p . W tym przykładzie Alicja uzyskuje wartość s=2
  6. Aby uzyskać wspólne hasło, Bob oblicza s = A ^ b mod p . W tym przykładzie Bob uzyskuje wartość s=2.

Algorytm jest bezpieczny, ponieważ wartości a i b , które są wymagane do wyprowadzenia s , nie są w ogóle przesyłane przez przewód.

To fajne, ale mogłeś też zacytować, że pochodzi z [Wikipedii] (https://en.wikipedia.org/wiki/Diffie–Hellman_key_exchange#Cryptographic_explanation).
Dan Is Fiddling By Firelight
2013-11-24 21:41:47 UTC
view on stackexchange narkive permalink

Jeśli chcesz prostszego, prostego angielskiego wyjaśnienia DH, które byłoby łatwo zrozumiałe nawet dla osób nietechnicznych, jest analogia z podwójnie zamkniętym pudełkiem.

  1. Alice stawia tajemnicę w pudełku i zamyka je na kłódkę, do otwarcia której ma jedyny klucz. Następnie wysyła pudełko do Boba.

  2. Bob otrzymuje pudełko, zakłada drugą kłódkę, do której tylko on ma klucz, i wysyła je z powrotem do Alicji.

  3. Alicja zdejmuje swój zamek i wysyła pudełko do Boba po raz drugi.

  4. Bob zdejmuje zamek, otwiera pudełko i ma dostęp do sekretu, który wysłała mu Alice.

Ponieważ pudełko zawsze miało co najmniej jedną blokadę podczas transportu, Ewa nigdy nie ma możliwości sprawdzenia, co jest w środku i ukradnij sekret: w tym klucz kryptograficzny, który zostanie użyty do zaszyfrowania pozostałej części komunikacji Alicji i Boba.

To właśnie nazywam prostym angielskim wyjaśnieniem. kocham Cię stary.
Chociaż jest to zwykły angielski, to nie opisuje Diffie-Hellmana. Opisuje [protokół trójprzebiegowy] (http://en.wikipedia.org/wiki/Three-pass_protocol), który ma znacząco inne właściwości niż DH. Na przykład wymaga trzech przejazdów, podczas gdy DH wymaga tylko jednego przejazdu.
Myślę, że CodesInChaos oczekuje dużej dokładności od celowo uproszczonej analogii.Pomogło mi to lepiej zrozumieć analogię z farbą, co pomogło mi lepiej zrozumieć te dokładniejsze.(Zauważ, że pudełka mają otwory do odblokowania zbyt małe, aby wyjąć ciasteczka z najbardziej wewnętrznego pudełka. To właśnie mnie wyrzuciło.)
Nie jest to kwestia „dużej dokładności”.Analogia z zamkniętym pudełkiem w ogóle nie przypomina Diffiego Hellmana.
To przynajmniej pokazuje, że jest to możliwe.Początkowo niektórzy myślą, że w zasadzie nie można stworzyć wspólnego klucza w obserwowalnym kanale.
@NanbanJim W ogóle nie reprezentuje Diffiego Hellmana, po prostu pokazuje inną metodę wymiany tajemnicy.
DH nie wymienia tajemnic tak jak to robi, generuje je, ale to fajna lektura
Dzięki!to bardzo dobra i rozsądna analogia!(choć nie wyjaśnia DHE)
jeśli nie mógłbyś wyobrazić sobie tego prostego wyjaśnienia w swojej głowie bez przeczytania go po raz drugi (ja to zrobiłem), oto film z niesamowitej serii wykładów naukowych Królewskiego Instytutu, wyjaśniający to https://youtu.be/U62S8SchxX4?t=85 tymoże wyraźnie policzyć trzy podania @CodesInChaos.
aiao
2015-12-16 05:54:51 UTC
view on stackexchange narkive permalink

Problem z wymianą kluczy

Bezpieczne połączenie wymaga wymiany kluczy, ale same klucze musiałyby być przesłane bezpiecznym połączeniem.

Istnieją dwa możliwe rozwiązania:

  1. wymienić klucz, fizycznie spotykając się i udostępniając klucze.
  2. W jakiś sposób ustalono wspólny sekret na publicznym niezabezpieczonym kanale. Łatwiej to powiedzieć niż zrobić, a pierwszą taką implementacją jest schemat Diffiego-Hellmana.

Właściwości

Diffie-Hellman używa funkcji matematycznej z następujące właściwości:

  1. Obliczenie f [x] (z x)
  2. Jest to ŁATWE TRUDNO odwrócić f [x] , aby uzyskać x
  3. ŁATWO obliczyć S z A i f[B]
  4. Obliczanie S z B i f [jest ŁATWE A]
  5. Trudno jest obliczyć S bez A lub B (nawet z f [A] and f[B])

Jak działa schemat DH

  1. Alice wychodzi z losową liczbą A . Oblicza f [A] i wysyła f [A] do Boba. Alicja nigdy nie ujawnia swojego A , nawet Bobowi.
  2. Bob wychodzi z kolejną losową liczbą B . Oblicza f [B] i wysyła f [B] do Alicji. Bob nigdy nie ujawnia swojego B , nawet Alice.
  3. Alicja oblicza S używając A i f [ B] . Bob oblicza S przy użyciu B i f[A]
  4. Mallory, który podsłuchuje, ma tylko f [A] i f [B] , więc trudno jej obliczyć S.
  5. Alicja i Bob udostępniają teraz wspólny sekret, którego można użyć jako (lub wymyślić) klucza do ustanowienia bezpiecznego połączenia.

Uwaga dodatkowa:

Schemat Diffiego-Hellmana nie zapewnia żadnego rodzaju uwierzytelniania. Tylko 2 anonimowe osoby mogą dzielić się wspólnym sekretem. Ale o ile Alice wie, mogłaby uścisnąć dłoń diabłu (zamiast Boba). Dlatego potrzebujemy uwierzytelnienia co najmniej jednej strony.

Na przykład: SSL (https), serwer sieciowy jest uwierzytelniany przy użyciu PKI (infrastruktury klucza publicznego), a następnie nawiązywane jest bezpieczne połączenie (DH) między witryną a klientem. Ponieważ witryna sieci Web została uwierzytelniona, klient może ufać witrynie sieci Web, ale witryna nie może ufać klientowi. Klient może teraz bezpiecznie podać swoje własne dane uwierzytelniające na stronie internetowej.

Naprawdę doceniam tę dodatkową notatkę, która odpowiada na dręczące pytanie, które miałem, ale nie mogłem do końca wyjaśnić.
Eddie
2018-10-27 00:59:11 UTC
view on stackexchange narkive permalink

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.

Diffie-Hellman Key Exchange -- pracnet.net/crypto

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.

+1 za ilustrowaną próbkę!Narysowałeś to, czy wybrałeś je gdzie indziej?Jeśli tak, czy możesz opublikować pochodzenie tego zdjęcia?
@F.Hauri narysowałem to =).Został pierwotnie opublikowany na moim blogu: https://www.practicalnetworking.net/series/cryptography/diffie-hellman/
Dobra robota, dobra robota!Interesują mnie źródła do robienia tłumaczeń!
Lucas Kauffman
2013-11-24 07:20:00 UTC
view on stackexchange narkive permalink

Diffie-Hellman to algorytm matematyczny służący do wymiany wspólnego sekretu między dwiema stronami. To wspólne hasło może służyć do szyfrowania wiadomości między tymi dwiema stronami. Należy zauważyć, że algorytm Diffiego-Hellmana nie zapewnia uwierzytelniania między tymi dwiema stronami.

Brakuje wyjaśnienia, chciałbym, żebyś mógł wyjaśnić trochę więcej ...
Chciałeś angielskiego wyjaśnienia bez matematyki.
W przypadku połączenia HTTPS uwierzytelnianie jest obsługiwane przez strukturę certyfikatów SSL. Możesz być pewien (tak jak możesz), że komunikujesz się z docelowymi stronami poprzez weryfikację i zaufanie. Uzgadnianie / negocjowanie połączenia SSL jest kosztowne pod względem narzutu. Algorytm DH umożliwia obu stronom bezpieczne negocjowanie klucza symetrycznego do szyfrowania / deszyfrowania, co jest znacznie bardziej wydajne.
securityOrange
2018-10-27 06:27:53 UTC
view on stackexchange narkive permalink

Filmy Computerphile Diffie-Hellman są absolutnie spektakularne, jeśli chodzi o wyjaśnienia tej wymiany kluczy. Ich film „ Secret Key Exchange (Diffie-Hellman)” jest dość dokładny, ale ich wyjaśnienie matematyki stojącej za DH jest najlepsze, z jakim do tej pory spotkałem się w jakimkolwiek medium (i na pewno lepsze niż co osobiście mógłbym tu napisać). Spójrz tutaj.

Stanislav Bashkyrtsev
2019-12-09 00:51:17 UTC
view on stackexchange narkive permalink

Cel Diffiego – Hellmana: potajemnie udostępniaj numer między dwiema stronami przez otwarty kanał.

Najpierw przypomnij sobie ze szkoły te reguły potęgowania: (xᵃ) ᵇ = xᵃᵇ = xᵇᵃ np. (2³) ⁴ = (2⁴) ³ = 4096 . Chodzi o to, że jeśli Alicja wyśle ​​ x i xᵃ Bobowi, to ani Bob, ani nikt inny nie może obliczyć a . Łatwo powiedzieć, czym jest 2³, ale biorąc pod uwagę 8, trudno powiedzieć, do której potęgi 2 należy doprowadzić, aby uzyskać 8. A więc sprowadza się to do:

  1. Alicja i Bob zgadzają się co do liczby x , który może być znany każdemu, powiedzmy 2
  2. Alicja generuje a = 3 i wysyła 2³ = 8 do Boba
  3. Bob generuje numer b = 4 i wysyła 2⁴ = 16 do Alicji
  4. Alice oblicza 16³ = 4096 , a Bob oblicza 8⁴=4096

Tak więc obie Alice & Bob znają 4096, ale nikt inny nie wie a i b , więc nie można obliczyć xᵃᵇ.

W rzeczywistości obliczanie logarytmów nie jest takie skomplikowane. Ale staje się to skomplikowane, gdy uwzględni się arytmetykę modularną .

eigenfield
2019-12-19 15:51:10 UTC
view on stackexchange narkive permalink

W zwykłym języku angielskim bez użycia wyrażeń matematycznych, jak w powyższych odpowiedziach, Diffie-Hellman Key Exchange jest wynalazkiem Diffiego i Hellmana.

Wynalazek to sposób na uzgodnienie przez dwie osoby tej samej liczby. Ta wspólna, uzgodniona liczba będzie następnie używana do dowolnych celów. Na przykład, po wykonaniu czynności DH Key Exchange , efekt końcowy jest taki, że obie osoby przychodzą teraz pod ten sam numer. Żadna z dwóch osób nie ma kontroli nad tym, jaka będzie ta wspólna liczba. Wynalazek DH Key Exchange gwarantuje jedynie, że obie osoby dotrą do wspólnego numeru. Przykładowym zastosowaniem po osiągnięciu tej wspólnej liczby jest przekazanie liter alfabetu za pomocą tej liczby. Na przykład, jeśli wspólną liczbą jest 5, litera A staje się F, litera B staje się G i tak dalej podczas wysyłania wiadomości. Druga osoba otrzymująca wiadomość cofnie następnie każdą literę wiadomości, aby ją przeczytać.

Person-A i person-B nie mogli po prostu głośno rozmawiać, aby uzgodnić wspólny numer, ponieważ trzecia osoba-C usłyszy to. Jeśli person-C zna uzgodniony numer, może również odczytać tajną wiadomość. DH Key Exchange zawsze wymaga, aby zawsze istniała trzecia person-C , która może odsłuchiwać wiadomości między person-A i person-B i ten scenariusz dla trzech osób jest głównym celem wynalazku polegającym na tym, jak uniemożliwić person-C czytaj tajne zakodowane wiadomości między person-A i person-B .

W pierwszych krokach DH Key Exchange , person-A i person-B wyślą kilka numerów tam i z powrotem oraz na ta wczesna faza person-C może czytać te pierwsze wiadomości. W drugiej fazie person-A i person-B będą wysyłać zaszyfrowane wiadomości, których person-C nie może już odczytać. Pomimo faktu, że person-C może usłyszeć początkowe wiadomości podczas pierwszych kroków, person-C nie może dotrzeć do uzgodnionego numeru, który person-A i person-B mają teraz.

Diffie i Hellman otrzymali nagrodę Turing Award w 2015 roku za ten wynalazek.

Luc
2020-01-20 03:14:14 UTC
view on stackexchange narkive permalink

Napisałem to kiedyś jako koncepcję przemówienia, którego nigdy nie wygłosiłem. Pokazuje prawdziwą kryptografię przy użyciu poziomu matematyki, który każdy może zrobić po szkole średniej.

Ponieważ jest napisany jako wykład, to jest Diffie-Hellman w prostym języku angielskim!

Hej ty! Skonfigurujmy zaszyfrowany kanał. Wyślę ci mój klucz, a ty wyślesz mi swój, a potem porozmawiamy prywatnie.

Co powiedziałeś? Każdy nas słyszy? Tak, to żaden problem!

Możemy użyć Diffie-Hellmana. Wystarczy pomyśleć o liczbie losowej i podnieść 5 do potęgi tej liczby losowej. Wynik podziel przez 23 i zrób resztę. Daj mi to. Oryginalna liczba losowa, którą należy zachować w tajemnicy, pozostałe liczby są powszechnie znane.

Pozostała część to 8? W porządku. Moja reszta to 10. Teraz ponownie podnieś moją resztę do potęgi twojej sekretnej liczby losowej, podziel przez 23 i weź resztę. To samo, łatwe peasy. Zrobię to samo z twoim numerem i moją sekretną liczbą losową.

Masz wynik? Świetnie, ja też! Wiem, że masz 6, tak jak ja, a jednak nikt inny w tym pokoju nie mógł tego obliczyć. Mogli wypróbować każdą możliwą kombinację, dopóki nie znaleźli liczb losowych, które pasują do tego, co usłyszeli (8 z twojej strony i 10 z mojej), ale nie ma sposobu, aby obliczyć to wydajniej niż próbując wszystkich możliwości. Mogliśmy użyć wyniku 6 jako hasła. Nikt nie znałby hasła, którego używamy, pomimo usłyszenia wymiany. Ale to bardzo słabe hasło. Następnym razem powinniśmy wybrać większe liczby i użyć kalkulatora do stworzenia dłuższego i silniejszego hasła.

Zauważ, że to zadziałało, ponieważ możemy się widzieć. Wiem, że nikt inny nie mówi, kiedy mówisz mi, że masz 8, ponieważ widzę, jak poruszają się Twoje usta. W Internecie ktoś mógłby przeprowadzić atak, udając drugą stronę i podając fałszywe liczby. Sposób zapobiegania tym atakom to temat na inny dzień.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...