En una aplicación .NET Core, almacenamos conversaciones de chat en la base de datos. Actualmente ciframos los datos utilizando el cifrado AES. Las cosas funcionan bien al almacenar y leer valores individuales, pero ahora también tenemos el requisito de que estos datos deben poder buscarse.
Creo que la mejor opción sería hacer esto en el nivel más bajo. Una opción hubiera sido utilizar la función Siempre cifrado en SQL Server, pero no es compatible con Entity Framework Core + no tiene soporte para la sintaxis de consulta" LIKE ". Si no podemos buscar en la base de datos, debemos transferir todo a través del cable y descifrar a nivel de aplicación, luego realizar una búsqueda en la memoria en nuestro código de aplicación. Ya puedo ver problemas de rendimiento allí.
Entonces, ¿cómo se podría lanzar una consulta que tenga un buen rendimiento en datos cifrados? ¿Alguna de las mejores prácticas?
Otra opción, que es totalmente diferente, sería no cifrar los datos, sino almacenar los datos de chat y desconectarlos del usuario real. ¿Hay alguna guía sobre cómo hacer coincidir los datos con el usuario de manera segura?