El documento describe varios algoritmos criptográficos de clave pública, incluido RSA. RSA usa claves públicas y privadas para cifrar y descifrar mensajes de forma asimétrica. Se proporcionan ejemplos numéricos que muestran cómo RSA puede cifrar un mensaje usando la clave pública de alguien y luego descifrarlo con su clave privada. Otros temas discutidos incluyen el intercambio de claves Diffie-Hellman y otros algoritmos de clave pública.
2. Criptografía de Clave Pública m M : DKR(EKU(m)) = DKU(EKR(m)) = m ♦Criptosistema RSA - Principio de funcionamiento y nivel de seguridad - Esquema de cifrado - Esquema de autenticacion ♦ Otros temas - Protocolo para intercambio de claves de Diffie-Hellman - Otros algoritmos de clave publica
3. RSA El sistema criptográfico con clave pública RSA es un algoritmo asimétrico cifrador de bloques, que utiliza una clave pública, la cual se distribuye (en forma autenticada preferentemente), y otra privada, la cual es guardada en secreto por su propietario. Una clave es un número de gran tamaño, que una persona puede conceptualizar como un mensaje digital, como un archivo binario o como una cadena de bits o bytes. Cuando se quiere enviar un mensaje, el emisor busca la clave pública de cifrado del receptor, cifra su mensaje con esa clave, y una vez que el mensaje cifrado llega al receptor, éste se ocupa de descifrarlo usando su clave oculta. Los mensajes enviados usando el algoritmo RSA se representan mediante números y el funcionamiento se basa en el producto de dos números primos grandes (mayores que 10100) elegidos al azar para conformar la clave de descifrado. Emplea expresiones exponenciales en aritmética modular. 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. La computación cuántica podría proveer una solución a este problema de factorización.
4. Ejemplo1 Aquí tenemos un ejemplo de cifrado/descifrado con RSA. Los parámetros usados aquí son pequeños y orientativos con respecto a los que maneja el algoritmo, pero podemos usar también OpenSSL para generar y examinar una par de claves reales. p=61 1º nº primo Privado q=53 2º nº primo Privado n=pq=3233 producto p*q e=17 exponente Público d=2753 exponente Privado La clave pública (e, n). La clave privada es d. La función de cifrado es: encrypt(m) = me(modn) = m17(mod 3233) Donde m es el texto sin cifrar. La función de descifrado es: decrypt(c) = cd(modn) = c2753(mod 3233) Donde c es el texto cifrado. Para cifrar el valor del texto sin cifrar 123, nosotros calculamos: encrypt(123) = 12317(mod 3233) = 855 Para descifrar el valor del texto cifrado, nosotros calculamos: decrypt(855) = 8552753(mod 3233) = 123 Ambos de estos cálculos pueden ser eficientemente usados por el algoritmo de multiplicación cuadrática para exponenciación modular.
5. EJEMPLO 2 Ejemplo rápido: Bob quiere enviar a Alicia un mensaje secreto que solo ella pueda leer. Alicia envía a Bob una caja con una cerradura abierta, de la que solo Alicia tiene la llave. Bob recibe la caja, escribe el mensaje, lo pone en la caja y la cierra con su cerradura (ahora Bob no puede leer el mensaje). Bob envía la caja a Alicia y ella la abre con su llave. En este ejemplo, la caja con la cerradura es la clave pública de Alicia, y la llave de la cerradura es su clave privada. Supongamos que Bob desea enviar un mensaje M a Alicia. Él cambia M en un número m<n, usando un protocolo reversible conocido como paddingscheme. Bob ahora tiene m. Alicia envía su clave pública (n,e) a Bob. Él entonces calcula el texto cifrado c correspondiente a m: Esto puede ser rápido usando el método de exponentiationbysquaring (llamado también exponenciación binaria). Bob transmite c a Alicia. 1. Cada usuario elige n = p·q 2. Los valores p y q NO se hacen públicos 3. Cada usuario calcula ϕ(n) = (p-1)(q-1) 4. Cada usuario elige una clave pública e de forma que 1 < e < ϕ(n) y que cumpla con la condición: mcd [e, ϕ(n)] = 1 5. Cada usuario calcula la clave privada d = inv [e,ϕ(n)] 6. Se hace público el grupo n y la clave e 7. Se guarda en secreto la clave d Cifra: C = NeRmodnR Firma: C = h(M)dEmodnE
6. EJEMPLO RSA 1.Generación de Parámetros ♦ p = 3, q = 5 (se eligen dos números primos) ♦ n = 15 ( se calcula el producto, es la clave pública) ♦ (n) = (3-1)*(5-1) = 8 ♦ Sea e = 3, entoncesd = 3, ya qu3: e*dmod 8 =3*3mod 8 = 9mod8= 1
7. 2. Cifrado del mensaje ♦ La clave pública es: (n,e) = (1*, 3) ♦ Sea el mensaje m = 2 ♦ El mensaje cifrado es: c =mmod n, es decir, c = 23 mod 15, o sea c = 8 ♦ Se envía 8 e
8. 3. Descifrado del mensaje ♦ Para decifrarel mensaseSe calcula: m = cdmod n = m =83 m0d *5 ♦ es decir,m =512 mod 1* = 2 ♦ por lo tanto se obtiene el mensaje original