Introducción a la Criptologia (II) Protocolos y Firmas Digitales

Continuando con esta serie, adelanto que serán 3 partes, máximo 4, dado que es introductorio, en esta segunda parte, como bien titulo, tocare el tema sobre los protocolos criptograficos y las firmas digitales. Pero antes por si te perdiste la parte (I), que esperas y leela antes. 🙂

La firma digital, hace posible que el destinatario se asegure que el mensaje que recibe es enviado por quien dice ser el remitente. Obviamente nos asegura que ninguna parte del mensaje ha sido alterada durante el envió.

Se les puede clasificar de varias maneras:

  • Implícitas, si están contenidas en el propio mensaje.
  • Explicitas, si son agregadas como una marca inseparable del mensaje.
  • Privadas, si permite identificar al remitente solo para alguien  que comparte un secreto con el remitente.
  • Publicas, si permite identificar al remitente ante cualquier persona a partir de información públicamente disponible.
  • Revocables, si el remitente puede, posteriormente, negar que la firma digital en cuestión le pertenece.
  • Irrevocables, si el receptor puede probar que el remitente escribió el mensaje.

Se puede decir que las firmas digitales deben ser fáciles de hacer y de verificar, y difíciles de falsificar. Con el fin de evitar un ataque contra las firmas por sustitución.

Tomemos como ejemplo lo siguiente, para poder explicar lo que viene a continuación, tomen en consideración que <rubrica> proceso previo, usando la clave privada y que solo puede ser usada por el usuario que quiere enviar el mensaje, y la firma digital, sera el cifrado de la <rubrica> que es enviado por medio del canal inseguro, entonces, si A desea firmar digitalmente el mensaje m, enviá el mensaje cifrado c al usuario B, el proceso para firmar, sería:

1.- A calcula su rubrica cifrando el mensaje a enviar con su clave privada:

formula01

es claro que r es la rubrica de A para el mensaje m, pues es el único que puede generarla.

2.- A continuación, A determina su firma para el mensaje m solo con cifrar, con la clave publica de B, la rubrica que acaba de determinar:

formula02

Ahora B recupera el mensaje m, y para verificar la firma digital de A:

1.- B determina la rubrica de A para que el mensaje recibido sin mas que calcular

formula03

,por medio de su clave privada.

2.- B comprueba que

formula04

La firma digital del criptosistema RSA, para enviar el mensaje m, el usuario A. cuya clave publica es (na, ea) y cuya clave privada es da, lleva a cabo los siguientes pasos:

1.- Calcula su rubrica cifrando el mensaje mediante su clave privada:

formula05

2.- Determina su firma digital solo con cifrar con la clave publica de B la rubrica anterior:

formula06

El mensaje firmado que A enviá a B es la pareja formada por (c,s), siendo c el criptograma correspondiente al mensaje m. Es claro que solo A puede determinar la rubrica anterior, porque es el único que conoce da.

Ahora para que B pueda verificar que al firma corresponde a A, queda comprobar que:

formula07

formula08

Concluyendo, se debe tener en cuenta que para elaborar la rubrica r, el mensaje m debe estar dentro del rango de na, así como su longitud debe ser menor a na, como nb para poder determinar la rubrica del remitente. Por otro lado la rubrica que se obtiene al cifrar con la clave privada del remitente debe estar dentro del rango de nb, ya que para calcular la firma digital hay que reducir el modulo nb. Si fuera r > nb, la rubrica debe ser dividida en bloques y ser cifrados cada uno.

Vale resaltar también, la firma digital del criptosistema Elgamal y ya que lo conozco nulamente, solo dejare el link en wikipedia para tenerlo como referencia.

Funciones Hash, sabemos que las claves publicas generalmente cifran  de forma mucho mas lenta que los criptosistemas de claves secretas, como el DES y ya que también los esquemas de firma digital suelen ser muy lentos y en ocasiones , la longitud de la firma sueles ser similar o mayor que el propio mensaje que se firma. La necesidad de firmar y el hecho no deseable que la longitud de la firma sea extensa, hace pensar en la conveniencia de buscar una solución a este problema. Esta solución consiste en utilizar las llamadas funciones hash antes de firmar un mensaje.

Una función hash, es una función computable que aplica a un mensaje m de tamaño variable, una representación de tamaño fijo del propio mensaje: H (m), que es llamado su valor hash. Estas se definen como sigue:

formula09

En general, H(m) es mucho menor que m; por ejemplo, m puede tener una longitud de un megabyte, mientras que H(m) se puede reducir a 64 o 128 bits. Las funciones hash, más utilizadas  con propósitos criptográficos son las funciones MD2 y MD4 (ya en desuso) y MD5 (Message Digest) además de la familia SHA (actualmente SHA1 en uso, pero ya existen SHA2 y SHA3 ), estas producen resúmenes de 128 bits y el único ataque que se conoce contra  ellas es el de la investigación exhaustiva.

Propiedades

  • Compresión, la principal característica de las funciones  hash es que dada una longitud, la cadena resultante siempre tiene la misma longitud.
  • Unidireccional, dada y perteneciente al espacio de llegada, es computacionalmente imposible calcular una x tal que h(x)=y.
  • Difusión, para cualquier mensaje introducido a la función, siempre devuelve códigos hash diferentes.

Cuando no se cumple la propiedad de difusión se dice que hay colisiones. Hay una colisión cuando tenemos un x y x’ diferentes, y h(x)=h(x’). Por ejemplo, un algoritmo que nos devuelve un hash de 128 bits. Para que cada hash equivalga a un único texto base, tendrían que existir solamente 2^128 textos distintos, lo cual no es cierto. Como textos distintos hay infinitos, podemos decir que hay infinitas posibilidades que dos textos tengan el mismo hash. A esto se le conoce como colisiones, una e las fortalezas de la función hash requiere que sean las mínimas posibles y que encontrarlas sea lo mas difícil posible

Los resúmenes MD5 se utilizan extensamente en el mundo del software para proporcionar la seguridad de que un archivo descargado de Internet no se ha alterado. Comparando una suma MD5 publicada con la suma de comprobación del archivo descargado, un usuario puede tener la confianza suficiente de que el archivo es igual que el publicado por los desarrolladores. Esto protege al usuario contra troyanos y virus que pudieran ser incluidos en el software. La comprobación de un archivo descargado contra su suma MD5 no detecta solamente los archivos alterados de una manera maliciosa, también reconoce una descarga corrupta o incompleta.

Para comprobar la integridad de un archivo descargado de Internet se puede utilizar una herramienta MD5 para comparar la suma MD5 de dicho archivo con un archivo MD5SUM con el resumen MD5 del primer archivo. En los sistemas UNIX, el comando de md5sum es un ejemplo de tal herramienta.

En sistemas UNIX y GNU/Linux se utiliza el algoritmo MD5 para calcular el hash de las claves de los usuarios. En el disco se guarda el resultado del MD5 de la clave que se introduce al dar de alta un usuario, y cuando éste quiere entrar en el sistema se compara el hash MD5 de la clave introducida con el hash que hay guardado en el disco duro. Si coinciden, es la misma clave y el usuario será autenticado. Los sistemas actuales GNU/Linux utilizan funciones de hash más seguras, como pueden ser SHA2 o SHA3.

SHA1 ha sido examinado muy de cerca por la comunidad criptográfica pública, y no se ha encontrado ningún ataque efectivo. No obstante, en el año 2004, un número de ataques significativos fueron divulgados sobre funciones criptográficas de hash con una estructura similar a SHA1; lo que ha planteado dudas sobre la seguridad a largo plazo de SHA1, para variar chinos.

Realmente un tema muy interesante y que abarca mucha información (me quedo corto) les recomiendo una lectura profunda a estos libros, de los que hice una entrada hace ya mucho tiempo https://h4ckseed.wordpress.com/2015/02/06/20-ebooks-sobre-criptografia-y-cifrado/ mucha de la información que trato de explicarles esta basada en algunos de estos.

Hasta el próximo post, buenas vibras lectores.

Anuncios

3 comments

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s