¿Se puede encontrar el valor de una "sal constante" si pueden establecer la contraseña y obtener el hash?

3

Diciendo que tenemos un oráculo que un atacante puede usar tantas veces como desee. El atacante puede enviar un password no vacío a este Oracle. Oracle haheado la contraseña usando sha256(password + pepper) , y la envía al atacante.

El valor de la pimienta nunca cambia (es una sal mala constante).

¿Hay alguna forma en que un atacante pueda adivinar la pimienta? ¿Cómo llamaría el atacante al Oráculo para obtener esa pimienta?

¿Se aplica el mismo ataque si Oracle utiliza un método hash_hmac('sha256', password, pepper) en lugar de simple sha256(password + pepper) ? ¿Esto aplica para sha256(pepper + password) en lugar de sha256(password + pepper) ?

He visto la pregunta ¿Es posible obtener el salt si tengo el hash y la contraseña original? pero tenemos una condición más: el atacante puede obtener la cantidad de hash; original password couple que desee. para recuperar la pimienta constante, por lo que esta condición podría cambiar mucho?

Mi conjetura es que uno puede hacer recuperar la pimienta, pero no estoy seguro de cómo se haría. El proceso para recuperarlo no es tan importante, pero quiero obtener una prueba de que tal proceso existe y es factible.

    
pregunta Xenos 14.06.2018 - 15:37
fuente

3 respuestas

1

Un atacante que conoce la contraseña y el hash pero no el pimiento está en la misma posición que el atacante que conoce la sal y el hash, pero no la contraseña.

Poniéndolo de otra manera: hashedValue = hashFunction('thing attacker have', 'thing attacker does not have') .

En el clásico ataque de base de datos filtrado, el atacante conoce la sal y el hash, no la contraseña. En su caso, él sabe la contraseña y el hash. Se ve diferente, pero es exactamente lo mismo. Nada diferente en absoluto.

¿Dificultad? Depende de la longitud de la pimienta. Si es una cadena aleatoria de 128 bytes, es tan difícil como forzar una contraseña aleatoria de 128 bytes.

    
respondido por el ThoriumBR 14.06.2018 - 16:16
fuente
0

La forma más fácil es a través de la fuerza bruta que depende del tamaño de la pimienta. De lo contrario, tomaría un ataque criptográfico contra el propio SHA-256. Actualmente no se conocen tales ataques.

  

¿Hay alguna forma en que un atacante pueda adivinar la pimienta? ¿Cómo llamaría el atacante al Oráculo para obtener esa pimienta?

Si la entrada desconocida es lo suficientemente pequeña, una búsqueda exhaustiva regular puede encontrarla. De lo contrario, se necesitaría una grave vulnerabilidad criptográfica en el mismo SHA-256.

  

¿Se aplica el mismo ataque si Oracle utiliza un método hash_hmac ('sha256', password, pepper) en lugar de sha256 simple (password + pepper)?

Un HMAC mitiga los ataques de extensión de longitud, que no son de ninguna utilidad para el atacante aquí. Hay algunos ataques que un HMAC puede hacer más difícil, como los ataques de colisión (MD5 es vulnerable a colisiones con dificultad 2 18 , pero HMAC-MD5 no está alrededor del esperado 2 64 dificultad, por ejemplo). Estos ataques tampoco son relevantes aquí. En teoría, HMAC puede hacer que algunos ataques sean más difíciles, pero suponiendo que SHA-256 es un PRF ideal, un HMAC no proporciona ningún beneficio.

  

¿Esto se aplica a sha256 (pepper + contraseña) en lugar de sha256 (password + pepper)?

El primero es más seguro en teoría. Esto se debe a que podría calcular lo que sería H (a || b) , incluso si solo se le da H (a) explotando un ataque de extensión de longitud. Como tal, H (a || b) probablemente no es menos seguro que H (a) . Cuando se realiza al revés, esto puede ser menos seguro (en teoría). Esto se debe a que H (b || a) es equivalente a H '(a) , donde H' es SHA-256 con H (b) como el IV. Una preimagen que permite que el b controlado por el atacante se convierta en un IV débil puede debilitar H '(a) .

    
respondido por el forest 15.06.2018 - 05:26
fuente
-1

Hay tres formas posibles en que el atacante puede determinar la pimienta.

  1. Errores de implementación en Oracle. Si el Oráculo tiene un error, como el que filtra información sobre la pimienta (desbordamiento del búfer, etc.), el atacante podría determinar la pimienta.

  2. Pimienta baja en entropía. Si el pepper tiene una entropía muy baja de, por ejemplo, 32 bits, es trivial darle al Oracle una contraseña conocida, entonces en su propia computadora simplemente haga sha256 (known_password + n), para todos los 32 bits de n hasta que recupere el valor que Oracle te dio. Si el pimiento es lo suficientemente grande, esto no es factible.

  3. Una falla de diseño recientemente encontrada en SHA256 que filtra información sobre lo que está hash. (No hay fallas de diseño conocidas como esta a partir de junio de 2018).

respondido por el Steve Sether 14.06.2018 - 16:58
fuente

Lea otras preguntas en las etiquetas