Sto sviluppando un'applicazione basata sul Web che verrà utilizzata da numerose organizzazioni di terze parti in numerosi paesi in tutto il mondo.
Il client basato su browser alimenterà dati sensibili in un database back-end condiviso.
Tutte le organizzazioni di tutti i Paesi leggeranno / scriveranno i dati nello stesso database.
Desidero crittografare i dati inseriti nel browser in modo che siano sicuri durante il transito al database di back-end. per esempio. crittografia lato client.
Desidero anche criptare i dati mentre sono a riposo nel mio database.
Questa applicazione sarà sviluppata usando Java, Javascript (REACT.js) e Scala.
Il database di back-end sarà MongoDB.
Non riesco a trovare un buon esempio / descrizione di gestione delle chiavi, ad es. come viene generata correttamente una chiave, distribuito, memorizzato, sostituito, cancellato e recuperato durante il suo ciclo di vita.
Ho le seguenti scelte / decisioni da prendere: -
Sapore di crittografia, ad esempio TripleDES, RSA, Blowfish, Twofish, AES ecc. Chiave / e Simmetrica / Asimmetrica e la sua / la sua lunghezza Come dovrei distribuire in modo sicuro le chiavi ai miei clienti. Come mantenere le mie chiavi al sicuro sui miei server back-end.
Se le chiavi devono avere un ciclo di vita di generato, distribuito, memorizzato, sostituito, cancellato. Come decrittografare i dati crittografati con Key0 quando ora utilizzo Key1 o Key2?
Come dovrei memorizzare le mie chiavi multiple per i miei multipli client per consentirmi di crittografare / decifrare dati di ogni cliente.