Claves Criptográficas
Última actualización
¿Te fue útil?
Última actualización
¿Te fue útil?
Creado por
El algoritmo RSA es uno de los métodos más utilizados en informática para el cifrado de comunicaciones, el envío de correos electrónicos cifrados, la implementación de firmas digitales y la firma de certificados digitales. RSA se basa en la dificultad de factorizar números grandes en sus factores primos (se expondrá de forma más detallada a continuación), lo que proporciona un método seguro para el intercambio de claves y la protección de datos sensibles. Una de las ventajas del cifrado RSA es que su seguridad se puede demostrar matemáticamente, garantizando la ausencia de procesos vulnerables conocidos. Sin embargo, su principal inconveniente radica en la complejidad de encontrar números lo suficientemente grandes que aseguren su invulnerabilidad.
En primera instancia, el algoritmo RSA funciona con un sistema asimétrico, es decir, funciona con dos llaves que se usan para hacer las operaciones necesarias. En este caso, existe una llave pública y otra privada; la pública se usa para cifrar un mensaje y la privada para descifrar el mensaje. La llave pública (como su propio nombre indica) deber ser pública a todo el mundo para que se puedan cifrar los mensajes, en cambio, la privada, sólo debe pertenecer a la persona a la que va destinado el mensaje. Con un ejemplo práctico se podría ver de la siguiente manera. Imaginando dos hombres: Ricardo y Alex; ambos con su par de llaves. Ricardo quiere mandar un mensaje cifrado a Alex, para esto usará la llave pública de Alex (que estará publicada de cualquier forma: en una web, chat, foro, etc.) para cifrar el mensaje. Alex recibirá el mensaje cifrado y usará su propia llave privada para descifrarlo y ver el mensaje en claro. Cabe destacar que una vez cifrado el mensaje, la única persona que puede ver su contenido es la que tiene la llave privada.
A continuación se calcula el producto de “p” y “q”.
Con este numero hay que calcular otro que sea coprimo.
Con esto ya se ha calculado la llave pública. Esta llave se divide en dos “partes”: el módulo y el exponente público. El módulo es el número “n” ya calculado, y el exponente público es el número “k” que se acaba de calcular.
Por otro lado, para generar la llave privada habrá que resolver una «congruencia lineal» en la que se encuentre un valor entero positivo para “x” que complazca que “j” también sea entero positivo.
En este caso se aprecia que para x=1; j es igual a 3, por lo que se cumple la congruencia. Este valor “j” es la llave privada.
El cifrado de mensajes depende de tres variables: el módulo de la llave pública, el exponente público de la llaves púbica y el mensaje. El mensaje tiene que ser un número entero positivo, así que se necesita usar algún cifrado reversible que permita convertir texto a número. Para M=13 la fórmula de cifrado es la siguiente.
El descifrado de mensajes depende de tres variables: el mensaje cifrado, la llave privada y el módulo de la llave. Usando el mensaje cifrado anterior la fórmula para descifrar el mensaje es la siguiente:
Con esto se comprueba que el mensaje usado para cifrar coincide con el descifrado.
Como conclusión, me gustaría destacar que hay publicado un vídeo en el que se explica todo lo expuesto en este documento de forma visual por si prefieres ese soporte.
Enlace al vídeo: https://odysee.com/@RiJaba1:e/rsa
La comunidad de DeliciousHack agradece el trabajo y aportación a Rijaba1 por este maravilloso taller de claves criptográficas RSA. Gracias.
El algoritmo de cifrado RSA fue expuesto públicamente por primera vez en 1979. Aun así, los creadores del algoritmo Ronald Rivest, Adi Shamir y Leonard Adleman lo desarrollaron en el año 1977. No obstante, ya en el año 1973, Clifford Cocks (del «Government Communications Headquarters») había descrito las bases de este algoritmo, pero no fue implementado por el coste computacional requerido en la época para que funcionase. La primera patente de este cifrado (que, por cierto, ya está expirada) fue presentada por el «Instituto de Tecnología de Massachusetts» en 1983 a USPTO (United States Patent and Trademark Office) .
Para generar el par de llaves (pública y privada) se parte de dos números que permitirán realizar todas las operaciones posteriores. Estos números tienen que ser reales, enteros, positivos y primos. Cuanto más grande sea este número, más “seguro” será el algoritmo. Para hacerse una idea de la envergadura de estos números, la “versión RSA” actual es la RSA-2048 en la que estos dos números tienen una longitud de 617 dígitos decimales. Para el ejemplo se eligen los números 3 y 11.
En siguiente lugar hay que usar la Función de Euler para buscar los números comprimos (es decir, que el único factor que compartan sea “1”) a “p” y “q” que además sean menores a estos.