SHA es una familia de funciones hash criptográficas. El objetivo es proporcionar una salida determinista para cada entrada dada, pero hacer que sea imposible encontrar otras entradas que produzcan la misma salida.
Por ejemplo, suponga que detecta si un archivo ha cambiado. Debería poder comparar simplemente los valores hash antiguos y nuevos, en lugar de comparar todo el archivo. Un atacante malintencionado podría querer cambiar el archivo a un archivo diferente con el mismo valor hash (por ejemplo, si el archivo almacena una serie de transacciones de Bitcoin, podría agregar más dinero para sí mismo). Pero debería ser imposible para ellos hacer esto.
Si dos entradas diferentes producen la misma salida, se dice que colisionan. Las colisiones son muy malas, porque hacen que la función hash sea insegura.
- ¿Por qué las contraseñas no son más discretas?
- Cómo hackear la clave antivirus
- ¿Cuáles son las mejores certificaciones para las pruebas de seguridad?
- ¿Cuál debería ser mi carrera profesional para ser un experto en seguridad cibernética?
- ¿El antivirus pro pago realmente funciona en dispositivos móviles?
Para evitar colisiones, cada uno de los algoritmos SHA realiza docenas de rondas de intercambio de bits entre diferentes ubicaciones y las envía XOR con otros bits en la entrada. Es una forma determinista de codificar toda la información que es (con suerte) imposible de revertir.
Si la salida es de 128 bits, entonces la posibilidad de que dos entradas aleatorias colisionen es 1 en 2 ^ 128, o aproximadamente 1 en mil millones de billones de billones. Es mucho más probable que gane la lotería Powerball y luego sea alcanzado por un rayo dos veces que al azar encontrar una colisión.