Codificar con clave publica y privada

Codificar con clave pública y privada

Hoy en día nos gusta comunicarnos por redes sociales, como por ejemplo el gmail, pero nuestros datos no siempre están seguros y cualquiera puede acceder a ellos. Por ello las claves públicas y privadas utilizan la encriptación, de manera que se encargan de modificar/cambiar la información original y transformarla en otra que no pueda ser comprensible para las personas que se encuentran entre medias de la comunicación.
Una forma de codificación es la RSA y vamos a explicar que algoritmo utiliza con un ejemplo muy sencillo:

Vamos a simular el envío de un mensaje desde un emisor, Alejandro, a un receptor, Adrián. Esto se puede traducir en que Alejandro le envía un mensaje -¡Hola!- por ejemplo, a Adrián, pero antes de que Adrián pueda recibirlo el mensaje tendrá que ser codificado, es decir, cambiado para que no puedan interceptar el mensaje terceras personas. Dicho esto, comenzamos con el ejemplo:

Alejandro envía un mensaje, llamémosle M, transformado en un número llamado m

A continuación se escoge otro número, n. Mediante la siguiente operación se encarga de encriptar el mensaje, recibiendo el nombre de c el mensaje cifrado:

c = m^e (es decir, el número del mensaje cifrado es igual al número inical, m elevado a otro número llamado e, siendo este la clave pública de Adrián).

Para descifrar el mensaje se realiza la operación inversa:
m=c^d (es decir, el número del mensaje cifrado es igual al número del mensaje cifrado elevado a otro número llamado d, siendo este la clave privada de Adrián y que solo él conoce.

Parece un proceso sencillo, ¿no? Pues bien, la dificultad está en la obtención de los números e y d, que son los números de la clave pública y clave privada. Para ello vamos a simular un ejemplo real con números muy sencillos mientras lo explicamos.

¿Como se generan las claves 

Es un proceso tanto curioso como tedioso.
Se eligen aleatoriamente dos numeros primos diferentes, llamado p y q. Suelen ser números de dimensiones enormes, pero por simplicidad usaremos 7 como el número p y 5 como el número q; ambos son primos por lo que nos sirven.


p =7 (Número primo)
q =5 (Número primo)

El siguiente paso es una simple operación, calculamos un nuevo número al que llamamos n que será igual al producto de los anteriores números, p y q. En este caso 7 por 5 nos sale 35, por lo que este es nuestro número n entero.

n = p*q =35


Aquí las cosas se complican. Siendo  la función de Euler y p=7 es primo y n y m son primos entre sí (coprimos, es decir, no tienen ningún factor primo en común) calculamos:

(n) = (p-1)*(q-1) --> (35)= (7-1)*(5-1)=6*4=24

Esto conlleva que mediante la función de Euler (35) su resultado sería 24

Función de Euler: Los primeros mil valores de (n) https://es.wikipedia.org/wiki/Funci%C3%B3n_%CF%86_de_Euler





Dicho esto, ahora escogemos un número entero positivo, llamado e que sea más pequeño que el valor de (n) y que sean primos entre sí (coprimos, es decir, no tienen ningún factor primo en común), en nuestro caso menor que 24.

e debe ser un número entero positivo menor que (n) y que ambos sean coprimos.

Entonces podemos determinar que e puede ser 23, ya que no tiene ningún divisor común con 24 salvo el 1.

e entonces será el exponente de la clave pública.

Ya tenemos lo necesario para calcular la clave pública, mas bien ahora nos queda que calcular d para conocer la clave privada.

d debe ser un número que multiplicado por e y dividido por (n) de cómo resto 1 (que su congruencia sea  1).

Después de muchos calculos, la única posibilidad que se ha podido encontrar es que d valga 23, es decir, que valga lo mismo que e.
Hagamos la prueba


e*d ≡ 1 --> (e*d)/(n)= resto de la división 1

(23*23)/24 --> 529/24, que da como resto 1

entonces será el exponente de la clave privada.

Con esto determinamos que la clave pública es (n,e) --> En nuestro caso será (35,23)
Y la clave privada será (n,d) --> En nuestro caso será (35,23)

COMO PODEMOS VER, EN ESTE CASO LAS CLAVES COINCIDIRÍAN, ESTO ES CONSECUENCIA DE QUE HEMOS UTILIZADO NÚMEROS MUY PEQUEÑOS, PARA EVITAR ESO UTILIZAMOS NÚMERO DE GRAN MAGNITUD. 

El sistema utiliza números primos del orden 10^300, es decir, es muy complicado que la clave pública y la privada coincidan.




















Comentarios

Entradas populares