Perché l'autenticazione basata su chiave è molto più sicura dell'autenticazione basata su nome utente / password perché è quasi impossibile da bruteforce. Con bruteforce intendo, prova tutte le possibilità fino a trovare quella corretta che ti consente di accedere. Generalmente più è difficile trovare la giusta combinazione nome utente / password, più sicuro è il tuo sistema.
Ad esempio:
Usi un nome utente come: aH # 398x * t $
E usi una password come:% ygo74Xg2 &
Quindi entrambi sono 10 caratteri, completamente casuali. Usi lettere minuscole, maiuscole, numeri e caratteri speciali, quindi per ogni carattere ci sono 95 possibilità (ASCII). Ciò renderebbe la complessità di bruteforce il nome utente 95 ^ 10, per rinforzare sia il nome utente che la password la complessità sarebbe 95 ^ 20. Quindi 95 ^ 20 = 3,58 * 10 ^ 39.
Se si utilizza l'autenticazione basata su chiave standard con chiavi RSA a 2048 bit (2 ^ 2048 equivale approssimativamente a 10 ^ 616), questo significa che se si deve eseguire il bruteforce, è necessario provare tutte le possibili chiavi RSA. Ciò significa efficacemente provare tutti i numeri primi di dimensione 1024 bit. Puoi stimare approssimativamente quanti numeri primi ci sono con la seguente formula: n / ln (n)
2 ^ 1024 / ln (2 ^ 1024) equivale approssimativamente a 10 ^ 310.
Quindi, se un utente malintenzionato vuole attaccare il tuo sistema, avrebbe bisogno di potenziare le possibilità 10 ^ 39 o 10 ^ 310. Supponiamo che un attaccante sia in grado di attaccare offline, quindi un videocard abbastanza normale è già in grado di provare 10 miliardi di possibilità al secondo. Molto spesso è possibile scoprire quale sia il nome utente, quindi avrebbe solo bisogno di bruteforce 10 ^ 19 password.
10 ^ 19/10 ^ 10 = 10 ^ 9 secondi = 31 anni con un computer desktop medio.
Quindi è possibile che un aggressore rompa questo in un breve lasso di tempo se ha abbastanza computer disponibili.
Ma il 10 ^ 310 è quasi impossibile alla forza bruta perché il numero è così grande. Per ottenere la stessa sicurezza avresti bisogno di una password casuale lunga circa 156 caratteri. (10 ^ 310 = 95 ^ x)
Quindi questo è il motivo per cui quasi sempre si consigliano le chiavi per vpn / ssh. È su un livello di sicurezza completamente diverso rispetto alle password.
EasyRSA è uno strumento incluso con openvpn per rendere più facile la generazione di chiavi RSA. Ma le chiavi RSA generate con OpenSSL o altri strumenti di crittografia funzioneranno perfettamente anche con openvpn.
Questa risposta StackOverflow spiega la quantità di numeri primi nelle chiavi RSA ancora:
link
Una nota di lato più matematicamente precisa: 10 ^ 310 è semplicemente il numero di numeri primi in quello spazio chiave. Esistono algoritmi più efficienti rispetto alla mera forza bruta che cercano tutti i numeri primi. Il metodo di factoring attualmente più veloce è GNFS .
exp (((64/9) ^ (1/3)) (log (2 ^ 2048)) ^ (1/3) (log (registro (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
Quindi per un numero primo a 2048 bit, invece di avere una complessità di 1029 bit (2 ^ 1029 = 10 ^ 310), dovresti solo attaccare 116.8 bit.
10 ^ 116.8 = 95 ^ x - > x = 59
Quindi una password casuale di 59 caratteri avrebbe una sicurezza equivalente a una chiave RSA a 2048 bit con i metodi di fattorizzazione correnti.