
Muchos de quienes investigamos en Teoría de Números llegamos a esta área atraídos por problemas relacionados con los números primos. A pesar de tener una definición muy sencilla, muchos de los problemas más difíciles en matemáticas se relacionan con ellos.
Decimos que un número es primo, si los únicos números que lo dividen en forma exacta son el 1 y . En otras palabras, la única forma de factorizar un primo es así:
¿Por qué son importantes? Son los átomos de la aritmética, por el siguiente resultado:
Teorema Fundamental de la Aritmética: Todo número natural se puede escribir de manera única como multiplicación de potencias de primos, es decir:
Esto quiere decir que todo número compuesto (es decir, que no es primo) se puede descomponer en primos.
Se sabe que existen infinitos primos. La primera demostración conocida de este hecho es de Euclides (300 a.C) , y puedes por ejemplo verla aquí: https://youtu.be/ctC33JAV4FI?si=L01PheB_d5Fqcgn_
Hasta aquí, pareciera que estos números han sido un objeto de estudio exclusivo del campo teórico, pero esto no es así.
Algoritmo RSA
En 1978, los investigadores en ciencias de la computación y matemáticas Ronald Rivest, Adi Shamir y Leonard Adleman desarrollaron el algoritmo RSA, el cual fue el primer protocolo de cifrado de clave pública.

Los algoritmos de clave pública requieren una clave pública conocida por todos y que será utilizada para cifrar mensajes, y una clave privada que solo conoce quien recibe y descifra los mensajes.
En el algoritmo RSA hay dos componentes matemáticas claves: nuestros queridos y misteriosos números primos, y aritmética modular (de la que hablé en el post anterior). Veamos como funciona:
Supongamos que Anita quiere enviar un mensaje a Beto por un canal inseguro sin que Oscar, que es un atacante, pueda conocer el contenido del mensaje.

Generación de Clave Pública
Beto construirá una clave pública de la siguiente forma: primero, elegirá dos números primos y q y calculará . Después elige un número que no tenga factores comunes con (lo que es equivalente a que .) Beto hará público , pero mantendrá secretos los primos y Esta clave será conocida por todos
Generación de Clave Privada
Para elegir la clave privada, Beto selecciona un número , que solo él conoce y que debe verificar lo siguiente: . Esto quiere decir, que es el inverso multiplicativo de en )
Algoritmo de Cifrado
Ahora es el momento en que Anita quiere comunicarse con Beto. Supongamos que el mensaje que va a enviar está codificado como un número que no será más grande que . Utilizando la clave pública de Beto, Anita cifra su mensaje calculando . será el mensaje cifrado.
Algoritmo de Descifrado
Para descifrar el mensaje, Beto calcula lo cual, por propiedades matemáticas que veremos después, será exactamente el mensaje enviado por Anita.
¿Qué tan seguro es RSA?
Si el atacante Oscar quiere descifrar el mensaje, requiere el valor de la clave privada , es decir, necesita conocer los primos y . Como conoce , le bastaría poder factorizarlo. Parece un problema sencillo, pero si es grande (más de 100 dígitos), no existe un algoritmo que lo haga en un tiempo razonable. De hecho, ni siquiera existe una fórmula que permita conocer todos los números primos, por lo cual el problema de factorización se considera un problema difícil.
RSA utiliza hoy claves de 2048 bits, las que tienen 616 dígitos. Para factorizar se requerirían operaciones.
Por qué funciona RSA: algunos argumentos matemáticos
Si eliges no creer en que el proceso de cifrado y de descifrado sí funciona, quédate, que trataé de convencerte. Si eliges creer, puedes pasar al siguiente bloque.
Se define la función de de Euler en un valor , con un número natural, de la siguiente manera:
es decir, cuenta cuántos números hay menores a , que no tienen factores comunes con . Por ejemplo: . No es muy difícil darse cuenta de que si es primo, entonces
Otra propiedad interesante de esta función es que es multiplicativa, en el siguiente sentido:
Cuando Beto generó su clave privada, usó esta condición: Lo que garantiza que dado , exista un número que cumpla lo anterior es que justamente que
El siguiente teorema es el corazón de RSA:
Teorema: Si , entonces , con , siendo y primos.
Para la demostración y otros detalles de RSA puedes ver el texto de Stinson-Paterson. 1
Si observas, cambiando por el mensaje en el teorema, se obtiene la validez del protocolo.
De lo paper al mundo real
Si bien este método fue propuesto en el artículo «A method for obtaining digital signatures and public-key cryptosystems» (1978) 2 no fue hasta los 90 que comenzó a utilizarse en el mundo real.
¿Cómo lograr que nuestros procesadores puedan ejecutar estos algoritmos matemáticos sin errores y de manera unificada ? Aquí entran los PKCS (Public-Key Cryptography Standards).
Los PKCS son un conjunto de especificaciones diseñadas por RSA Laboratories para asegurar que diferentes implementaciones de criptografía de clave pública sean compatibles entre sí y evitar fallos de seguridad.
En particular, PKCS#1 3 entrega las definiciones básicas y parámetros con los que se sugiere utilizar RSA.
El NIST (National Institute of Standards and Technology) en el documento «NIST Special Publication 800-56B Revision 2″ 4 indica que para alcanzar 112 bits de seguridad, se requiere que tenga 2048 bits. Esto quiere decir, que cada primo debe tener algo así como 1024 bits. Que un algoritmo alcance -bits de seguridad quiere decir que el mejor ataque que quiebra el sistema necesita aproximadamente operaciones.
En la actualidad, el algoritmo RSA se utiliza en cipher suites de TLS 5 , cifrado de correos electrónicos 6, VPN’s 7 y certificados de autoridad (CA).
- Stinson, D. R., & Paterson, M. B. (2018). Cryptography: Theory and Practice (4th ed.). CRC Press. ↩︎
- R. L. Rivest, A. Shamir, and L. Adleman. 1978. A method for obtaining digital signatures and public-key cryptosystems. Commun. ACM 21, 2 (Feb. 1978), 120–126. ↩︎
- https://datatracker.ietf.org/doc/html/rfc3447 ↩︎
- https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Br2.pdf ↩︎
- https://datatracker.ietf.org/doc/html/rfc5289 ↩︎
- https://ieeexplore.ieee.org/document/9821831 ↩︎
- https://ieeexplore.ieee.org/document/10467364 ↩︎




Deja un comentario