La definición es muy clara desde wikipedia en criptografía, RSA (Rivest, Shamir y Adleman) es un sistema criptográfico de clave pública desarrollado en 1977. Es el primer y más utilizado algoritmo de este tipo y es válido tanto para cifrar como para firmar digitalmente.
La seguridad de este algoritmo radica en el problema de la factorización de números enteros. Los mensajes enviados se representan mediante números, y el funcionamiento se basa en el producto, conocido, de dos números primos grandes elegidos al azar y mantenidos en secreto. Actualmente estos primos son del orden de diez elevado a la doscientos, y se prevé que su tamaño crezca con el aumento de la capacidad de cálculo de los ordenadores.
Como en todo sistema de clave pública, cada usuario posee dos claves de cifrado: una pública y otra privada. Cuando se quiere enviar un mensaje, el emisor busca la clave pública del receptor, cifra su mensaje con esa clave, y una vez que el mensaje cifrado llega al receptor, este se ocupa de descifrarlo usando su clave privada.
Se cree que RSA será seguro mientras no se conozcan formas rápidas de descomponer un número grande en producto de primos. La computación cuántica podría proveer de una solución a este problema de factorización.
2. Se elige un número D, menor que el valor de N calculado anteriormente y que sea relativamente primo al producto de:
3.
Se calcula un número entero E que
esté dentro del rango
con la operación:
4. Ahora a D y E se les conoce como los exponentes privado y público
respectivamente.
6. La clave privada viene dada por (N,D)
7. Con la clave pública procederíamos a encriptar el mensaje deseado y con la privada se desencintaría.
8. El factor P y Q debe ser guardado o destruido para evitar que cualquiera intente romper el juego de llaves, con esta se podría obtener la clave privada.
9. Presumiblemente es difícil obtener la clave privada D a partir de la clave pública, pero ya saben en este mundo nada es imposible.
Ahora solo queda que le ponga números al asunto o lo automatice en herramientas como Scilab o Matlab e intente validar la seguridad del algoritmo.