Miglior hash per l'indicizzazione e la ricerca di dati crittografati

3

Vorrei poter eseguire ricerche di database su un set di dati basato su uno dei campi crittografati.

La mia conoscenza delle migliori pratiche per ottenere questo risultato è quella di memorizzare un hash dei dati che voglio cercare oltre alla versione crittografata.

Se questa fosse una password che stavo facendo hashing, mi sarei assicurato di hash ogni valore con un sale distinto, ma dato che non saprei quale record contiene l'hash che sto cercando in questo caso questo non sembra fattibile.

Quali sono le migliori pratiche in questa situazione per proteggere i miei dati?

(p.s uno dei campi che ho bisogno di cercare è SSN, che sembra come uno dei valori più semplici per creare una tabella arcobaleno per)

    
posta ben schwartz 05.10.2015 - 16:17
fonte

2 risposte

2

Quindi prima il primo avvertimento:

If data is secure, it cannot be searched against, only checked against.

Ora riguardo alla ricerca: Non esiste un modo valido per cercare campi crittografati o con hash, manterrà SEMPRE la CPU . C'è una ragione per questo: i tuoi dati sono in una strada a senso unico. Viene recuperato in memoria, verificato, la versione in memoria distrutta e la voce meno i dati che non è possibile inviare viene inviata. Questo è per scopi di sicurezza e scopi di correzione degli attacchi. Quindi, si pone la domanda "Come faccio a fare una ricerca contro di essa?" Letteralmente una voce alla volta. Perché ogni hash o crittografia dovrebbe essere univoca e mai ripetibile se non confrontata con con il valore iniziale, devi recuperare tutti gli oggetti crittografati, passarli attraverso fino a quando non ottieni una corrispondenza e quindi restituire l'id o la chiave di quella voce. È lungo, tirato fuori, fastidioso e sicuro? Sì. Questo può essere fatto più velocemente o meglio? Non proprio.

Ulteriori avvisi:

NON CONSERVARE MAI UN TAVOLO RAINBOW! Queste sono vulnerabilità facilmente risolte ( Non credermi? )

NON CONSERVARE MAI I SALI NEL DATABASE! Se i dati nel loro complesso vengono rubati, questa crittografia è ora worthless

Se i dati devono essere * veramente sicuri **, cancellarli tramite un algoritmo di hashing unidirezionale (come bcrypt)

SE DEVI cercare tra i dati crittografati, utilizzare un programma di decrittografia separato per decrittografare i dati, effettuare la ricerca e rispedirli nuovamente in un'app binaria compilata e compilata. In questo modo se il server pubblico non ha visitatori indesiderati, non è in grado di ottenere tali dati, la chiave è ancora protetta e i tuoi dati sono al sicuro.

    
risposta data 05.10.2015 - 19:37
fonte
-1

Un punto importante che non hai affrontato nella tua domanda è che non ti devi preoccupare delle collisioni, cioè se hai 2 elementi di dati diversi che danno come risultato la voce di indice, allora le query restituiranno righe aggiuntive che filtri in base sui valori decodificati / tasto unhashed.

Sì, non è possibile utilizzare un sale per record per l'hashing dei dati. Ma potresti usare lo stesso sale per tutti i record. Questo potrebbe diventare un punto debole nella sicurezza generale.

    
risposta data 05.10.2015 - 17:29
fonte

Leggi altre domande sui tag