¿Cuáles son las mejores prácticas para la seguridad basada en RSA?

3

Estoy construyendo una plataforma con una fuerte seguridad. La seguridad se basa en el cifrado de datos con el cifrado AES-256. Sin embargo, el sistema necesita "compartir" estas claves entre los usuarios y también deben transferirse de forma cifrada. Para hacer esto, estoy usando un algoritmo RSA. La pregunta es ¿cómo puedo generar un par seguro de claves RSA? También leí que p, q, φ (n) obviamente deben mantenerse en secreto. Por cierto, cuando envío una clave pública, también necesito enviar el módulo n. Dado que la función principal es conocida públicamente, todos podrían calcular φ (n), ¿verdad? Entonces, ¿cómo puedo mantener en secreto φ (n)?

    
pregunta user18215 30.12.2012 - 20:33
fuente

1 respuesta

3

Calcular φ (n) de n es equivalente a factorizar n :

  • Si conoce los factores p y q , entonces φ (n) = (p-1) (q-1) .
  • Desde φ (n) = n - (p + q) + 1 , saber n y φ (n) significa que saber pq y p + q . Sucede que p y q son las dos soluciones de la ecuación cuadrática X 2 - (p + q) X + pq = 0 ; encontrar las raíces de una ecuación cuadrática (en los números reales) es fácil .

Por lo tanto, no es una broma vacía que llamar "pública" a la clave pública: puede hacerlo público sin revelar la clave privada.

La generación de un par de claves RSA no es matemáticamente difícil, pero, como sucede con todas las cosas criptográficas, puede fallar de muchas formas sutiles que no podrías detectar (como es habitual, no puedes probar Por seguridad, solo por funcionalidad). Por lo tanto, es muy recomendable que utilice el código y las instalaciones existentes para dichos trabajos (es decir, una biblioteca criptográfica como OpenSSL , o algo que ya esté incluido en su marco de programación como el java.security.KeyPairGenerator de Java).

Producir pares de claves es la parte fácil. Infraestructura de clave pública trata sobre la parte difícil : distribuyendo Las llaves. Algoritmos asimétricos como las claves divididas RSA en una clave pública y una clave privada , y solo tiene que distribuir la parte pública, y como es pública, dicha distribución no requiere cifrado . Esto facilita la distribución de claves más fácil ; pero no es fácil . El principal problema es cómo el usuario A se asegurará de que obtuvo la clave pública "correcta" para el usuario B (es decir, la clave pública para la cual el usuario B conoce la clave privada, y no otra clave que el atacante introdujo astutamente en lugar de tecla derecha).

Se sabe que PKI es un tema muy complejo (y también un mercado difícil); la mejor práctica es no para reconstruirlo desde cero. En su lugar, busque X.509 PKI (en particular este tutorial ) y OpenPGP (X.509 está diseñado para ser compatible con PKI jerárquico, mientras que OpenPGP fue diseñado para Webs of Trust).

    
respondido por el Thomas Pornin 30.12.2012 - 21:25
fuente

Lea otras preguntas en las etiquetas