Ho un sistema composto da diversi computer che devono comunicare in un contesto in tempo reale.
Tutte le comunicazioni devono essere crittografate e questo sistema non è connesso a Internet, è solo un mucchio di computer collegati tramite diversi switch.
Ogni computer può avere connessioni diverse con gli altri, agendo sia come server e / o client, utilizzando sia UDP e / o TCP.
Quello che mi piacerebbe fare è implementare qualcosa di non ingombrante o troppo complesso. La mia idea era di utilizzare in qualche modo AES 128 (o 256) e la modalità GCM.
Stavo pensando che potrebbe esserci un server centrale incaricato di distribuire una singola chiave che possa essere utilizzata da tutti gli altri computer per crittografare tutti i dati. In particolare, stavo pensando di caricare tutte le chiavi pubbliche su questo computer e poi ogni client, all'avvio del sistema, recupera la chiave dal server e utilizza questa chiave per crittografare la comunicazione con AES. Fondamentalmente sto dicendo di usare AES con una chiave pre-condivisa che può essere ottenuta da un server centrale.
La password creata nel server centrale potrebbe essere modificata manualmente o generata automaticamente ogni giorno.
Che ne pensi di questo design? Sto pensando di sviluppare tutto in C ++, qualche suggerimento su quale tecnologia / libreria dovrei usare?
Ho visto che esiste il livello basso di libcrypto ++ ma che esiste anche OpenSSL che fornisce funzionalità TLS e DTLS. È possibile impostare OpenSSL per creare un sistema come quello che ho descritto o dovrei usare altre librerie come libcrypto ++?