Sie sind auf Seite 1von 34

Fundamentos matemticos del mtodo RSA Hugo D.

Scolnik
Abril 2004.

Fundamentos matemticos
del mtodo RSA

Dr.Hugo D.Scolnik
Profesor Titular Regular
Departamento de Computacin
Facultad de Ciencias Exactas y Naturales
Universidad de Buenos Aires

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
Nociones elementales de teora de nmeros:
Usaremos la notacin b/a (b divide a a) para significar que a = kb para algn
entero k. Diremos que a es un mltiplo de b.
Todo entero divide a 0.
Si b no divide a a escribiremos b//a.
Si b/a y b>0 diremos que b es un divisor de a.
Todo entero a es divisible por 1 y a (se los llama divisores triviales). A los divisores
no triviales de un entero (si existen) se los denomina factores.
Nmeros primos y compuestos
Un entero a > 1 tal que sus nicos divisores son 1 y a se denomina primo.
Ejercicio: demostrar que hay infinitos nmeros primos.
Los enteros que no son primos se denominan compuestos.
El nmero 1 no es ni primo ni compuesto (lo mismo sucede con el 0 y los enteros
negativos).
El teorema de la divisin, restos y la equivalencia modular
Dado un entero n, el conjunto Z de todos los enteros puede particionarse en dos
subconjuntos: los que son mltiplos de n y los que no lo son. Gran parte de la
teora de nmeros se basa en el refinamiento de esta particin obtenida
clasificando a los enteros que no son mltiplos de n de acuerdo con el resto que
se obtiene al dividirlos por n.
Teorema 1 (de la divisin):
Para cualquier entero a y cualquier entero positivo n existen enteros nicos q y r
tales que 0 r <n y a = qn + r

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
Dado un nmero real x se define a la funcin parte entera [x] como al mayor entero
que no supera a x.
El valor q =[a/n] es el cociente de la divisin.
El valor r = a mod n es el resto (o residuo) de la divisin. Por lo tanto, n/a si y solo
si a mod n = 0.
Por lo tanto, a = [a/n]n + (a mod n) (1) o

a mod n = a [a/n]n (2)

Si a mod n = b mod n escribimos a b (mod n). Se dice en este caso que a es


equivalente a b mdulo n.
Equivalentemente a b (mod n) si y solo si n / (b-a) .
Escribiremos a b si a no es equivalente a b mdulo n.
Como a b (mod n) es una nocin de equivalencia, el conjunto Z se particiona en
n clases de equivalencia de acuerdo con sus restos al dividirlos por n. La clase de
equivalencia mdulo n que contiene a un entero a es:
[a]n = {a + kn : kZ}
Escribir entonces a[b]n equivale a
clases de equivalencia es

a b (mod n). El conjunto de todas esas

Zn = {[a]n : 0 a n-1}
En general se usa la definicin: Zn ={0,1,...,n-1}

(3)
(4)

que debe leerse como equivalente a (3) entendiendo que 0 representa [0]n, 1
representa [1]n, etc.
Naturalmente hay que tener en cuenta a las clases de equivalencia subyacentes.
Por ejemplo, una referencia a 1 en Zn debe entenderse como una referencia a
[n-1]n dado que 1 n 1 mod n.
Divisores comunes y mxmo comn divisor (MCD)
Si d es un divisor de a y tambin un divisor de b, entonces diremos que d es un
divisor comn de a y b. Por ejemplo, los divisores de 30 son: 1,2,3,5,6,10,15,y 30,
as que los divisores comunes de 24 y 30 son 1,2,3, y 6. Una propiedad importante
de los divisores comunes es que:

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
d / a y d / b implica d / (a +b) y d / (a b)
(5)
Mas generalmente, tenemos que
d / a y d / b implica d / (ax + by)
(6)
para cualquier par de enteros x,y.
Tambin,
si a / b entonces a b o b =0 a / b y b / a a = b (7)
El mximo comn divisor de dos enteros a y b que no son simultneamente nulos
es el mayor de sus divisores comunes, y se denota por MCD(a,b). Por ejemplo,
MCD(24,30)=6, MCD(3,5)=1, MCD(0,9)=9.
Si ab 0 entonces 1 MCD(a,b) min(a,b). Definimos MCD(0,0)=0 para
tornar estndar las propiedades de la funcin MCD (ver (11) mas abajo)
Propiedades de la funcin MCD:
MCD (a,b) = MCD (b,a)
MCD (a,b) = MCD ( -a,b)
MCD (a,b) = MCD (a,b)
MCD (a,0) = a
MCD (a,ka) = a para cualquier kZ

(8)
(9)
(10)
(11)
(12)

Teorema 2: si a y b son enteros no simultneamente nulos, entonces MCD (a,b) es


el menor elemento positivo del conjunto {ax + by: x,yZ} de combinaciones
lineales de a y b.
Demostracin: sea s el menor elemento positivo de dichas combinaciones. Por lo
tanto, sea s = ax + by para algun x,yZ.
Sea q=[a/s] . La ecuacin (2) implica que
a mod s = a qs = a q(ax + by) = a(1 qx) + b(-qy)
y por lo tanto a mod s tambin es una combinacin lineal de a y b. Pero como a
mod s < s tenemos que a mod s = 0 porque s era la menor combinacin positiva
de ese tipo. Por lo tanto, s / a y por un razonamiento similar s / b. O sea que s es
un divisor comn de a y b, y por lo tanto MCD (a,b) s. La ecuacin (6) implica que
MCD (a,b) / s porque MCD (a,b) divide a a y b, y s es una combinacin lineal de
ambos. Pero MCD (a,b) / s y s > 0 lo que implica que MCD (a,b) s. Por lo tanto
MCD (a,b) = s.
Corolario 2.1: Para cualquier par de enteros a y b si d /a y d / b entonces d / MCD
(a,b)

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
Demostracin: resulta de (6) porque MCD (a,b) es una combinacin lineal de a y b
por el Teorema 2.
Corolario 2.2: Para cualquier par de enteros a y b y cualquier entero positivo n,
MCD (an,bn) = nMCD (a,b)
Demostracin:
Si n = 0 el resultado es trivial. Si n > 0 entonces MCD (an,bn) es el menor entero
positivo del conjunto {anx + bny} el cual es n veces el menor entero positivo del
conjunto {ax + by}.
Ejercicio: demostrar el siguiente
Corolario 2.3: Para todos los enteros positivos n, a y b , si n / ab y MCD (a,n) = 1,
entonces n / b.
Primos relativos
Dos enteros a, b se dice que son primos relativos si MCD (a,b) = 1.
El siguiente teorema establece que si dos enteros son primos relativos con otro
entero p, entonces su producto es primo relativo con p.
Teorema 3: Para enteros cualesquiera a,b y p, si MCD (a,p) = 1 y MCD (b,p) = 1 ,
entonces MCD (ab,p) = 1.
Demostracin: Del Teorema 2 surge que existen enteros w,x,y,z tales que
aw + px = 1
by + pz = 1 Multiplicando estas ecuaciones resulta
ab(wy) + p(xby + zaw + pxz) = 1
Factorizacin nica
Un hecho elemental pero importante acerca de la divisibilidad por primos es el
siguiente
Teorema 4: Para cualquier primo p y todos los enteros a,b , si p / ab entonces p / a
o p / b.

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
Demostracin: Supongamos que p / ab pero p // a y p // b. Por lo tanto, MCD (a,p)
= 1 y MCD (b,p) = 1 puesto que los nicos divisores de p son 1 y p, y por hiptesis
p no divide ni a a ni a b. El Teorema 3 implica que MCD (ab,p) = 1, lo que
contradice la suposicin de que
p / ab puesto que p / ab implica MCD (ab,p) = p. Esta contradiccin completa la
demostracin.
Una consecuencia del Teorema 4 es que un entero tiene una nica factorizacin
en nmeros primos.
Ejercicio: demostrar el
Teorema 5 (de la factorizacin nica): un entero compuesto n puede escribirse de
modo nico como un producto de la forma
n = p1e1...pkek donde los pi son primos tales que p1 < p2 < ... < pk y los exponentes
son enteros positivos.
El mximo comn divisor
En esta seccin vamos a presentar el algoritmo de Euclides para calcular el MCD
de dos enteros en forma eficiente y a analizar su complejidad computacional.
Nos vamos a restringir a los enteros positivos (ver (10)). En principio podramos
calcular MCD (a,b) a partir de las factorizaciones en primos de ambos nmeros, o
sea:
a = p1e1...pkek
b = p1f1...pkfk

(13)
(14)

donde algunos exponentes pueden ser nulos para que podamos usar el mismo
conjunto de primos para a y b.
Entonces,
MCD(a,b) = p1min(e1,f1) ... pkmin(ek,fk) (15)
Como veremos luego, los mejores algoritmos para factorizar NO son polinomiales,
o sea que el enfoque anterior para calcular MCD (a,b) no puede conducir a un
mtodo eficiente.
El algoritmo de Euclides se basa en el siguiente

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
Teorema 6 (de la recursin): para cualquier entero no negativo a y cualquier entero
positivo b
MCD (a,b) = MCD (b, a mod b)
Demostracin: demostraremos que MCD (a,b) y MCD (b, a mod b) se dividen
mutuamente, de modo tal que por (7) deben ser iguales dado que ambos son no
negativos.
Veamos primero que MCD (a,b) / MCD (b, a mod b). Sea d =MCD(a,b), entonces d
/ a y d / b. Por (2), a mod b = a q b donde q = [a/b]. Entonces a mod b es una
combinacin lineal de a y b y (6) implica que d / a mod b. Entonces, como d / b y d
/ a mod b, el Corolario 2.3 implica que d / MCD (b, a mod b) o, equivalentemente,
que
MCD (a,b) / MCD (b, a mod b)

(16)

Demostrar que MCD (b, a mod b) / MCD (a,b) es casi lo mismo.


Sea d=MCD (b,a mod b), entonces d / b y d / a mod b.
Como a = q b + a mod b donde q =[a/b] tenemos que a es una combinacin lineal
de b y a mod b.
Por (6), conclumos que d / a, y como d / b, resulta que d / MCD (a,b) por el Corolario
2.3 o, equivalentemente, que
MCD (b, a mod b) / MCD (a,b)

(17)

Usando (7) para combinar las ecuaciones (16) y (17) resulta el teorema.
El algoritmo de Euclides
El siguiente algoritmo se describe en el libro Elementos (aproximadamente 300 aos
AC) aunque quizs sea anterior.
Sean a y b dos enteros arbitrarios no negativos
Procedimiento Euclides (a,b)
1. Si b = 0
2.
Entonces devolver a
3.
de lo contrario devolver Euclides (b, a mod b)
Ejemplo: sea calcular MCD (30,21)
Euclides (30,21) = Euclides (21,9) = Euclides (9,3) = Euclides (3,0) = 3

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
O sea, hay tres llamadas recursivas al procedimiento Euclides. La correctitud del
algoritmo surge del teorema 6 y del hecho de que si el procedimiento devuelve a
en el paso 2, entonces b = 0, de modo tal que (11) implica que MCD (a,b) = MCD
(a,0) = a. Notar que no puede ciclar indefinidamente puesto que el segundo
argumento decrece estrictamente en cada llamada recursiva.
La complejidad del algoritmo de Euclides
Analizaremos el peor caso en funcin de los tamaos de a y b. Supondremos que
sin prdida de generalidad que a > b 0. Esto se justifica porque si b > a 0
entonces Euclides (a,b) inmediatamente hace la llamada recursiva Euclides (b,a).
O sea que si el primer argumento es menor que el segundo, Euclides gasta una
llamada recursiva para intercambiar a los mismos. Similarmente si a = b > 0, el
procedimiento termina luego de una llamada recursiva puesto que
a mod b = 0
El tiempo total de ejecucin de Euclides es proporcional al nmero de llamadas
recursivas que hace. Para analizarlo necesitamos los nmeros de Fibonacci
definidos por la siguiente recurrencia:
F0 = 0
F1 = 1
Fi = Fi-1 + Fi-2 para i 2
Teorema 7: Si a > b 0 y el procedimiento Euclides (a,b) realiza k 1 llamadas
recursivas, entonces a Fk+2 y b Fk+
Demostracin: Por induccin sobre k. Sea k =1. Entonces b 1 = F2 y como a > b
debe ser a 2 = F3. Como b > a mod b en cada llamada recursiva el primer
argumento es estrictamente mayor que el segundo, o sea que la suposicin a > b
es vlida para cada llamada recursiva.
Supongamos que el teorema es cierto para k 1 llamadas recursivas, y veremos
que tambin lo es para k llamadas. Como k > 0 tenemos que b > 0 y Euclides (a,b)
llama a Euclides (b, a mod b) recursivamente y este ltimo hace a su vez k 1
llamadas recursivas. La hiptesis inductiva implica que b Fk+1 a mod b Fk.
Tenemos que
b + (a mod b) = b + (a [a/b]b) a
Como a > b > 0 implica que [a/b] 1. Por lo tanto
a b + (a mod b) Fk+1 + Fk = Fk+2

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
Teorema 8 (Lam): para cualquier entero k 1, si a > b 0 y b < Fk+1, entonces la
invocacin al procedimiento Euclides (a,b) realiza menos de k llamadas recursivas.
Podemos mostrar ahora que la cota superior del teorema 8 es la mejor posible.
Dos nmeros de Fibonacci consecutivos constituyen el peor caso para el algoritmo
de Euclides. Dado que Euclides (F3,F2) hace exactamente una llamada recursiva y
como k 2, tenemos que Fk+1 mod Fk = Fk-1 y
MCD(Fk+1,Fk) = MCD (Fk, Fk+1 mod Fk) = MCD (Fk,Fk-1)
Por lo tanto el algoritmo Euclides (Fk+1,Fk) hace k 1 llamadas recursivas, llegando
a la cota superior del Teorema 8.
El algoritmo de Euclides extendido
El objetivo es extender el algoritmo que vimos para calcular coeficientes enteros
x,y que satisfagan
d = MCD (a,b) = ax + by

(18)

Notar que x,y pueden ser nulos o negativos. La utilidad de dicho algoritmo ser
para calcular inversas multiplicativas modulares.
El procedimiento extendido tiene como entrada a un par arbitrario de enteros y
devuelve una terna (d,x,y) que satisface (18).

Procedimiento Euclides extendido (a,b)


1.
2.
3.
4.
5.

Si b = 0
Retornar con (a,1,0)
de lo contrario, (d,x,y) Euclides extendido (b,a mod b)
(d,x,y) (d,y,x [a/b] y)
retornar (d,x,y)

Veamos el clculo de MCD (99,78)


a
99
78

b
78
21

[a/b]
1
3

d
3
3

x
-11
3

y
14
-11

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
21
15
1
3
-2
3
15
6
2
3
1
-2
6
3
2
3
0
1
3
0
3
1
0
El paso 1. equivale al test b = 0 en Euclides. Si b = 0, el Euclides extendido
devuelve d = a en el paso 2. junto con x = 1,
y = 0, o sea que a = ax + by. Si b 0, el algoritmo calcula (d,x,y) tal que d =
MCD (b,a mod b) y
d = bx + (a mod b ) y

(19)

Como en Euclides, tenemos en este caso que d = MCD (a,b) = d =


MCD(b, a mod b). Para obtener x,y tales que d = ax + by comenzamos por
reescribir (19) usando d = d y la ecuacin (2):
d = bx + (a [a/b] b) y = ay + b(x [a/b] y)
De este modo, eligiendo x = y , y = x [a/b] y se satisface la ecuacin
d = ax + by, lo que demuestra la correctitud del algoritmo.
Dado que el nmero de llamadas recursivas en los dos algoritmos es igual, los
tiempos de procesamiento solo difieren en un factor constante
Grupos finitos
Un grupo (S,) es un conjunto S con una operacin binaria para la cual se
verifican las siguientes propiedades:
1.
2.
3.
4.

Cerrado: Para todo a,b S ab S


Identidad: Existe un elemento neutro e S tal que a e = e a = a a S
Asociatividad: a,b,c S, (a b) c = a (b c)
Inversa: a S un nico elemento b S tal que
ab=ba=e

Si un grupo satisface la propiedad conmutativa a b = b a


a,b S, se dice que es abeliano y si S < (donde S denota la
cardinalidad de S) se dice que el grupo es finito.
Podemos formar dos grupos abelianos finitos utilizando la suma y la multiplicacin
mdulo n, donde n es un entero positivo, basados en las clases de equivalencia de
los enteros mdulo n. Para definir un grupo en Zn necesitamos operaciones

10

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
binarias convenientes que se obtienen redefiniendo las operaciones ordinarias de
suma y multiplicacin.Es simple definir las operaciones de suma y multiplicacin
en Zn porque la clase de equivalencia de dos enteros determina unvocamente la
clase de equivalencia de su suma y su producto. Si a a (mod n ) y
b b (mod n) entonces
a + b a + b (mod n)
ab ab (mod n)
De este modo definimos la suma y la multiplicacin mdulo n , denotadas por +n y
. n mediante
[a]n +n [b]n = [a + b]n
[a]n .n [b]n = [ab]n y anlogamente la substraccin
[a]n n [b]n = [a b]n
Estos hechos justifican la prctica de usar el menor elemento positivo de cada
clase de equivalencia como su representante cuando se realizan clculos en Zn.
La suma, la resta y la multiplicacin se llevan a cabo como siempre con sus
representantes , pero los resultados se expresan con el representante de su clase
(o sea x x mod n ).
Usando esta definicin de la suma mdulo n definimos el grupo aditivo mdulo n
como (Zn ,+n) recordando que Zn= n.
Teorema 12: (Zn ,+n) es un grupo abeliano finito.
Demostracin: queda como ejercicio.
Usando la definicin de multiplicacin mdulo n definimos el grupo multiplicativo
mdulo n como (Z*n ,.n) donde Z*n denota a los elementos de Zn que son primos
relativos con n, o sea
Z*n = { [a]n Zn : MCD(a,n) = 1}
Para ver que este conjunto est bien definido notemos que para
0 a < n resulta que a (a + kn) (mod n) para todos los enteros k. Es fcil ver
entonces que MCD(a,n) = 1 MCD(a +kn,n) = 1 para todos los enteros k.. Como
[a]n = {a + kn ; k Z} resulta que Z*n est bien definido.
Por ejemplo, Z*15 = {1,2,4,7,8,11,13,14}. La multiplicacin mdulo 15 es la
operacin del grupo; as 8.11 13 (mod 15) y la identidad para este grupo es el 1.
Teorema 13: (Z*n ,.n) es un grupo abeliano finito.
Vimos en el teorema 6 que para a,b,p enteros tales que

11

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
MCD (a,p) = MCD (b,p) = 1 entonces MCD (ab,p) =1. Esto implica que
(Z*n ,.n) es cerrado. La asociatividad y conmutatividad quedan como ejercicio.
Veamos la existencia de inversas: sea a Z*n,
(d,x,y) el resultado del algoritmo Euclides extendido (a,n). Entonces,
d =1 porque a Z*n y ax + ny = 1 resulta que
ax 1 (mod n) o sea que [x]n es una inversa multiplicativa de
[a]n mod n (luego veremos que las inversas son nicas).
De ahora en adelante vamos a denotar a las clases de equivalencia por sus
elementos representativos y a las operaciones simplemente por + y . Tambin las
equivalencias mdulo n sern interpretadas como ecuaciones en Zn. Por ejemplo.
son equivalentes las expresiones:
ax b (mod n)

[a]n .n [x]n = [b]n

Tambin vamos a omitir la explicitacin de las operaciones cuando las mismas


sean evidentes a partir del contexto. As
(Zn ,+n) ser Zn y (Z*n ,.n) ser Z*n. La inversa multiplicativa de un elemento a se
notar (a-1 mod n). La divisin en Z*n est definida por la ecuacin a/b ab-1 (mod
n). Por ejemplo, en Z*15 tenemos que 7-1 13 (mod 15) porque 7.13 = 91 1 (mod
15) de modo tal que 4/7 4.13 7 (mod 15).
La cardinalidad de Z*n , o sea Z*nse denota por (n), conocida como la funcin
de Euler, que satisface la ecuacin

(n) = n (1 1/p)
p<n

(20)

donde p recorre todos los primos que dividen a n (incluyendo a n si n es primo).


Intuitivamente comenzamos con la lista de los restos {0,1,...,n-1} y entonces para
cada primo p que divide a n, borramos los mltiplos de p de dicha lista. Por
ejemplo, como los divisores primos de 45 son 3 y 5, resulta
(45) = 45(1 1/3)(1 1/5) = 45(2/3)(4/5) = 24.
Consecuencia importante: si p es primo, Z*p = {1,2,...,p-1} y (p)= p-1
Si n es compuesto, entonces (n) < n 1

12

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
Subgrupos
Si (S , ) es un grupo, S S, y (S ,) tambin es un grupo, entonces se dice que
(S ,) es un subgrupo de (S , ). Por ejemplo, los enteros pares forman un
subgrupo de los enteros con la operacin de suma. El siguiente teorema da una
herramienta til para reconocer subgrupos:
Teorema 14 (un subconjunto cerrado de un grupo finito es un subgrupo):
Si (S , ) es un grupo finito y S es cualquier subconjunto de S tal que si a,b S
a b S, entonces (S , ) es un subgrupo de (S , ).
Demostracin: queda como ejercicio.
Teorema 15 (Lagrange): Si (S ,) es un subgrupo de (S , ), entonces S es un
divisor de S.
Un subgrupo S de un grupo S se dice propio si S S. El siguiente Corolario es til
en el test de Rabin-Miller para generar nmeros pseudoprimos;
Corolario 16: Si S es un subgrupo propio de S, S S/2
Subgrupo generado por un elemento:
El teorema 14 da un modo interesante de generar subgrupos de grupos finitos:
elegir un elemento a y tomar todos los elementos que puedan obtenerse de l con
la operacin de grupo. Sea
a(k) = a a ... a (k veces)
Por ejemplo, si tomamos a = 2 en Z6 resulta a (1) = 2, a (2) = 4,
a (3) = 6 0, a (4) = 2, ...
En el grupo Zn tenemos que a(k) = ka mod n y en el grupo Z*n es
a (k) = a k mod n.
El subgrupo generado por a denotado por (a) o (a, ) se define por
(a) = { a (k) , k 1}
Decimos que a genera (a) o que a es un generador de (a). Como S es finito, (a) es
un subconjunto finito de S. La asociatividad de implica que a (i) a(j) = a (i+j) .
(a) es cerrado, entonces por el Teorema 14 , (a) es un subgrupo de S.

13

Ejemplos: en Z6

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.

(0) = 0, (1) = {0,1,2,3,4,5}, (2) = {0,2,4}


El orden de a (en el grupo S) notado ord(a), es el menor i > 0 tal que
a (i) = e
Teorema 17: Para cualquier grupo finito (S , ) y cualquier a S, el orden de un
elemento es igual a la cardinalidad del subgrupo que genera, o sea ord(a) = (a).
Demostracin: Sea t = ord(a). Como a (t) = e, y a (t+k) = a(t) a(k) =
a (k) para k 1, si i > t entonces a (i) = a (j) para algn j < i. O sea que no aparecen
nuevos elementos despus de a (t), y
(a) = { a (1) , ... , a (t) }. Para demostrar que (a)= t supongamos por
contradiccin que a (i) = a (j) para i,j satisfaciendo 1 i < j t
Entonces a (i+k) = a (j+k) para k 0. Pero esto implica que
a (i+ (t-j)) = a (j + (t-j)) = e, una contradiccin porque i + (t-j) < t, pero t es el menor
entero positivo tal que a (t) = e. Por lo tanto cada elemento de la sucesin a (1) , a (2)
, ... , a (t) es distinto, y (a) = t.
Corolario 18 : la sucesin a
(j)
si y solo si i j (mod t).

(i)

es peridica con perodo t = ord (a), esto es a

(i)

=a

Corolario 19 : si (S , ) es un grupo finito con identidad e, entonces


a S , a (S) = e
Demostracin: El teorema de Lagrange implica que ord (a) / S, o sea que S
0 (mod t) , donde t = ord(a)
Resolucin de ecuaciones modulares:
Vamos a considerar ahora la resolucin de ecuaciones de la forma
ax b (mod n) donde n > 0

(22)

Suponemos que a,b, n son enteros dados y el problema es encontrar x que


satisfaga (22) (puede haber 0,1 o varias soluciones).
Dado que (a) = {a (x), x > 0} = { ax mod n: x > 0}, la ecuacin (22) tiene solucin si
y solo si b (a). El teorema de Lagrange nos dice que (a) tiene que ser un
divisor de n. El siguiente teorema da una caracterizacin precisa de (a).

14

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
Teorema 20: Para cualquier par de enteros positivos a,n, si
d = MCD (a,n) entonces
(a) = (d) = {0, d, 2d, ..., ((n/d 1)d}
(23)
y (a) = n/d
Demostracin: primero veremos que d (a). El procedimiento Euclides extendido
(a,n) calcula enteros x, y tales que d = ax + ny. Por lo tanto, ax d (mod n), de
modo tal que d (a). Entonces, todo mltiplo de d pertenece a (a) porque un
mltiplo de un mltiplo de a es un mltiplo de a. O sea que (a) contiene a todo
elemento en (d) lo que implica que (d) (a). Veremos ahora que (a) (d). Si m
(a), entonces m =ax mod n para algn entero x, o sea que m = ax + ny para algn
entero y. Sin embargo, d/a y d/n, as que d/m lo que implica que m (d).
Combinando estos resultados resulta que (a) = (d). Para ver que
(a)= n/d basta observar que hay exactamente n/d multiplos de d entre 0 y n - 1
inclusive.
Corolario 21: La ecuacin (22) es resoluble si y solo si MCD (a,n)/b
Corolario 22: La ecuacin (22) tiene d soluciones distintas mdulo n donde d =
MCD (a,n) o no tiene soluciones.
Demostracin: Si x es solucin, entonces b (a). La sucesin
ai (mod n) , i = 0 ,1, ... es peridica con perodo (a)= n/d por el Corolario 18. Si b
(a) , entonces b aparece exactamente d veces en la sucesin ai mod n , i = 0 ,1,
... n - 1 porque los bloques de valores de (a) se repiten d veces cuando i vara
entre 0 y n 1. Los ndices x de estas posiciones son las soluciones de la
ecuacin (22).
Teorema 23: sea d = MCD (a,n) y supongamos que d = ax + ny para un par de
enteros x,y (por ejemplo dados por el procedimiento Euclides extendido). Si d/b,
entonces (22) tiene como una solucin al valor x0 = x(b/d) mod n.
Demostracin: como ax d (mod n) tenemos que
ax0 ax(b/d) (mod n) d(b/d) (mod n) b (mod n)
y por lo tanto x0 es una solucin de ax b (mod n).
Teorema 24: suponiendo que la ecuacin ax b (mod n) es resoluble (esto es, d =
MCD(a,n) / b) y que x0 es cualquier solucin de la misma. Entonces esta ecuacin
tiene exactamente d soluciones distintas mdulo n dadas por xi = x0 +i(n/d) para i =
1, 2, ... , d 1.

15

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
Demostracin: dado que n/d > 0 y 0 i(n/d) < n para i = 0 ,... , d 1, los valores x0,
x1 , ... , xd-1 son todos distintos mdulo n. Por la periodicidad de la sucesin ai (mod
n) (Corolario 18) si x0 es una solucin de ax b (mod n) entonces todo xi es una
solucin. Por el Corolario 22 hay exactamente d soluciones de modo tal que ellas
son x0, x1 , ... , xd-1
Hasta aqu hemos desarrollado los conceptos matemticos necesarios para
resolver la ecuacin ax b (mod n). El siguiente algoritmo imprime todas las
soluciones de la misma, donde a, b son enteros arbitrarios y n es un entero
positivo arbitrario.
Ecuaciones modulares (a,b,n)
1. (d,x,y) Euclides extendido (a,n)
2. si d/b
3.
entonces x0 x(b/d) mod n
4.
para i 0, hasta d 1
5.
imprimir (x0 + i(n/d)) mod n
6. de lo contrario imprimir no hay soluciones
Sea por ejemplo la ecuacin 14x 30 (mod 100) . llamando al procedimiento
Euclides extendido obtenemos (d,x,y) = (2, -7, 1). Como 2/30 se ejecutan los
pasos 3-5. En el paso 3 calculamos
x0 = (-7)(15) mod 100 = 95. El loop de los pasos 4-5 imprime las dos soluciones 95
y 45.
El paso 1 calcula d = MCD(a,n) y los valores x, y tales que
d = ax + ny, o sea que x es una solucin de la ecuacin
ax d (mod n). Si d//b entonces la ecuacin ax b (mod n) no tiene solucin por
el Corolario 21. El paso 2 verifica si d/b, y si no el Paso 6 imprime que no hay
solucin. De lo contrario el Paso 3 calcula una solucin x0 de la ecuacin (22) de
acuerdo con el Teorema 23. Dada una solucin, el Teorema 24 establece que las
otras d 1 soluciones pueden ser obtenidas adicionando mltiplos de (n/d)( mod
n). Por ello los pasos 4-5 imprimen las d soluciones distintas, comenzando con x0
y sumando (n/d) mod n.
Los siguientes corolarios son casos de particular inters para la Criptografa:
Corolario 25: para cualquier n > 1 , si MCD(a,n) = 1, entonces la ecuacin ax b
(mod n) tiene una nica solucin mdulo n.
El caso b =1 es muy importante, pues en ese caso estamos calculando la inversa
de a mdulo n.

16

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
Corolario 26: para cualquier n > 1, si MCD (a,n) = 1, la ecuacin
ax 1 (mod n) tiene una nica solucin mdulo n. De lo contrario, o sea si MCD
(a,n) 1, no existe ninguna solucin.
El Corolario 26 nos permite usar la notacin (a-1 mod n) cuando a y n son primos
relativos. Si MCD (a,n) = 1, entonces una solucin de la ecuacin ax 1 (mod n)
es el entero x dado por el procedimiento Euclides extendido puesto que la
ecuacin MCD(a,n) = 1 = ax + ny implica que ax 1 (mod n). De este modo (a-1
mod n) puede calcularse eficientemente mediante el procedimiento Euclides
extendido.
El teorema chino del resto:
Hace unos 2000 aos, el matemtico chino Sun-Tsu resolvi el problema de
encontrar los enteros x que dan restos 2, 3 y 2 cuando se los divide por 3 ,5 y 7
respectivamente. Una solucin es x = 23, y todas las soluciones son de la forma
23 + 105k, con k un entero arbitrario. El teorema chino del resto da una
correspondencia entre un sistema de ecuaciones mdulo un conjunto de nmeros
que son relativamente primos dos a dos (por ejemplo, 3 ,5 y 7), y una ecuacin
mdulo su producto (por ejemplo, 105).
Este teorema tiene dos aplicaciones principales: Sea el entero
n = n1n2 ... nk donde los factores ni son primos relativos entre s. En primer lugar,
este teorema es estructural, en el sentido que describe a la estructura de Zn
como esencialmente idntica a la del producto cartesiano Z n1 x Z n 2 x ... x Z n k
realizando la suma y la multiplicacin de la i-sima componente mdulo ni . En
segundo lugar, esta caracterizacin da lugar a algoritmos muy eficientes puesto
que es mejor computar en cada subsistema Zni que hacerlo mdulo n.
Teorema 27 (teorema chino del resto): Sea n = n1n2 ... nk donde los factores ni son
primos relativos entre s. Consideremos la correspondencia:
a (a1 , ... , ak)

(25)

donde a Zn , ai Z ni
y ai = a (mod n)i para i =1 , ... , k.
La correspondencia (25) es una biyeccin entre Zn y el producto cartesiano
Z n1 x Z n 2 x ... x Z n k . Las operaciones realizadas en Zn pueden ser realizadas

equivalentemente en las k uplas con las componentes individuales en el sistema


apropiado. Esto es, si
a (a1 , ... , ak) , b (b1 , ... , bk) entonces
(a + b) (mod n) ((a1 + b1) (mod n1 ), ... , (ak + bk) (mod nk ))

(26)

17

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
(a - b) (mod n) ((a1 - b1) (mod n1 ), ... , (ak - bk) (mod nk ))
(27)
(ab) (mod n) ((a1b1) (mod n1 ), ... , (akbk) (mod nk ))
(28)
Demostracin: La transformacin de una representacin a otra es inmediata. Ir de
a (a1 , ... , ak) requiere solamente k divisiones. Al revs, o sea a (a1 , ... , ak)
se realiza mediante la siguiente frmula: sea mi = n/ni para i = 1 , ... , k. Notar que
mi = n1n2 ... ni-1 ni+1 ... nk de modo tal que mi 0 (mod nj) para i j. Entonces,
definiendo
ci = mi (mi-1 mod ni)

para i = 1 , ... , k

(29)

tenemos que
a (a1c1 + ... + akck) (mod n)

(30)

La ecuacin (29) est bien definida porque mi y ni son relativamente primos


(Teorema 6) y por lo tanto el Corolario 26 implica que
mi (mi-1 mod ni) est definido. Para verificar (30) notar que
cj mj 0 (mod ni) si i j y que ci 1 (mod ni). De este modo tenemos la
correspondencia
ci (0 , 0 , ... , 1 , 0 , ... , 0) donde el 1 est en la i sima componente , o sea
que ci tiene una base para su representacin como en los espacios vectoriales.
Para cada i tenemos entonces que
a aici (mod ni) ai mi (mi-1 mod ni) (mod ni) ai(mod ni)
Dado que podemos transformar en ambos sentidos, la correspondencia es
biunvoca. Las ecuaciones (26) (28) resultan fcilmente a partir de x (mod ni )= (x
mod ni )(mod ni ) para todo x, y para i = 1 , ... , k.
Corolario 28: si n1 ,n2 , ... ,nk son primos relativos entre s y n = n1n2 ... nk
entonces para enteros a1, ... , ak el sistema de ecuaciones
x ai (mod ni) para i = 1 , ... , k tiene una nica solucin mdulo n para la
incgnita x.
Corolario 29: si n1 ,n2 , ... ,nk son primos relativos entre s y
n = n1n2 ... nk entonces para todos los enteros x , a
x a (mod ni) para i = 1 , ... , k x a (mod n)
Veamos un ejemplo ilustrativo del Teorema 27. Sean las ecuaciones:

18

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
a 2 (mod 5)
a 3 (mod 13)
de modo tal que a1 = 2, n1 = m2 = 5 , a2 = 3, y n2 = m1 = 13, y queremos calcular a
mod 65 dado que n = 65. Como 13-1 2 (mod 5) y
5-1 8 (mod 13) tenemos que
c1 = 13(2 mod 5) = 26
c2 = 5 (8 mod 13) = 40

a 2.26 + 3.40 (mod 65) 52 + 120 (mod 65) 42 (mod 65)


Potencias de un elemento:
Tal como consideramos los mltiplos de un elemento a mdulo n es natural
investigar las potencias de aZ*n mdulo n. Comenzando con 0 tenemos que a0
mod n =1 y el i-simo valor es ai mod n. Por ejemplo las potencias de 3 mdulo 7
son:
I
3i mod 7

0
1

1
3

2 3 4 5 6
2 6 4 5 1

7
3

8
2

9
6

10
4

11
5

En esta seccin usaremos la notacin (a) para el subgrupo de Z*n generado por a
y sea ordn(a) el orden de a en Z*n .Ahora usamos la definicin de la funcin de
Euler (n) para la cardinalidad de Z*n y traducimos el Corolario 19( si (S , ) es un
grupo finito con identidad e, entonces a S , a (S) = e) en la notacin de Z*n
para obtener el Teorema de Euler y si adems lo especializamos al caso Z*p
resulta el Teorema de Fermat:
Teorema 30 (de Euler):
para cualquier entero n > 1, a (n) 1 (mod n) a Z*n
Teorema 31 (llamado el pequeo teorema de Fermat):
Si p es primo, a p-1 1 (mod p) a Z*p
Demostracin: por la ecuacin (21), (p) = p 1 si p es primo.
Esto se aplica a todo elemento en Zp excepto el 0 puesto que
0 Z*p . Para todo a Zp tenemos que a p a (mod p)
Si ordn(g) = Z*n resulta que todo elemento de Z*n es una potencia de g, y en ese
caso decimos que g es un generador o raz primitiva de Z*n

19

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
Por ejemplo, 3 es un generador mdulo 7. Si Z*n posee un generador, decimos
que el grupo Z*n es cclico.
Teorema 32: Los valores de n > 1 para los cuales Z*n es cclico son 2, 4, pe y 2pe
para todos los primos impares p y todos los enteros positivos e.
Demostracin: ver por ejemplo el libro I.Niven and H.Zuckerman, An Introduction
to the Theory of Numbers, J.Wiley, fourth edition, 1980.
Si g es un generador de Z*n y a es cualquier elemento de Z*n entonces existe un z
tal que g z a (mod n). Este z se denomina el logaritmo discreto o ndice de a
mdulo n con respecto a la base g y lo notaremos logn,g (a).
Teorema 33 (del logaritmo discreto): Si g es un generador de Z*n
entonces la ecuacin g x g y (mod n) tiene solucin si y solo si la ecuacin x y
(mod (n)) la tiene.
Demostracin: supongamos primero que x y (mod (n)). Entonces,
x = y +k(n) para algn entero k. Por lo tanto,
g x g y+k(n) (mod n) g y .(g (n).k) (mod n) g y.(1k) (mod n)
g y(mod n)
donde utilizamos el Teorema 30 (g (n). 1 (mod n)).
Recprocamente, supongamos que g x g y (mod n). Como la sucesin de
potencias de g genera todo elemento de (g), y (g)=(n), el Corolario 18 implica
que la sucesin de potencias de g es peridica con perodo (n). Por lo tanto, si g
x
g y (mod n) debe cumplirse que x y (mod (n)).
El tomar logaritmos discretos puede simplificar a veces el razonamiento acerca de
las ecuaciones modulares, tal como lo muestra el siguiente:
Teorema 34: si p es un primo impar y e 1, entonces la ecuacin
X 2 1 (mod p e)

(34)

tiene solo dos soluciones: x =1 y x = -1.


Demostracin: sea n = pe . El teorema 32 implica que Z*n tiene un generador g. La
ecuacin (34) puede escribirse como

20

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.

(g

log n, g ( x) 2

) g

log n, g (1)

(mod n)

(35)

Dado que logn,g (1) =0 , el Teorema 33 implica que la ecuacin (35) es equivalente
a

2.log n, g ( x) 0 (mod (n))

(36)

Para resolver esta ecuacin para la incgnita log


vistos anteriormente. Haciendo

n,g

(x) aplicamos los mtodos

d = MCD (2, (n)) = MCD (2, ( p 1) p (e 1) ) = 2

Si d / 0 resulta del Teorema 24 que la ecuacin (36) tiene exactamente d =2


soluciones. Entonces la ecuacin (34) tiene exactamente dos soluciones que son
obviamente x =1 y x = -1.
Un nmero x es una raz cuadrada no trivial de 1 mdulo n si satisface la ecuacin
x 2 1 (mod n) pero no es equivalente a las races triviales 1 y 1 (mod n). Por
ejemplo, 6 es una raz cuadrada no trivial de 1 mdulo 35.
El siguiente Corolario del Teorema 34 ser usado para probar la correctitud del
algoritmo de Rabin-Miller para testear primalidad.
Corolario 35: si existe una raz cuadrada no trivial de 1 mdulo n, entonces n no es
primo (ver ms abajo el test de Rabin-Miller).
Demostracin: por el Teorema 34 n no es primo ni es potencia de un primo.
Calculando potencias mediante cuadrados sucesivos:
Una operacin fundamental en la teora de nmeros, y en el mtodo RSA en
particular, es la de elevar un nmero a una potencia mdulo otro nmero. A esto
se lo llama exponenciacin modular. Ms precisamente, buscamos una manera
eficiente de calcular a b (mod n), donde a, b son enteros no negativos y n es un
entero positivo. El mtodo de los cuadrados sucesivos resuelve este problema en
forma eficiente usando la representacin binaria de b.
Sea (b k, b k-1, ... , b 1, b 0) la representacin binaria de b (contiene b k+1 bits, siendo
b k el bit ms significativo).
Procedimiento Exponenciacin modular (a,b,n)
1. c 0
2. d 1

21

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
3. sea (b k, b k-1, ... , b 1, b 0) la representacin binaria de b
4. para i k hasta 0
5.
do c 2c
6.
d (d.d) (mod n)
7.
si b i = 1
8.
entonces c c + 1
9.
d (d.a)(mod n)
10. devolver d
Cada exponente que se calcula es el duplo del exponente anterior o ese ms uno.
La representacin binaria de b se lee de derecha a izquierda para controlar cuales
operaciones se van a realizar. Cada iteracin del loop utiliza las identidades:

a 2c (mod n) = (a c )2 (mod n)

(caso bi = 0)

a 2c +1(mod n) = a.(a c )2 (mod n)

(caso bi = 1)

La variable c no es realmente necesaria, pero la inclumos aqu por razones de


claridad. El mtodo siempre mantiene la identidad
d = a c mod n y c se incrementa duplicandola o sumndole uno hasta que c = b. Si
a, b , n son nmeros con k bits, entonces el nmero total de operaciones
aritmticas es O(k) y el nmero total de operaciones con bits es un O(k3)
Ejemplo: sea a = 7, b = 560 = (1000110000), n = 561. La siguiente tabla muestra
los resultados del algoritmo en cada paso:
I
bi
c
d

9
1
1
7

8
0
2
49

7
0
4
157

6
0
8
526

5
1
17
160

4
1
35
241

3
0
70
298

2
0
140
166

1
0
280
67

0
0
560
1

Por lo tanto, 7 560 (mod 561) = 1


Una explicacin simple de estas ideas es la siguiente: supongamos que queremos
calcular a8 (mod n). La forma usual es:
(a.a.a.a.a.a.a.a) (mod n) que involucra 7 multiplicaciones y una reduccin modular
enorme. Esto es obviamente ineficiente desde cualquier punto de vista. Mejor es
calcular
((a 2 (mod n))2 (mod n))2 (mod n)

22

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
pues esto requiere tres multiplicaciones y tres reducciones modulares, pero de
tamao mucho menor.
El algoritmo RSA:
Ya hemos visto los hechos fundamentales relativos a la criptografa de clave
pblica, as que en aqu nos concentraremos exclusivamente en los aspectos
tericos y algortmicos del mtodo RSA.
El esquema bsico es:
1.
2.
3.
4.

Seleccionar al azar dos nmeros primos de gran longitud.


Calcular n =pq
Elegir un entero impar e primo relativo con (n) = (p 1)(q 1)
Calcular d tal que e.d (mod (n)) = 1 (el Corolario 26 asegura que d existe y es
nico).
5. Publicar el par P = (e,n) que es la clave pblica del mtodo RSA.
6. Mantener en secreto el par S = (d,n) que es la clave privada del mtodo RSA.
Para encriptar un mensaje M con la clave privada se calcula
S(M) = M d (mod n)

(37)

y para desencriptarlo,

P(S(M)) = (S(M))c (mod n) = M

(38)

Teorema 36 (correctitud de RSA): Las ecuaciones (37) y (38) definen


transformaciones inversas de Zn que cumplen M = S(P(M)) = P(S(M)).
Demostracin: de las ecuaciones (37) y (38) resulta que

P(S(M)) = S(P(M)) = M cd (mod n)


Como e y d son inversas multiplicativas mdulo (n) = (p -1)(q - 1)
ed = 1 + k ( p -1)(q -1) para algn entero k .

Pero entonces, si M 0 (mod p) tenemos por el Teorema 31 que:


M ed M ( M p 1 )k ( q 1) (mod p ) M (1)k ( q 1) (mod p ) M (mod p )

23

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.

Tambin

M ed M (mod p ) si M 0 (mod p ). O sea,


M ed M (mod p) para todo M . Similarmente,
M ed M (mod q )

Por lo tanto, por el Corolario 29 del Teorema del resto

chino, M ed M (mod n) M

La seguridad de RSA depende en gran medida de la dificultad para factorizar


nmeros enteros muy grandes (actualmente se ha conseguido factorizar nmeros
de 150 dgitos en seis meses de trabajo usando cuatro supercomputadoras Cray.
Por ello el mtodo RSA de 1024 bits equivale a usar un n =pq del orden de 310
dgitos, enteros estos que hasta el momento no se han podido factorizar). Lo
anterior no quiere decir que quebrar RSA sea equivalente al problema de factorizar
enteros, o sea que podran existir mtodos de ataque que no involucren la
factorizacin de n.
Resta ahora estudiar el problema de la generacin de nmeros primos de gran
tamao.
La densidad de los nmeros primos:
Los nmeros primos son bastante frecuentes, as que es posible y razonable,
desde el punto de vista computacional, testear enteros impares aleatorios para ver
si son primos. La funcin de distribucin de primos (n) da el nmero total de
primos que son menores o iguales que n. Por ejemplo, (10) = 4 puesto que los
primos menores o iguales a 10 son 2, 3, 5 y 7. El Teorema de los nmeros primos
da una aproximacin til a esta funcin.
Teorema 37 (de los nmeros primos):

( n)
=1
n n / ln n
lim

Demostracin: ver un libro sobre teora de nmeros (por ejemplo el ya citado o,


E.Kranakis, Primality and Cryptography, Wiley-Teubner Series in Computer
Science, 1986).
La aproximacin n / ln n es bastante buena an para valores pequeos de n. Por
ejemplo, para n = 10 9 tenemos que (n) = 50.847.478 y
n / ln n = 48.254.942, o sea un error de menos del 6%. Cabe aclarar que este n es
muy pequeo tanto sea para la Teora de Nmeros como para la Criptografa.
Podemos usar este teorema para calcular la probabilidad de que un nmero entero
elegido al azar sea primo. Ella es obviamente 1/ ln n. O sea que debemos testear

24

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
aproximadamente ln n enteros elegidos al azar en las proximidades de n para
encontrar un primo con la misma longitud que n. Por ejemplo, para encontrar un
primo de 100 dgitos hay que testear aproximadamente ln 10 100 230 nmeros de
100 dgitos elegidos al azar. Naturalmente esta cifra se divide por dos pues solo
testeamos a los enteros impares.
Vamos a ver el problema de testear cuando un nmero entero impar grande es
primo o no. Supongamos que n tiene la descomposicin en factores primos
2,3,5,...,[ n ]
Un enfoque simple al problema de testear la primalidad de n es dividirlo
sucesivamente por los enteros hasta n

Este enfoque es exponencial en la longitud de n, as que slo es factible para


valores pequeos de n.
Nuestro inters se concentra en determinar cuando un entero es primo , y resulta
sorprendente que contestar esto es mucho ms simple que calcular la
descomposicin en factores primos.
Los test de pseudoprimalidad:
Sea Z n+ = {1, 2,..., n 1} . Si n es primo, entonces Z n+ = Z n* Vamos a considerar primero
un test de primalidad que casi funciona y que de hecho sirve para muchas
aplicaciones prcticas. Luego, un refinamiento de este mtodo permite eliminar el
problema que el original tiene, tema que veremos ms adelante.
Diremos que n es un pseudoprimo de base a si n es compuesto y

a n 1 1 (mod n)

(40)

El Teorema 31 (de Fermat) nos dice que si n es primo entonces n satisface la


ecuacin (40) para todo elemento a Z*n .
O sea, que si podemos encontrar un a Z n* tal que n no satisface (40), entonces
n es compuesto. Sorprendentemente, lo recproco casi es cierto, con lo cual
tenemos un criterio casi perfecto de primalidad. Primero testeamos si n satisface
(40) con a = 2. Si no, es compuesto. En caso afirmativo, podra ser primo (de
hecho sabemos que o es primo o es un pseudoprimo de base 2)
El siguiente procedimiento pretende testear de este modo la primalidad de n.

25

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.

Pseudoprimo(n)
1. Si Exponenciacin modular (2,n 1,n) no es congruente con 1 (mod n)
2. entonces devolver COMPUESTO (con seguridad)
3. de lo contrario devolver PRIMO
( posiblemente)
Este procedimiento puede tener errores, pero solo de un tipo. Esto es, si dice que
n es compuesto, esto es definitivo. Si decimos que n es primo, podemos
equivocarnos pues podra ser un pseudoprimo de base 2. La cuestin es: esto
sucede con frecuencia ? Respuesta: es muy poco frecuente que suceda. Por
ejemplo, si n = 10000 solo hay 22 valores menores que n para los que esto
sucede (los primeros cuatro de ellos son 341, 561, 645 y 1105). Puede
demostrarse que la probabilidad de que el error ocurra con n un nmero de k bits
tiende a cero cuando k . Estimaciones ms precisas (C.Pomerance, On the
distribution of pseudoprimes, Mathematics of Computation, 37(156), pp. 587-593,
1981) muestran que un entero de 50 dgitos elegido al azar que es dado por primo
por el procedimiento anterior, tiene una probabilidad menor que una en un milln
de ser un pseudoprimo de base 2, y si fuera de 100 dgitos la probabilidad se
reduce a 10 13.
Lamentablemente no podemos eliminar los posibles errores testeando con otra
base, por ejemplo a =3 porque existen nmeros n compuestos tales que la
ecuacin (40) se cumple para todo a Z n* .Estos enteros n con dicha propiedad
son extremadamente raros, y se denominan nmeros de Carmichael (los primeros
tres son 561, 1105 y 1729). De hecho son tan poco frecuentes que solo hay 255
de ellos menores que 100.000.000
Veremos ahora como mejorar el test de primalidad de modo tal que no pueda ser
engaado por los nmeros de Carmichael.
El test de primalidad de Rabin-Miller:
Este test evita los problemas del procedimiento Pseudoprimo (n) mediante dos
modificaciones:
1. Prueba diversos valores de a elegidos al azar en vez de un solo
valor.

26

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
2. Mientras calcula cada exponenciacin modular, testea si se encuentra una raz
cuadrada no trivial de 1 mdulo n. En caso afirmativo, el resultado para n es
COMPUESTO (el Corolario 35 justifica esta decisin).
A continuacin inclumos el pseudocdigo para el test de Rabin-Miller. El dato de
entrada n > 2 es el impar que queremos testear para ver si es primo, y s es el
nmero de valores de base a Z n* que se van a ensayar. Suponemos que
tenemos un procedimiento Azar (1, n 1) que calcula enteros al azar a que
satisfacen 1 a n 1. El cdigo tambin usa un procedimiento llamado
Testigo(a,n) que da el valor VERDAD si y solo si a es un testigo de que n es
compuesto, o sea que es posible usar a para probar que n es compuesto. Este
procedimiento es similar, pero ms efectivo, que el procedimiento Pseudoprimo,
que estaba basado en el test con a =2.
Primero presentamos y justificamos Testigo, y luego veremos como se usa en el
test de Rabin-Miller.

a n 1 1 (mod n)

(aqui entendemos como "nocongruente)

Testigo (a,n)
1. Sea (b k, b k-1, ... , b 1, b 0) la representacin binaria de n 1
2. d 1
3. Para i k hasta 0
4.
do x d
5.
d (d.d) mod n
6.
si d = 1 y x 1 y x n 1
7.
entonces devolver VERDADERO
8.
Si b i = 1
9.
entonces d (d.a) mod n
10. Si d 1
11. entonces devolver VERDADERO
12. devolver FALSO
Este pseudocdigo para Testigo se basa en el procedimiento Exponenciacin
modular. La lnea 1 determina la representacin binaria de n 1 que se usar para
calcular a n-1. Las lneas 3-9 calculan
d como a n-1 mod n, tal como en Exponenciacin modular. Pero cada vez que se
calcula un cuadrado en la lnea 5 las lneas 6-7 controlan si se ha encontrado una
raz cuadrada no trivial de 1. Si es as, devuelve el valor VERDADERO. Las
lneas 10-11 devuelven VERDADERO si el valor computado para a n-1 mod n es

27

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
distinto de 1, tal como el procedimiento Pseudoprimo devuelve COMPUESTO en
ese caso.
Veamos ahora que si Testigo (a,n) devuelve VERDADERO entonces podemos
probar que n es compuesto usando a. Si Testigo (a,n) devuelve VERDADERO en
la lnea 11 entonces descubri que
d = an-1 mod n 1. Si n es primo, el teorema 31 (Fermat) nos dice que a n-1 1
(mod p) a Z*n Por lo tanto n no puede ser primo.
Si Testigo (a,n) devuelve VERDADERO en la lnea 7, entonces encontr que x
es una raz cuadrada no trivial de 1 mdulo n, o sea que x no es congruente
con 1 mdulo n aunque x2 1 (mod n). El Corolario 35 establece que solo si n es
compuesto existe una raz cuadrada no trivial de 1 mdulo n, con lo que queda
demostrada la correctitud del procedimiento Testigo (a,n).
Veamos ahora el
Procedimiento Rabin-Miller (n,s)
1.
2.
3.
4.
5.

Para j 1 hasta s
do a Azar (1,n 1)
Si Testigo (a,n)
Entonces devolver COMPUESTO (con seguridad)
devolver PRIMO
(casi seguro)

Este procedimiento es una bsqueda probablistica de una prueba que n es


compuesto. El loop principal (que comienza en la lnea 1) elige s valores al azar de
a en el intervalo [1,n 1] en la lnea 2. Si uno de esos valores de a es un testigo
de que n es compuesto, entonces el procedimiento devuelve el valor
COMPUESTO en la lnea 4, y este resultado es siempre correcto debido a la
demostracin de correctitud del procedimiento Testigo (a,n). Si no se encuentra
ningn testigo de que n es compuesto, entonces el procedimiento de Rabin-Miller
asume que el nmero n es primo. Luego veremos que esto es esencialmente
correcto si s es lo suficientemente grande, pero siempre existe una probabilidad
(que se puede hacer tan pequea como se quiera) de que existan testigos que el
procedimiento no encontr.
Veamos un ejemplo con el nmero de Carmichael 561. Supongamos que elegimos
a = 7 como base. La tabla que ya vimos era:
I
bi
c
d

9
1
1
7

28

8
0
2
49

7
0
4
157

6
0
8
526

5
1
17
160

4
1
35
241

3
0
70
298

2
0
140
166

1
0
280
67

0
0
560
1

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
Testigo encuentra una raz no trivial de 1 puesto que a 280 67 (mod n) y a 560 1
(mod n). Entonces a =7 es un testigo y el procedimiento Testigo(7,n) devuelve
VERDADERO y Rabin-Miller COMPUESTO.

Estimacin del error en el procedimiento de Rabin-Miller:


Como dijimos anteriormente, si el resultado del procedimiento es PRIMO, existe
una probabilidad de error que depende de s y de la suerte en la eleccin de los
valores de base a. Como el procedimiento de Rabin-Miller no se limita
simplemente a verificar si se cumple la ecuacin (40) tal como lo hace el
procedimiento Pseudoprimo, es de esperar que el error probable sea mucho
menor. El siguiente teorema precisa estas consideraciones.
Teorema 38: si n es un nmero compuesto impar, entonces el nmero de testigos
es por lo menos (n 1)/2.
Demostracin: la haremos demostrando que la cardinalidad del conjunto de los
nmeros que no son testigos no es mayor que (n 1)/2
Primero observemos que un no testigo pertenece a Z n* puesto que debe
satisfacer a n-1 1 (mod n) aunque si MCD(a,n) = d > 1 entonces por el Corolario
21 no existen soluciones x de la ecuacin modular
ax 1 (mod n) (en particular x = a n 2 no es una solucin). Por lo tanto cada
miembro de Z n Z n* es un testigo. Para completar la demostracin mostraremos
que los no testigos estn contenidos en un subgrupo propio S de Z n* Por el
Corolario 16 tenemos que S Z n* /2 . Como Z n* n 1 resulta que
S (n 1)/2. Por lo tanto el nmero de no testigos es a lo sumo (n 1)/2, de
modo tal que el nmero de testigos es al menos (n 1)/2.
Veamos ahora como encontrar un subgrupo propio S que contenga a todos los no
testigos. Dividimos a la demostracin en dos casos:
Caso 1: existe x Z n* tal que
x n-1 1 (mod n)

(41)

Sea S = {s Z n* : s n-1 1 (mod n)} . Como S es cerrado para la multiplicacin


mdulo n, es un subgrupo (Teorema 14). Notemos que todo no testigo a
pertenece a S puesto que debe cumplir

29

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
a n-11 (mod n). Como x Z n* S , resulta que S es un subgrupo propio de Z n* .
Caso 2: x Z n*
x n-1 1 (mod n)

(42)

En este caso n no puede ser una potencia de un primo, pues supongamos que
n = pe con p primo impar y e > 1. El Teorema 32 implica que Z n* contiene un
elemento g tal que ordn(g) = Z n* =(n)= (p-1)pe-1. Pero entonces, la ecuacin
(42) y el Teorema 33 del logaritmo discreto (tomando y =0) implican que
n-1 0 (mod (n)) o sea que (p-1)pe-1/ pe 1. Esta condicin falla para e > 1
puesto que el lado izquierdo es divisible por p pero el derecho no. Por lo tanto n no
puede ser la potencia de un primo. Y como no lo es, lo podemos escribir como un
producto n1n2 donde cada factor es mayor que 1 y son primos relativos entre s.
(puede haber muchas maneras de hacer esto, pero no importa para la
demostracin). Definamos t, u de modo tal que n 1= 2t u donde t 1 y u es
impar. Para cualquier a Z n* consideremos la sucesin
t
a = {au , a 2u ,..., a 2 u }

(43)

Donde cada elemento se calcula mdulo n. Como 2t / n 1 la representacin


binaria de n 1 termina en t ceros y los elementos de (43) son los ltimos t + 1
valores de d calculados por Testigo durante el clculo de a n-1 mod n; o sea que
las ltimas t operaciones son cuadrados.
Ahora, encontremos el mayor j {0,1,...,t} tal que existe v Z n* tal que
j
v 2 u 1 (mod n)

Que algn j existe surge del hecho que u es impar, con lo cual podemos tomar
v = -1 , j =0. Dejamos v fijo para satisfacer dicha condicin, y sea
j
B = {x Z n* : x 2 u 1 (mod n)}

Dado que B es cerrado bajo la multiplicacin

mdulo n, es un subgrupo de Z n* . Por lo tanto, B divide a Z n* . Todo no


testigo debe ser un miembro de B, porque la sucesin (43) producida por un no
testigo debe estar compuesta de todos 1 o debe contener un 1 a lo sumo en la
j-sima posicin, por la maximalidad de j. Vamos a usar ahora la existencia de v
para demostrar que existe un

30

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
j
j
w Z n* B. Como v 2 u 1 (mod n) tenemos que v 2 u -1 ( mod n1 )
j
j
w Z n* B. Como v 2 u 1 (mod n) tenemos que v 2 u -1 ( mod n1 )
por el Corolario 29. Por el Corolario 28, existe un w que satisface simultneamente
a las ecuaciones:

w v (mod n1 )
w 1 (mod n2 )

y por lo tanto

j
w2 u 1 (mod n1 )
j
w2 u 1 (mod n2 )

conjuntamente con el Corolario 29, estas ecuaciones implican que


j
w2 u 1 (mod n)

(44)

y por lo tanto

w B. Como v Z n* tenemos que v Z n*1 w Z n* w Z n* B


De donde resulta que B es un subgrupo propio de Z n*. En cualquier caso vemos que la cantidad
de testigos de que n es compuesto es por lo menos (n - 1)/2

Teorema 39: para cualquier entero impar n > 2 y cualquier entero positivo s, la
probabilidad de que el procedimiento Rabin-Miller (n,s) erre es a lo sumo 2 s
Demostracin: usando el Teorema 38, vemos que si n es compuesto, entonces
cada ejecucin del loop de las lneas 1-4 tiene una probabilidad de al menos de
descubrir un testigo x de que n es compuesto. El procedimiento solo comete un
error si no encuentra un testigo de que n es compuesto en ninguna de las s
iteraciones del loop principal. La probabilidad de que esa sucesin de no
encontrar un testigo es a lo sumo 2 s
Nota: esta cota del error se puede mejorar. Por ejemplo, en los trabajos:
I.B.Damgard and P.Landrock, Improved Bounds for the Rabin Primality Test,
Cryptography and Coding III,M.J.Ganley (ed), Oxford Clarendon Press, 1993,
pp.117 128.
I.B.Damgard, P.Landrock and C.Pomerance, Average Case Error Estimates for
the Strong Probable Prime Test, Mathematics of Computation, vol.61, 203,
Jul.1993, pp. 177-194.

31

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
se demuestra que an la cota 4 s es pesimista. Obviamente estas demostraciones
deben entenderse en un sentido probablistico, pues en la prctica se encuentran
casos en que a pesar de fijar valores muy pequeos del error, aparecen nmeros
compuestos dados como primos.
Mtodos de factorizacin:
El objetivo de este apunte no incluye discutir en profundidad los mtodos de
factorizacin ni los ataques a RSA, pero de todos modos haremos algunos
comentarios.
Obviamente, si se pudiese factorizar n =p*q (que forma parte de la clave pblica, y
por lo tanto es conocido), se lograra quebrar RSA inmediatamente.
El mtodo ms antiguo es el llamado de la criba de Erasttenes que sirve para
encontrar todos los nmeros primos en un intervalo dado (hasta n). Primero se
hace un crculo al 2 y se marcan todos los que siguen de dos en dos ) o sea 4, 6,
8, ...). El prximo nmero no marcado es 3, se le hace un crculo, y se marcan los
que siguen de 3 en 3, etc. Luego de llegar a la raz cuadrada de n se hace un
crculo a los enteros que quedaron sin marcar, y esos son los primos. De hecho
este algoritmo hace algo ms que encontrar primos: si un entero se marca ms de
una vez es porque tiene varios factores primos. Por ejemplo, a 30 se lo marca tres

veces.
Una observacin interesante es la siguiente, ilustrada con un ejemplo:
supongamos que queremos factorizar 8051. Dado que puede escribirse como
8100 49 = 902 72 =(90 +7)*(90 7) = 83*97, encontramos fcilmente sus
factores. Ahora, esto es general ? S, puesto que
1
1
a * b = ( (a + b))2 ( (a b))2
2
2
De hecho, esta idea se debe a Fermat, y si a y b estn prximos a n como
suceda en el caso 8051, es bastante simple encontrar los cuadrados. Pero en los
casos difciles este algoritmo es peor que simplemente dividir por los primos
menores que n .
En la dcada de 1920, Maurice Kraitchik propuso la idea que es la base de los
mtodos modernos (aunque se remonta a Gauss y Seethoff). En vez de buscar u,v
tales que n = u2 v2, la idea es que la diferencia de los cuadrados sea congruente
con n. Dicha congruencia puede tener soluciones no interesantes como u v
(mod n) o u -v (mod n), o interesantes donde lo anterior no vale. Si n es impar y
divisible al menos por dos primos distintos, entonces como mnimo la mitad de las

32

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.
2
2
soluciones de u v (mod n) con uv coprimo con n son interesantes. Y para
ellas, el MCD(u-v,n) debe ser necesariamente un factor no trivial de n. De hecho, n
divide a u2 v2 =(u v)*(u + v) pero no divide a ninguno de sus factores, y por ello
debe estar entre u v y u + v.
Veamos un ejemplo: sea n = 2041. El primer cuadrado mayor que n es 462 = 2116.
Consideremos la sucesin Q(x) = x2 n para x = 46, 47, ..
Resulta: 75, 168, 263, 360, 459, 560, ... Hasta aqu no aparecieron cuadrados, as
que el mtodo de Fermat seguira buscando. Pero Kraitchik tiene otra opcin:
encontrar varios valores de los nmeros x tales que su producto con los
correspondientes elementos de Q(x) sean un cuadrado. Porque si
Q(x1)Q(x2)...Q(xk) = v2 y x1...xk = u, entonces
u 2 = x12 ...xk2 ( x12 n)...( xk2 n) = Q ( x1 )...Q( xk ) = v 2 (mod n), o sea
encontramos una solucion a u 2 v 2 (mod n)
Pero, cmo encontrar a los valores xi ? Kraitchik se dio cuenta que algunos de los
nmeros Q(x) pueden factorizarse rpidamente:
75 = 3.52 , 168 = 23.3.7 , 360 = 23.32.5 , 560 = 24.5.7
De estas factorizaciones se puede ver que el producto de los cuatro nmeros es
210.34.54.72, un cuadrado ! De este modo tenemos que
u2 v2 mod n, donde
u = 46.47.49.51 311 mod 2041,
v = 25.32.52.7 1416 mod 2041
Como 311 no es congruente con 1416 mod 2041, calculamos MCD(1416
311,2041) = 13, entonces 2041 = 13.157.
Los mtodos usados actualmente tienen su origen en las ideas que recin vimos.
Ellos son:
1) La criba cuadrtica (quadratic sieve). Es el ms rpido para nmeros de hasta
110 dgitos.
2) La criba cuadrtica polinomial mltiple. Versin ms rpida que la anterior.
3) El mtodo NFS (Number Field Sieve). Es el ms veloz para nmeros con ms
de 110 dgitos. Su tiempo asinttico se acerca a lo polinomial.
Una referencia interesante es: Carl Pomerance, A Tale of Two Sieves, Notices of the
American Mathematical Society, December 1996, pp.1473 1485.

Una idea del esfuerzo computacional requerido para quebrar RSA lo da la


siguiente tabla:

33

Fundamentos matemticos del mtodo RSA Hugo D.Scolnik


Abril 2004.

No.de bits de n
512
768
1024
2048

Aos para factorizar suponiendo 1.000.000 de


instrucciones por segundo.
30.000
200.000.000
300.000.000.000
300.000.000.000.000.000.000

La empresa RSA Data Security ofrece distintos desafos relativos a la factorizacin


(http://www.rsasecurity.com/rsalabs/challenges/factoring/numbers.html) .
El mayor nmero factorizado entre ellos ha sido:
188198812920607963838697239461650439807163563379417382700763356422988859715234665485319060606
504743045317388011303396716199692321205734031879550656996221305168759307650257059

que tiene 174 dgitos y se logr el resultado el 3/12/2003


El siguiente desafo tiene un premio de 20.000 U$S y corresponde al nmero de
193 dgitos:
310741824049004372135075003588856793003734602284272754572016194882320644051808150455634682967
172328678243791627283803341547107310850191954852900733772482278352574238645401469173660247765
2346609

La lista de los mayores primos


http://primes.utm.edu/largest.html

conocidos

se

encuentra

en

el

link

El mayor hasta hoy es:

220,996,011-1 que tiene 6.320.430 dgitos decimales y lo obtuvo Michael Shafer el


17/11/2003

34

Das könnte Ihnen auch gefallen