Sto sviluppando un'applicazione che crittografa un gruppo di file che il client ha sulla loro macchina e poi li invia a un server, per eseguirne il backup. Devo crittografare i file in modo che altri client / terze parti non possano accedervi. Il problema è che mi piacerebbe avere una chiave codificata, per ridurre la complessità del mio programma, ma non posso avere tutti i client condividere la stessa chiave o avere terze parti che decompilano il file binario per ottenere la chiave (I sappi che le chiavi codificate sono una cattiva idea ). Si noti che non è fattibile utilizzare la semplice crittografia della chiave asimmetrica poiché le prestazioni non sarebbero abbastanza buone.
La soluzione che ho trovato è quella di codificare a fondo la chiave pubblica di una coppia di chiavi pubblica-privata che appartiene al server, che utilizzerei per crittografare una chiave simmetrica, e quindi generare un numero casuale (usato come chiave simmetrica), crittografare i file necessari con esso e quindi crittografare la chiave simmetrica con la chiave pubblica e inviarla a un database sul server, su una rete. Il punto di utilizzo della crittografia a chiave assimmetrica è tale che la trasmissione della chiave è sicura.
Quanto è sicuro questo protocollo? Sarà sufficiente utilizzare un PRNG? Esiste un protocollo esistente migliore?