Diga que tengo cadenas: stringA, StringB, stringC.
Y hago dos hashes: HashA = sha256 (stringA + stringB) HashB = sha256 (stringB + stringC)
Por el bien del argumento, sugiero sha256, pero responder a la pregunta de forma genérica es igual de bueno.
No soy un matemático fuerte, pero supongo que sí, y estoy tratando de revertir los hashes anteriores, y supe por un algoritmo en el código que hay una cadena B (aún desconocida para mí) que es la parte posterior de cadena que va a HashA y la parte anterior de HashB.
¿Puedo reducir el número de permutaciones requeridas, para averiguar qué cadena B podría haber sido, ya que para que los dos hashes puedan dar las respuestas que hacen, de la entrada superpuesta, si no reduce el espacio de entrada? ¿Necesitas fuerza bruta?
es decir, son los hashes más débiles debido a este comportamiento de tener los datos dentro de ellos solapados.
Para mayor claridad: Si stringA, stringB, stringC y stringD son secretos.
Y un atacante obtiene todo el código / algorthm, etc., excepto las cadenas, y tiene:
caso A: hashA = sha256 (stringA + stringB) y hashB = (stringB + stringC)
o caso B: hashC = sha256 (stringA + stringB) y hashD = (stringC + stringD)
Tengo la sospecha de que en el caso A es más fácil construir datos de origen para que coincidan con los hash que en el caso B, pero no conozco las matemáticas suficientes para respaldar mi sospecha.
Más claridad : suponga que las cadenas están saladas, aunque con la misma sal por registro y hashes para ese registro, y que el atacante conoce las sales. Las sales se pueden asumir como prefijadas antes de 'stringx + stringY' a través de mi texto si lo desea.
Gracias.