Cifrado RSA

RSA es uno de los sistemas de cifrado (encriptación) asimétricos, más exitosos en la actualidad. Originalmente descubierto 1973 por la agencia de inteligencia británica GCHQ, Government Communications Headquarters (GCHQ), recibió la clasificación de alto secreto “Top Secret”. El algoritmo fue descrito en 1977 y es propiedad de los criptólogos Ron Rivest, Adi Shamir y Leonard Adleman, del Instituto Tecnológico de Massachusetts (MIT) - RSA sol las letras iniciales de sus apellidos. El algoritmo fue patentado por MIT en 1983 y no fue revelado hasta 1997. A diferencia de los sistemas de codificación simétrica tradicionales, RSA trabaja con dos claves diferentes: una clave "pública", y otra "privada". Ambas son complementarias entre sí (trabajan de manera conjunta) así que un mensaje cifrado con una de ellas sólo puede ser descifrado por su contraparte. Dado que la clave privada no se puede calcular a partir de la clave pública, esta última queda generalmente queda a disposición del público. Estas propiedades permiten que los cripto-sistemas asimétricos sean utilizados en una amplia variedad de funciones, tales como las firmas digitales. En el proceso de firma de un documento, una huella dactilar encriptada con RSA se adjunta al documento, y permite al receptor verificar el remitente y la integridad del documento.

La seguridad de RSA en sí se basa principalmente en el problema matemático de factorización de enteros. Un mensaje que está a punto de ser cifrado es tratado un número grande. Al encriptar el mensaje, éste se eleva a la potencia de la clave y lo que queda es dividido por un producto fijo de dos números primos. Al repetir el proceso con la otra clave, el texto simple o claro puede ser recuperado de nuevo. El mejor método conocido actualmente para romper el cifrado requiere factorizar el producto utilizado en la división. Actualmente, no es posible calcular estos factores para números mayores que 768 bits. No obstante, los cripto-sistemas modernos utilizan una longitud mínima de clave de 3072 bits.




En una comunicación entre dos partes A y B, cada una de ellas generará antes de empezar su propio par de claves (pública, privada). Así A tendrá el par (KPA,kpA) y B su par (KPB,kpB), donde KP son las claves públicas que son conocidas por las dos partes, y kp las privadas, que cada parte guarda la suya en secreto y no será conocida por la otra parte. Recordar que KPA=(eA,nA) y kpA=(dA,nA). Lo mismo para el par de claves de B.




CIFRADO

Suponemos que A quiere enviar un mensaje M confidencialmente a B a través de un medio de transmisión inseguro. Estos son los pasos que tiene que seguir:

Obtiene la clave pública del destinatario B, (eB,nB)


Representa el texto en claro que quiere transmitir como un entero positivo M < n


Computa el mensaje cifrado: C = (M)eB mod nB


Finalmente transmite el criptomensaje C por el canal inseguro


DESCIFRADO

Cuando B reciba el mensaje cifrado C, hace lo siguiente:

Usa su clave privada (dB, nB) para computar M = (C)dB mod nB

Recupera el texto original a partir de su entero representante M


Ejemplo

Supongamos que un usuario (llamado Bob) quiere enviar un mensaje M a una persona (llamémosla Alice). Simplemente necesita obtener la clave pública de Alice (n,e) y luego calcular el mensaje cifrado c:

c = Me mod(n)

Luego, Bob envía el mensaje c a Alice, quien es capaz de descifrarlo con su clave privada (p,q,d):

M = Me*d mod(n) = cd mod(n)








No hay comentarios:

Publicar un comentario