algoritmo rsa

11
Algoritmo RSA

Upload: david-romero

Post on 31-Jul-2015

84 views

Category:

Education


1 download

TRANSCRIPT

Algoritmo RSA

RSA

En criptografía, RSA (Rivest, Shamir y Adleman) es un sistema criptográfico de clave pública desarrollado en 1977.

Es el primer y más utilizado algoritmo de este tipo y es válido tanto para cifrar como para firmar digitalmente.

Introducción.

La seguridad de este algoritmo radica en el problema de la factorización dé números enteros.

Los mensajes enviados se representan mediante números, y el funcionamiento se basa en el producto, conocido, de dos números primos grandes elegidos al azar y mantenidos en secreto. 

Intreducción.

Como en todo sistema de clave pública, cada usuario posee dos claves de cifrado: una pública y otra privada.

Se cree que RSA será seguro mientras no se conozcan formas rápidas de descomponer un número grande en producto de primos.

Algoritmo RSA

Técnicamente, Bob envía a Alicia un «mensaje llano»  ”M” en forma de un número ”m” menor que otro número ”n”, mediante un protocolo reversible conocido como padding scheme («patrón de relleno»). A continuación genera el «mensaje cifrado»  mediante la siguiente operación:

donde ”e” es la clave pública de Alicia.

Ahora Alicia descifra el mensaje en clave “c”  mediante la operación inversa dada por

donde ”d” es la clave privada que solo Alicia conoce.

Ejemplo

En el siguiente ejemplo, supongamos que la persona A quiere hacer una clave pública, y que persona B quiere usar esa tecla para enviar un mensaje. En este ejemplo, vamos a suponer que el mensaje A envía a B es sólo un número. Suponemos que A y B han acordado en un método para codificar el texto como números. Estos son los pasos:

1. La persona A selecciona dos números primos. Usaremos p = 23 y q = 41 para el ejemplo, pero hay que tener en cuenta que el número real de la persona A debe ser mucho más grande.

2. La persona A multiplica p y q juntos para conseguir pq = (23) (41) = 943. 943 es la "clave pública", que le dice a la persona B (y en el resto del mundo, si lo desea).

Ejemplo

3. La persona A también elige otro número e que debe ser primos entre sí (p - 1) (q - 1). En este caso, (p - 1) (q - 1) = (22) (40) = 880, por lo que e = 7 está muy bien. e es también forma parte de la clave pública, por lo que B también se cuenta el valor de e.

4. Ahora B sabe lo suficiente para codificar un mensaje a A. Supongamos, que el mensaje es el numero M = 35.

5. B calcula el valor de C = Me (mod N) = 357 (mod 943) .

6. 357 = 64,339’296,875 y 64,339’296,875 (mod 943) = 545. El número 545 es la codificación que B envía a A.

Ejemplo

7. Ahora A quiere descifrar 545. Para ello, tiene que encontrar un número tal que ed = 1 (mod (p - 1) (q - 1)), o en este caso, de tal manera que 7d = 1 (mod 880). La solución es d = 503, desde el 7*503 = 3521 = 4 (880) + 1 = 1 (mod 880).

8. Para encontrar la decodificación, A debe calcular Cd (N mod) = 545503 (mod 943). Este parece que será un cálculo horrible, y al principio parece que lo es, pero hay que darse cuenta que 503 = 256 + 128 + 64 + 32 + 16 + 4 + 2 + 1 (esto es sólo la expansión binaria de 503). Así que esto significa que:

545503 = 545256 + 128 + 64 + 32 + 16 + 4 + 2 + 1 = 545256 545128 · · · 5451.

Ejemplo

Pero ya que sólo importa el resultado (mod 943), podemos calcular todo el parcial resultados en ese módulo, y elevando al cuadrado repetido de 545, podemos obtener toda los exponentes que son potencias de 2.

Por ejemplo, 5452 (MOD 943) = 545 · 545 = 297,025 (mod 943) = 923. Entonces cuadrado de nuevo: 5454 (mod 943) = (5452)2(mod 943) = 923 · 923 = 851 929 (mod 943) = 400, y así sucesivamente. Podremos obtener:

Ejemplo

Podríamos obtener:

Así que el resultado que queremos es:

545503 (mod 943) = 324 · 18 · 215 · 795 · 857 · 400 · 923 · 545 (mod 943) = 35.

El cálculo de esto es tedioso (pero simple para una computadora) cálculo, A puede decodificar el mensaje de B y obtener el mensaje original N = 35.

5451 (mod 943) = 545

5458 (mod 943) = 633

54564 (mod 943) = 215

5452 (mod 943) = 923

54516 (mod 943) = 857

545128 (mod 943) = 18

5454 (mod 943) = 400

54532 (mod 943) = 795

545256 (mod 943) = 324