Correo electrónico en seguridad de base de datos vs rendimiento [cerrado]

0

Tengo que asegurar los datos de una aplicación web B2B en una base de datos MySQL, actualmente el usuario que registra sus datos es así:

Last name (Plain text)
First name (Plain text)
Email (Plain text and indexed)
Password (Hashed with CRYPT_BLOWFISH method)

A medida que los usuarios inician sesión con su correo electrónico y contraseña, solo tengo que comparar la contraseña almacenada con la contraseña de hash que se proporciona usando.

Ahora, para asegurar estos datos, me gustaría hacer lo siguiente:

Last name (encrypted with openssl_encrypt)
First name (encrypted with openssl_encrypt)
Email (Hashed with CRYPT_BLOWFISH method)
Password (Hashed with CRYPT_BLOWFISH method)

Con este imposible indexar el correo electrónico para recuperarlos más rápido, primero debo comparar TODOS los correos electrónicos con hash con el correo electrónico con hash y comparar la contraseña.

¿Crees que es la mejor manera de proteger el correo electrónico o hay otra forma de hacerlo?

    
pregunta Core972 23.02.2018 - 11:24
fuente

1 respuesta

2

Hashing los correos electrónicos (con o sin sal) los hará virtualmente (sin montar un ataque, casi literalmente imposible con una buena sal única por hash) irrecuperable en su sistema. No estoy seguro de que esto es lo que desea, ya que puede utilizar la base de correo electrónico para contactar a los usuarios, restablecer contraseñas y otras tareas.

La encriptación de los correos electrónicos por otra parte los mantiene usables por su aplicación. Si un atacante obtiene acceso a la base de datos, solo verá cyphertexts y no los correos electrónicos reales. Tenga en cuenta la discusión en los diversos comentarios sobre IV: cambiar la IV es importante para mantener a salvo su colección de cyphertext de ataque elegido-cyphertext . Considere la posibilidad de que un atacante cree varias cuentas y, posteriormente, acceda a la base de datos, podría volver a conectar los correos electrónicos de texto simple y los textos cifrados.

Acepto que tu aplicación es B2B, por lo que puede que no esté tan expuesta como una B2C, sin embargo, leemos todo tipo de historias de piratería en estos días ... No creo que deba descartarse.

Le preocupa que ya no pueda buscar por correo electrónico indexado, es cierto. Te enfrentas a una elección entre comodidad y seguridad.

  • O sigue el consejo (IMO incorrecto y peligroso) para mantener un IV constante para todos los cifrados e indexar los textos cifrados resultantes en la base de datos,
  • o encuentra un medio alternativo para ubicar una cuenta de usuario, por ejemplo, un nombre de usuario. Si su aplicación no la ofrece a los usuarios, considere una actualización.

Evalúe el beneficio / costo de cualquiera de las opciones ...

    
respondido por el korrigan 23.02.2018 - 14:49
fuente

Lea otras preguntas en las etiquetas