Categorías: ProgramacionSeguridad

Primeros pasos en criptografía

Una de las ramas más importantes hoy en día de la informática es la criptografía, que se encarga de la transmisión segura de la información. En este artículo queremos acercarnos a los principales conceptos y enseñaros un ejemplo de su uso.

Por qué es necesario cifrar los datos

Todavía hoy en día gran cantidad de personas piensan que no es necesario cifrar los datos, puesto que estos viajan de manera segura cuando son enviados. Esta idea es totalmente falsa, todos los datos (incluidas contraseñas) viajan de la misma manera por internet y esta manera consiste en enviarlos tal cual son. Debido a ello pronto se descubrió que no era muy seguro que en nuestro tráfico figurasen cosas como “user=pepe&pass=laPassDePepe” y se empezó a aplicar el cifrado de las comunicaciones.
El cifrado por lo tanto no es una cosa que haga la implementación de Internet por nosotros, sino que es un añadido por parte de los administradores web.

Sistemas criptográficos y funciones hash

Básicamente hay dos tipos de cifrados:

  • Cifrados de clave privada: en este caso tanto el emisor como el receptor comparten una clave con la cual se cifra y descifra la información que se quiere transmitir. Tienen como ventaja el ser más sencillos y rápidos a la hora de descifrar y cifrar, pero tienen el problema de que hay que compartir una misma clave. Un ejemplo de este tipo de sistema de cifrado es AES
  • Cifrados de clave pública: en este caso el emisor y el receptor tienen distintas claves. Sus claves son más complejas y están formadas por dos partes: una pública que se anuncia a cualquier emisor y una privada que nunca se envía. La ventaja radica en que no se necesita compartir una clave y por lo tanto se puede enviar datos por canales inseguros de forma segura. Las desventajas son principalmente el mayor coste computacional y la complejidad de este tipo de comunicaciones. En este caso encontramos RSA como máximo exponente de los sistemas criptográficos de clave pública.

El otro concepto que también se suele utilizar de manera recurrente en este campo es el de función hash, una función hash básicamente es una función que partiendo de una entrada de datos arbitraria genera una un conjunto de caracteres de la misma longitud siempre. Pero además debe cumplir:

  • para la misma entrada de datos, siempre debe retornar el mismo hash (la salida de la función hash).
  • teniendo un hash, debe ser muy difícil encontrar cuales eran los datos de entrada de la función.
  • teniendo dos datos de entrada muy similares, debe retornar hash muy distintos.
  • es muy difícil encontrar dos datos de entrada que proporcionen el mismo hash de salida.

El uso de estas funciones está siempre relacionado con validar que los datos no han sufrido modificaciones en el envío. Por ejemplo las ISO de Linux suelen siempre venir acompañadas de un hash para que verifiques si ese archivo es el mismo que el que ellos tienen en el servidor y no ha sufrido modificaciones o cambios en el camino. Son funciones hash MD5 y SHA2.

El software de criptografía

Debido a que teníamos una asignatura sobre criptografía y la posibilidad de realizar un trabajo sobre la misma, he desarrollado un programa que envía y recibe datos cifrados a través de internet que podéis ver aquí
Aquí podéis ver un ejemplo de ejecución:

Jorge Durán

Entusiasta de la tecnología desde los 10 años, desarrollador y creador de varios proyectos de software y autodidacta por naturaleza. Ingeniero Informático por la USAL y .Net backend developer en idealista.

Share
Publicado por
Jorge Durán

Recent Posts

Docker: conceptos principales y tutorial paso a paso

Hoy queremos hablaros de Docker un proyecto que cada día es más usado, porque permite…

3 años hace

Crea diagramas rápidamente usando código

Cada vez estamos más acostumbrados a usar código para generar la infraestructura (IaC), documentar nuestro…

3 años hace

Procesamiento del lenguaje natural con ElasticSearch

Uno de los problemas que se presentan con una mayor frecuencia hoy en día, es…

4 años hace

Elige tecnología clásica y aburrida

Uno de los problemas que solemos tener los programadores, es que nos gusta estar a…

4 años hace

Cómo usar Docker en Windows

Docker es una de las herramientas más usadas por los desarrolladores, sin embargo, usarlo en…

4 años hace

Analiza el coste del uso de JavaScript

Como seguramente sabrás el uso de JavaScript ha crecido exponencialmente en los últimos tiempos, sin…

5 años hace