Contraseña con sal + hash: ¿es realmente útil? [duplicar]

5

Soy nuevo en el tema y quería saber el concepto de comer hashes salados antes de pasar a los detalles técnicos.

Por lo que he entendido

  • contraseña - texto sin formato
  • contraseña de hash: la contraseña de texto simple se cifra mediante un algoritmo de hash que es irreversible (de una sola manera)
  • contraseña de hash con sal: texto aleatorio + contraseña de texto sin formato / hash (sal + texto sin formato)
  • una tabla de arco iris es una lista de resultados de hash precalculados de una lista de palabras del diccionario, al comparar las contraseñas de hash con la lista en la tabla de arco iris para una coincidencia, se revelará la contraseña real que está utilizando el usuario.

Por lo tanto, 2 de las mismas contraseñas de texto sin formato no tendrán el mismo valor hash debido al valor aleatorio de la sal.

La sal se almacena a veces con la contraseña de hash.

De lo anterior,

  1. Supongo que no hay intentos máximos de contraseña. ¿Cómo evitar que un salt evite que un usuario malintencionado intente forzar la contraseña en el sistema simplemente intentando una contraseña aleatoria (por ejemplo, en una lista de diccionarios)? Están utilizando el mismo mecanismo de inicio de sesión legítimo en comparación con el usuario real al solo intentar / ingresar una contraseña diferente por inicio de sesión.
  2. Si la sal previene un ataque de arco iris al agregar datos aleatorios al texto sin formato antes del hash MD5, el primer criterio es que el ataque de arco iris tenga una lista de hash (sal + contraseña) con la que comparar. Ahora, ¿el sistema ya no está comprometido cuando el usuario malintencionado tiene esa lista de contraseñas con hash?
  3. Si la contraseña de sal y el hash se almacenan juntos, ¿no lo haría ese usuario malintencionado (en lugar de usar una tabla de arco iris) simplemente volver a calcular su lista de texto del diccionario + la sal obtenida para obtener los resultados de hash y compararlos con el hash? ¿Contraseña en la lista recuperada?

Es solo que ahora la tabla de arco iris se construye en base a un solo valor de sal para una entrada de contraseña de hash particular. Para otra entrada de contraseña, tendrá que usarse otra tabla de arco iris precomputada basada en la sal asociada.

¿Está mal mi entendimiento? Entonces, ¿qué ayuda realmente la sal?

    
pregunta Noob 17.07.2015 - 10:55
fuente

5 respuestas

20

De sus entendimientos iniciales:

  • Una tabla de arco iris es, para un algoritmo hash dado, un mapa exhaustivo de hash salidas a entradas . Dado que la tabla debe cubrir todo el rango de salida, y que un buen algoritmo hash hace que sea difícil predecir la entrada de la salida deseada y costoso calcular la salida, debería ser muy costoso de generar.

En cuanto a sus preguntas:

  1. Saltar sus hashes no hace nada para evitar ataques de fuerza bruta contra su página de inicio de sesión. En cambio, protege contra su DB (o el de otra persona, si están usando el mismo algoritmo hash que usted) comprometido y el atacante que conoce los hashes. Una vez que tienen el hash, lo buscan en la tabla del arco iris para encontrar la entrada que generará ese hash, e ingresan eso en su página de inicio de sesión. Ni siquiera importa si la entrada no es la misma que la contraseña del usuario, ya que ambas tendrán el mismo valor.
  2. Como se señaló anteriormente, las tablas de arco iris son caras de generar.
    • Si no usa Salt y un algoritmo hash común, la tabla ya existe y todas las cuentas están comprometidas. Esto es barato de hacer.
    • Si usa 1 sal para todos sus usuarios o un algoritmo hash único, el atacante tendrá que generar 1 tabla de arco iris y todas las cuentas estarán comprometidas. Esto es costoso, pero tal vez valga la pena obtener todas las cuentas.
    • Si usa una sal única para cada usuario, el atacante tendrá que generar 1 tabla de arco iris para cada usuario , independientemente del algoritmo que use. Esto es caro, y el pago es 1 cuenta. Esperemos que esto no valga la pena.
  3. El salado no protege contra los ataques de diccionario

El objetivo es hacer que el atacante haga el mayor trabajo posible, lo suficiente para que sea más fácil encontrar al usuario (o si el atacante es un pensador muy claro, su administrador de sistemas) y vencerlo con una manguera de goma. en lugar de comprometer recursos no triviales para calcular tablas de arco iris.

Aparte de eso, MD5 no es un buen algoritmo hash en este contexto, está lejos de ser rápido de calcular.

    
respondido por el ryanm 17.07.2015 - 11:37
fuente
7

Versión simple: las sales no detienen los ataques de fuerza bruta contra la contraseña de un solo usuario. Lo que detienen es que puedes realizar un ataque de fuerza bruta contra todas las contraseñas de los usuarios al mismo tiempo.

    
respondido por el Jason Coyne 17.07.2015 - 14:37
fuente
2

La sal no ayuda contra los ataques de fuerza bruta, ya que el atacante está disparando todas las contraseñas conocidas por los hombres, con el tiempo tendrá suerte y lo adivinará.

Las sales se vuelven útiles cuando se roban las contraseñas almacenadas, para encontrar la contraseña que pertenece al hash (no usaría MD5), puede tomar una contraseña aleatoria, hash, y compararla con el hash que encontró. Las contraseñas robadas. Las tablas del arco iris hacen que esto vaya mucho más rápido.

Sin embargo, al usar sales, no encontrará la contraseña, sino la contraseña + sal, lo que significa que tendrá que restar la sal para encontrar la contraseña real. El punto de usar un salt es que usas una diferente para cada contraseña, así que si el atacante quiebra una contraseña, solo hará eso, descifra esa contraseña, incluso si alguien más está usando la misma contraseña, ese hash será completamente diferente.

Usar sales no se trata de hacer que sea imposible descifrar una contraseña, se trata de hacer que las contraseñas se demoren mucho, ya que tendrá que verificar todas y cada una de las contraseñas como un hash único, incluso si se usa la misma contraseña. de nuevo.

Todo se trata de hacer que los hashes consuman mucho tiempo.

    
respondido por el BadSkillz 17.07.2015 - 11:17
fuente
1

Aquí está la respuesta a la pregunta relacionada que debería resolver todos de su confusión: ¿Cómo hash seguro de las contraseñas?

EDIT:

A la pregunta 1.

Como dijeron otras personas que respondieron, no puedes evitar la fuerza bruta al compartir tus contraseñas. Existen otras técnicas para esta tarea, por lo general es una limitación de algún tipo y un número limitado de intentos. La aceleración gradual con cada próximo intento fallido funciona mejor desde el punto de vista de UX.

A la pregunta 2.

Aquí está el extracto de la respuesta vinculada anterior:

  

Dado que el contenido general de un servidor que puede validar contraseñas es   necesariamente suficiente para validar las contraseñas, un atacante que   obtenido una instantánea de solo lectura del servidor está en posición de hacer una   Ataque de diccionario sin conexión: intenta contraseñas potenciales hasta que coincida   es encontrado. Esto es inevitable. Así que queremos hacer ese tipo de ataque.   lo mas duro posible Nuestras herramientas son las siguientes:

     

< ... >

     

Sales : entre las ventajas del atacante sobre el defensor está el paralelismo. El atacante usualmente toma una lista completa de hash   contraseñas, y está interesado en romper tantos de ellos como sea posible.   Puede intentar atacar a varios paralelos. Por ejemplo, el atacante.   puede considerar una contraseña potencial, tacharla y luego comparar la   valor con 100 contraseñas hash; esto significa que el atacante comparte   El costo de hashing sobre varias contraseñas atacadas. Un similar   La optimización es tablas precomputadas, incluyendo tablas arcoiris; esto es   Todavía paralelismo, con un cambio de coordenadas espacio-tiempo.

     

La característica común de todos los ataques que usan paralelismo es que funcionan con varias contraseñas que se procesaron con el   exactamente la misma función hash. La salazón se trata de no usar un solo hachís   función, pero muchas funciones hash distintas; idealmente, cada instancia   El hashing de contraseñas debe usar su propia función hash. Una sal es un camino.   para seleccionar una función hash específica entre una gran familia de hash   funciones Las sales bien aplicadas se desvanecerán completamente paralelas   ataques (incluyendo tablas de arco iris).

A la pregunta 3.

En pocas palabras, la relación entre la tabla de arco iris y la sal es que tiene una tabla de arco iris por valor de sal. Para calcular una tabla de arco iris es lo mismo que fuerza bruta la contraseña que usa sal simple o no usa ninguna. Cuesta tiempo, y generalmente mucho. Si todas sus contraseñas en la base de datos se eliminan usando un valor de sal diferente, el trabajo del atacante en caso de que su base de datos sea robada, en términos sencillos, se ha incrementado por orden de magnitud. Para cada contraseña, debe existir la tabla de arco iris precomputada específica.

No es una cuestión de protección per se , es una cuestión de hacer que la vida del atacante sea más difícil.

    
respondido por el hijarian 17.07.2015 - 17:09
fuente
0

Tu primer punto es fácil de responder. No hay nada que impida eso. La sal no es un medio para evitar los ataques de fuerza bruta de todos modos.

Tu segundo y tercer punto son más relevantes. Las sales están aquí para evitar tener una mesa de arco iris para dominarlas todas. Es decir, para cada usuario, tiene una sal diferente. Esto significa que si desea atacar a múltiples usuarios, tiene que hacer el trabajo de calcular las tablas del arco iris para esta sal en particular. Los cálculos de las tablas arco iris no son libres, especialmente cuando el valor de sal es lo suficientemente grande. Se necesita tiempo y dinero.

Por supuesto, las sales no son la solución que resolverá todos los problemas de contraseña. Sin embargo, la seguridad se trata de una compensación. Tiene un método simple para verificar la autenticación del usuario, pero lo hace difícil (consume tiempo y dinero) para el atacante. Una de las cosas que debe saber acerca de la seguridad es que "con los medios adecuados, puede romper cualquier cosa". No todos los atacantes tienen acceso a todos los medios necesarios.

    
respondido por el M'vy 17.07.2015 - 11:25
fuente

Lea otras preguntas en las etiquetas