RSA es un método para realizar encriptado y autenticación, fue inventado en 1977 por Ron Rivest,Adi Shamir y Leonard Adleman.Es un método de encriptado asimétrico.
El sistema RSA se basa en la teoría de los números en cuanto a la dificultad de factorizar un número muy grande que sea el producto de otros dos números primos también grandes.
A los números primos se los puede obtener con facilidad con programas de computación adecuados. Lo que es importante recalcar es que es mucho más fácil probar que un número grande es primo que determinar los números primos que fueron multiplicados para crear dicho número.
Los criptógrafos tenían como un hecho que tanto la clave de encriptado como la de desencriptado tenían que mantenerse en secreto. Si alguien llega a pensar en términos de encriptadores como los de sustitución monoalfabética, es obvio que la clave de encriptado por ejemplo es el cambio de abc en xyz, y la clave correspondiente al desencriptado es el cambio de xyz en abc. Diffie y Hellman propusieron utilizar un algoritmo de encriptado, D, y un algoritmo de desencriptado C, tales que D y C se seleccionen de manera que la obtención de C sea imposible aún cuando se conozca la descripción completa de D.
Existen tres requisitos fundamentales:
C(D(P))=P
Es extraordinariamente difícil deducir C a partir de D
D no puede desencriptarse mediante un ataque basado en texto seleccionado.
El primer requisito indica que, si se aplica C a un mensaje encriptado, D(P), se obtiene de nuevo el mensaje original P.
En estas condiciones, no hay ninguna razón por la cual no pueda conocerse públicamente el valor de D. Cualquier persona u organización que desee recibir mensajes secretos tendrá que idear primeramente dos algoritmos, C y D, que deberán satisfacer los requisitos anteriores. El encriptador o la clave de encriptado se hace entonces público, de aquí la razón de la denominación de clave pública.
Así, cada usuario tiene una clave pública y una clave secreta. El conjunto de claves públicas, una para cada usuario, puede ser colocado en una lista accesible para todos los miembros de la red.
Un usuario A que quiera enviar un mensaje M a otro usuario B procede de la siguiente manera: A consulta a la lista de claves públicas para determinar la clave pública PB (de encriptado) de B, y la usa para encriptar el mensaje M, obteniendo el texto encriptado PB (M). El usuario B al recibir el texto encriptado PB (M) de A, lo desencripta usando la clave secreta SB, obteniendo M=SB(PB(M)) Por lo tanto, todos los usuarios encriptan mensajes destinados a B usando la misma clave pública PB, pero solamente B tiene en secreto SB.
Este método basa su seguridad en la intratabilidad de la factorización de los números primos y trabaja de la siguiente manera:
Dados dos primos grandes p y q se obtiene su producto n=pq, n es llamado módulo.
Se elige un número e menor que n de tal forma que entre e y (p-1)(q-1) no tengan factores en común exepto 1.
Encontrar otro número d tal que (ed-1) sea divisible por (p-1)(q-1).
Los valores e y d son llamados exponentes públicos y privados, la clave pública está formada por el par (n,e) y la clave privada por el par (n,d).