You are on page 1of 6

RSA

En criptografa, RSA (Rivest, Shamir y Adleman) es un 2 Algoritmo RSA


sistema criptogrco de clave pblica desarrollado en
1977. Es el primer y ms utilizado algoritmo de este tipo El algoritmo consta de tres pasos:
y es vlido tanto para cifrar como para rmar digitalmente.

2.1 Idea del algoritmo

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 10200 , y se prev
que su tamao crezca con el aumento de la capacidad de
clculo de los ordenadores.

Supongamos que Bob quiere enviar a Alicia un mensaje


secreto que solo ella pueda leer.

Alicia enva a Bob una caja con una cerradura abierta, de


la que solo Alicia tiene la llave. Bob recibe la caja, escribe
el mensaje, lo pone en la caja y la cierra con su cerradura
(ahora Bob no puede leer el mensaje). Bob enva la caja a
Como en todo sistema de clave pblica, cada usuario po- Alicia y ella la abre con su llave. En este ejemplo, la caja
see dos claves de cifrado: una pblica y otra privada. con la cerradura es la clave pblica de Alicia, y la llave
Cuando se quiere enviar un mensaje, el emisor busca la de la cerradura es su clave privada.
clave pblica del receptor, cifra su mensaje con esa clave, Tcnicamente, Bob enva a Alicia un mensaje llano M
y una vez que el mensaje cifrado llega al receptor, este se en forma de un nmero m menor que otro nmero n ,
ocupa de descifrarlo usando su clave privada.
mediante un protocolo reversible conocido como padding
Se cree que RSA ser seguro mientras no se conozcan for- scheme (patrn de relleno). A continuacin genera el
mas rpidas de descomponer un nmero grande en pro- mensaje cifrado c mediante la siguiente operacin:
ducto de primos. La computacin cuntica podra proveer de una solucin a este problema de factorizacin.
c me

(mod n)

donde e es la clave pblica de Alicia.

Ahora Alicia descifra el mensaje en clave c mediante la


operacin inversa dada por

Historia

El algoritmo fue descrito en 1977 por Ron Rivest, Adi


d
(mod n)
Shamir y Leonard Adleman, del Instituto Tecnolgico de m c
Massachusetts (MIT); las letras RSA son las iniciales de
donde d es la clave privada que solo Alicia conoce.
sus apellidos. Cliord Cocks, un matemtico britnico
que trabajaba para la agencia de inteligencia britnica
GCHQ, haba descrito un sistema equivalente en un do- 2.2 Generacin de claves
cumento interno en 1973. Debido al elevado coste de las
computadoras necesarias para implementarlo en la poca
1. Cada usuario elige dos nmeros primos distintos p
su idea no trascendi. Su descubrimiento, sin embargo,
yq .
no fue revelado hasta 1997 ya que era condencial, por
Por motivos de seguridad, estos nmeros delo que Rivest, Shamir y Adleman desarrollaron RSA de
ben escogerse de forma aleatoria y deben teforma independiente.
ner una longitud en bits parecida. Se pueden
El algoritmo fue patentado por el MIT en 1983 en Estados
hallar primos fcilmente mediante test de priUnidos con el nmero 4.405.829. Esta patente expir el
malidad.
21 de septiembre de 2000. Como el algoritmo fue publicado antes de patentar la aplicacin, esto impidi que se
2. Se calcula n = pq .
pudiera patentar en otros lugares del mundo. Dado que
n se usa como el mdulo para ambas claves,
Cocks trabaj en un organismo gubernamental, una papblica y privada.
tente en Estados Unidos tampoco hubiera sido posible.
1

3
3. Se calcula (n) = (p 1)(q 1) , donde es la
funcin de Euler.

EJEMPLO

2.4 Descifrado

Alicia puede recuperar m a partir de c usando su expo4. Se escoge un entero positivo e menor que (n) ,
nente d de la clave privada mediante el siguiente clculo:
que sea coprimo con (n) .
e se da a conocer como el exponente de la clave
pblica.
Si se escoge un e con una suma encadenada
corta, el cifrado ser ms efectivo. Un exponente e muy pequeo (p. ej. e = 3 ) podra
suponer un riesgo para la seguridad.[1]

m cd

(mod n)

Ahora que tiene m en su poder, puede recuperar el mensaje original M invirtiendo el padding scheme.
El procedimiento anterior funciona porque

5. Se determina un d (mediante aritmtica modular)


que satisfaga la congruencia e d 1 (mod (n)) , d
c = (me )d med (mod n)
es decir, que d sea el multiplicador modular inverso
de e mod (n)
Esto es as porque, como hemos elegido d y e de forma
Expresado de otra manera, de 1 es dividido que ed = 1 + k(n) , se cumple

exactamente por (n) = (p 1)(q 1) .


Esto suele calcularse mediante el algoritmo de
med = m1+k(n) = m(m(n) )k m (mod n)
Euclides extendido.
d se guarda como el exponente de la clave pri- La ltima congruencia se sigue directamente del teorema
vada.
de Euler cuando m es coprimo con n . Puede demostrarse
que las ecuaciones se cumplen para todo m usando conLa clave pblica es (n, e) , esto es, el mdulo y el ex- gruencias y el teorema chino del resto.
ponente de cifrado. La clave privada es (n, d) , esto es,
el mdulo y el exponente de descifrado, que debe mante- Esto muestra que se obtiene el mensaje original:
nerse en secreto.
Nota:

m cd

PKCS#1 v2.0 y PKCS#1 v2.1 se especican mediante la funcin de Carmichael (n) = mcm(p
1, q 1) en vez de la funcin de Euler, donde
mcm indica el mnimo comn mltiplo.

(mod n)

3 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
p y q : los primos para la generacin de las claves reales.
claves,
La clave pblica (e, n). La clave privada es (d, n). La fun d mod (p 1) y d mod (q 1) ,
cin de cifrado es:
q 1 mod (p) .

Para una mayor eciencia los siguientes valores se


calculan de antemano y se almacenan como parte
de la clave privada:

2.3

Cifrado

encrypt(m) = me

(mod n) = m17

(mod 3233)

Alicia comunica su clave pblica (n, e) a Bob y guarda Donde m es el texto sin cifrar. La funcin de descifrado
la clave privada en secreto. Ahora Bob desea enviar un es:
mensaje M a Alicia.
Primero, Bob convierte M en un nmero entero m menor que n mediante un protocolo reversible acordado de
antemano. Luego calcula el texto cifrado c mediante la
operacin
c me

decrypt(c) = cd

(mod n) = c2753

(mod 3233)

Donde c es el texto cifrado. Para cifrar el valor del texto


sin cifrar 123, nosotros calculamos:

(mod n)

Esto puede hacerse rpido mediante el mtodo de


exponenciacin binaria. Ahora Bob transmite c a Alicia.

encrypt(123) = 12317

(mod 3233) = 855

3
Para descifrar el valor del texto cifrado, nosotros calcula- qu valores de e y N son usados. Probablemente, un somos:
lo ASCII SOH (cuyo valor es 1) producira siempre un
texto cifrado de 1. Para sistemas convencionales al usar
valores pequeos de e, como 3, un solo carcter ASCII
mensaje codicado usando este esquema sera inseguro,
2753
ya que el mximo valor de m sera 255, y 255 es medecrypt(855) = 855
(mod 3233) = 123
nor que cualquier mdulo razonable. De esta manera los
textos sin cifrar podran ser recuperados simplemente toAmbos de estos clculos pueden ser ecientemente usa- mando la raz cbica del texto cifrado. Para evitar estos
dos por el algoritmo de multiplicacin cuadrtica para problemas, la implementacin prctica del RSA se ayuda
exponenciacin modular.
de algunas estructuras, uso del rellenado aleatorio dentro
del valor de m antes del cifrado. Esta tcnica asegura que
m no caer en el rango de textos sin cifrar inseguros, y que
4 Esquemas de relleno
dado un mensaje, una vez que este rellenado, cifrar uno
de los nmeros grandes de los posibles textos cifrados. La
RSA debe ser combinado con algn esquema de relleno, ltima caracterstica es la incrementacin del diccionario
ya que si no el valor de M puede llevar a textos cifrados haciendo este intratable a la hora de realizar un ataque.
inseguros.
El valor m=0 o m=1 siempre
produce textos cifrados iguales para 0 o 1 respectivamente, debido a propiedades de los
exponentes.
Cuando ciframos con exponentes pequeos (e=3) y valores pequeos de m, el resultado de m podra ser estrictamente menor que el mdulo de
n. En este caso, el texto cifrado podra ser fcilmente descifrado, tomando la raz e-sima
del texto cifrado sin tener en
cuenta el mdulo.
Dado que el cifrado RSA es
un algoritmo determinista (no
tiene componentes aleatorios)
un atacante puede lanzar con
xito un ataque de texto elegido contra el criptosistema,
construyendo un diccionario
de textos probables con la llave pblica, y almacenando el
resultado cifrado. Observando
los textos cifrados en un canal de comunicacin, el atacante puede usar este diccionario para descifrar el contenido del mensaje.
En la prctica, el primero de los dos problemas podra
presentarse cuando enviamos pequeos mensajes ASCII
donde m es la concatenacin de uno o ms carcter/es
ASCII codicado/s. Un mensaje consiste en un solo carcter ASCII NUL (cuyo valor es 0) se codicara como m=0, produciendo un texto cifrado de 0 sin importar

El esquema de relleno de RSA (en ingls RSA-padding


scheme) debe ser cuidadosamente diseado para prevenir
ataques sosticados los cuales podran ser facilitados por
la predictibilidad de la estructura del mensaje. Ejemplos
de esquema de relleno usados con RSA:[2][3]
RSA-OAEP (Optimal Asymetric Encryption Padding)
o su versin mocada RSAOAEP+. Este tipo de relleno es usado por ejemplo en
PKCS#1 y en la red de anonimato TOR
RSA-SAEP+
(Simplied
Asymmetric
Encryption
Padding)
RSA-REACT
RSA-PSS (Probabilistic Signature Scheme). Usado por
ejemplo en PKCS#1
Algunos de estos esquemas de relleno, por ejemplo RSAOAEP y RSA-PSS, ecuentran su 'justicacin' terica en
el polmico modelo de orculo aleatorio.

5 Autenticacin de mensajes
RSA puede tambin ser usado para autenticar un mensaje. Supongamos que Alicia desea enviar un mensaje autenticado a Bob. Ella produce un valor hash del mensaje,
lo eleva a la potencia de d mod n (como ella hace cuando descifra mensajes), y lo adjunta al mensaje como una
rma. Cuando Bob recibe el mensaje autenticado, utiliza el mismo algoritmo hash en conjuncin con la clave
pblica de Alice. Eleva la rma 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

7 CONSIDERACIONES PRCTICAS

mensaje no ha sido tratado de forzar (no ha sufrido ataques).

7 Consideraciones prcticas

Se debe observar que la seguridad de los paddingschemes como RSA-PSS son esenciales tanto para la seguridad de la rma como para el cifrado de mensajes, y
que nunca se debera usar la misma clave para propsitos
de cifrado y de autenticacin.

7.1 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
(ecientemente).

Los nmeros p y q no deberan ser sucientemente cercanos para que la factorizacin de Fermat para n sea exitosa.
6 Seguridad
Adems, si cualquier p1 o q1 tiene slo factores primos pequeos, n puede ser factorizado rpidamente, con
lo
que estos valores de p o q deben ser descartados.
La seguridad del criptosistema RSA est basado en dos
problemas matemticos: el problema de factorizar nme- No se debera emplear un mtodo de bsqueda de priros grandes y el problema RSA. El descifrado completo mos con el cual se d alguna informacin cualquiera sode un texto cifrado con RSA es computacionalmente in- bre los primos al atacante. En particular, se debe utilizar
tratable, no se ha encontrado un algoritmo eciente toda- un buen generador aleatorio de nmeros primos para el
va para ambos problemas. Proveyendo la seguridad con- valor empleado. Obsrvese que el requerimiento est en
tra el descifrado parcial podra requerir la adicin de una que ambos sean aleatorios e impredecibles. No son el misseguridad padding scheme.
mo criterio; un nmero podra haber sido elegido por un
El problema del RSA se dene como la tarea de tomar proceso aleatorio, pero si ste es predecible de cualquier
races e-simas mdulo a componer n: recuperando un forma (o parcialmente predecible), el mtodo usado revalor m tal que me c (mod n), donde (e, n) es una clave sultar en una baja seguridad. Por ejemplo: la tabla de
pblica RSA y c es el texto cifrado con RSA. Actualmen- nmeros aleatorios de Rand Corp en 1950 podra servir
te la aproximacin para solventar el problema del RSA es muy bien como ejemplo de criterio verdaderamente aleael factor del mdulo n. Con la capacidad para recuperar torio, pero ha sido publicada y a sta puede acceder el
factores primos, un atacante puede calcular el exponente atacante. Si el atacante puede conjeturar la mitad de los
secreto d desde una clave pblica (e, n), entonces desci- dgitos de p o q, l podra rpidamente calcular la otra
fra c usando el procedimiento estndar. Para conseguir mitad. (Ver Coppersmith en 1997).
esto, un atacante debe factorizar n en p y q, y calcular
(p1)(q1) 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 sucientemente 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.

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 ecientemente 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 suciente para facilitar una exponenciacin
eciente.

7.2 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
En 1993, Peter Shor public su algoritmo, mostrando que mensaje simtricamente-cifrado a Alicia.
una computadora cuntica podra en principio mejorar la Esto plantea adems problemas adicionales de seguridad,
factorizacin en tiempo polinomial, mostrando RSA co- por ejemplo, es de gran importancia usar un generador
mo un algoritmo obsoleto. Sin embargo, las computado- aleatorio fuerte para claves simtricas, porque de otra forras cunticas no se esperan que acaben su desarrollo hasta ma Eve (un atacante que quiera averiguar el contenido
del mensaje) podra puentear la clave asimtrica de RSA
dentro de muchos aos.

10.2

Bibliografa

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 certicados digitales u otros componentes de infraestructuras de la clave pblica.

10.2 Bibliografa
R. Rivest, A. Shamir, L. Adleman. A Method for
Obtaining Digital Signatures and Public-Key Cryptosystems. Communications of the ACM, Vol. 21
(2), pp.120126. 1978. Previously released as an
MIT Technical Memo in April 1977. Initial publication of the RSA scheme.
Thomas H. Cormen, Charles E. Leiserson, Ronald
L. Rivest, and Cliord Stein. Introduction to Algorithms, Second Edition. MIT Press and McGrawHill, 2001. ISBN 0-262-03293-7. Section 31.7: The
RSA public-key cryptosystem, pp.881887.
Wing H. Wong. Timing Attacks on RSA: Revealing
Your Secrets through the Fourth Dimension
An Attack on RSA Digital Signature
Behrends,EhrhardFive-Minute Mathematics. American Mathematical Society. pp. 8691. ISBN 978-08218-4348-2.

11 Enlaces externos
9

Vase tambin

Algoritmo RSA

Cliord Cocks

Ataques RSA I

Criptografa asimtrica

PKCS #1: RSA Cryptography Standard (Sitio ocial


de RSA Laboratories )

Competicin de factorizacin RSA


Criptografa cuntica
Criptologa
Firma digital ciega
Problema RSA
Teora de la complejidad computacional

10

Referencias

10.1

Notas al pie

[1] Boneh, Dan (1999). Twenty Years of attacks on


the RSA Cryptosystem (en ingls). Notices of the
American Mathematical Society (AMS) 46 (2): pp.
203213. http://crypto.stanford.edu/~{}dabo/abstracts/
RSAattack-survey.html.
[2] David Pointcheval. How to Encrypt Properly with RSA
(en ingls). Consultado el 5 de octubre de 2011.
[3] Jean-Sbastien Coron, Marc Joye, David Naccache y Pascal Paillier. Universal Padding Schemes for RSA (en
ingls). Consultado el 5 de octubre de 2011.

A Method for Obtaining Digital Signatures and


Public-Key Cryptosystems, El documento de la revista Communications of the ACM, Vol. 21 (2),
1978, pginas 120-126 escrita por R. Rivest, A.
Shamir y L. Adleman, Posterior al Technical Memo de abril de 1977.
Una introduccin a RSA, M. Griep, Oct. 2002
Calculadora on-line de cifrado RSA que muestra paso a paso todos los clculos

12

12
12.1

TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES

Text and image sources, contributors, and licenses


Text

RSA Fuente: http://es.wikipedia.org/wiki/RSA?oldid=77725829 Colaboradores: Moriel, Robbot, Riviera, Aloriel, Triku, Th3j0ker, Jecanre, Mandramas, Serra, Taragui, Petronas, Xavmp, Rembiapo pohyiete (bot), Magister Mathematicae, Alpertron, Murven, RobotQuistnix,
Platonides, Vynith, Yrbot, FlaBot, Antonio Vazquez, YurikBot, Kronoman, GermanX, Eskimbot, Baneld, Isra00, Milestones, Jmencisom,
Chlewbot, Nstor Amigo Cairo, Paintman, Fercufer, BOTpolicia, Narkone, CEM-bot, Majg2002, Alexav8, NeoMorfeo, Rosarinagazo,
Martnhache, Davidr89, Resped, Thijs!bot, Templeir, Escarbot, Eiderheros, JAnDbot, LogC, Blare, Death Master, TXiKiBoT, Humberto,
Netito777, Nicozk, Mathmagic, Assholess, Jvlivs, Bedwyr, AchedDamiman, House, Muro Bot, SieBot, Mushii, Alinome.net, DaBot, Loveless, Bigsus-bot, Mafores, PipepBot, Javierito92, Reyesoft, Botito777, LordT, Alexbot, Raulshc, MarceloPinoQuivira, AVBOT, Nost, Diegusjaimes, Juvalen, Jkbw, Ricardogpn, ChenzwBot, JViejo, Botarel, BenzolBot, Ajesusores, RedBot, PatruBOT, JdmGarcia, Waeswaes,
Jorge c2010, EmausBot, ZroBot, JackieBot, Xerox 5B, Brauvt, MerlIwBot, MarioS, Juanpebe, Invadibot, Legobot, BOTito, Gusitoguay
y Annimos: 105

12.2

Images

12.3

Content license

Creative Commons Attribution-Share Alike 3.0

You might also like