Domanda:
"Diffie-Hellman Key Exchange" in inglese semplice
user15119
2013-11-24 07:10:08 UTC
view on stackexchange narkive permalink

Qualcuno può spiegarmi che cos'è lo scambio di chiavi Diffie-Hellman in un inglese semplice? Ho letto in una pagina di notizie non tecnologiche che Twitter ha appena implementato questa tecnologia che consente a due persone di scambiare messaggi crittografati su un canale non protetto. Com'è (se è vero)?

Wikipedia ha una [spiegazione pittorica] (https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange#Description).
YouTube ha un (simpatico e facile) [video di spiegazione] (https://www.youtube.com/watch?v=YEBfamv-_do&list=PL87386AD236727A1B&index=8) :)
Ho trovato questo video utile alla comprensione - https://www.youtube.com/watch?v=YEBfamv-_do
Il mio video DH preferito: https://www.youtube.com/watch?v=NmM9HA2MQGI
Trovo viziata l'analogia del colore (wikipedia e youtube).Mescolare il colore "privato" con il colore dell'altra parte non rende lo stesso colore segreto.In realtà ho fatto il mixaggio.
Undici risposte:
tylerl
2013-11-24 13:28:12 UTC
view on stackexchange narkive permalink

Diffie-Hellman è un modo per generare un segreto condiviso tra due persone in modo tale che il segreto non possa essere visto osservando la comunicazione. Questa è una distinzione importante: non condividi informazioni durante lo scambio di chiavi, ma crei una chiave insieme.

Questo è particolarmente utile perché puoi usare questa tecnica per creare una chiave di crittografia con qualcuno e quindi iniziare a crittografare il tuo traffico con quella chiave. E anche se il traffico viene registrato e successivamente analizzato, non c'è assolutamente alcun modo per capire quale fosse la chiave, anche se gli scambi che l'hanno creata potrebbero essere stati visibili. Da qui deriva la segretezza perfetta in avanti. Nessuno che analizza il traffico in un secondo momento può intervenire perché la chiave non è mai stata salvata, mai trasmessa e mai resa visibile da nessuna parte.

Il modo in cui funziona è ragionevolmente semplice. Gran parte della matematica è la stessa che vedi nella crittografia a chiave pubblica in quanto viene utilizzata una funzione trapdoor. E mentre il problema del logaritmo discreto è tradizionalmente utilizzato (il business x y mod p ), il processo generale può essere modificato per utilizzare anche la crittografia a curva ellittica.

Ma anche se utilizza gli stessi principi di base della crittografia a chiave pubblica, questa non crittografia asimmetrica perché nulla viene mai crittografato o decrittografato durante lo scambio. Tuttavia, è un elemento fondamentale ed è stata in effetti la base su cui è stata successivamente costruita la crittografia asimmetrica.

L'idea di base funziona in questo modo:

  1. I trova un numero primo p e un numero g che è coprimo con p-1 e ti dice cosa sono.
  2. Quindi scegli un numero segreto ( a ), ma non lo dici a nessuno. Invece, calcoli ga mod p e mi rimandi il risultato. (La chiameremo A poiché proviene da a”).
  3. Faccio la stessa cosa, ma chiameremo il mio numero segreto b e il numero calcolato B . Quindi calcolo gb mod p e ti invio il risultato (chiamato " B ")
  4. Ora, prendi il numero che ti ho inviato e fai la stessa identica operazione con esso . Quindi questo è Ba mod p .
  5. Faccio la stessa operazione con il risultato che mi hai inviato, quindi: Ab mod p

    a

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

    Il che, se esamini più da vicino, significa che otterrai la stessa risposta indipendentemente dall'ordine in cui esegui l'elevamento a potenza. Quindi lo faccio in un ordine e tu lo fai nell'altro. Non so mai quale numero segreto hai usato per ottenere il risultato e non sai mai quale numero ho usato, ma arriviamo comunque allo stesso risultato.

    Quel risultato, quel numero in cui ci siamo imbattuti entrambi nei passaggi 4 e 5, è la nostra chiave segreta condivisa. Possiamo usarlo come password per AES o Blowfish o qualsiasi altro algoritmo che utilizza segreti condivisi. E possiamo essere certi che nessun altro, nessuno tranne noi, conosce la chiave che abbiamo creato insieme.

DH è una chiave pubblica / asimmetrica * crypto * ma non * crittografata *.
Penso che valga la pena ricordare che il motivo per cui questo è sicuro è che, a differenza del normale log (x), si ritiene che il log modulare (x) sia difficile da calcolare. Altrimenti potremmo semplicemente fare `log_g (A)` e `log_g (B)` per ottenere `a` e` b`.
Penso che potresti anche voler aggiungere che ** `g` ** non è solo un numero primo ma un generatore (o una radice primitiva) di **` p` **
@TheRookierLearner questa risposta è una * spiegazione semplificata * di DH; ci sono alcuni dettagli importanti omessi per semplicità. Questo non dovrebbe essere considerato un tutorial sull'implementazione.
Ma supponendo che si tratti di una rete non sicura, non posso semplicemente trovare la radice di "A" e quindi "a".e voilà!scusa per la mia domanda amatoriale ma devo imparare: p
@Mero55 Non stai solo trovando la radice di A, ma anche le radici di A, A + p, A + 2p, A + 3p, ... finché il risultato è un numero intero.
Brillantemente spiegato!Grazie mille per la chiara risposta: D.
perché questo è l'elemento costitutivo della crittografia asimmetrica?se le chiavi scoperte e utilizzate su entrambi i lati sono le stesse, queste non sono chiavi simmetriche?
Perché $ g $ deve essere primo?Ad esempio, se $ g \ neq2 $ funziona, funziona anche $ p-g $ (e anche se non è primo).Sicuramente stabilire che $ g $ è il primo riduce le tue opzioni ... (e quindi rende la chiave "più facile" da indovinare).
grazie mille per questa chiara spiegazione del DH :)
Per ragioni di sicurezza, i numeri primi ** a ** e ** b ** dovrebbero essere entrambi ragionevolmente * alti * e avere una certa distanza l'uno dall'altro.
@whytheq sì, dopo la procedura DH entrambe le parti ottengono la stessa chiave segreta.Questa chiave può quindi essere (e in genere viene) utilizzata per crittografare i messaggi utilizzando un algoritmo simmetrico.Poiché la crittografia asimmetrica è molto più lenta di quella simmetrica, spesso ciò viene fatto.Inoltre, si dice che DH sia l'elemento costitutivo della crittografia asimmetrica perché è molto simile a RSA (che è stato sviluppato in seguito) e da DH può essere derivato un algoritmo di crittografia completo.
cosa succede se qualcuno usa la nostra chiave segreta per ingannarci sulla sua identità.Se qualcuno conosce quel segreto può usarlo per nascondere la sua identità
@tylerl Potresti * notare * che ** g ** e ** p ** hanno proprietà aggiuntive.Ad esempio, "Trovo due numeri primi (che hanno alcune proprietà aggiuntive in cui non entreremo) ** g ** e ** p ** e ti dico cosa sono".
@tylerl Non sono sicuro che questo sia l'uso corretto di Perfect Forward Secrecy (PFS).Dalla tua risposta, si deduce che PFS viene fornito con lo scambio di chiavi DH, tuttavia questo non dovrebbe essere il caso.Ad esempio, ECDH ed ECDHE sono entrambi deselezionati da DH ma solo quest'ultimo ha PFS a causa della generazione di chiavi effimere in ogni sessione.
@Makif DH è ciò che rende possibile PFS, ma ECDH (non temporaneo) memorizza e riutilizza le chiavi, il che in qualche modo vanifica lo scopo se PFS è il tuo obiettivo.
Penso che un modo meno confuso per affermare l'equazione sia che "(g ^ a) ^ b = g ^ ab" e "(g ^ b) ^ a = g ^ ba", tutto fatto in modulo p.In questo modo c'è meno "mod" dappertutto.
Duncan Jones
2014-06-09 19:30:29 UTC
view on stackexchange narkive permalink

Le altre risposte fanno un ottimo lavoro spiegando la matematica alla base dello scambio di chiavi. Se desideri una rappresentazione più pittorica, niente batte l'eccellente analogia con la pittura mostrata nella voce di Wikipedia scambio di chiavi Diffie – Hellman:


DH key exchange image

L'immagine è di pubblico dominio

Questa immagine è ottima per spiegare cosa fa.Il mio unico problema era "Se l'attaccante conosce la vernice comune e conosce le miscele finali, perché non riesce a capire il colore originale?".La risposta è ovviamente che non è il colore che ha bisogno di sapere, ma la miscela originale effettiva e, come hai detto, la separazione della miscela è costosa. Sarebbe bello conoscere anche la matematica effettiva che lo consente.
La matematica è stata spiegata altrove, ma pensala in questo modo: diciamo che la "funzione di miscelazione della vernice" è f (a, b) = (a + b)% 1000.Tu ed io annunciamo "il segreto condiviso è 793".Allora ti dico f (my_secret, 793) = 172. Qual è il mio segreto?Notare che f (a, f (b, 793)) == f (b, f (a, 793)).La funzione effettiva utilizzata da DH non è così semplice, ma tutto ciò che è importante è che le informazioni vengono perse e questa proprietà commutativa vale.
L'esempio a colori è solo illustrativo.Ovviamente il calcolo delle miscele di colore è banale;il problema del registro discreto utilizzato da DH non lo è.Vedi https://en.wikipedia.org/wiki/Discrete_logarithm.
Questo è un modo semplice e intelligente per far capire agli altri i fondamenti.
E Bob o Alice lo iniziano inviando pubblicamente la vernice comune all'altro?
@LightCC La vernice comune è solitamente standardizzata, quindi entrambi sanno in anticipo cosa sta usando l'altro.Non è necessario che lo inviino.In DH, questo colore comune è chiamato "generatore", o _g_, ed è solitamente il numero 2 o 5. L'operazione "+" nella DH realeèun esponenziale modulo un primo pubblico _p_ (che può o non può essere conosciuto in anticipo invecedi essere scambiati, a seconda dell'implementazione).Questo è ciò a cui si riferisce la miscelazione della vernice.Annullare questo esponenziale modulare è difficile ed è questo che rende sicuro il DH.
@forest Quindi, il fatto che il mondo possa sapere cos'è la "vernice comune", impedisce loro di capire quale sia la vernice segreta individuale?O se lo implementi in questo modo, devi scegliere ogni volta colori di pittura segreti casuali?La mia ipotesi è che se mantieni costanti i colori comuni e segreti per tutto il tempo, diventa hackerabile (attraverso uno sforzo determinato, a lungo termine), e che variando uno (o entrambi) casualmente e ristabilendo sessioni occasionalmente, si risolverà il problemaproblema.
@LightCC La vernice comune non ha bisogno di essere cambiata e non c'è problema di sicurezza nel mantenerla uguale.L'analogia implica il mixaggio, ma in realtà è un esponenziale modulare.Calcola "g ^ x mod p", dove _g_ è la vernice comune, _x_ è la vernice segreta e _p_ è un numero primo necessario per rendere irreversibile l'operazione di miscelazione.Anche se _ è_ vero che usare lo stesso _p_ ripetutamente può _potenzialmente_ rendere il sistema fragile dopo uno sforzo determinato e prolungato.Il [sito weakdh] (https://weakdh.org/) spiega di più.
In crittografia, a volte ciò che è intuitivo non è necessariamente corretto.Prendiamo ad esempio il sistema crittografico Rabin, che crittografa con un messaggio _m_ calcolando "m ^ 2 mod pq" per i primi segreti _p_ e _q_.Quel numero 2 è una costante e non cambia mai, eppure il sistema Rabin ha dimostrato di essere duro come la fattorizzazione dei numeri interi.Hai ragione, però, la vernice segreta deve essere cambiata spesso.Per DH "effimero" standard (di solito chiamato DHE nelle suite TLS), cambia per ogni singolo scambio di chiavi.
user10211
2013-11-24 08:35:19 UTC
view on stackexchange narkive permalink

Diffie-Hellman è un algoritmo utilizzato per stabilire un segreto condiviso tra due parti. Viene utilizzato principalmente come metodo per lo scambio di chiavi di crittografia da utilizzare in algoritmi di crittografia simmetrica come AES.

L'algoritmo di per sé è molto semplice. Supponiamo che Alice voglia stabilire un segreto condiviso con Bob.

  1. Alice e Bob concordano su un numero primo, p , e una base, g , in anticipo. Per il nostro esempio, supponiamo che p = 23 e g=5.
  2. Alice scelga un intero segreto a il cui il valore è 6 e calcola A = g ^ a mod p . In questo esempio, A ha il valore 8.
  3. Bob sceglie un intero segreto b il cui valore è 15 e calcola B = g ^ b mod p . In questo esempio, B ha il valore 19.
  4. Alice invia A a Bob e Bob invia B ad Alice.
  5. Per ottenere il segreto condiviso, Alice calcola s = B ^ a mod p . In questo esempio, Alice ottiene il valore di s=2
  6. Per ottenere il segreto condiviso, Bob calcola s = A ^ b mod p . In questo esempio, Bob ottiene il valore di s=2.

L'algoritmo è sicuro perché i valori di a e b , che sono necessari per derivare s non vengono trasmessi affatto attraverso il cavo.

È carino, ma potresti anche citare che proviene da [Wikipedia] (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

Se vuoi una spiegazione in inglese più semplice del DH che possa essere facilmente compresa anche da persone non tecniche, c'è l'analogia con la doppia scatola chiusa.

  1. Alice mette un segreto in una scatola e la chiude con un lucchetto che ha l'unica chiave per aprire. Quindi spedisce la scatola a Bob.

  2. Bob riceve la scatola, mette un secondo lucchetto su cui solo lui ha la chiave e lo rispedisce ad Alice.

  3. Alice rimuove il lucchetto e spedisce la scatola a Bob una seconda volta.

  4. Bob rimuove il lucchetto, apre la scatola e ha accesso al segreto che Alice gli ha inviato.

Poiché la scatola ha sempre avuto almeno un lucchetto durante il trasporto, Eve non ha mai la possibilità di vedere cosa c'è nel lato e ruba il segreto: in questo una chiave crittografica che verrà utilizzata per crittografare il resto delle comunicazioni di Alice e Bob.

Questa è quella che io chiamo una semplice spiegazione in inglese. ti amo uomo.
Sebbene sia un inglese semplice, questo non descrive Diffie-Hellman. Descrive il [protocollo a tre passaggi] (http://en.wikipedia.org/wiki/Three-pass_protocol) che ha proprietà significativamente diverse da DH. Ad esempio richiede tre passaggi, mentre DH richiede solo un passaggio singolo.
Penso che CodesInChaos si aspetti molta precisione da un'analogia volutamente semplificata.Questo mi ha aiutato a capire meglio l'analogia con la pittura, il che mi ha aiutato a capire meglio quelle più accurate.(Nota che le scatole hanno fori di sblocco troppo piccoli per estrarre i biscotti dalla scatola più interna. Questo è ciò che mi ha lanciato all'inizio.)
Non è questione di "molta precisione".L'analogia della scatola chiusa non assomiglia affatto a Diffie Hellman.
Almeno questo dimostra che è possibile.Inizialmente alcune persone pensano che la chiave condivisa su un canale osservabile non possa essere creata in linea di principio.
@NanbanJim Non rappresenta affatto Diffie Hellman, mostra solo un altro metodo, per scambiare segreti.
DH non scambia segreti come questo, li genera, ma è una lettura divertente
Grazie!questa è un'analogia molto buona e sensata!(sebbene non spieghi DHE)
se non riesci a visualizzare questa semplice spiegazione nella tua testa senza leggerla una seconda volta (l'ho fatto), ecco un video da una fantastica serie di conferenze scientifiche pubbliche della Royal Institution che la spiega https://youtu.be/U62S8SchxX4?t=85 tupuò chiaramente contare i tre passaggi @CodesInChaos menzionati.
aiao
2015-12-16 05:54:51 UTC
view on stackexchange narkive permalink

Il problema dello scambio di chiavi

Una connessione sicura richiede lo scambio di chiavi, ma le chiavi stesse dovrebbero essere trasferite su una connessione sicura.

Ci sono due possibili soluzioni:

  1. scambiare la chiave incontrando e condividendo fisicamente le chiavi.
  2. In qualche modo stabilito un segreto condiviso su un canale pubblico non protetto. Questo è più facile a dirsi che a farsi, e la prima implementazione di questo tipo è lo schema Diffie-Hellman.

Proprietà

Diffie-Hellman fa uso di una funzione matematica con le seguenti proprietà:

  1. È FACILE calcolare f [x] (da x)
  2. È DIFFICILE invertire f [x] per ottenere x
  3. È FACILE calcolare S da A e f[B”
  4. È FACILE calcolare S da B e f [ A]
  5. È DIFFICILE calcolare S senza A o B (anche con f [A] and f[B”)

Come funziona lo schema DH

  1. Viene fuori Alice con un numero casuale A . Calcola f [A] e invia f [A] a Bob. Alice non rivela mai la sua A , nemmeno a Bob.
  2. Bob esce con un altro numero casuale B . Calcola f [B] e invia f [B] ad Alice. Bob non rivela mai il suo B , nemmeno ad Alice.
  3. Alice calcola S usando A e f [ B] . Bob calcola S utilizzando B e f[A”
  4. Mallory, che sta ascoltando, ha solo f [A] e f [B] , quindi è DIFFICILE per lei calcolare S.
  5. Alice e Bob ora condividono un segreto comune che può essere utilizzato come (o per inventare) una chiave per stabilire una connessione sicura.

Nota a margine:

Lo schema Diffie-Hellman non fornisce autenticazioni di alcun tipo. Consente solo a 2 parti anonime di condividere un segreto comune. Ma per quanto ne sa Alice, potrebbe stringere la mano al diavolo (invece che a Bob). Questo è il motivo per cui abbiamo bisogno che almeno una parte sia autenticata.

Ad esempio: SSL (https), il server web viene autenticato utilizzando PKI (Public Key Infrastructure), quindi viene stabilita una connessione sicura (DH) tra il sito web e il cliente. Poiché il sito Web è stato autenticato, il client può fidarsi del sito Web, ma il sito Web non può fidarsi del client. Ora è sicuro per il client fornire i propri dettagli di autenticazione sulla pagina web.

Apprezzo molto la nota a margine qui, ha risposto a una domanda fastidiosa che avevo ma non riuscivo a delucidare del tutto.
Eddie
2018-10-27 00:59:11 UTC
view on stackexchange narkive permalink

La protezione dei dati mentre passano attraverso Internet di solito richiede la protezione in due modi:

  • Riservatezza - garantendo nessuno tranne i destinatari previsti possono leggere i dati
  • Integrità , assicurandosi che nessuno possa modificare o manomettere i dati in transito

La riservatezza viene fornita utilizzando la crittografia simmetrica e l'integrità viene fornita utilizzando un codice di autenticazione dei messaggi (MAC).

Sia la crittografia simmetrica che i MAC richiedono che entrambe le parti abbiano chiavi identiche e segrete (una "chiave" in questo senso è semplicemente un numero, convertito in binario).

Il problema quindi è come fanno entrambe le parti a stabilire chiavi identiche e segrete su Internet? (o qualsiasi altro mezzo insicuro). Questo è noto come " il problema di scambio delle chiavi ".

Una delle soluzioni per questo problema è l'algoritmo Diffie-Hellman.


Diffie-Hellman consente a due parti di stabilire un segreto condiviso su un mezzo non sicuro . O, per dirla più semplicemente ...

Immagina che tu e il tuo amico foste in una stanza affollata, circondati da persone dall'aspetto dubbioso. Supponi che tu e il tuo amico doveste concordare un numero identico, ma non volete che nessun altro nella stanza sappia qual è il numero. Diffie-Hellman consentirebbe a te e al tuo amico di scambiare abilmente alcuni numeri e da quei numeri calcola un altro numero identico. E anche se tutti nella stanza hanno sentito i numeri scambiati, non hanno modo di determinare il numero finale a cui tu e il tuo amico siete arrivati.

Possiamo vedere un esempio di ciò che si verifica nell'immagine qui sotto. Alice e Bob useranno lo scambio di chiavi Diffie-Hellman per stabilire un segreto condiviso.

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

Chiunque "ascoltasse" la conversazione "ascolterebbe" solo i numeri scambiati al centro: 13 , 6 , 2 , 9 . Non esiste un modo coerente per combinare questi quattro numeri per ottenere il segreto condiviso finale: 3 senza conoscere uno dei valori privati ​​di Alice o Bob ( 5 o 4 ) che non sono mai stati condivisi.

Questo è il bello di Diffie-Hellman.

I numeri usati nell'esempio sopra sono piccoli per mantenere la matematica semplice. In realtà, i numeri utilizzati nei moderni scambi Diffie-Hellman sono (o dovrebbero essere) almeno 2048 bit, il che richiederebbe circa 617 cifre per essere scritti !!


Dopo aver terminato lo scambio di chiavi Diffie-Hellman, entrambe le parti ora possiedono un valore identico, noto solo a ciascuna parte.

Questo valore diventa il "punto di partenza" da cui possono essere generate chiavi aggiuntive.

In precedenza, abbiamo menzionato la crittografia simmetrica e i codici di autenticazione dei messaggi che richiedono ciascuno una chiave segreta. Bene, prendi il tuo DH Shared Secret e combinalo con alcuni altri valori e ora hai la crittografia e le chiavi MAC di cui hai bisogno.

Il vantaggio aggiuntivo è che combinare i valori per creare le chiavi è facile ... essere eseguito tutte le volte necessarie.

In effetti, molti protocolli di sicurezza (SSL / TLS, IPsec, ecc.) generano un set di chiavi per proteggere il traffico in ogni direzione - un totale di quattro chiavi (MAC + crittografia in una direzione, MAC + crittografia nell'altra direzione). Tutte e quattro le chiavi sono state generate dallo stesso valore iniziale iniziale, derivato da Diffie-Hellman.

+1 per campione illustrato!Hai disegnato questo o li hai scelti altrove?In tal caso, potresti pubblicare l'origine di questa immagine?
@F.Hauri l'ho disegnato =).È originariamente pubblicato sul mio blog: https://www.practicalnetworking.net/series/cryptography/diffie-hellman/
Bel lavoro, ben fatto!Mi interessano le fonti per la traduzione!
Lucas Kauffman
2013-11-24 07:20:00 UTC
view on stackexchange narkive permalink

Diffie-Hellman è un algoritmo matematico per lo scambio di un segreto condiviso tra due parti. Questo segreto condiviso può essere utilizzato per crittografare i messaggi tra queste due parti. Si noti che l'algoritmo Diffie-Hellman non fornisce l'autenticazione tra queste due parti.

Manca la spiegazione, vorrei che tu mi spiegassi un po 'di più ...
Volevi una spiegazione in inglese senza matematica.
Nel caso di una connessione HTTPS, l'autenticazione è gestita dal framework del certificato SSL. Puoi essere certo (come puoi essere) che stai comunicando con le parti previste attraverso la verifica e la fiducia. La stretta di mano / negoziazione di una connessione SSL è costosa in termini di sovraccarico. L'algoritmo DH consente a entrambe le parti di negoziare in modo sicuro una chiave simmetrica per la crittografia / decrittografia che è molto più efficiente.
securityOrange
2018-10-27 06:27:53 UTC
view on stackexchange narkive permalink

I video Diffie-Hellman di Computerphile sono assolutamente spettacolari quando si tratta di spiegazioni di questo scambio di chiavi. Il loro video " Secret Key Exchange (Diffie-Hellman)" è abbastanza approfondito, ma la loro spiegazione della matematica dietro DH è la migliore che abbia mai incontrato finora in qualsiasi mezzo (e sicuramente migliore di quello che personalmente potrei scrivere per te qui). Dai un'occhiata qui.

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

Obiettivo di Diffie – Hellman: condividere segretamente un numero tra due parti su un canale aperto.

Per prima cosa ricorda dalla scuola queste regole di esponenziazione: (xᵃ) ᵇ = xᵃᵇ = xᵇᵃ es. (2³) ⁴ = (2⁴) ³ = 4096 . L'idea è che se Alice invia x e xᵃ a Bob, né Bob né nessun altro può calcolare a . È facile dire cos'è 2³, ma dato 8 è difficile dire quale potenza 2 deve essere portata per ottenere 8. Quindi si riduce a:

  1. Alice e Bob sono d'accordo su un numero x che può essere noto a chiunque, diciamo 2
  2. Alice genera a = 3 e invia 2³ = 8 a Bob
  3. Bob genera il numero b = 4 e invia 2⁴ = 16 ad Alice
  4. Alice calcola 16³ = 4096 e Bob calcola 8⁴=4096

Quindi sia Alice & Bob conoscono 4096, ma nessun altro conosce a e b quindi non posso calcolare xᵃᵇ.

In realtà il calcolo dei logaritmi non è così complicato. Ma diventa complicato una volta inclusa l ' aritmetica modulare .

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

In un inglese semplice senza usare alcuna espressione matematica come nelle risposte precedenti, lo Scambio di chiavi Diffie-Hellman è un'invenzione di Diffie e Hellman.

L'invenzione riguarda un modo per due persone di concordare lo stesso numero. Questo numero comune concordato verrà quindi utilizzato per qualsiasi scopo le due persone desiderino. Ad esempio, dopo aver seguito i passaggi DH Key Exchange , il risultato finale è che entrambe le persone ora arrivano sullo stesso numero. Nessuna delle due persone ha il controllo su quale sarà questo numero comune. L'invenzione DH Key Exchange garantisce solo che entrambe le persone arriveranno a un numero comune. Un esempio di utilizzo una volta ottenuto questo numero comune è di inoltrare le lettere dell'alfabeto utilizzando questo numero. Ad esempio, se il numero comune è 5, la lettera A diventa F, la lettera B diventa G e così via quando si invia un messaggio. L'altra persona che riceve il messaggio riavvolgerà quindi ogni lettera del messaggio per leggerlo.

Persona-A e persona-B non potevano semplicemente parlare ad alta voce per concordare un numero comune perché una terza persona-C lo ascolterà. Se person-C conosce il numero concordato, allora può leggere anche il messaggio segreto. Lo DH Key Exchange richiede sempre che ci sia sempre una terza person-C in grado di ascoltare i messaggi tra person-A e person-B e questo scenario di tre persone è l'intero scopo dell'invenzione su come rendere person-C incapace di leggere i messaggi codificati segreti tra person-A e person-B .

Nei primi passaggi dello DH Key Exchange , person-A e person-B invieranno alcuni numeri avanti e indietro e questa prima fase person-C può leggere questi primi messaggi. Nella seconda fase, person-A e person-B invieranno messaggi crittografati che person-C non può più leggere. Nonostante il fatto che person-C possa ascoltare i messaggi iniziali durante i primi passaggi, person-C non può arrivare al numero concordato che person-A e person-B ora hanno.

Diffie e Hellman hanno ricevuto il Turing Award nel 2015 per questa invenzione.

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

L'ho scritto una volta come concetto di un discorso che non ho mai tenuto. Dimostra una vera crittografia usando un livello di matematica che tutti possono fare dopo il liceo.

Dato che è scritto come un discorso, questo è Diffie-Hellman in un inglese semplice!

Ehi tu! Impostiamo un canale crittografato. Ti mando la mia chiave e tu la tua, e poi possiamo parlare in privato.

Cosa hai detto? Tutti possono sentirci? Sì, non è un problema!

Possiamo usare Diffie-Hellman. Basti pensare a un numero casuale e aumentare 5 alla potenza di quel numero casuale. Dividi il risultato per 23 e prendi il resto. Dammelo. Il numero casuale originale, dovresti tenere segreto, gli altri numeri sono tutti di dominio pubblico.

Il tuo resto è 8? Va bene. Il mio resto è 10. Ora aumenta di nuovo il mio resto alla potenza del tuo numero casuale segreto, e dividi di nuovo per 23 e prendi il resto. Stessa cosa, easy peasy. Farò la stessa cosa con il tuo numero e il mio numero casuale segreto.

Hai ottenuto il risultato? Fantastico anche io! So che ne hai 6, proprio come me, eppure nessun altro in questa stanza avrebbe potuto calcolarlo. Avrebbero potuto provare ogni possibile combinazione fino a trovare i numeri casuali che corrispondono a ciò che hanno sentito (8 dal tuo lato e 10 dal mio), ma non c'è modo di calcolarlo in modo più efficiente che provando tutte le possibilità. Avremmo potuto usare il risultato, 6, come password. Nessuno avrebbe saputo la password che usiamo, nonostante abbia sentito lo scambio. Ma è una password molto debole. La prossima volta, dovremmo scegliere numeri più grandi e utilizzare una calcolatrice per creare una password più lunga e più sicura.

Nota che ha funzionato perché possiamo vederci. So che non è qualcun altro a parlare quando mi dici che il tuo numero è 8 perché posso vedere le tue labbra muoversi. Su Internet, qualcuno potrebbe impostare attacchi contro questo fingendo di essere dall'altra parte e dandoci numeri falsi. Il modo in cui preveniamo questi attacchi è un argomento per un altro giorno.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...