Como parte de una aplicación que estoy desarrollando, debo almacenar las direcciones de correo electrónico de los usuarios en una base de datos en la nube. No se requiere que la dirección de correo electrónico esté en texto sin formato para el funcionamiento normal de la aplicación.
Por lo tanto, para brindar seguridad, la dirección de correo electrónico se cifra y luego se almacena en la base de datos. La dirección de correo electrónico en el formulario cifrado será el principal medio de identificación de los usuarios (es la clave principal).
Teniendo en cuenta estos hechos, cuál de los siguientes métodos de cifrado tiene sentido si el servidor de la base de datos es vulnerable a los ataques.
Método 1:
Encrypted-Email-Address = Asymmetric Cipher(Pub-Key2,
Asymmetric Cipher(Pub-Key1, Plain-text-Email-address))
No se utilizará ningún relleno aleatorio para permitir la asignación determinística entre las direcciones de correo electrónico simples y cifradas, por lo tanto, el cifrado dos veces
O
Método 2:
Encrypted-Email-Address = Symmetric Cipher(Key, Plain-text-Email-address)
Tenga en cuenta que debido a que no se requiere descifrado para el funcionamiento normal, las Claves privadas en el método 1 se almacenarán fuera de línea en el mundo físico. Sin embargo, el cifrado tendrá que ser determinista porque la dirección de correo electrónico es la clave principal.
Pasé por enlace . Pero allí el OP está buscando almacenar un campo de clave no principal, por lo que no puedo usarlo.
¿Conoce alguna metodología mejor que solucione este caso de uso?