En el post anterior puse un ejemplo de cifrado utilizando el algoritmo RSA y decía que este algoritmo se utiliza, además, para validar por parte del receptor la autenticidad e integridad del mensaje, es decir, tanto que la persona que lo ha enviado es el emisor legítimo (es quien dice ser), como que el mensaje no ha sido interceptado y alterado por un tercero (integridad), y en éste trataré sobre esto último.
Para ello es necesario hablar en primer lugar de las funciones hash, que obtienen un resumen del mensaje en forma de número, de tamaño fijo mucho menor que el mensaje original, asociado unívocamente a éste (es prácticamente imposible encontrar otro mensaje que dé como resultado el mismo resumen) e irreversible (es prácticamente imposible obtener el mensaje a partir del resumen), y que después el emisor cifrará con su clave privada.
1.- Para firmar digitalmente un mensaje (M) el emisor obtiene un resumen del mismo mediante una función hash (h), que como ya he dicho lo representa de una manera única.
2.- El emisor cifra el resumen del mensaje (h(M)) utilizando su clave privada (d, n). Ésto sólo puede hacerlo él mismo, ya que es el único que posee su clave privada, y cualquiera que tenga la clave pública del emisor (e, n) estará en condiciones de descifrar el resumen, que llamaremos firma o signatura (S), y verificarla. Para ello, el emisor realiza la siguiente operación: S = (h(M))d mod n.
3.- El emisor envía al receptor el mensaje y la firma digital cifrados (C, S). Ya comenté en el post anterior cómo se cifran y descifran los mensajes y en éste me centro únicamente en la firma.
4.- El receptor descifra ambos y obtiene M y h(M). En el caso de la firma utilizando la clave pública del emisor y mediante la siguiente expresión: h(M) = Se mod n.
5.- El receptor calcula ahora el resumen del mensaje que ha descifrado en el paso anterior, es decir, realiza la siguiente operación: h'(M).
6.- Si h'(M) = h(M) se acepta la firma como válida, en caso contrario se rechaza. Si la firma es válida el receptor se asegura de que el mensaje ha sido originado realmente por el emisor y de que el mensaje no ha sido interceptado y alterado por un tercero.
Ejemplos de funciones hash son los algoritmos MD5 y SHA-3.
Comentarios
Publicar un comentario