Concetti di un sistema di condivisione di note sicure

3

Sto cercando di progettare un sistema che consenta ai membri dello staff della nostra piccola azienda di condividere in modo sicuro le informazioni sensibili dei clienti (testo) e visualizzarle su una pagina Web insieme a comunicazioni meno sensibili. Intendo usare PHP perché è quello che so meglio.

La sfida principale è che i dati devono essere archiviati sul server, ma è necessario molto tempo per renderli utili se il server viene compromesso.

La mia idea è la seguente:

  1. Quando viene creato un utente dello staff, sceglie una password sicura e questa viene sottoposta a hash usando bcrypt (12) e archiviata nel nostro database. La semplice password viene anche utilizzata per creare una coppia di chiavi RSA 4096 bit utilizzando OpenSSL. Entrambe le chiavi sono memorizzate sul server.

  2. Quando viene creata una nota sicura, viene crittografata con la chiave pubblica di ogni membro dello staff e ogni copia viene archiviata nel database.

  3. Quando un membro del personale effettua l'accesso, la sua password semplice viene confrontata con l'hash per vedere se corrispondono. Se lo fanno, la semplice password, l'IP del client e l'ID utente sono serializzati e simmetricamente crittografati usando mcrypt. La chiave utilizzata per crittografare la stringa è archiviata nel file system del server. Il testo cypertext viene quindi inviato come cookie al client.

  4. Quando un membro dello staff accede a un'altra pagina, il server decrittografa il cookie e utilizza la semplice password e la chiave privata dell'utente per decrittografare qualsiasi informazione sensibile in tale richiesta e invia le informazioni sensibili al browser dell'utente.

Il tutto sarà su HTTPS con crittografie sicure.

Sono consapevole che questo è probabilmente molto difficile da rendere completamente sicuro, ma mi piacerebbe sapere se qualcuno può individuare difetti evidenti in questa configurazione che può essere ragionevolmente migliorata. In generale, sarebbe anche utile sapere quanto è utile una chiave privata senza la password sicura associata.

    
posta James 17.07.2015 - 11:53
fonte

2 risposte

1

Il problema generale che vedo con la tua soluzione è che le operazioni con le password vengono eseguite sul server, (ad esempio, le password degli utenti vengono passate al server per il controllo), tuttavia il tuo modello di minaccia è quello di proteggere i dati nel caso di un server compromesso.

Se il server è compromesso, possono semplicemente afferrare le password degli utenti mentre il client li invia per il controllo.

Per implementare il tipo di soluzione di cui si sta parlando (ad esempio, una che resiste al compromesso del server) occorrerebbe eseguire tutte le operazioni di crittografia sul lato client, in modo che il server non veda cose come le password . Vale la pena notare che questo tipo di soluzione è piuttosto difficile da implementare nella pratica, in quanto è necessario che i client siano in grado di operare senza affidarsi completamente al server (ad esempio per gli aggiornamenti del codice), altrimenti un utente malintenzionato che ha compromesso il server potrebbe fare qualcosa come spingere un aggiornamento client con una backdoor in esso.

    
risposta data 31.07.2015 - 22:34
fonte
1

Il tuo sistema è difettoso nei primi due passaggi perché stai memorizzando le chiavi con i dati crittografati sullo stesso sistema. Se un utente malintenzionato compromette il server, può semplicemente trovare le chiavi e utilizzare i tasti per decifrare le note segrete. È difficile realizzare ciò che si vuole fare senza che gli utenti memorizzino una chiave privata per la crittografia sul proprio dispositivo.

Poiché non posso commentare la tua domanda iniziale, alcune informazioni potrebbero essere utili per dare una strong raccomandazione. Hai bisogno che gli utenti siano in grado di accedere a questo sistema per qualsiasi dispositivo? Il sistema è rivolto verso Internet? Circa quanti utenti supporta il sistema?

    
risposta data 31.07.2015 - 22:24
fonte

Leggi altre domande sui tag