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).