Puoi dirmi se il mio design è sicuro?

1

Sto progettando un'interfaccia database per un sistema in grado di memorizzare le PII. Il mio primo obiettivo è quello di assicurarmi che tutti i dati siano sicuri, per fare questo ho progettato il sistema come segue.

Gestisco tre server separati con tre ruoli separati. Il Server 1, l'interfaccia web (che chiamerò El Jefe), prende le richieste dagli utenti e le elabora, e restituisce le informazioni appropriate secondo necessità.

Server 2, l'interfaccia crittografica (che chiamerò Bagman) riceve informazioni da SSL da El Jefe e la crittografa (utilizzando l'interfaccia Halite di Paragon Initiative Enterprises), quindi la passa al server 3.

Server 3, il database (che chiamerò Stash) memorizza le informazioni crittografate che riceve da Bagman. Non ha le chiavi di crittografia dal Bagman o qualsiasi altra cosa del genere.

In questo momento, i dati a riposo sono sicuri. Se in qualche modo lo Stash viene violato, nessuno dei file significa nulla e nessuna delle voci nel database significa nulla perché sono tutte crittografate e nessuna delle chiavi è memorizzata su quel server.

Tuttavia, se il Bagman viene violato, tutte le informazioni che gli vengono passate possono essere rubate.

Inoltre, se El Jefe viene compromesso, può impartire istruzioni al Bagman per recuperare, decifrare e restituire qualsiasi cosa situata nello Stash.

Per mitigare questo ho avuto il seguente piano: Per minimizzare qualsiasi danno da una violazione di El Jefe o del Bagman stavo andando a salare la chiave di crittografia con un hash SHA2 della password dell'utente, quindi anche se qualcuno si rompe nel Bagman, le chiavi sono inutili senza l'hash aggiuntivo della password dell'utente. Tuttavia, sento che questo cade nel regno di "Rolling your own crypto", che in base alle mie letture delle ultime 2 settimane è un No-Go. Inoltre, vorrei affrontare il problema di se un utente dimentica la propria password, quindi non c'è modo di recuperare i loro file. O se decidono di cambiare la loro password, dovrei decifrare, quindi ricodificare tutti i loro file.

Mi scuso per i nomi banali dei server, a proposito. Mi aiuta a ricordare i loro ruoli e a visualizzare ciò che stanno facendo nella mia mente. Se riesci a indicarmi la direzione di eventuali risorse o letture aggiuntive o white paper sulla progettazione di un sistema sicuro come questo, sarebbe molto apprezzato.

    
posta Will 20.08.2018 - 13:21
fonte

1 risposta

1

SQLCipher è un'opzione.

È necessario utilizzare la modellazione delle minacce per rendere veramente sicuro il tuo servizio in quanto ci sono molti modi oltre al classico hacking, come descritto in OWASP Top 10 . In particolare SQL injection o CSRF che potrebbero anche compromettere le PII.

La crittografia impedisce a qualcuno di rubare il DBMS in modo logico o fisico, non interrompe buchi nella programmazione / implementazione permettendo a qualcuno di rubare i dati.

    
risposta data 20.08.2018 - 14:51
fonte

Leggi altre domande sui tag