¿Puede HMAC filtrar la contraseña? [duplicar]

0

Imágenes del siguiente pseudocódigo:

h = hash(sha512)
h.input(password)
h.input(message)
send h, message to client

Si el usuario tiene el hash y el mensaje, y la única variable que falta es la contraseña, ¿por qué no puede revertir la ingeniería sin la fuerza bruta? Math me ha enseñado que si tienes dos de cada tres variables, entonces siempre puedes resolver la que falta.

    
pregunta Soviero 20.08.2014 - 18:19
fuente

1 respuesta

1

Lo que Math te ha dicho es correcto si asumes singularidad e igualdad. Por ejemplo, de a = b + c, se sigue que b = a - c. ¿Porqué es eso? La adición tiene una función inversa que vuelve a asignar un par de enteros a un entero único. Si piensa en + como una función con notación de infijo y dos argumentos. Piense en - como el inverso de esa función. Entonces obtendrías: a = + (b, c), y por lo tanto b = - (a, c).

De la misma manera, se podría pensar en hash como una función con dos argumentos. Y lo inverso sería alguna función hash '. Discutiré la existencia de tal hash ' a continuación. Entonces, obtendríamos

h = hash ( m , p ).

Sin embargo, no obtendríamos m = hash ' ( h , p ).

¿Por qué? La respuesta simple es que no existe un único v tal que dado que h tenemos ese h = hash ( v ). El principio del casillero nos dice que debe haber colisiones para el hash (lo que significa que debe haber algunas h para las que hay v1 y v2 tal que hash ( v1 ) = h = hash ( v2 )). Esto se debe a que la longitud de las imágenes bajo hash es fija. La longitud de las entradas de hash , sin embargo, no están delimitadas. Por lo tanto, no hay una función hash ' que devuelva un solo valor. Preferiría devolver algo así como un conjunto de valores.

Su pregunta es por qué no podemos encontrar dicho valor (es) mediante (simplemente?) ingeniería inversa hash . La respuesta a esta pregunta radica en la forma en que se construyen tales funciones hash. Su propósito es comprimir y ofuscar, lo que significa que una pequeña variación en la entrada dará lugar a cambios tremendos en la salida. Si necesita explicaciones más precisas, le recomiendo que busque una función hash simple como md5. El código fuente está disponible públicamente. ¡Intenta 'invertirlo'!

    
respondido por el ricona 20.08.2014 - 21:26
fuente

Lea otras preguntas en las etiquetas