Cosa sono le migliori pratiche di gestione delle chiavi di crittografia / decrittografia [chiusa]

1

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.

    
posta Hector 06.12.2016 - 12:14
fonte

1 risposta

0

Questa è una domanda molto, molto ampia. Dovresti dividerlo in diverse domande. Così com'è, riempirebbe un articolo.

Crittografia generale

Per i dati a riposo, utilizzare la crittografia simmetrica. Asimmetrico è comunque troppo lento (la cosiddetta crittografia asimmetrica è in realtà ibrida).

Usa AES. Poiché è lo standard, ha più occhi che lo guardano, non dovrai mai spiegare perché hai scelto AES e non qualcos'altro, e i progressi delle prestazioni ecc. Di altri sono improbabili che si presentino nella tua applicazione in modo significativo modo.

Inoltre, MongoDB supporta AES out-of-the-box.

Chiavi

Le tue chiavi DB sono cruciali. Tenerli bloccati in modo sicuro e conservare alcune copie di backup memorizzate in modo sicuro (cioè crittografate). La generazione di chiavi è il suo argomento, ma probabilmente MongoDB si occupa di controllarlo già per te.

TLS

Per la comunicazione, usa TLS, alias HTTPS. È lo standard, tutti i browser lo supportano e tutti i web server lo supportano.

Certificati

Se vuoi utilizzare i certificati lato client, come indica la tua domanda sulla distribuzione delle chiavi, leggi su PKI. Questo è troppo di un argomento da inserire in un campo textarea su SE. : -)

Questo dovrebbe farti iniziare nella giusta direzione. Per maggiori dettagli, ti consiglio di fare più domande con un focus più ristretto.

    
risposta data 06.12.2016 - 17:11
fonte

Leggi altre domande sui tag