Algoritmi per lo scambio di chiavi VS generazione di chiavi locali?

0

Mi chiedevo la differenza in termini di sicurezza, costi computazionali e costi di rete tra l'uso di:

  • Un algoritmo di scambio di chiavi (ad es. Diffie-Hellman) per impostare una chiave simmetrica.
  • La generazione da parte del client di una chiave simmetrica e l'invio cifrato (ad esempio RSA) al server.

In effetti, sto progettando un protocollo che richiede solo una richiesta a un server e una risposta dal server (attraverso un proxy). Di conseguenza, devo scegliere tra questi 2 protocolli:

  1. Algoritmo Diffie-Hellman (con crittografia asimmetrica a causa del proxy) seguito dalla crittografia simmetrica della query e dalla risposta
  2. Una chiave generata dal client invia cifrata (crittografia asimmetrica) insieme alla query e una risposta dal server crittografato (crittografia simmetrica) dalla chiave ricevuta in precedenza dal client.

Se utilizzo il protocollo 1., ho la situazione attuale:

  • Crittografia asimmetrica: 1 operazione (definizione della chiave)
  • Decrittografia asimmetrica: 1 operazione (definizione della chiave)
  • Crittografia simmetrica: 2 operazioni (richiesta + risposta)
  • Decrittografia simmetrica: 2 operazioni (richiesta + risposta)
  • Scambio di pacchetti: 4

Se utilizzo il protocollo 2., ho la situazione attuale:

  • Crittografia asimmetrica: 1 operazione (definizione della chiave)
  • Decrittografia asimmetrica: 1 operazione (definizione della chiave)
  • Crittografia simmetrica: 1 operazione (richiesta + risposta)
  • Decrittografia simmetrica: 1 operazione (richiesta + risposta)
  • Scambio di pacchetti: 2

Il protocollo 2. sembra essere più potente del protocollo 1. ma quando guardavo su Internet, la gente di solito parla del primo protocolo (1.) Mi chiedo perché? Il secondo non è sicuro?

Grazie per la tua risposta!

    
posta aztitep 10.02.2014 - 11:03
fonte

1 risposta

1

Diffie-Hellman e lo scambio di chiavi basato su RSA hanno le stesse dinamiche e costi simili. In entrambi i casi:

  • Il sistema A deve inviare (possibilmente pubblicare in anticipo) un elemento pubblico (chiave pubblica RSA con RSA, g a per DH) .
  • Il sistema B genera alcuni valori che culminano in una chiave simmetrica K e un elemento da inviare a A (con RSA, B genera K in modo casuale e lo crittografa con la chiave pubblica di A ; con DH B genera g b e calcola K = g ab ).
  • Se B ha un messaggio confidenziale da inviare a A , allora può cifrarlo con K e inviarlo immediatamente, insieme a l'elemento del passaggio precedente.

In effetti, si può vedere il DH come una sorta di crittografia asimmetrica in cui il mittente non arriva a scegliere i dati che crittografa; invece, impara il "segreto condiviso" durante l'elaborazione, e questo è abbastanza buono per lo scambio di chiavi.

(Dalla tua descrizione, sembra che immaginare di ottenere il segreto condiviso da DH in qualche modo implichi un altro round-trip di rete, non è vero).

Il DH è popolare nei protocolli per una serie di motivi. Storicamente, è stato promosso dal governo degli Stati Uniti per gli usi federali degli Stati Uniti, perché RSA è stato brevettato e il governo degli Stati Uniti non ha voluto pagare. Al giorno d'oggi, la variante curva ellittica di DH è apprezzata per le sue buone prestazioni (più veloce di RSA e usando messaggi più piccoli, sebbene ci siano dettagli).

    
risposta data 10.02.2014 - 13:33
fonte

Leggi altre domande sui tag