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:
- Algoritmo Diffie-Hellman (con crittografia asimmetrica a causa del proxy) seguito dalla crittografia simmetrica della query e dalla risposta
- 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!