Sistema RSA De Clave Publica
En los sistemas tradicionales de cifrado debe comunicarse una clave entre el emisor y el receptor del mensaje, el problema aquí es encontrar un canal seguro para transmitir dicha clave. Este problema viene a resolverse en los sistemas de clave pública (public key cryptography) haciendo pública la clave de cifrado, pues un tiempo enormemente grande de ordenador es necesario para encontrar una transformación de descifrado a partir de la del cifrado.
Concretando: en una red de n individuos cada uno de ellos produce una clave del tipo especificado por el sistema de cifrado, reteniendo cierta información que se usó en la construcción de la transformación E(K) obtenida según la clave K y ciertas reglas.
Se hace accesible a todo el mundo un listado de claves K1, K2, ... , Kn. Cuando un individuo i quiere mandar un mensaje a otro individuo j utiliza una transformación que llamaremos EKj. Para descifrar el mensaje, j aplica la transformación inversa DKj al mensaje cifrado. Ya que la transformación inversa DKj no puede ser encontrada en un periodo de tiempo razonable, nadie puede descifrar el mensaje dirigido a j a pesar de conocer su clave.
El RSA es un sistema de clave pública inventado por Rivest, Shamir y Adleman basado en la exponenciación modular donde las claves son pares de números (e,n) formados por un exponente e y un módulo n que es el producto de dos grandes -grandísimos realmente - números primos p y q tales que mcd(e,fi(n))=1 (donde fi(n) es el número de enteros menores que n y primos con él)
Para cifrar un mensaje convertimos las letras que lo forman en sus equivalentes numéricos y formamos bloques del mayor tamaño posible con un número par de dígitos. Entonces el cifrado del bloque P sería (P) = C = P ^ e (mod n). El procedimiento de descifrado requiere el conocimiento de un inverso d de e módulo fi(n). Entonces D(C) = P = C ^ d (mod n). El par (d,n) es la clave de descifrado.
Desarrollemos un ejemplo donde n = 43.59 (números primos muchísimo más pequeños de los que usaríamos realmente). Tomemos e=13 como exponente, observad que es válido pues mcd(e,fi(n)) = mcd(13,42.58) = 1. Para cifrar la frase PUBLIC KEY CRIPTOGRAPHY obtenemos sus equivalentes numéricos 1520 0111 0802 1004 2402 1724 1519 1406 1700 1507 2423 (hemos usado A=00,B=01...) donde hemos añadido una X (23) para rellenar el último bloque. Ahora transformamos bloque a bloque usando C = P ^ 13 (mod 2537) , con el primero ser C = 1520 ^ 13 = 95 (mod 2537) y el resultado final sería 0095 1648 1410 1299 0811 2333 2132 0370 1185 1457 1084
Para recuperar el texto original necesitamos un inverso de 13 módulo fi(2537) = 42.58 = 2436. Un cálculo bastante breve muestra que el d = 937 es ese inverso así que el descifrado sería P = C ^ 937 (mod 2537). Por ejemplo con el primer bloque 0095 ^ 937 = 1520 (mod 2537) y así procederíamos con todos los bloques que forman el texto cifrado.
Bueno y por este número son ya suficientes cálculos como para calentarnos la cabeza un rato.
Por: John Edgar GarciaPosteado por: rufiopunkrock