Cifrado RSA
El algoritmo fue descrito en 1977 por Ron Rivest, Adi Shamir y Len Adleman (la sigla RSA es Rivest Shamir Adleman) en el MIT.
El cifrado RSA es un algoritmo de cifrado de clave pública (o asimétrico) por bloques, que como todos los cifrados de clave pública tiene dos claves: una pública, que se distribuye a los usuarios que quiera el propietario de ella, y otra privada, la cual es guardada en secreto por su propietario. Así cuando se envía un mensaje, el emisor usa la clave pública de cifrado del receptor para cifrar el mensaje y una vez que dicho mensaje llega al receptor, éste se ocupa de descifrarlo usando su clave oculta.
El algoritmo sigue los siguientes pasos:
- Se construye un número «N», que resulta del producto de dos primos «p» y «q» (normalmente son números muy grandes). Teniendo N = p · q y Φ(N) = (p-1) · (q-1)
- Se selecciona un número «e»,1 < e < Φ(N), tal que MCD (e, Φ(N)) = 1 («e» y Φ(N) son primos relativos).
- Se calcula el inverso de «e», denotado por «d», tal que e · d = 1 (mod Φ(N))
- Con esto se consiguen las claves (e, d), siendo la clave pública (e, N) y la clave privada (d, N).
Una vez tenemos las claves podemos pasar a cifrar/descfirar los mensajes:
- Cifrado: C = Me (mod N) con MCD (M, N) = 1 y M < N
- Descifrado: M = Cd (mod N)
La seguridad de este algoritmo radica en que no hay maneras rápidas conocidas de factorizar un número grande en sus factores primos utilizando computadoras tradicionales.
(Más información en Wikipedia)
Cifrado Elgamal
Este algoritmo está basado en el algoritmo de Diffie-Hellman para el intercambio de claves, fue descrito en 1984 por Taher Elgamal. Actualmente se usa en el software libre GNU Privacy Guard (GPG), versiones de PGP y otros sistemas.
El algoritmo sigue los siguientes pasos:
- El receptor selecciona un primo grande «p» y un generador g ∈ Z*p.
- El receptor selecciona aleatoriamente un valor «xr» tal que 0 < xr < p-1. Siendo «xr» la clave privada.
- La clave pública es igual a yr = gxr (mod p).
- Ahora el emisor toma un «K» aleatorio tal que MCD (K, p-1) = 1, es decir, «K» sea primo relativo con p-1 y calcula r = gK (mod p) y s = M · yKr (mod p).
- El emisor manda el mensaje cifrado como C = (r, s), siendo «r» la clave pública del emisor y «s» el mensaje cifrado.
- Ahora el mensaje cifrado se descifra calculando M = s/rxr.
La seguridad del algoritmo depende en la dificultad de calcular logaritmos discretos.
(Más información en Wikipedia Inglés)
Post anterior: Cifrado de clave pública I
¿Te ha gustado la entrada? Puedes invitarme a un café, Gauss te lo agradecerá 😉