Básicamente, el hash se utiliza para la “integridad”. Integridad significa que los datos enviados y los datos recibidos no han sido modificados a lo largo del proceso por un tercero malicioso. Lo que ocurre es que el emisor genera un hash para los datos utilizando un algoritmo de hash, luego el receptor recibe los datos y genera el hash del algoritmo de hash. Si los hash coinciden, entonces los datos no han sido manipulados por un tercero
Sí. Aunque es un hash, o hashing.
Sólo añadiría que un hash válido no garantiza que el mensaje no haya cambiado, sólo que es poco probable hasta cierto nivel. Por ello, es importante elegir la función hash y lo que incluyes en el hash para satisfacer tus necesidades.
No exactamente. Un Algoritmo Hashing es una fórmula matemática que toma un Mensaje de longitud arbitraria como entrada y produce como salida una muestra representativa de los datos originales. (Esta definición es correcta). Un caso de uso para el algoritmo de hashing (entre muchos) es ayudar en la integridad de los mensajes, que asegura que un mensaje no ha sido modificado en tránsito (hasta un nivel razonable). Pero el simple hecho de utilizar un algoritmo de hash en un mensaje, como usted ha descrito, no proporciona la integridad del mensaje. Este es un ejemplo de cómo has descrito la integridad de los mensajes: Si fueras un MITM, y modificaras el mensaje y simplemente recalcularas el hash…. el receptor recibiría un mensaje (modificado) con un digesto que coincide con el mensaje modificado… y por lo tanto sería incapaz de detectar que se hizo un cambio. En su lugar, las dos partes utilizan un Código de Autenticación de Mensajes, que tiene el siguiente aspecto: La diferencia crucial es que el mensaje se combina con una clave secreta que sólo conocen las dos partes de la comunicación. Esto es lo que hace imposible que un MITM cambie maliciosamente los mensajes en tránsito.