Ho un sistema client-server, in cui il client è un'app Android. Il client e il server comunicano su HTTP.
Se il server / rete non è disponibile, il client deve memorizzare i dati localmente in un file crittografato e deve riprovare per avviare la comunicazione in un secondo momento, una volta che il server / rete è stato ripristinato.
Esiste un requisito aziendale che questi file locali debbano essere crittografati in qualche modo sul client e, se il client viene danneggiato, l'amministratore deve essere in grado di recuperare i dati dai file crittografati locali. I dati non devono essere crittografati durante l'invio sulla rete.
Mi piacerebbe sapere qual è il modo migliore per crittografare i dati? Ho una soluzione potenziale nella mia mente, ma non sono sicuro, che sia corretto / efficiente o meno:
Cifrò i file con una chiave simmetrica e li condividerò con il server, in modo che possa decrittografarli. Per mantenere la chiave simmetrica in segreto mentre la invio sulla rete, il mio piano è quello di crittografare la chiave simmetrica con la chiave pubblica del server, quindi solo il server sarà in grado di recuperare la chiave simmetrica.
Non voglio re-inventare la ruota, quindi chiunque conosce il modo migliore o più semplice per archiviare e crittografare i dati temporanei sul client, quindi, per favore, condividilo con me. Sto anche cercando il nome del modello di progettazione che risolve un problema del genere se ce n'è uno.