Professional Documents
Culture Documents
RSA (desambiguacin)
En criptografa, RSA (Rivest, Shamir y Adleman) es un sistema criptogrfico de clave
pblica desarrollado en 1977. Es el primer y ms utilizado algoritmo de este tipo y es vlido
tanto para cifrar como para firmar digitalmente.
La seguridad de este algoritmo radica en el problema de la factorizacin de nmeros
enteros. Los mensajes enviados se representan mediante nmeros, y el funcionamiento se
basa en el producto, conocido, de dos nmeros primos grandes elegidos al azar y
mantenidos en secreto. Actualmente estos primos son del orden de
, y se prev que
su tamao crezca con el aumento de la capacidad de clculo de los ordenadores.
Como en todo sistema de clave pblica, cada usuario posee dos claves de cifrado: una
pblica y otra privada. Cuando se quiere enviar un mensaje, el emisor busca la clave
pblica 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 rpidas de descomponer
un nmero grande en producto de primos. La computacin cunticapodra proveer de una
solucin a este problema de factorizacin.
Historia
El algoritmo fue descrito en 1977 por Ron Rivest, Adi Shamir y Leonard Adleman,
del Instituto Tecnolgico de Massachusetts (MIT); las letras RSA son las iniciales de sus
apellidos. Clifford Cocks, un matemtico britnico que trabajaba para la agencia de
inteligencia britnica GCHQ, haba descrito un sistema equivalente en un documento
interno en 1973. Debido al elevado coste de las computadoras necesarias para
implementarlo en la poca su idea no trascendi. Su descubrimiento, sin embargo, no fue
revelado hasta 1997 ya que era confidencial, por lo que Rivest, Shamir y Adleman
desarrollaron RSA de forma independiente.
El algoritmo fue patentado por el MIT en 1983 en Estados Unidos con el nmero
4.405.829. Esta patente expir el 21 de septiembre de 2000. Como el algoritmo fue
publicado antes de patentar la aplicacin, esto impidi que se pudiera patentar en otros
lugares del mundo. Dado que Cocks trabaj en un organismo gubernamental, una patente
en Estados Unidos tampoco hubiera sido posible.
Algoritmo RSA
El algoritmo consta de tres pasos:
,
donde
,
donde
Generacin de claves
1. Cada usuario elige dos nmeros primos distintos
y .
2. Se calcula
3. Se calcula
, donde
es la funcin de
Euler.
4. Se escoge un entero positivo
sea coprimo con
menor que
, que
ms efectivo. Un exponente
) podra
la congruencia
, es decir, que
sea
es dividido exactamente
.
La clave pblica es
La clave privada es
, esto es, el mdulo y el exponente de descifrado, que
debe mantenerse en secreto.
Nota:
en vez de la funcin
de
Cifrado
Alicia comunica su clave pblica
a Bob y guarda la clave privada en
secreto. Ahora Bob desea enviar un mensaje
a Alicia.
Primero, Bob convierte
en un nmero entero
menor que mediante un
protocolo reversible acordado de antemano. Luego calcula el texto cifrado
mediante la operacin
.
Esto puede hacerse rpido mediante el mtodo de exponenciacin binaria.
Ahora Bob transmite a Alicia.
Descifrado
Alicia puede recuperar
a partir de usando su exponente
privada mediante el siguiente clculo:
de la clave
.
Ahora que tiene
en su poder, puede recuperar el mensaje original
invirtiendo el padding scheme.
El procedimiento anterior funciona porque
.
Esto es as porque, como hemos elegido
que
de forma
, se cumple
.
Ejemplo
Aqu tenemos un ejemplo de cifrado/descifrado con RSA. Los parmetros usados
aqu son pequeos y orientativos con respecto a los que maneja el algoritmo, pero
podemos usar tambin OpenSSL para generar y examinar un par de claves reales.
p = 61
q = 53
n = pq = 3233
e = 17
d = 2753
1 n primo privado
2 n primo privado
producto pq
exponente pblico
exponente privado
La clave pblica (e, n). La clave privada es (d, n). La funcin de cifrado es:
Donde c es el texto cifrado. Para cifrar el valor del texto sin cifrar 123, nosotros
calculamos:
Esquemas de relleno
RSA debe ser combinado con algn esquema de relleno, ya que si no el valor
de M puede llevar a textos cifrados inseguros.
RSA-REACT
Autenticacin de mensajes
RSA puede tambin ser usado para autenticar un mensaje. Supongamos que Alicia
desea enviar un mensaje autentificado a Bob. Ella produce un valor hashdel mensaje, lo
eleva a la potencia de d mod n (como ella hace cuando descifra mensajes), y lo adjunta
al mensaje como una firma. Cuando Bob recibe el mensaje autentificado, utiliza el
mismo algoritmo hash en conjuncin con la clave pblica de Alice. Eleva la firma recibida
a la potencia de e mod n (como hace cuando cifra mensajes), y compara el resultado
hash obtenido con el valor hash del mensaje. Si ambos coinciden, l sabe que el autor
del mensaje estaba en posesin de la clave secreta de Alicia, y que el mensaje no ha
sido tratado de forzar (no ha sufrido ataques).
Se debe observar que la seguridad de los padding-schemes como RSA-PSS son
esenciales tanto para la seguridad de la firma como para el cifrado de mensajes, y que
nunca se debera usar la misma clave para propsitos de cifrado y de autentificacin.
Seguridad
La seguridad del criptosistema RSA est basado en dos problemas matemticos: el
problema de factorizar nmeros grandes y el problema RSA. El descifrado completo de
un texto cifrado con RSA es computacionalmente intratable, no se ha encontrado un
algoritmo eficiente todava para ambos problemas. Proveyendo la seguridad contra el
descifrado parcial podra requerir la adicin de una seguridad padding scheme.
El problema del RSA se define como la tarea de tomar races e-simas mdulo a
componer n: recuperando un valor m tal que mec (mod n), donde (e, n) es una clave
pblica RSA y c es el texto cifrado con RSA. Actualmente la aproximacin para solventar
el problema del RSA es el factor del mdulo n. Con la capacidad para recuperar factores
primos, un atacante puede calcular el exponente secreto d desde una clave pblica
(e, n), entonces descifra c usando el procedimiento estndar. Para conseguir esto, un
atacante debe factorizar n en p y q, y calcular (p-1)(q-1) con lo que le permite
determinar d y e. No se ha encontrado ningn mtodo en tiempo polinmico para la
factorizacin de enteros largos. Ver factorizacin de enteros para la discusin de este
problema.
La factorizacin de nmeros grandes por lo general proponen mtodos teniendo 663 bits
de longitud usando mtodos distribuidos avanzados. Las claves RSA son normalmente
de entre 1024-2048 bits de longitud. Algunos expertos creen que las claves de 1024 bits
podran comenzar a ser dbiles en poco tiempo; claves de 4096 bits podran ser rotas en
un futuro. Por lo tanto, si n es suficientemente grande el algoritmo RSA es seguro.
Si n tiene 256 bits o menos, puede ser factorizado en pocas horas con un ordenador
personal, usando software libre. Si n tiene 512 bits o menos, puede ser factorizado por
varios cientos de computadoras como en 1999. Un dispositivo hardware terico
llamado TWIRL descrito por Shamir y Tromer en el 2003 cuestion a la seguridad de
claves de 1024 bits. Se recomienda actualmente que n sea como mnimo de 2048 bits de
longitud.
En 1993, Peter Shor public su algoritmo, mostrando que una computadora cuntica
podra en principio mejorar la factorizacin en tiempo polinomial, mostrando RSA como
un algoritmo obsoleto. Sin embargo, las computadoras cunticas no se esperan que
acaben su desarrollo hasta dentro de muchos aos.
Consideraciones prcticas
Generacin de claves
Buscando nmeros primos grandes p y q por el test de aleatoriedad y realizando tests
probabilsticos de primalidad los cuales eliminan virtualmente todos los no-primos
(eficientemente).
Los nmeros p y q no deberan ser suficientemente cercanos para que la factorizacin de
Fermat para n sea exitosa. Adems, si cualquier p-1 o q-1 tiene slo factores primos
pequeos, n puede ser factorizado rpidamente, con lo que estos valores de p o q deben
ser descartados.
No se debera emplear un mtodo de bsqueda de primos con el cual se d alguna
informacin cualquiera sobre los primos al atacante. En particular, se debe utilizar un
buen generador aleatorio de nmeros primos para el valor empleado. Obsrvese que el
requerimiento est en que ambos sean aleatorios eimpredecibles. No son el mismo
criterio; un nmero podra haber sido elegido por un proceso aleatorio, pero si ste es
predecible de cualquier forma (o parcialmente predecible), el mtodo usado resultar en
una baja seguridad. Por ejemplo: la tabla de nmeros aleatorios de Rand Corp en 1950
podra servir muy bien como ejemplo de criterio verdaderamente aleatorio, pero ha sido
publicada y a sta puede acceder el atacante. Si el atacante puede conjeturar la mitad de
los dgitos de p o q, l podra rpidamente calcular la otra mitad. (Ver Coppersmith en
1997).
Es importante que la clave secreta d sea muy grande. Wiener mostr en 1990 que
si p est entre q y 2q (es tpico) y d < n1/4/3, entonces d puede calcularse eficientemente a
partir de n y e. Aunque valores de e tan bajos como 3 se han usado en el pasado, los
exponentes pequeos en RSA estn actualmente en desuso, por razones que incluyen el
no relleno del texto sin cifrar, vulnerabilidad listada antes. 65537 es normalmente usado
como valor de e, considerado demasiado grande para evitar ataques de exponenciacin
pequeos, de hecho tiene un peso de Hamming suficiente para facilitar una
exponenciacin eficiente.
Velocidad
RSA es mucho ms lento que DES y que otros criptosistemas simtricos. En la prctica,
Bob normalmente cifra mensajes con algoritmos simtricos, cifra la clave simtrica con
RSA, y transmite a ambos la clave simtrica RSA-cifrada (es decir la transmite cifrada
con RSA) y el mensaje simtricamente-cifrado a Alicia.
Esto plantea adems problemas adicionales de seguridad, por ejemplo, es de gran
importancia usar un generador aleatorio fuerte para claves simtricas, porque de otra
forma Eve (un atacante que quiera averiguar el contenido del mensaje)
podra puentear la clave asimtrica de RSA mediante la adivinacin de la clave simtrica.
Distribucin de claves
Como con todos los cifrados, es importante cmo se distribuyan las claves pblicas del
RSA. La distribucin de la clave debe ser segura contra un atacante que se disponga a
espiar el canal para hacer un ataque de replay. Supongamos Eve (atacante) tiene alguna
forma de dar a Bob arbitrariamente claves y hacerle creer que provienen de Alicia.
Supongamos que Eve puede interceptar transmisiones entre Alicia y Bob. Eve enva a
Bob su propia clave pblica, como Bob cree que es de Alicia, Eve puede entonces
interceptar cualquier texto cifrado enviado por Bob, descifrarlo con su propia clave
secreta, guardar una copia del mensaje, cifrar el mensaje con la clave pblica de Alicia, y
enviar el nuevo texto cifrado a Alicia. En principio, ni Alicia ni Bob han detectado la
presencia de Eve. Contra la defensa de ataques algunos estn basados en certificados
digitales u otros componentes de infraestructuras de la clave pblica.