Modo sicuro per archiviare Userdata senza crittografare il database

1

Sto cercando un modo o una procedura ottimale per archiviare Userdata in modo sicuro in un database senza crittografare il database.

Stiamo parlando di un server delle applicazioni connesso a un server di database. Il mio approccio è stato quello di crittografare i dati utente sul server delle applicazioni (come?) E archiviare i dati crittografati nel server database. Se un utente si autentica da solo sul server delle applicazioni, i dati crittografati devono essere letti dall'app-server, decrittografati e inviati all'utente ...

Aggiornamento: È obbligatorio che l'App-server possa decrittografare i dati utente (ad esempio nome, cognome, gruppo sanguigno, prodotti acquistati, altri dati personali, Non si parla di password qui) perché l'App-Server deve decifrare lo spazio memorizzato dati nel database per presentare i dati al cliente.

Esistono strumenti / best practice per questo scenario?

Suppongo che un database completamente crittografato potrebbe essere la soluzione migliore, ma esistono dei modi per proteggere questo ambiente senza crittografare completamente il database?

Aggiorna

Proverò a chiarire Usecase:

Il cliente sta gestendo un sito Web in cui gli utenti effettuano l'accesso con le loro credenziali (nome utente / password). Appserver è tomcat, il database è oracle afaik. Non ci sono requisiti legali (nessun PCI, Sox, HIPAA, ecc.) Coinvolti per i dati memorizzati, tuttavia il cliente desidera proteggere i dati crittografandoli. Il cliente non vuole crittografare il database a causa di problemi di licenza, problemi di prestazioni e il "problema" che gli amministratori del database potrebbero decrittografare il database ... quindi i dati devono essere crittografati sul server delle applicazioni e quindi inviato al server del database.

Gli architetti del software vogliono adottare l'approccio Sicurezza per oscurità e sviluppare la loro tecnica di "crittografia" (magari rot14 o qualsiasi altra cosa :)) e implementarla a livello del server delle applicazioni. Il cliente è pienamente consapevole del fatto che tutti gli architetti del software potrebbero ora essere in grado di leggere i dati crittografati memorizzati nel database, ma questo va bene per lui ...

    
posta kekeria 18.06.2012 - 16:13
fonte

2 risposte

1

Il caso d'uso è ancora un po 'rischioso, ma qui ci sono alcuni pensieri che ho letto finora.

  1. È necessario che l'applicazione esegua la decodifica o sia richiesto che la crittografia non venga eseguita nel database? Puoi fare in modo che un server intermedio cripta / decifri o utilizzi un modulo di sicurezza hardware, ecc.
  2. Supponendo che non sia un requisito che il proprietario dell'applicazione web abbia bisogno di un accesso in lettura, potresti essere in grado di eseguire una crittografia a chiave privata dei dati sensibili (ovviamente non sui riferimenti alle tabelle padre figlio e simili). È un problema, ma è possibile assegnare certificati di utenti finali per l'accesso e l'autenticazione e credo che tu possa essere in grado di sfruttarlo per la crittografia.
  3. Se vuoi solo dati crittografati in memoria e avere una ragionevole fiducia dei tuoi sviluppatori (non dovresti) puoi fare in modo che l'applicazione utilizzi la propria chiave privata per la crittografia nell'applicazione dei dati sensibili e crittografala prima di memorizzarla in il database. Dovresti anche capire come proteggere la chiave privata. Potresti essere in grado di utilizzare anche qui un modulo hardware.

Inoltre, anche se l'organizzazione non crede di avere i requisiti HIPAA, sicuramente suona così. Potrebbero essere "business associate" , che potrebbero avere ancora alcune implicazioni HIPAA. Mi chiedo anche del modello di business in cui hanno un carico di dati sulla barca ma non vogliono la capacità di aggregare o dati; puoi usare tutti i tipi di riferimenti pseudonimi per legare insieme le cose a livello individuale per un processo per persona (ad esempio, interrogare tutte le mie righe di test del sangue e fare l'aggregazione quando carico la pagina). L'organizzazione ha considerato l'impatto della crittografia a livello di applicazione, o forse questo è solo per pochi dati chiave?

    
risposta data 24.06.2012 - 08:06
fonte
0

Potresti utilizzare Oracle Transparent Encryption (TDE) per proteggere le colonne necessarie.

link

Ciò consentirebbe di crittografare la colonna e di essere ancora in grado di effettuare ricerche in modo un po 'efficiente. A seconda dell'accordo di licenza con Oracle, potrebbe essere necessario un aggiornamento della licenza per questa funzione.

In alternativa, puoi usare i pacchetti java.security e javax.crypto nella tua applicazione per crittografare i tuoi dati prima di inviarli al database. Uno svantaggio di questo potrebbe essere una riduzione delle prestazioni se i dati crittografati dovessero essere interrogati.

    
risposta data 19.06.2012 - 15:50
fonte

Leggi altre domande sui tag