¿qué es el cifrado RSA y cómo funciona?

el cifrado RSA es un sistema que resuelve lo que una vez fue uno de los mayores problemas en criptografía: ¿cómo puede enviar a alguien un mensaje codificado sin tener la oportunidad de compartir previamente el código con ellos?

Este artículo le enseñará todo lo que necesita saber sobre cómo se desarrolló el cifrado RSA, cómo funciona, las matemáticas detrás de él, para qué se utiliza, así como algunos de los mayores problemas de seguridad que enfrenta., Aprender sobre RSA le dará algunos conocimientos fundamentales que le ayudarán a comprender cuántas partes de nuestra vida en línea se mantienen seguras.

¿qué es el cifrado RSA?

digamos que quieres contarle un secreto a tu amigo. Si estás justo al lado de ellos, puedes susurrarlo. Si estás en lados opuestos del país, obviamente eso no funcionará. Podrías escribirlo y enviárselo por correo, o usar el teléfono, pero cada uno de estos canales de comunicación es inseguro y cualquier persona con una motivación lo suficientemente fuerte podría interceptar fácilmente el mensaje.,

si el secreto fuera lo suficientemente importante, no correrías el riesgo de escribirlo normalmente: espías o un empleado postal deshonesto podrían estar mirando tu correo. Del mismo modo, alguien podría estar tocando su teléfono sin su conocimiento y registrando cada llamada que realice.

una solución para evitar que los espías accedan al contenido del mensaje es cifrarlo. Esto básicamente significa agregar un código al mensaje que lo convierte en un lío desordenado. Si su código es lo suficientemente complejo, entonces las únicas personas que podrán acceder al mensaje original son las que tienen acceso al código.,

si tuvieron la oportunidad de compartir el código con su amigo de antemano, entonces cualquiera de ustedes puede enviar un mensaje cifrado en cualquier momento, sabiendo que ustedes dos son los únicos con la capacidad de leer el contenido del mensaje. Pero, ¿y si no tuvieras la oportunidad de compartir el código de antemano?

Este es uno de los problemas fundamentales de la criptografía, que ha sido abordado por esquemas de cifrado de Clave Pública (también conocido como cifrado asimétrico) como RSA.

bajo el cifrado RSA, los mensajes se cifran con un código llamado Clave Pública, que se puede compartir abiertamente., Debido a algunas propiedades matemáticas distintas del algoritmo RSA, una vez que un mensaje ha sido cifrado con la Clave Pública, solo puede ser descifrado por otra clave, conocida como la Clave Privada. Cada usuario RSA tiene un par de claves que consiste en sus claves públicas y privadas. Como su nombre indica, la clave privada debe mantenerse en secreto.

Los esquemas de cifrado de Clave Pública difieren del cifrado de clave simétrica, donde tanto el cifrado como el proceso de descifrado utilizan la misma clave privada., Estas diferencias hacen que el cifrado de Clave Pública como RSA sea útil para comunicarse en situaciones en las que no ha habido oportunidad de distribuir claves de forma segura de antemano.

los Algoritmos de clave simétrica tienen sus propias aplicaciones, como cifrar datos para uso personal o para cuando hay canales seguros sobre los que se pueden compartir las claves privadas.

Véase también: criptografía de Clave Pública

¿dónde se utiliza el cifrado RSA?

el cifrado RSA se utiliza a menudo en combinación con otros esquemas de cifrado, o para firmas digitales que pueden probar la autenticidad e integridad de un mensaje., Generalmente no se usa para cifrar mensajes o archivos completos, porque es menos eficiente y requiere más recursos que el cifrado de clave simétrica.

para hacer las cosas más eficientes, un archivo generalmente se cifrará con un algoritmo de clave simétrica, y luego la clave simétrica se cifrará con cifrado RSA. Bajo este proceso, solo una entidad que tenga acceso a la clave privada RSA podrá descifrar la clave simétrica.

Sin poder acceder a la clave simétrica, el archivo original no se puede descifrar., Este método se puede utilizar para mantener los mensajes y archivos seguros, sin tomar demasiado tiempo o consumir demasiados recursos computacionales.

el cifrado RSA se puede utilizar en varios sistemas diferentes. Se puede implementar en OpenSSL, wolfCrypt, cryptlib y una serie de otras bibliotecas criptográficas.

como uno de los primeros esquemas de cifrado de Clave Pública ampliamente utilizados, RSA sentó las bases para gran parte de nuestras comunicaciones seguras. Fue utilizado tradicionalmente en TLS y también fue el algoritmo original utilizado en el cifrado PGP., RSA todavía se ve en una gama de navegadores web, correo electrónico, VPN, chat y otros canales de comunicación.

RSA también se utiliza a menudo para hacer conexiones seguras entre clientes VPN y servidores VPN. Bajo Protocolos como OpenVPN, los apretones de manos TLS pueden usar el algoritmo RSA para intercambiar claves y establecer un canal seguro.

el trasfondo del cifrado RSA

Como mencionamos al comienzo de este artículo, antes del cifrado de Clave Pública, era un desafío comunicarse de forma segura si no había habido una oportunidad de intercambiar claves de forma segura de antemano., Si no había una oportunidad de compartir el código con anticipación, o un canal seguro a través del cual se pudieran distribuir las claves, no había forma de comunicarse sin la amenaza de que los enemigos pudieran interceptar y acceder al contenido del mensaje.

no fue hasta la década de 1970 que las cosas realmente comenzaron a cambiar. El primer desarrollo importante hacia lo que ahora llamamos criptografía de Clave Pública fue publicado a principios de la década por James H. Ellis., Ellis no pudo encontrar una manera de implementar su trabajo, pero fue ampliado por su colega Clifford Cocks para convertirse en lo que ahora conocemos como cifrado RSA.

la pieza final del rompecabezas es lo que ahora llamamos el intercambio de claves Diffie-Hellman. Malcolm J. Williamson, otro compañero de trabajo, descubrió un esquema que permitía a dos partes compartir una clave de cifrado, incluso si el canal estaba siendo monitoreado por adversarios.

todo este trabajo se llevó a cabo en la agencia de inteligencia del Reino Unido, la sede de Comunicaciones del Gobierno (GCHQ), que mantuvo el descubrimiento Clasificado., En parte debido a las limitaciones tecnológicas, el GCHQ no podía ver un uso para la criptografía de Clave Pública en ese momento, por lo que el desarrollo se sentó de brazos cruzados en el estante acumulando polvo. No fue hasta 1997 que la obra fue desclasificada y los inventores originales de RSA fueron reconocidos.

varios años más tarde, conceptos similares comenzaban a desarrollarse en la esfera pública. Ralph Merkle creó una forma temprana de criptografía de Clave Pública, que influyó en Whitfield Diffie y Martin Hellman en el diseño del intercambio de claves Diffie-Hellman.,

a las ideas de Diffie y Hellman les faltaba un aspecto importante que haría de su trabajo una base de criptografía de Clave Pública. Esta era una función unidireccional que sería difícil de invertir. En 1977, Ron Rivest, Adi Shamir y Leonard Adleman, cuyos apellidos forman el acrónimo RSA, llegaron a una solución después de un año de trabajo en el problema.

Los académicos del MIT hicieron su gran avance después de una fiesta de Pascua en 1977., Después de una noche de bebida, Rivest se fue a casa, pero en lugar de dormir, pasó la noche febrilmente escribiendo un documento que formalizaba su idea para la función unidireccional necesaria.

la idea fue patentada en 1983 por el MIT, pero no fue hasta los primeros días de internet que el algoritmo RSA comenzó a ver una adopción generalizada como una herramienta de seguridad importante.

¿cómo funciona el cifrado RSA?

lo siguiente va a ser un poco de simplificación, porque demasiados lectores probablemente han sido marcados por su profesor de matemáticas de la escuela secundaria., Para evitar que las matemáticas se salgan de control, simplificaremos algunos conceptos y usaremos números mucho más pequeños. En realidad, el cifrado RSA utiliza números primos que son mucho más grandes en magnitud y hay algunas otras complejidades.

Hay varios conceptos diferentes que tendrás que entender antes de que podamos explicar cómo encaja todo. Estos incluyen funciones trapdoor, generación de primes, la función Totient de Carmichael y los procesos separados involucrados en la computación de las claves públicas y privadas utilizadas en los procesos de cifrado y descifrado.,

funciones de puerta trampa

el cifrado RSA funciona bajo la premisa de que el algoritmo es fácil de calcular en una dirección, pero casi imposible en sentido inverso. Como ejemplo, si le dijeran que 701,111 es un producto de dos números primos, ¿sería capaz de averiguar cuáles son esos dos números?

incluso con una calculadora o una computadora, la mayoría de Nosotros no tendría idea de por dónde empezar, y mucho menos ser capaz de averiguar la respuesta. Pero si cambiamos las cosas, se vuelve mucho más fácil., Cuál es el resultado de:

907 x 773

si estuvieras lo suficientemente aburrido, habrías sido capaz de sacar tu teléfono o tal vez calcularlo en tu cabeza para descubrir que la respuesta es el 701,111 mencionado anteriormente. Estos 907 y 773 son los números primos que responden a nuestra primera pregunta, lo que nos muestra que ciertas ecuaciones pueden ser fáciles de descifrar de una manera, pero aparentemente imposibles a la inversa.

otro aspecto interesante de esta ecuación es que es simple averiguar uno de los números primos si ya tiene el otro, así como el producto., Si se le dice que 701,111 es el resultado de 907 multiplicado por otro número primo, se puede calcular el otro primo con la siguiente ecuación:

701,111 ÷ 907 = 773

dado que la relación entre estos números es simple de calcular en una dirección, pero increíblemente difícil en sentido inverso, la ecuación se conoce como una función de puerta trampa. Tenga en cuenta que si bien el ejemplo anterior es difícil de entender para las personas, las computadoras pueden hacer la operación en una cantidad trivial de tiempo.

debido a esto, RSA usa números mucho más grandes., El tamaño de los números primos en una implementación real de RSA varía, pero en RSA de 2048 bits, se unirían para hacer claves que tengan 617 dígitos de largo. Para ayudarlo a visualizarlo, una clave sería un número de este tamaño:

generar primos

las funciones de trampilla mencionadas anteriormente forman la base de cómo funcionan los esquemas de cifrado de Clave Pública y privada. Sus propiedades permiten compartir claves públicas sin poner en peligro el mensaje o revelar la Clave Privada. También permiten que los datos se cifren con una clave de una manera que solo puede ser descifrada por la otra clave del par.,

el primer paso para cifrar un mensaje con RSA es generar las claves. Para hacer esto, necesitamos dos números primos (p y q) que se seleccionan con una prueba de primalidad. Una prueba de primalidad es un algoritmo que encuentra eficientemente números primos, como la prueba de primalidad de Rabin-Miller.

los números primos en RSA deben ser muy grandes, y también relativamente separados. Los números que son pequeños o más cercanos entre sí son mucho más fáciles de descifrar. A pesar de esto, nuestro ejemplo usará números más pequeños para hacer las cosas más fáciles de seguir y calcular.,

digamos que la prueba de primalidad nos da los números primos que usamos anteriormente, 907 y 773. El siguiente paso es descubrir el módulo (n), utilizando la siguiente fórmula:

n = P x q

donde p = 907 y q = 773

Por lo tanto:

N = 907 x 773

n = 701,111

la función Totient de Carmichael

Una vez que tenemos n, Usamos la función Totient de Carmichael función totient:

λ(n) = LCM (p − 1, Q − 1)

Si ha pasado un tiempo desde que has golpeado los libros de texto de matemáticas, lo anterior podría parecer un poco aterrador., Puede omitir esta parte y confiar en que las matemáticas funcionan, de lo contrario, quédese con nosotros para algunos cálculos más. Todo se explicará con el mayor detalle posible para ayudarlo a comprender lo básico.

para aquellos que no son conscientes, λ (n) representa el totient de Carmichael para n, mientras que lcm significa el múltiplo común más bajo, que es el número más bajo en el que tanto p como q pueden dividirse. Hay algunas maneras diferentes de resolver esto, pero la más fácil es confiar en una calculadora en línea para hacer la ecuación por usted., Así que vamos a poner nuestros números en la ecuación:

λ (701,111) = lcm (907 − 1, 773 − 1)

λ(701,111) = LCM (906, 772)

Usando la calculadora enlazada arriba, esto nos da:

λ(701,111) = 349,716

generando la Clave Pública

ahora que tenemos Carmichael es totient de nuestros números primos, es hora de averiguar nuestra Clave Pública. Bajo RSA, las claves públicas se componen de un número primo e, así como n. El número e puede ser cualquier cosa entre 1 y el valor de λ(n), que en nuestro ejemplo es 349,716.,

debido a que la Clave Pública se comparte abiertamente, no es tan importante que e sea un número aleatorio. En la práctica, e se establece generalmente en 65,537, porque cuando se eligen números mucho más grandes al azar, hace que el cifrado sea mucho menos eficiente. Para el ejemplo de hoy, mantendremos los números pequeños para hacer cálculos eficientes. Digamos:

e = 11

nuestros datos cifrados finales se llaman texto cifrado (c). Lo derivamos de nuestro mensaje de texto plano (m), aplicando la Clave Pública con la siguiente fórmula:

c = me mod n

ya hemos llegado a e y sabemos n También., Lo único que tenemos que explicar es mod. Está un poco fuera de la profundidad de este artículo, pero se refiere a una operación de módulo, que esencialmente significa el resto que queda cuando se divide un lado por el otro. Por ejemplo:

10 mod 3 = 1

esto se debe a que 3 entra en 10 tres veces, con un resto de 1.

de vuelta a nuestra ecuación. Para mantener las cosas simples, digamos que el mensaje (m) que queremos cifrar y mantener en secreto es solo un número único, 4., Vamos a conectar todo:

c = me mod n

c = 411 mod 701,111

c = 4,194,304 mod 701,111

de nuevo, para hacer que la operación del módulo sea fácil, usaremos una calculadora en línea, pero le invitamos a averiguarlo por sí mismo. Al ingresar 4,194,304 en la calculadora en línea, nos da:

c = 688,749

Por lo tanto, cuando usamos RSA para cifrar nuestro mensaje, 4, con nuestra Clave Pública, nos da el texto cifrado de 688,749., Los pasos anteriores pueden haber parecido un poco demasiado pesados en matemáticas, pero es importante reiterar lo que realmente ha sucedido.

teníamos un mensaje de 4, que queríamos mantener en secreto. Le aplicamos una Clave Pública, que nos dio el resultado cifrado de 688.749. Ahora que está encriptado, podemos enviar de forma segura el número 688,749 al propietario del par de claves. Son la única persona que podrá descifrarlo con su Clave Privada. Cuando lo descifren, verán el mensaje que realmente estábamos enviando, 4.,

generando la Clave Privada

en el cifrado RSA, una vez que los datos o un mensaje se han convertido en texto cifrado con una clave pública, solo puede ser descifrado por la Clave Privada del mismo par de claves. Las claves privadas están compuestas por d y n. ya conocemos n, y la siguiente ecuación se usa para encontrar d:

d = 1/e mod λ(n)

en la sección generar la Clave Pública anterior, ya decidimos que en nuestro ejemplo, e sería igual a 11. Del mismo modo, sabemos que λ(n) es igual a 349,716 de nuestro trabajo anterior bajo la función Totient de Carmichael., Las cosas se complican un poco más cuando nos encontramos con esta sección de la fórmula:

1 / e mod

esta ecuación puede parecer que te pide dividir 1 por 11, pero ese no es el caso. En cambio, esto solo simboliza que necesitamos calcular la inversa modular de e (que en este caso es 11) y λ(n) (que en este caso es 349,716).

esto esencialmente significa que en lugar de realizar una operación de módulo estándar, usaremos el inverso en su lugar., Esto se encuentra normalmente con el algoritmo euclidiano extendido, pero está un poco fuera del alcance de este artículo, por lo que solo haremos trampa y usaremos una calculadora en línea en su lugar., Ahora que entendemos todo lo que está pasando, vamos a conectar nuestra información en la fórmula:

d =1/11 mod 349,716

para realizar esta operación, simplemente ingrese 11 (o cualquier valor que pueda tener para e si está intentando esto con su propio ejemplo) donde dice entero y 349,716 (o cualquier valor que pueda tener Para λ(n) Si está intentando esto con su propio ejemplo) donde dice módulo en la calculadora en línea que se vinculó anteriormente., Si lo has hecho correctamente, usted debe obtener un resultado donde:

d = 254, 339

Ahora que tenemos el valor de d, podemos descifrar mensajes cifrados con la clave pública utilizando la siguiente fórmula:

m = cd mod n

ahora podemos volver al texto cifrado que hemos cifrado en la Generación de la clave privada de la sección. Cuando ciframos el mensaje con la Clave Pública, nos dio un valor para c de 688,749. Desde arriba, sabemos que d es igual a 254.339. También sabemos que n es igual a 701,111. Esto nos da:

m = 688,749254,339 mod 701,111.,

como habrás notado, tratar de llevar un número a la potencia 254,339 puede ser un poco demasiado para la mayoría de las calculadoras normales. En su lugar, vamos a utilizar una calculadora de descifrado RSA en línea. Si desea utilizar otro método, aplicaría los poderes como lo haría normalmente y realizaría la operación de módulo de la misma manera que lo hicimos en la sección generar la Clave Pública.,

en la calculadora vinculada anteriormente, ingrese 701,111 donde dice Módulo de suministro: N, 254,399 donde dice clave de descifrado: D, y 688,749 donde dice mensaje de texto cifrado en forma numérica, como se muestra a continuación:

Una vez que haya ingresado los datos, presione descifrar, que pondrá los números a través de la fórmula de descifrado eso fue mencionado anteriormente. Esto le dará el mensaje original en el cuadro de abajo. Si has hecho todo correctamente, deberías obtener una respuesta de 4, que era el mensaje original que ciframos con nuestra Clave Pública.,

cómo funciona el cifrado RSA en la práctica

Las secciones anteriores deben darle una comprensión razonable de cómo funciona la matemática detrás del cifrado de Clave Pública. Puede ser un poco confuso, pero incluso aquellos que no entendieron las complejidades de las ecuaciones pueden Con suerte quitar alguna información importante sobre el proceso.

en los pasos mencionados anteriormente, hemos mostrado cómo dos entidades pueden comunicarse de forma segura sin haber compartido previamente un código. Primero, cada uno necesita configurar sus propios pares de claves y compartir la Clave Pública entre sí., Las dos entidades necesitan mantener sus claves privadas en secreto para que sus comunicaciones permanezcan seguras.

una vez que el remitente tiene la Clave Pública de su destinatario, puede usarla para cifrar los datos que desea mantener seguros. Una vez que se ha cifrado con una clave pública, solo puede ser descifrado por la Clave Privada del mismo par de claves. Incluso la misma Clave Pública no se puede utilizar para descifrar los datos. Esto se debe a las propiedades de las funciones de trampilla que mencionamos anteriormente.

Cuando el destinatario recibe el mensaje cifrado, utiliza su clave privada para acceder a los datos., Si el destinatario desea devolver las comunicaciones de forma segura, puede cifrar su mensaje con la Clave Pública de la parte con la que se está comunicando. De nuevo, una vez que se ha cifrado con la Clave Pública, la única forma de acceder a la información es a través de la clave privada correspondiente.

de esta manera, el cifrado RSA puede ser utilizado por partes previamente desconocidas para enviar datos de forma segura entre ellas. Partes significativas de los canales de comunicación que utilizamos en nuestras vidas en línea se construyeron a partir de esta base.,

¿cómo se cifran los mensajes más complicados con RSA?

en nuestro ejemplo, simplificamos mucho las cosas para que sea más fácil de entender, por lo que solo ciframos un mensaje de «4». Ser capaz de cifrar el número 4 no parece particularmente útil, por lo que puede preguntarse cómo puede cifrar un conjunto de datos más complicado, como una clave simétrica (que es el uso más común de RSA), o incluso un mensaje.,

algunas personas pueden estar perplejas de cómo una clave como » n38cb29fkbjh138g7fqijnf3kaj84f8b9f. «o un mensaje como» buy me a sandwich » puede ser encriptado por un algoritmo como RSA, que trata con números y no Letras. La realidad es que toda la información que procesan nuestros ordenadores se almacena en binarios (1s y 0s) y utilizamos estándares de codificación como ASCII o Unicode para representarlos de manera que los humanos puedan entender (letras).,

esto significa que claves como «n38cb29fkbjh138g7fqijnf3kaj84f8b9f already» y mensajes como «buy me a sandwich» ya existen como números, que se pueden calcular fácilmente en el algoritmo RSA. Los números por los que están representados son mucho más grandes y difíciles de manejar, por lo que preferimos tratar con caracteres alfanuméricos en lugar de un revoltijo de binarios.

si desea cifrar una clave de sesión más larga o un mensaje más complejo con RSA, simplemente implicaría un número mucho mayor.,

Padding

cuando se implementa RSA, utiliza algo llamado padding para ayudar a prevenir una serie de ataques. Para explicar cómo funciona esto, comenzaremos con un ejemplo. Digamos que estaban enviando un mensaje codificado a un amigo:

Querida Karen,

espero que estés bien. ¿Aún cenamos mañana?

atentamente,

Santiago

digamos que usted codificado el mensaje de una manera sencilla, cambiando cada letra a la que le sigue en el alfabeto. Esto cambiaría el mensaje a:

Efbs Lbsfo,

J ipqf zpv BSF xfmm., Bsf xf tujmm ibwjoh ejoofs upnpsspx?

Zpvst tjodfsfmz,

Kbnft

Si tus enemigos interceptaron esta carta, hay un truco que podrían usar para intentar descifrar el código. Podrían mirar el formato de su carta y tratar de adivinar lo que podría estar diciendo el mensaje. Saben que las personas normalmente comienzan sus cartas con «Hola», «hola», «querido» o una serie de otras convenciones.

si intentaran aplicar «Hola» o «Hola» como primera palabra, verían que no se ajustaría al número de caracteres. Entonces podrían probar «querido»., Encaja, pero eso no significa necesariamente nada. Los atacantes simplemente lo intentaban y veían a dónde los llevaba. Así que cambiarían las letras «e», «f», «b» y «s» con «d», «e», «a» y » r » respectivamente. Esto les daría:

estimado Laseo,

J ipqe zpv son xemm. ¿Es XE tujmm iawjoh djooes upnpsspx?

Zpvrt tjoderemz,

Kanet

todavía parece bastante confuso, por lo que los atacantes podrían intentar mirar algunas otras convenciones, como la forma en que concluimos nuestras cartas. La gente a menudo agrega «de» o «saludos amables» al final, pero ninguno de estos se ajusta al formato., En su lugar, los atacantes podrían intentar «Yours sincerely» y reemplazar las otras letras para ver dónde las lleva. Al cambiar «z», «p», «v», «t», «j» «o», «d» y «m» por «y», «o», «u», «s», «i», «n», «c» y «l» respectivamente, obtendrían:

estimado Lasen,

ioqe usted es xell. ¿Son xe tuill iawinh dinnes uonossox?

atentamente,

Kanet

Después de esa modificación, parece que los atacantes están empezando a llegar a alguna parte. Han encontrado las palabras «yo», «tú» y «eres», además de las palabras que hicieron sus conjeturas iniciales.,

viendo que las palabras están en el orden gramatical correcto, los atacantes pueden estar bastante seguros de que van en la dirección correcta. Por ahora, probablemente también se dio cuenta de que el código de cada letra de cambio a la que le sigue en el alfabeto. Una vez que se dan cuenta de esto, hace que sea fácil traducir el resto y leer el mensaje original.

el ejemplo anterior era solo un código simple, pero como puedes ver, la estructura de un mensaje puede dar pistas a los atacantes sobre su contenido., Claro, fue difícil descifrar el mensaje solo desde su estructura y tomó algunas conjeturas educadas, pero debe tener en cuenta que las computadoras son mucho mejores en hacer esto que nosotros. Esto significa que se pueden usar para descubrir códigos mucho más complejos en un tiempo mucho más corto, basados en pistas que provienen de la estructura y otros elementos.

si la estructura puede llevar a que un código sea descifrado y revelar el contenido de un mensaje, entonces necesitamos alguna forma de ocultar la estructura para mantener el mensaje seguro. Esto nos lleva al relleno.,

cuando se rellena un mensaje, se agregan datos aleatorios para ocultar las pistas de formato originales que podrían llevar a que se rompa un mensaje cifrado. Con RSA, las cosas son un poco más complicadas, porque una clave cifrada no tiene el formato obvio de una letra que nos ayudó a darnos pistas en nuestro ejemplo anterior.

a pesar de esto, los adversarios pueden usar una serie de ataques para explotar las propiedades matemáticas de un código y romper los datos cifrados. Debido a esta amenaza, las implementaciones de RSA utilizan esquemas de relleno como OAEP para incrustar datos adicionales en el mensaje., Agregar este relleno antes de cifrar el mensaje hace que RSA sea mucho más seguro.

firmar mensajes

RSA se puede utilizar para algo más que cifrar datos. Sus propiedades También lo convierten en un sistema útil para confirmar que un mensaje ha sido enviado por la entidad que afirma haberlo enviado, así como para probar que un mensaje no ha sido alterado o manipulado.,

Cuando alguien quiere probar la autenticidad de su mensaje, puede calcular un hash (una función que toma datos de un tamaño arbitrario y los convierte en un valor de longitud fija) del texto plano, luego firmarlo con su Clave Privada. Firman el hash aplicando la misma fórmula que se usa en el descifrado (M = cd mod n). Una vez que el mensaje ha sido firmado, envían esta firma digital al destinatario junto con el mensaje.,

si un destinatario recibe un mensaje con una firma digital, puede usar la firma para verificar si el mensaje fue firmado auténticamente por la Clave Privada de la persona que afirma haberlo enviado. También pueden ver si el mensaje ha sido cambiado por los atacantes después de que se envió.

para verificar la firma digital, el destinatario primero usa la misma función hash para encontrar el valor hash del mensaje que recibió., A continuación, el destinatario aplica la Clave Pública del remitente a la firma digital, utilizando la fórmula de cifrado (c = me mod n), Para darles el hash de la firma digital.

al comparar el hash del mensaje que se recibió junto con el hash de la firma digital cifrada, el destinatario puede saber si el mensaje es auténtico. Si los dos valores son los mismos, el mensaje no se ha cambiado desde que fue firmado por el remitente original. Si el mensaje hubiera sido alterado incluso por un solo carácter, el valor hash sería completamente diferente.,

RSA security & ataques

Al igual que la mayoría de los criptosistemas, la seguridad de RSA depende de cómo se implementa y utiliza. Un factor importante es el tamaño de la llave. Cuanto mayor es el número de bits en una clave (esencialmente cuánto tiempo es la clave), más difícil es romper a través de ataques tales como fuerza bruta y factorización.

dado que los Algoritmos de clave asimétrica como RSA se pueden romper por factorización de enteros, mientras que los Algoritmos de clave simétrica como AES no pueden, las claves RSA deben ser mucho más largas para lograr el mismo nivel de seguridad.,

actualmente, el tamaño de clave más grande que se ha factorizado es de 768 bits de longitud. Esto fue hecho por un equipo de académicos durante un período de dos años, utilizando cientos de máquinas.

dado que la factorización se completó a finales de 2009 y la potencia de cálculo ha crecido significativamente desde entonces, se puede suponer que un intento de intensidad similar podría ahora factorizar una clave RSA mucho mayor.

a pesar de esto, el tiempo y los recursos necesarios para este tipo de ataque lo ponen fuera del alcance de la mayoría de los hackers y en el Reino de los estados nación., La mejor longitud de clave a utilizar dependerá de su modelo de amenaza individual. El Instituto Nacional de estándares y Tecnología recomienda un tamaño mínimo de clave de 2048 bits, pero las claves de 4096 bits también se utilizan en algunas situaciones donde el nivel de amenaza es mayor.

la factorización es solo una forma de romper el RSA. Una serie de otros ataques tienen el potencial de romper el cifrado con una menor cantidad de recursos, pero estos dependen de la implementación y otros factores, no necesariamente RSA en sí. Algunos de estos incluyen:

¿son los números primos realmente aleatorios?,

algunas implementaciones de RSA utilizan generadores de números aleatorios débiles para obtener los números primos. Si estos números no son lo suficientemente aleatorios, hace que sea mucho más fácil para los atacantes factorizarlos y romper el cifrado. Este problema se puede evitar mediante el uso de un generador de números pseudo-aleatorios criptográficamente seguro.

mala generación de claves

Las claves RSA deben estar dentro de ciertos parámetros para que sean seguras. Si los primos P y q están demasiado juntos, la clave puede ser fácilmente descubierta. Del mismo modo, el número d que forma parte de la clave privada no puede ser demasiado pequeño., Un valor bajo hace que sea fácil de resolver. Es importante que estos números sean de longitud adecuada para mantener su llave segura.

ataques de canal lateral

estos son un tipo de ataque que no rompe RSA directamente, sino que utiliza la información de su implementación para dar a los atacantes pistas sobre el proceso de cifrado. Estos ataques pueden incluir cosas como el análisis de la cantidad de energía que se está utilizando, o el análisis de predicción de ramas, que utiliza mediciones de tiempo de ejecución para descubrir la Clave Privada.

otro tipo de ataque de canal lateral se conoce como ataque de sincronización., Si un atacante tiene la capacidad de medir el tiempo de descifrado en la computadora de su objetivo para varios mensajes cifrados diferentes, esta información puede hacer posible que el atacante determine la Clave Privada del objetivo.

La mayoría de las implementaciones de RSA evitan este ataque agregando un valor único durante el proceso de cifrado, lo que elimina esta correlación. Este proceso se llama cegamiento criptográfico.

¿el cifrado RSA es SEGURO para el futuro?

la buena noticia es que RSA se considera seguro de usar, a pesar de estos posibles ataques., La advertencia es que debe implementarse correctamente y usar una clave que esté dentro de los parámetros correctos. Como acabamos de discutir, las implementaciones que no usan relleno, usan números primos de tamaño inadecuado o tienen otras vulnerabilidades no pueden considerarse seguras.

si desea utilizar el cifrado RSA, asegúrese de que está utilizando una clave de al menos 1024 bits. Aquellos con modelos de amenaza más altos deben atenerse a las claves de 2048 o 4096 bits si quieren usar RSA con confianza., Mientras sea consciente de las debilidades que tiene RSA y lo use correctamente, debería sentirse seguro de usar RSA para compartir claves y otras tareas similares que requieren cifrado de Clave Pública.

Véase también: explicación de los tipos comunes de cifrado

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *