"Scambio chiave Diffie-Hellman" in inglese semplice

231

Qualcuno può spiegarmi che Scambio chiave Diffie-Hellman è in inglese normale? 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. Come è (se questo è vero)?

    
posta Elias Zamaria 24.11.2013 - 02:10
fonte

8 risposte

335

Diffie-Hellman è un modo di 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, stai creando 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 analizzato in seguito, non c'è assolutamente modo di capire quale fosse la chiave, anche se gli scambi che lo hanno creato potrebbero essere stati visibili. Questo è il punto in cui perfetta segretezza inoltrata viene da. Nessuno analizzando il traffico in un secondo momento può entrare perché la chiave non è mai stata salvata, mai trasmessa e mai resa visibile da nessuna parte.

Il modo in cui funziona è abbastanza semplice. Gran parte della matematica è la stessa che si vede nella criptazione della 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 in use anche la crittografia a curve ellittiche .

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

L'idea di base funziona così:

  1. Vengo con due numeri primi g e p e ti dico quali sono.
  2. Quindi scegli un numero segreto ( a ), ma non lo dirlo a nessuno. Invece calcoli g a mod p e rispediscimi il risultato. (Lo chiameremo A poiché proviene da a ).
  3. Faccio la stessa cosa, ma chiameremo il mio numero segreto b e il numero calcolato B . Quindi computo g b mod p e ti mando il risultato (chiamato " B ")
  4. Ora prendi il numero che ti ho inviato e fai esattamente la stessa operazione con it . Quindi questo è B a mod p .
  5. Faccio la stessa operazione con il risultato che mi hai inviato, quindi: A b mod p .

La "magia" qui è che la risposta che ottengo al punto 5 è lo stesso numero che hai ottenuto al punto 4. Ora non è davvero magico, è solo matematica, e si riduce ad un proprietà fantasiosa di esponenti modulo. In particolare:

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

Che, se esaminate più da vicino, significa che otterrete la stessa risposta indipendentemente dall'ordine in cui fate l'esponenziazione. Quindi lo faccio in un ordine e lo fate 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.

Questo risultato, il numero in cui entrambi siamo incappati 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.

    
risposta data 24.11.2013 - 08:28
fonte
125

Le altre risposte fanno un ottimo lavoro spiegando la matematica dietro lo scambio di chiavi. Se desideri una rappresentazione più pittorica, niente supera l'eccellente analogia della pittura mostrata su Diffie-Hellman scambio di chiavi voce di Wikipedia:

L'immagine è di dominio pubblico

    
risposta data 09.06.2014 - 16:30
fonte
37

Diffie-Hellman è un algoritmo utilizzato per stabilire un segreto condiviso tra due parti. Viene utilizzato principalmente come metodo di scambio delle chiavi di crittografia per l'utilizzo 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 sono d'accordo su un numero primo, p e una base, g , in anticipo. Per il nostro esempio, supponiamo che p=23 e g=5 .
  2. Alice sceglie un intero segreto a il cui valore è 6 e calcola A = g^a mod p . In questo esempio, A ha il valore di 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 di 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 richiesti per derivare s , non vengono trasmessi affatto attraverso il filo.

    
risposta data 24.11.2013 - 03:35
fonte
27

Se vuoi una semplice spiegazione inglese semplice della DH che possa essere facilmente compresa anche da persone non tecniche, c'è l'analogia della doppia scatola chiusa.

  1. Alice mette un segreto in una scatola e lo blocca con un lucchetto che lei 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 spedisce 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 casella ha sempre avuto almeno un blocco mentre era in transito, Eve non ha mai l'opportunità di vedere cosa c'è in lato e rubare il segreto: in questo una chiave crittografica che verrà utilizzata per crittografare il resto di Alice e Le comunicazioni di Bob.

    
risposta data 24.11.2013 - 16:41
fonte
23

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. scambia la chiave incontrando e condividendo fisicamente le chiavi.
  2. In qualche modo stabilito un segreto condiviso su un canale pubblico non sicuro. 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 computare 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] e f[B] )

Funzionamento dello schema DH

  1. Alice esce con un numero casuale A . Calcola f[A] e invia f[A] a Bob. Alice non rivela mai il suo 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 utilizzando A e f[B] . Bob calcola S utilizzando B e f[A]
  4. Mallory, che sta intercettando Eavesdropping, ha solo f[A] e f[B] , e quindi è difficile che lei calcoli S .
  5. Alice e Bob ora condividono un segreto comune che può essere usato come (o per inventare) una chiave per stabilire una connessione sicura.

Nota a margine:

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

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

    
risposta data 16.12.2015 - 00:54
fonte
5

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.

    
risposta data 24.11.2013 - 02:20
fonte
5

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

  • Riservatezza - assicurando che nessuno tranne i destinatari desiderati possa leggere i dati
  • Integrità - assicurando che nessuno possa modificare o manomettere i dati in transito

La riservatezza è fornita utilizzando Crittografia simmetrica e l'integrità viene fornita utilizzando un Message Authentication Code (MAC) .

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

Il problema allora è Come fanno entrambe le parti a stabilire identiche e chiavi su Internet? (o qualsiasi altro mezzo insicuro). Questo è noto come " il problema di scambio di 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 insicuro . O, per dirla più semplicemente ....

Immagina che tu e il tuo amico stiate in piedi in una stanza affollata, circondata da persone dall'aspetto dubbioso. Supponi che tu e il tuo amico abbiate bisogno di concordare un numero identico, ma non volete che nessun altro nella stanza sappia quale numero sia. Diffie-Hellman permetterebbe a te e ai tuoi amici di scambiare abilmente alcuni numeri, e da quei numeri che calcolano un altro numero identico. E anche se tutti nella stanza hanno sentito i numeri scambiati, non hanno modo di determinare il numero finale in cui tu e il tuo amico siete arrivati.

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

Chiunque"ascolta" nella conversazione "sente" solo i numeri scambiati nel mezzo: 13 , 6 , 2 , 9 . Non esiste un modo coerente per combinare questi quattro numeri per raggiungere il segreto condiviso finale: 3 senza conoscere uno dei valori privati di Alice o Bob ( 5 o 4 ) che non sono mai stati condivisi.

Che è la bellezza di Diffie-Hellman.

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

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

Questo valore diventa il "punto di partenza" da cui è possibile generare chiavi aggiuntive.

In precedenza, abbiamo menzionato la codifica simmetrica e i codici di autenticazione dei messaggi, ciascuno dei quali richiede una chiave segreta. Bene, prendi il tuo DH Shared Secret e combinalo con pochi altri valori e ora hai i tasti Encryption e MAC di cui hai bisogno.

L'ulteriore vantaggio è che la combinazione di valori per creare chiavi è facile ... Può essere eseguita tutte le volte che è necessario.

Infatti, 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 nella direzione opposta). Tutte e quattro le chiavi generate dallo stesso valore iniziale iniziale, derivate da Diffie-Hellman.

    
risposta data 26.10.2018 - 21:59
fonte
2

I video Diffie-Hellman di Computerphile sono assolutamente spettacolari quando si tratta di spiegazioni di questo scambio di chiavi. Il loro video " Scambio di chiavi segrete (Diffie-Hellman) " è abbastanza completo, ma la loro spiegazione della matematica dietro DH è il migliore che ho incontrato finora in qualsiasi supporto (e sicuramente migliore di quello che personalmente potrei scrivere per te qui). Fai un orologio qui .

    
risposta data 27.10.2018 - 03:27
fonte

Leggi altre domande sui tag