Como se explica allí , los hashes SHA-1 son identificadores de los objetos almacenados , incluidas las confirmaciones: se calculan de forma determinista a partir del contenido del objeto. No hay secreto ahí dentro. Aunque SHA-1 es nominalmente unidireccional, esto permitiría teóricamente permitir que un atacante, que quiere adivinar el contenido de un objeto, verifique si su suposición es correcta o no . Esto implicaría adivinar exactamente , hasta el último bit, incluidas las marcas de tiempo y otras cosas similares.
Si su objeto contiene algunos datos secretos que pueden ser forzados por la fuerza bruta (por ejemplo, una contraseña, sujeto a ataques del diccionario ) , entonces un atacante podría utilizar el hash SHA-1 como prueba. Esto parece difícil debido a la condición de adivinar todo lo demás correctamente, pero existe la posibilidad. Por lo tanto, si su confirmación contiene tales datos secretos, tiene razón al cambiar el valor de hash, pero en ese caso, no lo modifique ligeramente , porque es casi imposible. La coincidencia es tan buena como una coincidencia exacta en valores hash, para el atacante. Cambie los valores de hash completamente: reemplace cada uno de ellos con una secuencia de 40 caracteres hexadecimales aleatorios.
Tenga en cuenta que conocer los valores de hash no otorga ningún otro poder adicional al atacante; en particular, no le dan acceso al repositorio.