Quiero implementar una búsqueda sobre datos encriptados. Encontré un blogpost , que explica 3 métodos . Un método es usar el cifrado determinista, que estoy tratando de implementar. Pero mi caso de uso es un poco diferente.
Mi aplicación proporciona codificación de extremo a extremo, de modo que yo (como proveedor de servicios) no puedo leer los datos del usuario. Los datos están encriptados en el cliente del usuario. Ahora quiero buscar a través de datos de diferentes usuarios. La función de búsqueda y los resultados no son públicos, solo se utilizarán internamente para calcular algunos metadatos, que se envían al propietario de los datos. No necesito saber los datos sin cifrar, solo su relación. Los datos no son lenguaje natural, por lo que el análisis de frecuencia o los ataques de diccionario no deberían ser un problema, por ejemplo, nombres de personas y direcciones de correo electrónico.
Para hacer que el cifrado sea determinista, tengo que usar la misma sal para cada información y es conocida por todos. (Por ejemplo, usaría la función hashpw de bcrypt siempre con la sal "staticsalt".)
- ¿Es esto todavía lo suficientemente seguro o utiliza el mismo contenido salino para todos, por lo que es inútil?
- Si es inútil, ¿cómo debo implementar una búsqueda a través de datos encriptados de múltiples usuarios? Los otros dos métodos de búsqueda en el blogpost no parecen proporcionar funcionalidad multiusuario.