Skip to content Skip to sidebar Skip to footer

Criptografía

¿Qué es la criptografía?

La palabra Criptografía proviene del griego ”kryptos” que significa oculto, y ”graphia”, que significa escritura. Se le llama criptología a la disciplina encargada del estudio de los sistemas de seguridad de la información y se divide en criptografía y criptoanálisis. Entre las disciplinas que engloba cabe destacar la Teoría de la Información, la Complejidad Algorítmica y la Teoría de números o Matemática Discreta, que como ya sabemos estudia las propiedades de los números enteros. El criptoanálisis consiste en buscar los puntos débiles de un sistema criptográfico. Es un proceso de romper códigos, es decir el proceso de intentar calcular la llave dado un texto codificado. Un ejemplo de estos procedimientos es el ataque por fuerza bruta en el cual se intentan todas las claves posibles para poder obtener el texto plano. Con la criptografía se trata de modificar un mensaje de tal forma que sea completamente ilegible a no ser que se posea la clave para volver a ponerlo en su estado original.

Aplicaciones de la criptografía

La aplicación principal de la criptografía es la protección de información y evitar que sea accesible para observadores no autorizados. Tiene otras aplicaciones como verificar la identidad de algún observador o usuario y verificar que un mensaje no ha sido modificado intencionadamente por un tercero.


La criptografía a través del tiempo

La utilización de la criptografía es muy antigua, las técnicas criptográficas se remontan a la antigüedad, y ya en el año 400 a.C. aparecen las primeras prácticas.

Ejemplos históricos

  • Escítala espartana:
    Era utilizada en la antigua Grecia por los espartanos para enviar mensajes ocultos entre las tropas militares. La escitala era un listón de madera en el que se enrollaba una tira de cuero. Sobre esta tira se escribía el mensaje que se quería ocultar en columnas paralelas al eje del palo. Al desenrollar la tira se muestra un texto incoherente (aparentemente) con el texto inicial, pero que puede leerse volviendo a enrollar la tira sobre un palo del mismo diámetro que el primero. Por lo que en este procedimiento se requiere que el emisor y el receptor del mensaje dispongan de un listón del mismo diámetro para poder descifrar el comunicado.
Escítala espartana

Tablero de Polibio:

En este tablero de dimensiones 5×5 cada letra es equivalente a una pareja de ellas, correspondiendo a la fila y a la columna que forman sus coordenadas.
Cifrado de César:
Sustituía cada letra del mensaje por la que se encontraba tres posiciones adelante en el alfabeto.

Disco de Alberti:
disco cifrador mediante el cual es posible transformar textos sin que exista una correspondencia única entre el alfabeto del mensaje y el alfabeto usado para el cifrado. Con este sistema, cada letra del texto que se desea cifrar se corresponde con un carácter distinto dependiendo de la clave secreta utilizada

Disco de Alberti

Cifrado Vernam:
cifrado basado en un sistema de sustitución a través de un alfabeto binario (cinco dígitos binarios por cada carácter alfabético). Con este método se abordan cuestiones probabilísticas mediante la generación de números aleatorios. Durante muchos años se sostuvo la teoría de que este método era totalmente seguro, pero en 1949 se demuestra matemáticamente las técnicas necesarias para descriptar el mensaje cifrado.

Pasos para cifrar un mensaje con Vernam:

  1. Convertir el mensaje original a código binario.
  2. Crear una clave binaria aleatoria del mismo tamaño que el mensaje.
  3. Sumar el mensaje y la clave mediante una operación módulo 2.

A partir de la evolución de las computadoras, la criptografía recobró gran importancia, fue mayormente empleada y modificada, y se constituyó finalmente con algoritmos matemáticos.

Los métodos de criptografía actuales son seguros y eficientes y basan su uso en una o más llaves. La llave es una secuencia de caracteres, que puede contener letras, dígitos y símbolos (como una contraseña), y que es convertida en un número, utilizada por los métodos de criptografía para codificar y decodificar mensajes.

Tipos de criptografía

1. Criptografía simétrica

La criptografía simétrica solo utiliza una clave para cifrar y descifrar el mensaje, que tiene que conocer el emisor y el receptor previamente. El punto débil de este sistema es la comunicación de las claves entre ambos sujetos, ya que resulta más fácil interceptar una clave que se ha transmitido sin seguridad. Una de las ventajas es que este tipo de sistema es muy flexible ya que se puede modificar para un fácil ejecución, velocidad de cómputo o lo que se requiere; pero es necesario que ambas partes conozcan la llave.

Ejemplos de sistemas simétricos:
• D.E.S. (Encriptación Estándar de Datos)
• GOST versión rusa del D.E.S
• IDEA (International Data Encryption Algorithm), algoritmo desarrollado en Zurich

La Máquina Enigma
La criptografía, históricamente, ha estado vinculada a las campañas militares y los secretos de los gobiernos, durante la Segunda Guerra Mundial la criptografía cobró gran importancia. Hubo un sistema de cifrado que fue usado por Alemania y que tuvo en jaque a los aliados.

La máquina Enigma fue inventada por un ingeniero alemán, Arthur Scherbius, un experto en electromecánica que, tras la Primera Guerra Mundial, quiso aplicar la tecnología existente para mejorar los sistemas de criptografía de los ejércitos, la cual permitía descifrar y descifrar mensajes.

Usaba un método simétrico con un algoritmo que dependía de una clave (que más que clave parece un ritual) que está formada por: los rotores o rodillos que usaba, su orden y la posición de cada anillo. Otro inconveniente que tiene este sistema es que si quieres tener un contenido totalmente confidencial con 10 personas tienes que aprenderte o apuntarte (siendo esta forma menos segura) las 10 claves para cada persona.

Máquina Enigma

2. Criptografía asimétrica

La criptografía asimétrica se basa en el uso de dos claves: la pública (que se podrá difundir sin ningún problema a todas las personas que necesiten mandarte algo cifrado) y la privada (que no debe de ser revelada nunca).

Ejemplos de sistemas asimétricos:
• Algoritmo RSA: este es el algoritmo más utilizado y de los más sencillos.
• Criptografía con curvas elípticas: su seguridad se basa en el logaritmo discreto. Este sistema no asocia a los símbolos con números enteros, sino que se utilizan puntos sobre curvas elípticas.
• RABIN: su seguridad está basada en la dificultad de calcular raíces cuadradas módulo un primo compuesto.

La criptografía y el Boom del internet

Ejemplos que combinan la utilización de los métodos de criptografía de llave única y de llaves pública y privada son las conexiones seguras, establecidas entre el browser de un usuario (un navegador de Internet) y la web, en transacciones comerciales o bancarias vía Web.

Estas conexiones seguras vía Web utilizan el método de criptografía de llave única, implementado por el protocolo SSL (Secure Socket Layer). El browser del usuario necesita informar a la web cuál será la llave única utilizada en la conexión segura, antes de iniciar una transmisión de datos. Para esto, el browser obtiene la llave pública del certificado de la institución que mantiene la web. Entonces, utiliza esta llave pública para codificar y enviar un mensaje a la web, conteniendo la llave única a ser utilizada en la conexión segura. La web utiliza su llave privada para decodificar el mensaje e identificar la llave única que será utilizada.

A partir de este punto, el browser del usuario y la web pueden transmitir informaciones, de forma segura, a través de la utilización del método de criptografía de llave única. La llave única puede ser cambiada a intervalos de tiempo determinados, a través de la repetición de procedimientos descritos anteriormente, aumentando así el nivel de seguridad de todo el proceso.

Criptografía en Internet

Aproximadamente en 1995 comienza el boom de Internet. Al comenzar a existir transacciones comerciales y bancarias en Internet, las preocupaciones de formas de seguridad de comunicación se extienden. Hoy es necesario que los canales de comunicación tengan las características de:

• Confidencialidad: Los datos que estoy enviando o recibiendo sólo debemos conocerlos la persona involucrada en dicha comunicación y yo.
• Integridad: Los datos que estoy enviando o recibiendo no deben poder ser modificados por nadie, debe haber manera de verificar que la información es exactamente la misma que la enviada.
• Irrefutabilidad: Tener la absoluta seguridad de que el mensaje viene de quien dice venir, y debe de poder demostrarse. Esta es la conocida, autenticidad del usuario.

¿Qué es firma digital?

La criptografía de clave pública se usa, para que bancos y clientes intercambien información mediante computadores (movimientos bancarios, pagos, depósitos, etc.) por lo que es de suma importancia que la información deba ser encriptada.

La firma digital consiste en la creación de un código, a través de la utilización de una llave privada, de modo que la persona o entidad que recibe un mensaje conteniendo este código pueda verificar si el remitente es quien dice ser e identificar cualquier mensaje que pudo haber sido modificado.

En general, las firmas digitales son una solución que ofrece la criptografía para verificar:
• La integridad de documentos.
• La procedencia de documentos.
• Las firmas digitales se pueden realizar tanto con criptografía simétrica como asimétrica.

Es por ello que se utiliza el criptosistema de RSA, en donde el banco mantiene su clave secreta de desencriptamiento, y cuando un cliente quiere enviar un mensaje encriptado con la clave pública del banco, puede convertir su mensaje en un número, y cuando el banco recibe el bloque encriptado, para desencriptar utiliza un procedimiento que analizaremos más adelante con el algoritmo de RSA.

Los métodos de criptografía actualmente utilizados, y que presentan buenos niveles de seguridad, son públicamente conocidos y son seguros por la fuerza de sus algoritmos y por el tamaño de las llaves que utilizan.

Para que alguien descubra una llave necesita utilizar algún método de fuerza bruta, o sea, probar combinaciones de llaves hasta que la correcta sea descubierta. Por lo tanto, cuanto más grande sea la llave criptográfica, mayor será el número de combinaciones a probar, lo cual hace inviable el descubrimiento de una llave en un tiempo normal. Además, en algunas ocasiones las llaves pueden ser cambiadas regularmente, haciendo los métodos de criptografía más seguros.

Criptografía de llave pública

¿Cuál es el tamaño ideal para una llave?

Actualmente, para obtenerse un buen nivel de seguridad en la utilización de un método de criptografía de llave única, es aconsejable utilizar llaves de un mínimo de 128 bits. Y para el método de criptografía de llaves pública y privada es aconsejable utilizar llaves de 2048 bits.

El algoritmo RSA
Este algoritmo es de clave pública. Es el algoritmo más utilizado y más sencillo en comprensión e implementación. Este algoritmo basa su seguridad en la factorización de números primos.

¿Cómo se utiliza RSA?
Cada usuario posee dos llaves: una pública y otra privada. La privada será para uso exclusivo de cada usuario y se debe guardar en secreto.

Si suponemos que se tiene una llave pública, entonces usando esta llave, cualquiera podrá encriptar un mensaje ”M” y el destinatario correspondiente podrá descifrarlo utilizando su llave privada.

Creación de llaves para RSA:
• Se eligen un par de primos muy grandes p y q, ambos se mantienen en secreto.
• Se utiliza el producto de estos dos números primos para descifrar el mensaje.
• Mientras estos dos primos sean muy grandes, es computacionalmente inviable factorizarlos, por lo que no es suficiente con conocer el producto de ambos primos.

• Una vez que elegimos a los primos p y q, se calcula n = p·q y se calcula:
φ(n) = (p − 1)(q − 1)
donde φ(n) es la función de Euler. Se elige un número entero e, tal que
1 < e < φ(n)
como e y φ(n) son primos entre sí, entonces existe d tal que:
e·d ≡ 1 mod φ(n) = (p − 1)(q − 1)

• e se considera la clave pública.
• d se mantiene en secreto como la clave privada.
• n es compartido entre ambas entidades, forma parte de ambas claves.
• d se puede calcular mediante el algoritmo de Euclides.

El cifrado de un mensaje m se obtiene con la operación:
c = mᵉ · mod(n)

ahora una vez recibido un mensaje cifrado se puede descifrar aplicando la operación:
= cᵈ · mod(n)

notas:
Clave pública: (e, n).
Clave privada: (d, n).

los datos que se mantienen privados son:
p y q
φ(n)
d

Una vez que tenemos la llave, podemos cifrar y descifrar mensajes.

Para poder desencriptar un mensaje se necesitan conocer los factores primos d y p, y para ello nos apoyamos del pequeño teorema de Fermat. Para ello se necesita conocer φ(n) y dado que n es un dato público, podría pensarse que a partir de este podemos calcularlo, sin embargo si n es muy grande φ(n) es muy difícil de calcular, pues n es el producto de dos primos muy grandes.

Por lo que al calcular
φ(n) = (p − 1)(q − 1) = p·q − p − q + 1 = n − p − q + 1

como n es público, para calcular φ(n) basta conocer p + q. Pero si esta fuese posible entonces ya conoceríamos a p y q, puesto que son raíces de la ecuación cuadrática

X² − (p + q)X − n = 0

lo que quiere decir, como lo mencioné anteriormente, que conocemos los factores primos p y q de n, sin embargo como n es muy grande no existe algoritmo alguno para factorizar n de forma eficiente. En dado caso que n no fuese muy grande, sería posible calcular su factorización.

Criptoanálisis

En general los criptosistemas de sustitución, como el cifrador del Cesar, son vulnerables a un análisis de frecuencias estadísticas para buscar patrones repetidos en el texto encriptado, era usual que la persona que encriptaba el mensaje automáticamente sabía como desencriptarlo, no obstante en las últimas décadas del siglo XX, por necesidad, esto cambia con los nuevos sistemas de criptografía.

Ahora la persona o entidad que encripta un mensaje no puede desencriptarlo si no tiene a su alcance otros datos, y con ello surge el uso de claves públicas y claves privadas, pues para desencriptar un mensaje necesitas tanto de la llave pública como de la privada.

Criptoanálisis con técnicas de factorización:
La principal forma de atacar al sistema de RSA es intentar factorizar a n. Si encontramos la factorización de n = p*q entonces podemos encontrar los valores de φ(n), e y d.

Algunas técnicas que sirven para intentar factorizar al número n son:

  • Factorización de Fermat
  • Rho de Pollard
  • Factorización utilizando curvas elípticas
  • Criba cuadrática o numérica

Es necesario construir las llaves con cuidado para que n no sea fácil de factorizar. Este número debe resistir todas las factorizaciones, por lo que la elección de los primos p y q debe ser cuidadosa para evitar que n pueda ser factorizado por los métodos antes mencionados.

Conclusión

Al implementar el criptosistema RSA se usan diversos algoritmos aritméticos tales como el importante algoritmo de la división, el algoritmo de Euclides para calcular el máximo común divisor, la criba de Erastótenes para encontrar enteros primos, algoritmos para resolver ecuaciones diofantinas, congruencias lineales, el método de los cuadrados sucesivos para calcular potencias y raíces modulo m.

Hoy en día la criptografía es uno de los temas más importantes pues es mucha la información que se comparte a través de las redes, el internet, servicios de computación en la nube, comercio electrónico, entre otras. Por lo que Teoría de Números se ha convertido en un campo de estudio de gran alcance e importancia.

Sin embargo al mismo tiempo se corren grandes riesgos, dado que el avance tecnológico en un futuro puede permitirnos deshacer todos estos medios que consideramos seguros, no solo se ponen en riesgo los bienes económicos sino que también está en riesgo nuestra privacidad y libertad de expresión pues la encriptación está presente hasta cuando hacemos una llamada con un teléfono inteligente, en los mensajes que enviamos por teléfono, redes sociales, etc.

Actualmente ya podemos correr estos riesgos pues la computadora cuántica está en proceso de desarrollo, la cual podría ser capaz de descifrar códigos, pues esta es capaz de reducir el tiempo de cálculo de algunos algoritmos de miles de años a segundos. Por lo tanto es una gran responsabilidad la que tenemos al aprender matemáticas, pues son muchas las herramientas que nos pueden beneficiar pero también las que nos pueden perjudicar.