¿Cómo se asignan las claves openvpn / easy-rsa a las variables del algoritmo RSA?

0

Estaba leyendo un poco sobre openvpn y pki infra y estoy confundido por algunas de las preguntas planteadas por mi colega. :) Esta respuesta me ayudó a comprender más: enlace

Pero todavía estoy atascado con algunas preguntas. La búsqueda no ha ayudado mucho.

1.1. En el proceso openvpn con pki, creamos primero el ca, que nos da ca.crt y ca.key; más importante, obtenemos un dh2048.pem y un crl.pem.

1.2. Luego vamos a crear archivos (.keys y .crts) para las entidades (aquí, entidad significa openvpn cliente o servidor; básicamente, un 'cliente' para la ca)

PKI usa RSA, que es el siguiente (copiado de: enlace )

2.1 n = pq; p, q = primos grandes

2.2 phi = (p-1) (q-1)

2.3 e < n, tal que gcd (e, d) = 1

2.4 d = e ^ (- 1) mod phi

2.5 (n, d) es la clave privada

2.6 (n, e) es la clave pública

Veo que ca.crt es una clave, dh2048.pem es una clave, client.crt es un texto y client.key es nuevamente una clave. ¿Cómo se correlacionan con las variables de algoritmo anteriores? Gracias.

EDIT1:

Un apéndice a la pregunta.

El manual de openvpn dice que tanto el servidor openvpn como el cliente openvpn se autentican entre sí. También he leído que la CA puede estar completamente fuera de línea por motivos de seguridad. Entonces, ¿cómo contactan a la CA si es necesario? Basado en RSA (y como se trata de cómputo), asumo que nunca se ponen en contacto con la CA. Entonces, ¿cómo funciona la solución? Gracias.

EDIT2:

Si RSA es lo que se sigue en PKI, ¿por qué un servicio de tiempo confiable es un requisito en la infraestructura PKI? Gracias.

    
pregunta krish7919 13.01.2015 - 07:21
fuente

2 respuestas

0

Estoy publicando esto como una respuesta, ya que es demasiado largo para entrar como un comentario. :)

El siguiente proceso descrito se refiere a openvpn & PKI.

El cliente tiene los siguientes archivos: ca.crt, client.crt, client.key

El servidor tiene los siguientes archivos: ca.crt, server.crt, server.key, dh2048.pem, crl.pem

El proceso según mi entendimiento:

  1. Intercambio de claves ( reference ): el servidor envía dh2048 al cliente en el claro. El cliente selecciona un módulo de raíz primitivo relativo al dh2048 prime y comparte una clave de sesión secreta utilizando el intercambio de claves Diffie-Hellman. Básicamente tienen canal de comunicación seguro ahora. Sin embargo, el servidor & El cliente sigue siendo 2 entidades que decidieron hablar entre sí. No tienen nada en común (es decir, no hay confianza). EDITAR: En realidad, después de leer enlace , siento que el dh2048 no se envía como texto simple. Consulte también RFC5246.

  2. CA los hace comunes. ¿Cómo verifican que cada uno de ellos proviene de la misma CA? La función principal de la CA es firmar y publicar digitalmente la clave pública vinculada a un usuario determinado. Esto se hace usando la propia clave privada de la CA, de modo que la confianza en la clave del usuario se basa en la confianza de uno en la validez de la clave de la CA (del artículo PKI de wikipedia) .

  3. Así que intercambian sus claves públicas (firmadas / encriptadas) entre sí. El otro extremo tiene la clave pública de CA y puede decodificar la clave firmada para obtener la clave pública real. Esto verifica que tenían la misma CA. Usando la clave pública sin firmar / actual ahora, intercambian sus datos (comienzan con un apretón de manos y establecen otra clave de sesión, o aumentan el tiempo de espera para la clave de sesión establecida anteriormente; no lo sé con seguridad).

  4. Una vez que han llegado hasta aquí, pueden cifrar los mensajes usando la clave de sesión (nueva / antigua) y el otro extremo puede decodificarla.

  5. El paso adicional es que el servidor en openvpn también verifica la entrada de clientes en crl.pem (que es solo una lista de firmas que han sido revocadas; y ahora que lo pienso, creo que tiene la clave original sin firmar / sin cifrar! Sin embargo, tengo que verificar esto).

  6. El ca.crt es texto sin formato y, por lo tanto, no pueden intercambiar claves públicas en texto sin formato y necesitan una clave de sesión para hacerlo, y por lo tanto DHKE.

respondido por el krish7919 11.03.2015 - 14:52
fuente
1

Creando una Autoridad de Certificación

Cuando cree sus certificados de Autoridad de Certificación obtendrá ca.crt y ca.key archivos . El archivo .crt es la clave pública autofirmada y el archivo .key es el archivo de clave privada. No es tan simple como esto. Ambos archivos están codificados en base64, y los datos debajo están DER codificado . Como es probable que esté generando X.509 .

Realmente, todo lo que necesita comprender es que tiene un certificado autofirmado cuya porción pública está almacenada en ca.crt y la porción privada está almacenada en ca.key . Recuerde que debe mantener ca.key secret Todos los grandes números primos, las operaciones de GCD y todo lo que no está a cargo de lo que esté usando para generar el certificado.

El dh2048.pem no es una clave, son los parámetros Diffie Hellman para el servidor. Estos no tienen nada que ver con sus claves RSA, y solo se usan para cuando se usa Diffie Hellman para conectarse a su servidor en lugar de RSA. La diferencia entre los dos se puede encontrar en la sección Intercambio de claves de ¿Cómo funciona SSL / TLS? Esto no debería tener nada que ver con PKI.

El crl.pem se genera para ser su Lista de revocación de certificados. Cualquier certificado que revoque que haya sido firmado con su CA se agregará a este archivo. En su configuración de OpenSSL (supongo que está configurando OpenSSL, pero la idea se aplica a cualquier configuración) se señalará este archivo CRL. De esa manera sabrá dónde verificar los certificados revocados.

Firma de certificados

Ahora que tiene una Autoridad de certificación, puede comenzar a firmar certificados de usuarios para su sistema. Los usuarios hacen esto generando sus propias claves RSA client.crt y client.key . Estas claves deben generarse cada vez que se introduce un nuevo usuario en el sistema. Nuevamente, .crt es la parte pública de la clave y .key es la parte privada. El nuevo usuario debe mantener en secreto client.key .

Para firmar el certificado de un nuevo usuario, se realiza una solicitud de firma de certificado (CSR). Hay un comando en OpenSSL para hacer esto. La solicitud contiene la clave pública del usuario que se agregará y otra información pública que necesita la solicitud. El certificado del cliente se agregará a las listas autorizadas apropiadas en el servidor y se producirá un nuevo certificado firmado. Esto es lo que el usuario tendrá que importar a su navegador para visitar las páginas habilitadas para PKI.

Hay un gran tutorial sobre Infraestructura de clave pública en el sitio de OpenSSL para futuras referencias.

Esperemos que esto aclare algunas cosas. Cada variable que ha mencionado en el algoritmo RSA se genera cuando crea un certificado. Los certificados públicos no los contienen todos, pero las partes privadas generalmente los contienen. Para propósitos de implementación no tendrá que preocuparse por ellos. Solo recuerda que hay un par de claves públicas y privadas.

Para responder a tu 1 st Editar

El intercambio de CSR y el certificado resultante generalmente se realiza utilizando algún tipo de copia segura (scp). El servidor y el cliente deben estar en comunicación entre sí. La afirmación de que "el cliente y el servidor se autentican entre sí" no es realmente correcta. El cliente desea ser parte de la infraestructura, por lo que debe demostrar su identidad al servidor de firmas. Como Autoridad de certificación, es su responsabilidad verificar la identidad del cliente antes de procesar la CSR. El propio CSR debe tener toda la información necesaria para verificar la identidad del cliente que se agregará.

Para responder a su 2 nd Editar

RSA es solo el algoritmo de clave pública utilizado para la generación, el cifrado / descifrado de claves y la firma. La infraestructura de clave pública es una colección de estándares y servicios necesarios para implementar una infraestructura segura. Un servicio de sincronización confiable es probablemente uno de los muchos requisitos. Al igual que una Autoridad de Certificación es un requisito.

    
respondido por el RoraΖ 13.01.2015 - 14:13
fuente

Lea otras preguntas en las etiquetas