La criptografía asimétrica (en inglés asymmetric key cryptography), también llamada criptografía de clave pública (en inglés public key cryptography) o criptografía de dos claves 1 (en inglés two-key cryptography), es el método criptográfico que usa un par de claves para el envío de mensajes. Las dos claves pertenecen a la misma persona que ha enviado el mensaje. Una clave es pública y se puede entregar a cualquier persona, la otra clave es privada y el propietario debe guardarla de modo que nadie tenga acceso a ella. Además, los métodos criptográficos garantizan que esa pareja de claves sólo se puede generar una vez, de modo que se puede asumir que no es posible que dos personas hayan obtenido casualmente la misma pareja de claves.
Si el remitente usa la clave pública del destinatario para cifrar el mensaje, una vez cifrado, sólo la clave privada del destinatario podrá descifrar este mensaje, ya que es el único que la conoce. Por tanto se logra la confidencialidad del envío del mensaje, nadie salvo el destinatario puede descifrarlo.
Si el propietario del par de claves usa su clave privada para cifrar el mensaje, cualquiera puede descifrarlo utilizando su clave pública. En este caso se consigue por tanto la identificación y autentificación del remitente, ya que se sabe que sólo pudo haber sido él quien empleó su clave privada (salvo que alguien se la hubiese podido robar). Esta idea es el fundamento de la firma electrónica.
Los sistemas de cifrado de clave pública o sistemas de cifrado asimétricos se inventaron con el fin de evitar por completo el problema del intercambio de claves de lossistemas de cifrado simétricos. Con las claves públicas no es necesario que el remitente y el destinatario se pongan de acuerdo en la clave a emplear. Todo lo que se requiere es que, antes de iniciar la comunicación secreta, el remitente consiga una copia de la clave pública del destinatario. Es más, esa misma clave pública puede ser usada por cualquiera que desee comunicarse con su propietario. Por tanto, se necesitarán sólo n pares de claves por cada n personas que deseen comunicarse entre sí.
Iacute;ndice
[ocultar]
· 1Descripción
· 2Ejemplo
· 3Esquemas para la propagación de la confianza
· 4Seguridad
· 5Ventajas y desventajas del cifrado asimétrico
· 6Tecnologías
· 7Protocolos
· 8Referencias
Descripción[editar]
Las dos principales ramas de la criptografía de clave pública son:
· Cifrado de clave pública: un mensaje cifrado con la clave pública de un destinatario no puede ser descifrado por nadie (incluyendo al que lo cifró), excepto un poseedor de la clave privada correspondiente, presumiblemete su propietario y la persona asociada con la clave pública utilizada. Su función es garantizar la confidencialidad del mensaje.
· Firmas digitales: un mensaje firmado con la clave privada del remitente puede ser verificado por cualquier persona que tenga acceso a la clave pública de dicho remitente, lo que demuestra que este remitente tenía acceso a la clave privada (y por lo tanto, es probable que sea la persona asociada con la clave pública utilizada). Se asegura así que el mensaje no ha sido alterado, puesto que cualquier manipulación del mensaje repercutiría en un distinto resultado del algoritmo de resumen del mensaje (encoded message digest). Se utiliza para garantizar la autenticidad del mensaje.
Una analogía con el cifrado de clave pública es la de un buzón con una ranura de correo. La ranura de correo está expuesta y accesible al público; su ubicación (la dirección de la calle) es, en esencia, la clave pública. Alguien que conozca la dirección de la calle puede ir a la puerta y colocar un mensaje escrito a través de la ranura; sin embargo, sólo la persona que posee la llave (clave privada) puede abrir el buzón de correo y leer el mensaje.
Una analogía para firmas digitales es el sellado de un sobre con un sello personal. El mensaje puede ser abierto por cualquier persona, pero la presencia del sello autentifica al remitente.
Ejemplo[editar]
Ejemplo de cifrado de mensaje: Ana envía un mensaje a David |
1. Ana redacta un mensaje 2. Ana cifra el mensaje con la clave pública de David 3. Ana envía el mensaje cifrado a David a través de internet, ya sea por correo electrónico, mensajería instantánea o cualquier otro medio 4. David recibe el mensaje cifrado y lo descifra con su clave privada 5. David ya puede leer el mensaje original que le mandó Ana |
Ejemplo de firma digital con clave asimétrica: David envía un mensaje a Ana |
1. David redacta un mensaje 2. David firma digitalmente el mensaje con su clave privada 3. David envía el mensaje firmado digitalmente a Ana a través de internet, ya sea por correo electrónico, mensajería instantánea o cualquier otro medio 4. Ana recibe el mensaje firmado digitalmente y comprueba su autenticidad usando la clave pública de David 5. Ana ya puede leer el mensaje con total seguridad de que ha sido David el remitente |
Esquemas para la propagación de la confianza[editar]
Observar que la criptografía de clave pública necesita establecer una confianza en que la clave pública de un usuario (al cual se identifica por una cadena identificativa a la que se llama identidad) es correcta, es decir el único que posee la clave privada correspondiente es el usuario auténtico al que pertenece. Cuanto más fiable sea el método más seguridad tendrá el sistema.
Lo ideal sería que cada usuario comunicara (e idealmente probara) de forma directa al resto de usuarios cual es su clave pública. Sin embargo esto no es posible en la realidad y se desarrollan distintos esquemas para aportar confianza. Estos esquemas se pueden agrupar en dos tipos: Esquema centralizados y esquemas descentralizados. En los esquemas descentralizado hay varios nodos y cada uno tiene unas capacidades y derechos. En los esquemas centralizados hay una arquitectura cliente-servidor donde los servidores juegan un papel central y proveen servicios a los clientes. Cada esquema tiene sus ventajas e inconvenientes y en cada caso hay que evaluarlos y decidir cual es el mejor en ese caso. En general los sistemas centralizados suelen ser más vulnerables a ataques de denegación de servicio debido a que basta con que falle el servidor central para que el sistema de confianza caiga por completo. Los sistemas descentralizados se suelen considerar menos seguros contra ataques encaminados a publicar claves públicas falsas debido a que al haber varios nodos posibles a atacar es más difícil asegurar su seguridad. Los modelos más usados son:
· Uso de una infraestructura de clave pública o PKI. En este modelo hay una o varias entidades emisoras de certificados (Autoridades de certificación o CA del inglés C ertification A uthority) que aseguran la autenticidad de la clave pública y de ciertos atributos del usuario. Para ello firman con su clave privada ciertos atributos del usuario incluyendo su clave pública generando lo que se llama certificado del usuario.
· Establecimiento de una web de confianza.
No hay nodos aparte de los usuarios. Los usuarios recogen claves públicas de otros usuarios y aseguran su autenticidad si están seguros de que la clave privada correspondiente pertenece en exclusiva a ese usuario. Un usuario además puede directamente confiar en el conjunto de claves públicas en las que otro confía ya sea directamente o a través de otras relaciones de confianza. En cada caso es el propio usuario el que decide el conjunto de claves públicas en las que confía y su grado de fiabilidad. Dos usuarios que no se conocen pueden confiar en sus claves públicas si existe una cadena de confianza que enlace ambas partes. Este tipo de implementación de la confianza es el que usa por ejemplo PGP.
· Uso de criptografía basada en identidad. En este modelo existe un generador de claves privadas o PKG (acrónimo de P rivate K ey G enerator) que a partir de una cadena de identificación del usuario genera una clave privada y otra pública para ese usuario. La pública la difunde para que el resto de usuarios la sepan y la privada es comunicada en exclusiva al usuario a quien pertenece.
· Uso de criptografía basada en certificados. En este modelo el usuario posee una clave privada y otra pública. La clave pública la envía a una Autoridad de certificación que basándose en criptografía basada en identidad genera un certificado que asegura la validez de los datos.
· Uso de criptografía sin certificados. Este modelo es similar al modelo que usa criptografía basada en identidad pero con la diferencia de que lo que se genera en el centro generador de claves o KGC (acrónimo de K ey G enerator C enter) es una clave parcial. La clave privada completa se genera a partir de la clave privada parcial y un valor generado aleatoriamente por el usuario. La clave pública es generada también por el usuario a partir de parámetros públicos del KGC y el valor secreto escogido.
Girault 2 distingue tres niveles de confianza que dan los distintos modelos a la autoridad que interviene en el proceso (PKG, KGC o CA según cada caso):
· Nivel 1: La autoridad puede calcular claves secretas de usuarios y por tanto pueden hacerse pasar como cualquier usuario sin ser detectado. Las firmas basadas en identidad pertenecen a este nivel de confianza
· Nivel 2: La autoridad no puede calcular claves secretas de usuarios, pero puede todavía hacerse pasar como cualquier usuario sin ser detectado. Firmas sin certificados pertenecen a este nivel
· Nivel 3: La autoridad no puede calcular claves secretas de usuarios, y tampoco puede hacerse pasar como un usuario sin ser detectado. Es el nivel más alto de fiabilidad. Las firmas tradicionales PKI y la firmas basadas en certificados pertenecen a este nivel
Seguridad[editar]
Según el segundo principio de Kerckhoffs toda la seguridad debe descansar en la clave y no en el algoritmo (en contraposición con la seguridad por la oscuridad). Por lo tanto, el tamaño de la clave es una medida de la seguridad del sistema, pero no se puede comparar el tamaño de la clave del cifrado simétrico con el del cifrado de clave pública para medir la seguridad. En un ataque de fuerza bruta sobre un cifrado simétrico con una clave del tamaño de 80 bits, el atacante debe probar hasta 280-1 claves para encontrar la clave correcta. En un ataque de fuerza bruta sobre un cifrado de clave pública con una clave del tamaño de 512 bits, el atacante debe factorizar un número compuesto codificado en 512 bits (hasta 155 dígitos decimales). La cantidad de trabajo para el atacante será diferente dependiendo del cifrado que esté atacando. Mientras 128 bits son suficientes para cifrados simétricos, dada la tecnología de factorización de hoy en día, se recomienda el uso de claves públicas de 1024 bits para la mayoría de los casos.
Ventajas y desventajas del cifrado asimétrico[editar]
La mayor ventaja de la criptografía asimétrica es que la distribución de claves es más fácil y segura ya que la clave que se distribuye es la pública manteniéndose la privada para el uso exclusivo del propietario, pero este sistema tiene bastantes desventajas:
· Para una misma longitud de clave y mensaje se necesita mayor tiempo de proceso.
· Las claves deben ser de mayor tamaño que las simétricas. (Generalmente son cinco o más veces de mayor tamaño que las claves simétricas)
· El mensaje cifrado ocupa más espacio que el original.
Los nuevos sistemas de clave asimétrica basado en curvas elípticas tienen características menos costosas.
Herramientas como PGP, SSH o la capa de seguridad SSL para la jerarquía de protocolos TCP/IP utilizan un híbrido formado por la criptografía asimétrica para intercambiar claves de criptografía simétrica, y la criptografía simétrica para la transmisión de la información.
Tecnologías[editar]
Algunos algoritmos y tecnologías de clave asimétrica son:
· Diffie-Hellman
· RSA
· DSA
· ElGamal
· Criptografía de curva elíptica
· Criptosistema de Merkle-Hellman
· Goldwasser-Micali
· Goldwasser-Micali-Rivest
· Cifrado extremo a Extremo
En criptografía, RSA (Rivest, Shamir y Adleman) es un sistema criptográfico de clave pública desarrollado en 1977. Es el primer y más utilizado algoritmo de este tipo y es válido tanto para cifrar como para firmar digitalmente.
La seguridad de este algoritmo radica en el problema de la factorización de números enteros. Los mensajes enviados se representan mediante números, y el funcionamiento se basa en el producto, conocido, de dos números primos grandes elegidos al azar y mantenidos en secreto. Actualmente estos primos son del orden de , y se prevé que su tamaño crezca con el aumento de la capacidad de cálculo de los ordenadores.
Como en todo sistema de clave pública, cada usuario posee dos claves de cifrado: una pública y otra privada. Cuando se quiere enviar un mensaje, el emisor busca la clave pública del receptor, cifra su mensaje con esa clave, y una vez que el mensaje cifrado llega al receptor, este se ocupa de descifrarlo usando su clave privada.
Se cree que RSA será seguro mientras no se conozcan formas rápidas de descomponer un número grande en producto de primos. La computación cuántica podría proveer de una solución a este problema de factorización.
Iacute;ndice
[ocultar]
· 1Historia
· 2Algoritmo RSA
o 2.1Idea del algoritmo
o 2.2Generación de claves
o 2.3Cifrado
o 2.4Descifrado
· 3Ejemplo
· 4Esquemas de relleno
· 5Autenticación de mensajes
· 6Seguridad
· 7Consideraciones prácticas
o 7.1Generación de claves
o 7.2Velocidad
· 8Distribución de claves
· 9Véase también
· 10Referencias
o 10.1Notas al pie
o 10.2Bibliografía
· 11Enlaces externos
Historia[editar]
El algoritmo fue descrito en 1977 por Ron Rivest, Adi Shamir y Leonard Adleman, del Instituto Tecnológico de Massachusetts (MIT); las letras RSA son las iniciales de sus apellidos. Clifford Cocks, un matemático británico que trabajaba para la agencia de inteligencia británica GCHQ, había descrito un sistema equivalente en un documento interno en 1973. Debido al elevado coste de las computadoras necesarias para implementarlo en la época su idea no trascendió. Su descubrimiento, sin embargo, no fue revelado hasta 1997 ya que era confidencial, por lo que Rivest, Shamir y Adleman desarrollaron RSA de forma independiente.
El algoritmo fue patentado por el MIT en 1983 en Estados Unidos con el número 4.405.829. Esta patente expiró el 21 de septiembre de 2000. Como el algoritmo fue publicado antes de patentar la aplicación, esto impidió que se pudiera patentar en otros lugares del mundo. Dado que Cocks trabajó en un organismo gubernamental, una patente en Estados Unidos tampoco hubiera sido posible.
Algoritmo RSA[editar]
El algoritmo consta de tres pasos:
Idea del algoritmo[editar]
Supongamos que 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».
Técnicamente, Bob envía a Alicia un «mensaje llano» en forma de un número menor que otro número , mediante un protocolo reversible conocido como padding scheme («patrón de relleno»). A continuación genera el «mensaje cifrado» mediante la siguiente operación:
,
donde es la clave pública de Alicia.
Ahora Alicia descifra el mensaje en clave mediante la operación inversa dada por
,
donde es la clave privada que solo Alicia conoce.
Generación de claves[editar]
1. Cada usuario elige dos números primos distintos y .
· Por motivos de seguridad, estos números deben escogerse de forma aleatoria y deben tener una longitud en bits parecida. Se pueden hallar primos fácilmente mediante test de primalidad.
2. Se calcula .
· se usa como el módulo para ambas claves, pública y privada.
3. Se calcula , donde es la función φ de Euler.
4. Se escoge un entero positivo menor que , que sea coprimo con .
· se da a conocer como el exponente de la clave pública.
· Si se escoge un con una suma encadenada corta, el cifrado será más efectivo. Un exponente muy pequeño (p. ej. ) podría suponer un riesgo para la seguridad.1
5. Se determina un (mediante aritmética modular) que satisfaga la congruencia , es decir, que sea el multiplicador modular inverso de
· Expresado de otra manera, es dividido exactamente por .
· Esto suele calcularse mediante el algoritmo de Euclides extendido.
· se guarda como el exponente de la clave privada.
La clave pública es , esto es, el módulo y el exponente de cifrado. La clave privada es , esto es, el módulo y el exponente de descifrado, que debe mantenerse en secreto.
Nota:
· PKCS#1 v2.0 y PKCS#1 v2.1 se especifican mediante la función de Carmichael en vez de la función de Euler, donde indica elmínimo común múltiplo.
· Para una mayor eficiencia los siguientes valores se calculan de antemano y se almacenan como parte de la clave privada:
· y : los primos para la generación de las claves,
· y ,
· .
Cifrado[editar]
Alicia comunica su clave pública a Bob y guarda la clave privada en secreto. Ahora Bob desea enviar un mensaje a Alicia.
Primero, Bob convierte en un número entero menor que mediante un protocolo reversible acordado de antemano. Luego calcula el texto cifrado mediante la operación
.
Esto puede hacerse rápido mediante el método de exponenciación binaria. Ahora Bob transmite a Alicia.
Descifrado[editar]
Alicia puede recuperar a partir de usando su exponente de la clave privada mediante el siguiente cálculo:
.
Ahora que tiene en su poder, puede recuperar el mensaje original invirtiendo el padding scheme.
El procedimiento anterior funciona porque
.
Esto es así porque, como hemos elegido y de forma que , se cumple
.
La última congruencia se sigue directamente del teorema de Euler cuando es coprimo con . Puede demostrarse que las ecuaciones se cumplen para todo usando congruencias y el teorema chino del resto.
Esto muestra que se obtiene el mensaje original:
.
Ejemplo[editar]
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 un 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 es (e, n). La clave privada es (d, n). La función de cifrado es:
Donde m es el texto sin cifrar. La función de descifrado es:
Donde c es el texto cifrado. Para cifrar el valor del texto sin cifrar 123, nosotros calculamos:
Para descifrar el valor del texto cifrado, nosotros calculamos:
Los cálculos de potencias grandes y del módulo pueden ser eficientemente realizados por el algoritmo de multiplicación cuadrática para exponenciación modular.
Esquemas de relleno[editar]
RSA debe ser combinado con algún esquema de relleno, ya que si no el valor de M puede llevar a textos cifrados inseguros.
· El valor m =0 o m =1 siempre produce textos cifrados iguales para 0 o 1 respectivamente, debido a propiedades de los exponentes.
· Cuando ciframos con exponentes pequeños (e =3) y valores pequeños de m, el resultado de m podría ser estrictamente menor que el módulo de n. En este caso, el texto cifrado podría ser fácilmente descifrado, tomando la raíz e-ésima del texto cifrado sin tener en cuenta el módulo.
· Dado que el cifrado RSA es un algoritmo determinista (no tiene componentes aleatorios) un atacante puede lanzar con éxito un ataque de texto elegido contra el criptosistema, construyendo un diccionario de textos probables con la llave pública, y almacenando el resultado cifrado. Observando los textos cifrados en un canal de comunicación, el atacante puede usar este diccionario para descifrar el contenido del mensaje.
En la práctica, el primero de los dos problemas podría presentarse cuando enviamos pequeños mensajes ASCII donde m es la concatenación de uno o más carácter/es ASCII codificado/s. Un mensaje consiste en un solo carácter ASCII NUL (cuyo valor es 0) se codificaría como m =0, produciendo un texto cifrado de 0 sin importar qué valores de e y N son usados. Probablemente, un solo ASCII SOH (cuyo valor es 1) produciría siempre un texto cifrado de 1. Para sistemas convencionales al usar valores pequeños de e, como 3, un solo carácter ASCII mensaje codificado usando este esquema sería inseguro, ya que el máximo valor de m sería 255, y 255³ es menor que cualquier módulo razonable. De esta manera los textos sin cifrar podrían ser recuperados simplemente tomando la raíz cúbica del texto cifrado. Para evitar estos problemas, la implementación práctica del RSA se ayuda de algunas estructuras, uso del rellenado aleatorio dentro del valor de m antes del cifrado. Esta técnica asegura que m no caerá en el rango de textos sin cifrar inseguros, y que dado un mensaje, una vez que este rellenado, cifrará uno de los números grandes de los posibles textos cifrados. La última característica es la incrementación del diccionario haciendo este intratable a la hora de realizar un ataque.
El esquema de relleno de RSA (en inglés RSA-padding scheme) debe ser cuidadosamente diseñado para prevenir ataques sofisticados los cuales podrían ser facilitados por la predictibilidad de la estructura del mensaje. Ejemplos de esquema de relleno usados con RSA:2 3
· RSA-OAEP (Optimal Asymetric Encryption Padding) o su versión moficada RSA-OAEP+. Este tipo de relleno es usado por ejemplo en PKCS#1 y en la red de anonimato TOR
· RSA-SAEP+ (Simplified Asymmetric Encryption Padding)
· RSA-REACT
· RSA-PSS (Probabilistic Signature Scheme). Usado por ejemplo en PKCS#1
Algunos de estos esquemas de relleno, por ejemplo RSA-OAEP y RSA-PSS, encuentran su 'justificación' teórica en el polémico modelo de oráculo aleatorio.
Autenticación de mensajes[editar]
RSA puede también ser usado para autenticar un mensaje. Supongamos que Alicia desea enviar un mensaje autentificado a Bob. Ella produce un valor hash del mensaje, lo eleva a la potencia de d≡ mod n (como ella hace cuando descifra mensajes), y lo adjunta al mensaje como una “firma”. Cuando Bob recibe el mensaje autentificado, utiliza el mismo algoritmo hash en conjunción con la clave pública de Alice. Eleva la firma recibida a la potencia de e≡ mod n (como hace cuando cifra mensajes), y compara el resultado hash obtenido con el valor hash del mensaje. Si ambos coinciden, él sabe que el autor del mensaje estaba en posesión de la clave secreta de Alicia, y que el mensaje no ha sido tratado de forzar (no ha sufrido ataques).
Se debe observar que la seguridad de los padding-schemes como RSA-PSS son esenciales tanto para la seguridad de la firma como para el cifrado de mensajes, y que nunca se debería usar la misma clave para propósitos de cifrado y de autentificación.
Seguridad[editar]
La seguridad del criptosistema RSA está basado en dos problemas matemáticos: el problema de factorizar números grandes y el problema RSA. El descifrado completo de un texto cifrado con RSA es computacionalmente intratable, no se ha encontrado un algoritmo eficiente todavía para ambos problemas. Proveyendo la seguridad contra el descifrado parcial podría requerir la adición de una seguridad padding scheme.
El problema del RSA se define como la tarea de tomar raíces e -ésimas módulo a componer n: recuperando un valor m tal que me ≡ c (mod n), donde (e, n) es una clave pública RSA y c es el texto cifrado con RSA. Actualmente la aproximación para solventar el problema del RSA es el factor del módulo n. Con la capacidad para recuperar factores primos, un atacante puede calcular el exponente secreto d desde una clave pública (e, n), entonces descifra c usando el procedimiento estándar. Para conseguir esto, un atacante debe factorizar n en p y q, y calcular (p -1)(q -1) con lo que le permite determinar d y e. No se ha encontrado ningún método en tiempo polinómico para la factorización de enteros largos. Ver factorización de enteros para la discusión de este problema.
La factorización de números grandes por lo general proponen métodos teniendo 663 bits de longitud usando métodos distribuidos avanzados. Las claves RSA son normalmente de entre 1024-2048 bits de longitud. Algunos expertos creen que las claves de 1024 bits podrían comenzar a ser débiles en poco tiempo; claves de 4096 bits podrían ser rotas en un futuro. Por lo tanto, si n es suficientemente grande el algoritmo RSA es seguro. Si n tiene 256 bits o menos, puede ser factorizado en pocas horas con un ordenador personal, usando software libre. Si n tiene 512 bits o menos, puede ser factorizado por varios cientos de computadoras como en 1999. Un dispositivo hardware teórico llamadoTWIRL descrito por Shamir y Tromer en el 2003 cuestionó a la seguridad de claves de 1024 bits. Se recomienda actualmente que n sea como mínimo de 2048 bits de longitud.
En 1993, Peter Shor publicó su algoritmo, mostrando que una computadora cuántica podría en principio mejorar la factorización en tiempo polinomial, mostrando RSA como un algoritmo obsoleto. Sin embargo, las computadoras cuánticas no se esperan que acaben su desarrollo hasta dentro de muchos años.
Consideraciones prácticas[editar]
Generación de claves[editar]
Buscando números primos grandes p y q por el test de aleatoriedad y realizando tests probabilísticos de primalidad los cuales eliminan virtualmente todos los no-primos (eficientemente).
Los números p y q no deberían ser suficientemente cercanos para que la factorización de Fermat para n sea exitosa. Además, si cualquier p -1 o q -1 tiene sólo factores primos pequeños, n puede ser factorizado rápidamente, con lo que estos valores de p o q deben ser descartados.
No se debería emplear un método de búsqueda de primos con el cual se dé alguna información cualquiera sobre los primos al atacante. En particular, se debe utilizar un buen generador aleatorio de números primos para el valor empleado. Obsérvese que el requerimiento está en que ambos sean aleatorios e impredecibles. No son el mismo criterio; un número podría haber sido elegido por un proceso aleatorio, pero si éste es predecible de cualquier forma (o parcialmente predecible), el método usado resultará en una baja seguridad. Por ejemplo: la tabla de números aleatorios de Rand Corp en 1950 podría servir muy bien como ejemplo de criterio verdaderamente aleatorio, pero ha sido publicada y a ésta puede acceder el atacante. Si el atacante puede conjeturar la mitad de los dígitos de p o q, él podría rápidamente calcular la otra mitad. (Ver Coppersmith en 1997).
Es importante que la clave secreta d sea muy grande. Wiener mostró en 1990 que si p está entre q y 2 q (es típico) y d < n 1/4/3, entonces d puede calcularse eficientemente a partir de n y e. Aunque valores de e tan bajos como 3 se han usado en el pasado, los exponentes pequeños en RSA están actualmente en desuso, por razones que incluyen el no relleno del texto sin cifrar, vulnerabilidad listada antes. 65537 es normalmente usado como valor de e, considerado demasiado grande para evitar ataques de exponenciación pequeños, de hecho tiene un peso de Hamming suficiente para facilitar una exponenciación eficiente.
Velocidad[editar]
RSA es mucho más lento que DES y que otros criptosistemas simétricos. En la práctica, Bob normalmente cifra mensajes con algoritmos simétricos, cifra la clave simétrica con RSA, y transmite a ambos dicha clave (es decir la transmite cifrada con RSA) y el mensaje simétricamente cifrado a Alicia.
Esto plantea además problemas adicionales de seguridad, por ejemplo, es de gran importancia usar un generador aleatorio fuerte para claves simétricas, porque de otra forma Eve (un atacante que quiera averiguar el contenido del mensaje) podría puentear la clave asimétrica de RSA mediante la adivinación de la clave simétrica.
Distribución de claves[editar]
Como con todos los cifrados, es importante cómo se distribuyan las claves públicas del RSA. La distribución de la clave debe ser segura contra un atacante que se disponga a espiar el canal para hacer un ataque de replay. Supongamos Eve (atacante) tiene alguna forma de dar a Bob arbitrariamente claves y hacerle creer que provienen de Alicia. Supongamos que Eve puede interceptar transmisiones entre Alicia y Bob. Eve envía a Bob su propia clave pública, como Bob cree que es de Alicia, Eve puede entonces interceptar cualquier texto cifrado enviado por Bob, descifrarlo con su propia clave secreta, guardar una copia del mensaje, cifrar el mensaje con la clave pública de Alicia, y enviar el nuevo texto cifrado a Alicia. En principio, ni Alicia ni Bob han detectado la presencia de Eve. Contra la defensa de ataques algunos están basados en certificados digitales u otros componentes de infraestructuras de la clave pública.
4. Бесключевые хэш-функции. Основные требования и примеры построения. Атаки на хэш-функции. Хэш-функция MD5.