Qué difícil es resolver un problema de sal si se conocen los datos originales y la salida de hash que utiliza el algoritmo SHA-2

2

Estoy leyendo la documentación de Kentico donde describe el uso de hashes para validar cadenas de consulta

EX:http://localhost/KenticoCMS8/cms/getfile/2d003444-9a27-43c9-be97-4f5832474015/Partners_logos_silver.aspx?latestfordocid=75&hash=eee41e027bd45142fd1f44d173d61950f34d6e98f4e35018fda70542322adc77&chset=013bca78-6bf2-42ac-8959-b8bbbeb0a8e8

Documentación enlace

Estoy haciendo una suposición: en su propio hash de una cadena de consulta y su inclusión como parte de la cadena no es útil. Cualquiera que conozca el algoritmo (publicado en el documento de ayuda) puede simplemente generar el hash de su nueva cadena de consulta maliciosa e incluirlo como parte de la solicitud.

La protección adicional que usa Kentico es un sal estático que se incluye cuando se utiliza la función hash de la cadena de consulta. Esto debería hacer que generar tu propio hash no sea tan simple.

Mi pregunta es ¿qué tan difícil sería resolver esta sal? Un atacante podría generar fácilmente muchas cadenas de consulta diferentes. Conocerían la entrada, la salida y el algoritmo. ¿Podrían simplemente descubrir la sal?

Y si conocen la sal, ¿pueden entonces, sin ninguna dificultad, generar sus propias cadenas de consulta?

    
pregunta Andrey 18.04.2014 - 22:11
fuente

1 respuesta

2

Los hash criptográficos en principio no son reversibles. Por lo tanto, no debería ser posible obtener la sal tomando una cadena de consulta conocida y un hash asociado (o un conjunto de ellos) e invirtiéndolos, aparte de intentar la fuerza bruta. La fuerza bruta no será factible con un GUID aleatorio que tiene 32 caracteres hexadecimales (un carácter hexadecimal es de 4 bits, por lo tanto, el GUID es de 128 bits). Por lo tanto, la fuerza bruta de la sal debe requerir la creación de ~ 2 ^ 128 hash sha-2 para crearse (la mitad del tiempo se debe encontrar con 2 ^ 127 o menos hashes). Por otro lado, si usas un sal de 2 caracteres hexadecimales, la fuerza bruta sería trivial con solo 2 ^ 8 = 256 hashes SHA-2.

Concedido, este análisis supone que no existen nuevos ataques no publicados en SHA-2 o uno que utiliza esta superficie de ataque expandida al ser capaz de crear múltiples hashes de texto arbitrario, todos comenzando con la misma sal. Este escenario parece un poco similar a los ataques de claves relacionadas donde se rompe un cifrado (encuentra la clave de descifrado) cuando se le ayuda para poder forzar a alguien a cifrar datos con varias claves desconocidas que están relacionadas en algún sentido matemático (algunos bits varían pero la mayoría son iguales).

Sin embargo, no estoy al tanto de ningún ataque de este tipo en SHA-2 o cualquier otro hash y nunca he visto el problema discutido activamente, dado todo excepto en la siguiente "H (s ++ p1) = h1, H (s ++ p2) = h2, ..., H (s ++ pN) = hN) "recupera s . Típicamente piensas en tres ataques con respecto a las funciones hash; resistencia de pre-imagen (dada h generada por H (m) encontrar m), segunda resistencia de pre-imagen (dada m1 encuentra otro m2 tal que H (m1) = H (m2)), y resistencia de colisión (encuentre dos m1 distintos) , m2 tal que H (m1) = H (m2)). Esto es algo diferente.

Personalmente, no puedo imaginar cómo un ataque de este tipo funcionaría en un hash criptográfico moderno como SHA-2 (con 64 rondas) debido a la avalanche effect , pero para citar Schneier's law " Cualquier persona puede inventar una seguridad sistema tan inteligente que él o ella no pueden imaginar una manera de romperlo ". El hecho de que no se haya estudiado ampliamente no me haría confiar en que las funciones de hash serían resistentes a este tipo de efecto contra atacantes muy sofisticados.

    
respondido por el dr jimbob 18.04.2014 - 22:50
fuente

Lea otras preguntas en las etiquetas