Académique Documents
Professionnel Documents
Culture Documents
mod = (
)
mod
Y al tener el valor de , puede recuperar el mensaje original invirtiendo el patrn de
relleno.
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 polinmico en
tiempo de ejecucin para ambos problemas.
Con la capacidad para recuperar factores primos, un atacante puede calcular el exponente
secreto desde una clave pblica (, ). Para conseguir esto, un atacante debe
factorizar en y , y calcular () = ( 1)( 1). Conociendo y () el atacante
puede usar el Algoritmo de Euclides Extendido para determinar . No se ha encontrado
ningn mtodo en tiempo polinmico para la factorizacin de enteros largos en sus factores
primos, lo que hace inviable completar el primer paso del proceso de ataque.
3. Bases Matemticas
En la figura 2, se muestra a grandes rasgos el proceso general de transmisin de un mensaje
cifrado usando el mtodo RSA (Es instructivo leer la descripcin al pie de la figura antes de
seguir avanzando). La idea fundamental del mtodo es el uso de dos enteros y tales que
(
mod .
Figura 2. Idea general del mtodo RSA. El receptor ofrece una llave pblica conformada por
dos enteros y . Quienquiera puede cifrar un mensaje usando esa llave. El emisor del
mensaje, convierte su mensaje original a un entero y lo cifra elevndolo al exponente ,
para obtener
mod
Corolario: Si no divide a , entonces
(1)
1 mod
2. Pequeo Teorema de Fermat Mejorado: Sean y dos nmeros primos distintos
y sea = . Para todo tal que MCD(, ) = 1, se tiene
(1)(1)
1 mod
As, con el Pequeo Teorema de Fermat se puede demostrar el paso de (
(1)(1)
)
a (1)
=
1+()
=
1+(1)(1)
= (
(1)(1)
)
= (1)
= mod
El paso de
1+(1)(1)
a (
(1)(1)
)
=
1+()
=
1+(1)(1)
= (
(1)(1)
)
= (1)
= mod
3. Funcin de Euler, definicin: Sean y dos nmeros primos distintos y sea = .
Se define la funcin de Euler como
() = ( 1)( 1)
Es importante recordar que una vez seleccionados y , () es un entero.
() se utiliza como se muestra:
(
=
1+()
=
1+(1)(1)
= (
(1)(1)
)
= (1)
= mod
4. Inverso Mdulo (): Si y () son primos relativos, es decir, MCD(, ()) = 1;
entonces, existe un inverso nico de que puede llamarse - , modulo (). Escrito de otra
manera,
= 1 mod ()
La ltima ecuacin, puede interpretarse diciendo que, al dividir por () se
obtiene como resto 1. En trminos del algoritmo de la divisin:
= 1 + (),
donde . Este resultado se utiliza en la ecuacin de inters como seala.
(
=
1+()
=
1+(1)(1)
= (
(1)(1)
)
= (1)
= mod
Adems, del Inverso Mdulo () puede obtenerse informacin sobre la escogencia
de para la llave pu blica: debe escogerse una clave pu blica tal que (, ()) =
1
Hasta este punto, ya se ha logrado justificar cada paso del proceso de desciframiento del
mensaje. A continuacin se presenta un teorema ms, y se introducen dos algoritmos (que
ms adelante se tratan con mayor profundidad) que permitirn hallar , la clave privada.
5. Teorema de Bzout: Si y () son enteros positivos, entonces existen enteros y
(que reciben el nombre de coeficientes de Bzout) tales que
MCD(, ()) = ().
Pero se haba dicho que MCD(, ()) = 1 ( y () son primos relativos), luego
() = 1 = 1 +()
Todo esto quiere decir que si se tiene un mtodo para hallar los coeficientes de
Bzout, se tendr un mtodo para hallar , la clave privada. Afortunadamente, el
Algoritmo de Euclides Extendido puede calcular tales coeficientes, cuyo pseudocdigo se
presentar ms adelante (puede ver un ejemplo de clculo en las diapositivas que acompaan
este informe).
Por ltimo, es importante tener en cuenta que para cifrar y descifrar el mensaje ,
este debe elevarse a alguna potencia, para el caso del cifrado, por ejemplo. Por lo general,
el exponente es un nmero bastante grande (puede llegar a los cientos de dgitos); as pues,
se hace necesario contar con un algoritmo eficiente para realizar exponenciacin. Se remite
al lector a revisar el ejemplo dado en las diapositivas que acompaan este informe para
observar un ejemplo. El algoritmo se dar ms adelante.
4. Pseudocdigos
A continuacin se presentan los pseudocdigos de los algoritmos que se utilizan en la
codificacin RSA. Un ejemplo de corrida en fro se encuentra en la dispositivas que
acompaan este informe.
(, ): Regresa el Mximo Comn Divisor entre dos nmeros enteros y utilizando
el Algoritmo de Euclides.
_(, ): Regresa el mximo comn divisor entre dos nmeros enteros y y
dos valores , tales que (, ) puede escribirse como combinacin lineal de ellos.
(, ) = +
(, ): regresa un nmero tal que a = 1 mod ; es decir, un multiplicador
modular inverso de . Se usa para obtener el valor de la clave privada , donde =
inverse(, ()); donde es la clave pblica y () la funcin de Euler
euclide_extend(a, b)
x = 1, xx = 0 , y = 0, yy = 1 ;
Mientras (b != 0) Hacer
q = a / b;
r = a % b;
a = b ;
b = r;
xx = x q*xx;
x = xx ;
yy = y - q*yy;
y = yy;
retorna (a, x, y) ;
inverse(a, n)
c, u, v = euclide_extend(a, n) ;
Si (c != 1) Entonces
retorna -1;
Caso Contrario
retorna u % n;
euclide(a, b)
Mientras (b !=0) Entonces
r = a % b;
a = b;
b = r;
retorna a;
_(, , ): Con esta funcin se obtiene el valor elevado al equivalente binario de .
Se usa para transformar un mensaje numrico en mensaje cifrado en el caso de que = , y
de mensaje cifrado a mensaje numrico cuando =
validar_mensaje(mensaje): agrega un '-' al final del mensaje si la longitud del mensaje es
impar. Si es par el mensaje queda igual. Ejemplo: mensaje = maria longitud: 5(impar)
mensaje vlido = maria-
Expo_Bin(x, k, n)
b = 1
Mientras (k>0) Hacer
Si (k % 2 != 0) Entonces
b = (b*x) % n;
x = (x*x) % n;
k = k / 2;
return(b);
validar_mensaje(mensaje)
mensaje_valido = mensaje;
Si (Longitud(mensaje) % 2 != 0) entonces
mensaje_valido += "-";
retorna mensaje_valido;
Referencias Bibliogrficas
Cormen, T., C. Leiserson, R. Rivest& C. Stein. (2009). Introduction to Algorithms. 3th Ed. The
MIT Press, Cambridge.
Cours de mathmatiques Premire anne. Universit Lille 1 & UniSciel. Disponible en:
http://exo7.emath.fr/cours/cours-exo7.pdf
K. H. Rosen (2012). Discrete Mathematics and its Applications. Sptima Edicin. McGraw Hill.
Nueva York, Estados Unidos.
R.L. Rivest, A. Shamir, y L. Adleman. (1978) A Method for Obtaining Digital Signatures and
Public-Key Cryptosystems. Massachusetts Institute of Technology. Estados Unidos.