Ich habe TLS-Crypt gelesen und war neugierig, ob dies die Sicherheit erhöht und die Wahrscheinlichkeit verringert, dass Schlüssel während Handshakes kompromittiert werden, und ob es im Vergleich zu TLS-Auth eine bessere Sicherheit bietet.
Vielleicht kann jemand TLS-Auth und TLS-Crypt besser erklären und erklären, wie sie die Sicherheit verbessern?
meine aktuelle Klientenakte:
client
tls-client
dev tun
proto udp
remote 1.2.3.4 9999
<ca>
</ca>
<cert>
</cert>
<key>
</key>
pull
auth-nocache
cipher AES-256-CBC
keysize 256
compress lz4-v2
reneg-sec 36000
keepalive 30 120
Antwort1
Der TLS-Handshake kann mehr oder weniger in die folgenden Schritte unterteilt werden:
- Clients senden „Client Hello“ zusammen mit dem Zufallswert des Clients und der unterstützten Verschlüsselungssammlung an den Server.
- Der Server antwortet dem Client mit „Server-Hallo“ zusammen mit dem Zufallswert des Servers und der gewählten Chiffriersuite.
- Der Server sendet sein Zertifikat zur Authentifizierung an den Client.
- Der Client überprüft die Serveridentität.
- Der Client erstellt ein zufälliges Pre-Master-Secret und verschlüsselt es mit dem öffentlichen Schlüssel aus dem Server-Zertifikat.
- Der Client sendet das verschlüsselte Pre-Master-Secret an den Server.
- Der Server KANN bei Bedarf ein Zertifikat vom Client anfordern.
- Sowohl Server als auch Client generieren den Sitzungsschlüssel basierend auf dem Pre-Master-Secret.
- Server und Client können nun mit Hilfe des Sitzungsschlüssels verschlüsselte Nachrichten austauschen.
Der Unterschied zwischen TLS-Auth und TLS-Crypt besteht darin, dass TLS-Crypt ab Schritt 1 alle Nachrichten mit einem vorab freigegebenen Schlüssel verschlüsselt.
Dies bietet mehrere Vorteile:
- Es verbirgt die Initialisierung eines TLS-Handshakes mit einem OpenVPN-Server. Dies ist in einigen Situationen hilfreich, wenn die OpenVPN-Protokollsignatur erkannt und blockiert wird.
- Es verhindert TLS-Denial-of-Service-Angriffe. Mit tls-auth kann der Angreifer Tausende von TLS-Verbindungen gleichzeitig öffnen, ohne ein gültiges Zertifikat vorzulegen, wodurch die verfügbaren Ports blockiert werden. Mit tls-crypt würde der Server die Verbindung bereits in Schritt 1 ablehnen.
- Die Daten werden zweimal verschlüsselt, einmal durch TLS-Crypt und einmal durch die TLS-Sitzung.