Debido a que la autenticación basada en claves es mucho más segura que la autenticación basada en nombre de usuario / contraseña porque es casi imposible de fuerza bruta. Por fuerza bruta, quiero decir, prueba todas las posibilidades hasta que encuentres la correcta que te permita iniciar sesión. Generalmente, cuanto más difícil es encontrar la combinación correcta de nombre de usuario y contraseña, más seguro está su sistema.
Por ejemplo:
Utiliza un nombre de usuario como: aH # 398x * t $
Y usas una contraseña como:% ygo74Xg2 &
Así que ambos son 10 caracteres, completamente al azar. Utiliza minúsculas, mayúsculas, números y caracteres especiales, por lo que para cada personaje hay 95 posibilidades (ASCII). Esto haría que la complejidad de utilizar el nombre de usuario 95 ^ 10 sea bruta, que la complejidad sería de 95 ^ 20. Entonces 95 ^ 20 = 3.58 * 10 ^ 39.
Si utiliza la autenticación estándar basada en clave con claves RSA de 2048 bits (2 ^ 2048 aproximadamente es igual a 10 ^ 616), esto significa que si tiene que aplicar fuerza bruta, deberá probar todas las claves RSA posibles. Esto significa efectivamente intentar todos los números primos de tamaño 1024 bit. Puede estimar aproximadamente cuántos números primos hay con la siguiente fórmula: n / ln (n)
2 ^ 1024 / ln (2 ^ 1024) aproximadamente es igual a 10 ^ 310.
Por lo tanto, si un atacante quiere atacar su sistema, tendrá que utilizar la fuerza bruta en 10 ^ 39 o 10 ^ 310 posibilidades. Digamos que un atacante es capaz de un ataque sin conexión, entonces una tarjeta de video promedio ya es capaz de intentar 10 billones de posibilidades por segundo. Muy a menudo es posible averiguar cuál es el nombre de usuario, por lo que solo tendrá que utilizar las contraseñas de bruteforce 10 ^ 19.
10 ^ 19/10 ^ 10 = 10 ^ 9 segundos = 31 años con una computadora de escritorio promedio.
Por lo tanto, es factible que un atacante resuelva esto en poco tiempo si tiene suficientes computadoras disponibles.
Pero 10 ^ 310 es casi imposible para la fuerza bruta porque el número es tan grande. Para obtener la misma seguridad, necesitaría una contraseña aleatoria de aproximadamente 156 caracteres. (10 ^ 310 = 95 ^ x)
Esta es la razón por la que casi siempre se aconsejan claves para vpn / ssh. Se encuentra en un nivel de seguridad completamente diferente al de las contraseñas.
EasyRSA es una herramienta que se incluye con openvpn para facilitar la generación de claves RSA. Pero las claves RSA generadas con OpenSSL u otras herramientas de cifrado también funcionarán perfectamente bien con openvpn.
Esta respuesta de stackoverflow explica un poco más la cantidad de números primos en las claves RSA:
enlace
Una nota lateral más precisa matemáticamente: 10 ^ 310 es simplemente el número de números primos en ese espacio clave. Hay algoritmos más eficientes que simplemente la fuerza bruta que intenta todos los números primos. El método de factorización más rápido conocido actualmente es GNFS .
exp ((((64/9) ^ (1/3)) (log (2 ^ 2048)) ^ (1/3) (log (log (2 ^ 2048)) ^ (2/3)))
512: 63.9 bit
1024: 86.7 bit
2048: 116.8 bit
4096: 156.5 bit
8192: 208.4 bit
16384: 276.5 bit
Entonces, para un número primo de 2048 bits, en lugar de tener una complejidad de 1029 bits (2 ^ 1029 = 10 ^ 310), solo tendrías que atacar 116.8 bits.
10 ^ 116.8 = 95 ^ x - > x = 59
Entonces, una contraseña aleatoria de 59 caracteres tendría una seguridad equivalente a una clave RSA de 2048 bits con los métodos de factorización actuales.