Supongamos que los datos en cuestión son una tarjeta PAN. Según PCI-DSS, debe almacenarlo con seguridad adicional (cifrarlo antes de almacenarlo en la base de datos y almacenar la clave secreta en otro lugar con acceso más restringido).
Pero, ¿y si tuviera que apoyar la búsqueda basada en PAN?
A. La solución directa sería recibir un PAN simple, enviarlo al backend que recorre todos los PAN en la base de datos, descifrarlos, ver si coinciden con la entrada y luego devolver el registro con los datos necesarios según lo que se adjunta a ese PAN (que suena mal en cuanto a rendimiento).
B. ¿Sería el hash una solución? Cuando se crea un nuevo PAN, se cifra y se almacena cifrado, también se puede calcular un hash para el PAN (no es reversible pero aún se oculta el PAN sensible real). - ¿Debe tener una sal? - ¿Se puede almacenar la sal en el mismo lugar que el hachís? ¿O tiene que ser almacenado en un lugar más seguro, como una clave secreta? - ¿Se comparte la sal con el buscador? ¿Debería el buscador hacer el hash y pasar el hash? ¿O debería simplemente pasar el PAN plano y dejar que el hash se vuelva a hacer cerca de donde se encuentra el PAN (has) PAN hash original?
C. ¿Está mal el concepto completo de búsqueda de soporte mediante datos cifrados desde el principio (y ni siquiera debería admitirse porque no existe una solución adecuada sin comprometer la seguridad adicional)?
D. ¿Hay alguna otra forma segura de indexar datos confidenciales?