Il primo passo per assicurarsi tutto dovrebbe essere quello di valutare ciò che è necessario proteggere e dove qualcuno potrebbe attaccarti (superficie d'attacco). Non so cosa devi proteggere, ma dal momento che stai facendo il tuo computing nel cloud non dovresti solo chiederti come comunicare con la tua applicazione cloud, ma come è protetta l'applicazione stessa, ovvero come il server è protetto , chi lo possiede, quali leggi si applicano ....
Per quanto riguarda la tua idea di comunicazione: sembra che tu combini diverse tecniche di cui hai sentito parlare nella speranza che sarà un po 'sicuro, ma non capisci cosa stai facendo (altrimenti non lo chiedi). Per favore non provare a reinventare la sicurezza, di solito va male. Utilizza invece tecnologie consolidate come TLS o SSH e scopri come funzionano, cosa offrono e quali limiti hanno.
Come per le informazioni aggiuntive su ciò che vuoi proteggere:
Protect the server from getting hacked
Dovresti sapere che con la maggior parte delle soluzioni cloud non hai il tuo hardware dedicato, ma condividi l'hardware con gli altri e ottieni solo una sorta di contenitore o macchina virtuale sull'hardware per te. Se qualcuno attacca con successo l'host che esegue questi contenitori, puoi dimenticare la sicurezza all'interno dei contenitori.
Inoltre, la maggior parte dei sistemi è vulnerabile una volta che un utente malintenzionato ottiene l'accesso all'hardware. Quindi devi avere molta fiducia nelle persone che gestiscono l'infrastruttura.
In case the server is hacked the data stored on the server should be encrypted such that it is useless to the hackers.
Questo non funzionerà completamente. Poiché devi lavorare sui tuoi dati mentre non sono crittografati, devi disporre delle necessarie funzionalità di decrittografia all'interno dell'applicazione cloud. Un aggressore competente con accesso completo alla tua macchina ha accesso alla tua applicazione e può analizzarlo ed estrarre la parte di decrittografia e riutilizzarla.
Transfer data to and fro the server and client without leaking it to an eavesdropping hacker.
Raccomando di utilizzare tecnologie consolidate come TLS o SSH per questo, ma anche questi possono fallire se non vengono utilizzati nel modo corretto.
Alla fine si riduce il valore dei dati. Gli aggressori professionisti non metteranno troppi sforzi nell'hacking di un sistema che non ha nulla di valido da proteggere, ma si impegnerà molto quando saranno coinvolti dati davvero preziosi (che significa soldi).
Se si tratta solo di un progetto di gioco, non mi preoccuperei troppo della sicurezza, cioè proteggo solo il server in modo che non possa essere utilizzato in modo improprio. Ma, se i dati sono davvero preziosi, è meglio mantenere la superficie di attacco piccola e non fidarsi troppo delle persone. In questo caso non farei nulla nel cloud.