OpenVPN posee protección contra ataques pasivos y los ataques activos conocidos. La criptografía utilizada por OpenVPN son funciones de la librería OpenSSL. Se puede configurar para trabajar con llaves estáticas para una configuración sencilla, así como también se puede establecer una infraestructura de llaves públicas PKI. La PKI consiste en certificados separados (tan bien conocidos como llaves públicas), y llaves privadas para el
104 servidor y cada cliente. Además se crea un Certificado maestro de Autoridad CA y una llave privada que es usada para firmar cada certificado de los clientes y el servidor.
Figura 7.3 Funcionamiento OpenVPN
OpenVPN soporta autentificación bidireccional basada en certificados, lo que significa que el cliente debe autenticar el certificado del servidor y que el servidor debe autenticar el certificado del cliente, antes de establecer confianza mutua.
Ambos cliente y servidor se autentificarán verificando primero que el certificado esté firmado por el Certificado maestro de Autoridad CA, y luego probando la información de la cabecera del certificado, como el nombre y el tipo de certificado. Este modelo de seguridad posee muchas características deseables desde las perspectivas de una VPN:
• El servidor sólo necesita su propio certificado y llave. No necesita conocer los certificados de cada cliente que posiblemente se conecten a él.
• El servidor sòlo aceptará clientes que posean certificados firmados por la CA. Además, debido a que el servidor puede realizar la verificación sin necesidad de acceder a la llave CA, es posible para la llave CA (La llave más importante de toda la PKI) estar en una máquina diferente, aun sin que esta maquina tenga conexión a la red.
• Si la llave privada es comprometida, se puede deshabilitar agregando su certificado a la lista de revocación de certificados CRL. La CRL permite que los certificados comprometidos sean seleccionados y revocados sin necesidad de reconstruir la PKI.
• El servidor puede reforzar los derechos de acceso para un cliente en específico, basándose en algunos campos del certificado como el Common Name.
Los protocolos SSL/TLS pueden ser utilizados para una autentificación inicial y un intercambio simétrico de llaves. La construcción HMAC es una contribución fuerte y elegante de la comunidad de la criptografía. Pero sigue siendo necesario que exista una llave secreta compartida en ambos extremos de la conexión segura.
La principal innovación de la llave pública fue mostrar que los individuos pueden comunicarse de manera segura sin necesidad de la preexistencia de un medio seguro sobre el cual compartir las llaves. La criptografía de la llave pública resuelve el problema de proveer un medio seguro sobre el cual la llave compartida puede intercambiarse. El
106 verdadero cifrado ocurre con la llave simétrica compartida. El proceso de llave pública solamente nos da medios para compartir la llave electrónicamente sobre un medio inseguro. La criptografía de llave pública permite generar un par de llaves pública y privada. La llave privada no se debe dejar en el disco duro, la llave pública es publicada extensamente. Para comunicarse con alguien, lo único que se necesita es la llave pública de ese alguien. Una vez encriptado el contenido con la llave pública, solamente la llave privada puede desencriptarlo. La llave pública no prueba que la persona que se encuentra en el otro extremo del canal de comunicación es quien dice ser, el presentar la llave pública no prueba nada acerca de su identidad.
Cuando una entidad necesita enviar un mensaje, esta creara un “message digest” (código de integridad) para el mensaje, luego firma el “message digest” cifrandolo con su llave privada. Luego el paquete entero es cifrado con la llave pública del destinatario para asegurarse que sólo él puede desencriptar el paquete. Cuando el destinatario recibe el paquete este lo des-cifra con su llave privada, luego desencripta el message digest con la llave publica del remitente, asegurándose de que realmente el que le está enviando el paquete es quien es (por poseer la llave privada). Finalmente el destinatario obtiene el message digest del paquete el cual compara con el desencriptado con la llave pública del remitente y ambos son iguales, quiere decir que el paquete no ha sido modificado.
La criptografía de llave pública y la RSA fueron los pioneros en los conceptos de firmas seguras. De esta manera se puede firmar un archivo con la llave privada y publicar la llave pública, y cualquiera que reciba el archivo puede verificar que fue firmado con la
llave pública. La matemática del algoritmo dentro de la firma digital se asegura de que será prácticamente imposible realizar la firma sin tener la llave privada correcta.
El Certificado de Autoridad CA es el resultado final en un largo acoplamiento en los desarrollos en criptografía aplicada que trata de resolver los problemas de autentificación. El CA tiene una llave súper secreta que se debe mantener bien resguardada. Esta posee un equipo de investigadores que verifican las identidades de los clientes. Estos entonces firman las llaves de los clientes con su súper llave secreta.
La llave pública CA se torna en una comodidad pública, insertándose en las aplicaciones y el sistema operativo. El certificado “root” de la CA, conforma la raíz de una cadena de llaves públicas la cual puede ser usada para verificar la identidad de cada uno de los clientes de la CA. La CA resuelve el problema de autentificación. El CA es la base de la autentificación de una red segura. Para detalles de la configuración refiérase al anexo.
108
Figura 7.4 Esquema PKI
OpenVPN trata de tomar ventaja de todas las capacidades que son posibles para el espacio de usuario VPN, entre las principales capacidades tenemos la portabilidad, un estilo familiar de “daemon”, no se requieren modificaciones al “kernel” y una capa de criptografía de lujo proporcionada por la librería OpenSSL. Además OpenVPN trabaja muy bien con direccionamiento dinámico y con NAT. Soporta una gran cantidad de sistemas operativos como Linux, Windows, Mac OS X, los tres BSDs y Solaris.