La risposta tl; dr è: Sì, la tua comprensione è corretta.
In modalità TLS, OpenVPN stabilisce una sessione TLS per eseguire uno scambio di chiavi su quella sessione TLS per ottenere le chiavi utilizzate per crittografare / autenticare i dati del payload del tunnel. Questa è una normale sessione TLS, proprio come se tu avessi aperto un sito Web HTTPS nel tuo browser, tranne che non eseguirà solo l'autenticazione del server ma anche l'autenticazione del client e quindi il client richiederà anche un certificato con chiave privata. / p>
Lo scambio di sessioni TLS su se stesso dovrebbe essere sicuro, dopo tutto è tutto quello che hai quando visiti un sito di banking online, ad esempio, ma questa è solo la teoria. In pratica ogni protocollo ha punti deboli e anche se il protocollo non ne ha, l'implementazione del protocollo può avere anche dei punti deboli. Per rendere ancora più difficile per un utente malintenzionato utilizzare tali punti deboli, è possibile utilizzare tls-crypt, che crittograferà e autentificherà i pacchetti TLS utilizzando le chiavi da un file di chiavi statico. Ora un utente malintenzionato dovrebbe anche mettere le mani su una copia di quel file chiave, altrimenti potrebbe anche conoscere un attacco utilizzabile e avere la possibilità di rimuoverlo (ad esempio, essere in grado di monitorare il traffico o eseguire un attacco man-in-the-middle ) non lo aiuterà.
Con tls-crypt, tutti i dati in esecuzione sul "canale TLS" sono crittografati e autenticati con gli stessi algoritmi dei dati del carico utile del tunnel e con le chiavi dal file delle chiavi statiche. Per i dati del carico utile TLS (autenticazione dell'utente, scambio di chiavi, push di configurazione, ecc.) Questo significa che questi dati vengono crittografati e autenticati due volte. Una volta da tls-crypt e una volta dalla stessa sessione TLS, una stessa sessione TLS viene utilizzata per crittografare e autenticare i dati e, naturalmente, anche se tls-crypt non viene utilizzato, l'autenticazione dell'utente, lo scambio di chiavi e la configurazione push deve essere crittografato e autenticato; altrimenti come sarebbe sicuro l'intero protocollo se non fosse il caso?
Nonostante l'aggiunta di ulteriore sicurezza per l'amministratore paranoico della VPN (anche se, considerando gli orribili bug SSL / TLS trovati negli ultimi due anni, queste persone appaiono molto meno paranoiche come una volta), ha anche un altro effetto positivo: previene un certo tipo di attacchi denial of service. Anche se un utente malintenzionato non può penetrare nella VPN, potrebbe comunque provare ad aprire migliaia di sessioni TLS contemporaneamente. Non essendo in grado di fornire un certificato valido, tutte queste sessioni non riusciranno alla fine, ma fino a quando non sarà così (per impostazione predefinita saranno necessari 60 secondi), un oggetto sessione TLS può utilizzare una quantità significativa di risorse di memoria per un piccolo dispositivo incorporato e l'apertura di migliaia di questi può portare rapidamente un dispositivo del genere. Con tls-crypt, già il primo pacchetto inviato non autentica / decrittografa correttamente e quindi viene immediatamente scartato. In questo caso non è nemmeno necessario creare un oggetto di sessione TLS.