Ejemplo de algoritmo asimétrico: RSA. Existen diferentes algoritmos asimétricos. Uno de los más conocidos es el RSA (debido a sus desarrolladores). Este algoritmo se usa ampliamente en los navegadores, para sitios web seguros y para encriptar correos electrónicos. Está en el dominio público.

Ejemplo de algoritmo asimétrico: RSA para cifrar

Para cifrar un mensaje, hacemos: c = m ^ e mod n

Para descifrarlo: m = c ^ d mod nm = texto sin formato

c = mensaje cifrado

(e, n) = clave pública

(d, n) = clave privada

no = es el producto de dos números primos

^ = es la operación de exponenciación (a ^ b: la potencia b)

mod = es la operación de módulo (resto de la división entera)

Crea un par de claves

Es muy simple, pero ten cuidado al elegir y, d y no. Y sepa que el cálculo de estos tres números es delicado.

Aquí se explica cómo hacerlo:

1. Recoge dos números primos p y que (aproximadamente igual tamaño). Calcular n = por qué.

2. Recoge un número y que no tiene ningún factor en común con (p-1) (q-1).

3. Calcular d como ed mod (p-1) (q-1) = 1.

El par (e, n) Es la clave pública. (d, n) Es la clave privada.

Ejemplo:

Primero, creemos nuestro par de claves:

Recoge dos números primos al azar: p = 29, q = 37

Calcular n = pq = 29 * 37 = 1073

y debe elegirse al azar para que y no tienen factores en común con (p-1) (q-1):

(p-1) (q-1) = (29-1) (37-1) = 1008

Recoger e = 71

Para elegir d como 71 * d mod 1008 = 1

Vamos a encontrar d = 1079

Ahora tenemos nuestras llaves:

  • La clave pública es (e, n) = (71.1073) (= clave de cifrado)
  • La clave privada es (d, n) = (1079.1073) (= clave de descifrado)

Encriptemos el mensaje «Hola». Consigamos el código ASCII de cada letra y los ponemos uno al lado del otro:

m = 7269767679

Entonces tenemos que cortar el mensaje en bloques que contengan menos dígitos que no. no tiene 4 dígitos, así que corte nuestro mensaje en bloques de tres dígitos:

726 976 767 900

(completo con ceros)

Luego encriptaremos cada bloque:

726 ^ 71 mod 1073 = 436

976 ^ 71 mod 1073 = 822

767 ^ 71 mod 1073 = 825

900 ^ 71 mod 1073 = 552

El mensaje encriptado es 436 822 825 552. Se puede descifrar con gras> d:

436 ^ 1079 mod 1073 = 726

822 ^ 1079 mod 1073 = 976

825 ^ 1079 mod 1073 = 767

552 ^ 1079 mod 1073 = 900

Es decir, la secuencia de números. 726976767900.

Encontramos nuestro mensaje en texto plano 72 69 76 76 79: «HOLA».

En la práctica

En la práctica, no es tan fácil programar:

  • Necesitas encontrar números primos grandes (esto puede ser demasiado largo para calcular)
  • Necesitas obtener números primos p y que aleatorio (que no es fácil).
  • No utiliza bloques tan pequeños como en el ejemplo anterior: debería poder calcular potencias y módulos con números muy grandes.

De hecho, los algoritmos asimétricos nunca se utilizan para cifrar todos los datos porque lleva demasiado tiempo calcularlos: los datos se cifran con un algoritmo simétrico cuya clave se elige aleatoriamente, y es esta clave la que se descifra con un algoritmo asimétrico como El RSA.

Softwares para cifrar archivos

Si desea cifrar sus archivos, le recomiendo el excelente software PGP (Pretty Good Privacy) o GPG (GNU Privacy Guard).

Existen otros algoritmos asimétricos, incluidos los ECC (Criptosistemas de curva elíptica, por curva elíptica). Este sistema se basa en una curva paramétrica que pasa un cierto número de puntos de coordenadas enteros. Todavía no está bien desarrollado, pero es prometedor.

También está el Diffie-Hellman , se prefiere cada vez más que RSA. (Diffie-Hellman fue rápidamente adoptado por la comunidad de código abierto cuando RSA aún no era de dominio público).