¿Está bien guardar contraseñas como cadenas base64 sin ningún otro hash o cifrado de antemano?

-1

Acabo de heredar un proyecto donde todas las contraseñas del lado del servidor simplemente se convierten a base64 y se colocan en la base de datos. Sin sal, sin hash, nada. Solo un simple tipo de proceso db.Add(password.ToBase64) .

¿Seguramente cualquiera que tenga en sus manos esos datos puede decodificarlo fácilmente? De ahí el enfoque habitual de sal / hash.

Cuestioné la decisión de usar cadenas base64 y me dijeron:

  

Respecto a la contraseña: si alguien ya está en su servidor, ya está amenazado independientemente del cifrado que elija. Es lo mismo, incluso cuando alguien penetra en su propia capa SSL.

Esto parece ignorar el hecho de que hackear un servidor no es la única forma de acceder a una base de datos. Podría ser tan fácil como pasar por la computadora sin vigilancia de alguien, tropezar con una copia de seguridad de la base de datos y ver las cadenas base64 de de manera deslumbrante , y luego convertirlas a contraseñas en bruto.

Sé que esta pregunta es probablemente demasiado abierta para el formato de uso habitual de StackExchange, pero el problema no parece estar muy bien cubierto aquí con la redacción de la pregunta que he usado. Es un tema muy importante, así que pensé en lanzarlo.

Para mí es absolutamente obvio que las contraseñas no deben ' No se almacena utilizando solo la conversión base64 , pero aún soy relativamente nuevo en todo esto, así que tal vez me haya perdido algo.

Gracias.

    
pregunta Stuart Aitken 28.09.2018 - 09:50
fuente

1 respuesta

1

TLDR: nunca almacene contraseñas como base64, por lo que tiene razón, ya que es una muy mala práctica.

  

Sin duda, cualquier persona que tenga acceso a esos datos puede descifrarlos fácilmente.

Bueno, no hay nada que descifrar. Base64 no es un cifrado, es una codificación. Su función es asegurarse de que la contraseña se pueda almacenar en la base de datos de forma agradable y que los caracteres especiales no sean un problema. No hace nada para proteger la contraseña. Desde el punto de vista de seguridad, es exactamente lo mismo que almacenarlo sin ninguna codificación.

  

Esto parece ignorar el hecho de que piratear un servidor no es la única forma de acceder a una base de datos.

Esa cita parece ignorar muchas cosas. Hay varias razones para codificar las contraseñas y no tienen nada que ver con la prevención del compromiso inicial de su servidor. Como se mencionó, el hash no hace nada para evitar eso. Aquí hay algunas razones para las contraseñas de hash:

  1. Si su sistema se ve comprometido temporalmente, le permite recuperarse. Cosa sobre este escenario. Su servidor está comprometido y su base de datos robada. Sí, todos los datos personales de sus clientes se filtran, no hay nada que hacer al respecto. Pero si las contraseñas están encriptadas, puede enviar un correo electrónico a todos sus clientes instándoles a cambiar sus contraseñas una vez que se resuelva el compromiso. Tiene cierto nivel de certeza de que el usuario que conoce la contraseña y tiene acceso al correo electrónico es el usuario adecuado, ya que el atacante no tiene las contraseñas.
  2. Si su sistema está comprometido, protege a su cliente en caso de que use la misma contraseña en múltiples servicios. Lo primero que un atacante podría intentar hacer con una base de datos filtrada de contraseñas de texto sin formato es probar la combinación de contraseña de correo electrónico en sitios populares como Facebook.
  3. Alguien con acceso legítimo al servidor puede usar la contraseña de otra persona para enmascarar sus pistas. Imagine un escenario en el que un administrador tiene acceso completo al servidor, pero todo lo que hace está registrado. Si intenta hacer algo nefasto, sería fácil darse cuenta de que era él. Pero si solo saca una contraseña de un usuario diferente, tal vez no sea fácil o incluso imposible de averiguar.
  4. Limita un compromiso. Un atacante que obtuvo acceso a la base de datos puede no tener acceso completo al servidor. Sin embargo, si puede extraer la contraseña de administrador de la base de datos y registrarse como dicho administrador o solo otros usuarios, puede obtener acceso que de otra forma no podría obtener.
respondido por el Peter Harmann 28.09.2018 - 10:03
fuente

Lea otras preguntas en las etiquetas