El mejor hash para indexar y buscar datos encriptados

3

Me gustaría poder hacer búsquedas en la base de datos en un conjunto de datos basados en uno de los campos cifrados.

Mi comprensión de las mejores prácticas para lograr esto es almacenar un hash de los datos que deseo consultar además de la versión encriptada.

Si se tratara de una contraseña con hash, me aseguraría de hacer hash de cada valor con una sal distinta, pero como no sabré qué registro contiene el hash que estoy buscando en este caso, esto no parece factible.

¿Cuáles son las mejores prácticas en esta situación para proteger mis datos?

(uno de los campos que necesito buscar es SSN, que parece ser uno de los valores más fáciles para crear una tabla de arco iris)

    
pregunta ben schwartz 05.10.2015 - 16:17
fuente

2 respuestas

2

Entonces la primera advertencia primero:

  

Si los datos son seguros, no se pueden buscar, solo se pueden verificar   en contra.

Ahora con respecto a la búsqueda: No hay una buena manera de buscar campos cifrados o con hash, SIEMPRE consumirá CPU . Hay una razón para esto: sus datos están en una calle de sentido único. Se recupera en la memoria, se revisa, se destruye la versión en memoria y se envía la entrada menos los datos que no puede enviar. Esto es para fines de seguridad, así como para pruebas de ataque. Entonces, se plantea la pregunta "¿Cómo puedo buscar en contra de ella?" Literalmente, una entrada a la vez. Porque cada hash o cifrado debe ser único y nunca repetible a menos que se compare. con el valor inicial, tiene que recuperar todos los objetos cifrados, revisarlos hasta obtener una coincidencia y luego devolver el ID o la clave de esa entrada. ¿Es esto largo, prolongado, molesto y seguro? Sí. ¿Se puede hacer esto más rápido o mejor? En realidad no.

Más advertencias:

¡NUNCA GUARDE UNA MESA DE ARCO IRIS! Esas son vulnerabilidades fácilmente resquebrajadas ( ¿No me crees? )

¡NUNCA GUARDE SALES EN LA BASE DE DATOS! Si los datos en su totalidad son robados, este cifrado ahora es worthless

Si los datos necesitan ser * verdaderamente seguros **, cópielos a través de un algoritmo de hash de una manera (como bcrypt)

SI DEBE buscar contra datos encriptados, use un programa de descifrado separado para descifrar los datos, realice la búsqueda y envíelos nuevamente en una aplicación binaria compilada e independiente. De esta manera, si el servidor público tiene un visitante no deseado, no pueden obtener esa información, la clave sigue siendo segura y sus datos están seguros.

    
respondido por el Robert Mennell 05.10.2015 - 19:37
fuente
-1

Un punto importante que no ha abordado en su pregunta es que no necesita preocuparse por las colisiones, es decir, si tiene 2 elementos de datos diferentes que resultan en la entrada del índice, las consultas devolverán filas adicionales en las que filtrará. en los valores descifrados / clave no dañada.

Sí, no puede usar un sal por registro para realizar un hash de sus datos. Pero podrías usar la misma sal para todos los registros. Esto potencialmente se convierte en un punto débil en la seguridad general.

    
respondido por el symcbean 05.10.2015 - 17:29
fuente

Lea otras preguntas en las etiquetas