Breve introducción a la Criptografía

1
9984

Breve introducción a la Criptografía

Breve introducción a la Criptografía

0. Índice de contenidos.

1. Introducción

La seguridad en las redes siempre ha sido un tema importante, y no esta de más tener algo más de conocimiento sobre la base de esta seguridad: la criptografía. En este tutorial vamos a ver una pequeña introducción a la criptografía… Aunque no entraremos en temas matemáticos (Será dificil, la criptografía es TODO matemáticas jeje) intentaré abriros el apetito para que cotilleis por vuestra parte, y poder sentar las bases de futuros tutoriales 😉

Para la mayor parte de los ejemplos necesitaremos a dos buenas personas que quieran comunicarse y alguien malvado y amoral que quiera armarla gorda. En mi caso me gustan Alicia, Bob y Darth. Muchos usan Mallory o Mata Hari como malvado amoral, pero Darth suena mucho más oscuro jeje

2. ¿Que es la criptografía? ¿Que objetivos tiene?

La criptografía es un conjunto de técnicas, métodos y algoritmos que tienen como objetivo tradicional cifrar mensajes para hacerlos ininteligibles para quien no debe leerlos. Actualmente la seguridad en la red se centra en 5 pilares, algunos de los cuales veremos como se pueden asegurar gracias a distintas técnicas criptográficas:

  • Autenticación: Queremos asegurarnos de que el mensaje que nos envian tiene el origen que nos han dicho. Bob tiene que ser capaz de recibir un mensaje y saber que su emisor es Alicia, y no Darth con peluca.
  • Control de acceso: No queremos que nadie acceda a recursos sin tener autorización.
  • Confidencialidad: Queremos asegurarnos de que el mensaje enviado solo lo lee quien debe. Alicia quiere que sus intimidades solo las conozca Bob.
  • Integridad: Los mensajes no deben poder ser modificados. ¿De que sirve asegurar el origen y el destino del mensaje si cualquiera puede cambiar su contenido?
  • No repudio: Una vez enviado el mensaje, no vale negarlo. Se podría considerar una forma más extrema de Autenticación.

3. ¿Con que herramientas contamos?

Bueno acabamos de ver que tenemos una lista de objetivos que lograr. Veamos a ver tres técnicas criptográficas para enfrentarnos a esto: Criptografía simétrica, criptografía asimétrica y hash.

3.1. Criptografía simétrica

La base de cualquier técnica criptográfica es agarrar el texto plano y aplicar sobre el una función F que lo modifique, normalmente a nivel de bits (así de chulos somos los informáticos). Esta función suele ser pública, principalmente para que todo el que pase pueda intentar atacarla y verificar que es supersegura. Lo que permite que es mensaje cifrado de Alicia y Bob sea indescifrable para Darth (que también conoce la función F) es la clave.

Los mejores ejemplos para esto son los tradicionales. Por ejemplo el Cifrado César (os dejo adivinar quien lo usaba jeje) consiste en reemplazar cada letra del abecedario por la letra situada X posiciones después. En este caso la función F consiste en ese desplazamiento, pero sin saber el número de posiciones que toca desplazar no se puede obtener el mensaje original a partir del cifrado.
Acá vemos un ejemplillo con clave=2:

La criptografía simétrica consiste en que la clave de cifrado sea la misma que la de descifrado. Estas técnicas criptográficas suelen ser rápidas de computar, y de hecho son las más usadas en la mayor parte de mensajes. Solo tienen un pequeño defecto… para poder se usadas se necesita que Alicia y Bob tengan la clave! Parece una tontería, pero lo que garantiza la seguridad es la clave… no puedes enviarla por WhatsApp. Alicia podría susurrarsela al oido a Bob, pero es poco eficiente y desde luego escalabilidad 0.

Esto nos lleva al siguiente tipo de criptografía: la criptografía asimétrica.

3.2. Criptografía asimétrica

Si la criptografía simétrica consiste en tener una única clave para descifrar y cifrar, la criptografía asimétrica consiste en lo contrario: una clave encripta y otra distinta desencripta. Y aún tiene más miga, si encriptas con la segunda clave se puede obtener el mensaje desencriptando con la primera!

Mucho me temo que no hay ejemplos históricos comprensibles de este tipo de criptografía, de hecho este tipo de criptografía tiene explicaciones matemáticas complejas (pista) que veremos en algún tutorial posterior.
A diferencia de la criptografía simétrica, estas técnicas suelen tener costes computacionales mucho más altos, por lo que suelen usarse principalmente para distribuir las claves simétricas que codificarán el mensaje en sí.

Una vez que tenemos el algoritmo y las claves, el procedimiento es el siguiente. Alicia tendrá una de las claves, que llamará clave privada, mientras que pregonará al resto del mundo la otra, la clave pública. Bob tendrá otro par de claves y hará los mismo: guardará con celo una privada y repartirá alegremente la otra. Veamos a ver que conseguimos con esto:

  • Si Alicia encripta un mensaje con su clave privada, solo se podrá desencriptar con la clave pública. Con esto se logra que todo el mundo sepa quien ha encriptado un mensaje: Autenticación.
  • Si Alicia encripta un mensaje con la clave pública de Bob, solo Bob podrá desencriptarlo (nadie más tiene su clave privada). Con esto se logra que el mensaje solo lo lea Bob: Confidencialidad.

Bueno, llevamos 2 de los 5 pilares de la seguridad… Vamos a por la última técnica criptográfica que veremos: Funciónes Hash Criptográficas.

3.3. Función Hash Criptográfica

Una función Hash permite, a grandes rasgos, convertir un conjunto de datos de tamaño variable en un dato de tamaño fijo. A los informáticos nos gusta usarlas para acceder a datos de forma rápida (HashMap, HashTable) y por ejemplo en Java todos los objetos tienen un método hashCode() que nos proporciona su hash.

Una buena función hash tiene características como:

  • Determinista: Un mismo input siempre produce el mismo output.
  • Resistencia a colisiones: Cuantos menos inputs produzcan el mismo output, mejor. No queremos que la mitad de los mensajes que codifiquemos produzcan el mismo resultado.
  • Fácil de calular: Fácil, rápida y para toda la familia.

A estas características se suman las siguientes para las funciones hash usadas en criptografía:

  • Imposible calcular el mensaje de a partir de su hash: Somos humanos… lo dejamos en computacionalmente inviable.
  • Imposible encontrar dos mensajes con el mismo hash: Una vez más, que sea muy muy dificil.

¿Y que uso le damos a las funciones hash en criptografía? Checksums! La idea original de los checksums es comprobar que los datos no se han corrompido al ser transportados de aca para alla… pero sirven perfectamente para comprobar que Darth no ha modificado el mensaje: Integridad.
Se envia el mensaje concatenado con su propio hash, de tal manera que Bob puede comprobar que el hash del mensaje coincide con el enviado.

Si además encriptamos el hash enviado con la clave privada de Alicia, nos aseguramos de que el mensaje no ha sido modificado y de que Alicia lo emitió: Firma digital!

4. Conclusión

Bueno en este tutorial hemos visto varias técnicas de Criptografía muy por encima… Nos ha enseñado lo mucho que hay por aprender en este campo!
Espero que os haya gustado!

1 Comentario

Dejar respuesta

Please enter your comment!
Please enter your name here