Per un incarico di programmazione del college devo implementare un protocollo di comunicazione sicuro tra un server e uno o più client. All'istanziazione del programma server, viene generato un file, chiamandolo 'server_file'. Questo viene quindi posto in una posizione nota e si presume che venga reso disponibile ai programmi client tramite un canale sicuro non disponibile per un hacker.
Il programma client genererà quindi il proprio file, chiamandolo 'client_file', e quindi dovrà essere in grado di inviare comandi al server (ad esempio creare un nuovo account, impostare un valore, ottenere un valore, richieste transazionali semplici). Questo client_file può essere pensato come una chiave client o un PIN che consente al server di sapere chi è l'utente. Il punto è di fare in modo che un attacco MitM o un altro attacco non consentano ad un avversario di sovvertire il sistema.
Ho una certa familiarità con PyCrypt e una conoscenza di base dei principali principi crittografici. Tuttavia, prima di iniziare, volevo ottenere qualche idea sul modo migliore per implementarlo. Stavo pensando di usare il file server_file per firmare (HMAC) il client_key e inviare i comandi da client a server (insieme al messaggio di transazione) usando qualcosa come AES in modalità CTR.
Questo sembra un buon approccio? Faresti qualcosa di diverso? Lo scopo è quello di proteggere il canale di comunicazione.
Grazie in anticipo!