Wie es funktioniert: Blick in das einzigartige AdGuard VPN-Protokoll
Seit Jahren konzentrierten wir uns auf die Entwicklung aller Arten von Werbeblocker-Apps und Browsererweiterungen. Und vor zwei Jahren haben wir beschlossen, unseren eigenen VPN-Service scheinbar aus dem Nichts zu entwickeln. In Wirklichkeit gab es einige Gründe, die uns dazu motivierten.
- AdGuard Mobile Apps hatten Kompatibilitätsprobleme mit VPN-Apps. Deshalb hielten wir die Entwicklung eines hauseigenen VPN als die einzige machbare Lösung, die Kompatibilität garantieren kann: Nachdem wir etwas Magie angewendet haben, können die beiden Apps als ein VPN-Service zusammenarbeiten.
- VPN schien mehr als relevant für unsere Prinzipien.
- Schließlich sind wir während der jahrelangen Entwicklung von AdGuard-Software zu Experten für die Filterung des Netzwerkverkehrs geworden. Dies sollte es uns ermöglichen, etwas Neues einzubringen, anstatt ein weiteres typisches VPN zu machen.
Von Anfang an haben wir uns entschieden, dass AdGuard VPN einen wesentlichen Unterschied zu seinen Mitbewerbern haben wird — wir sollen ein internes VPN-Protokoll entwickeln und bereitstellen, ohne eine der vorbereiteten Lösungen auszuwählen.
Warum sich so viel Mühe machen, könntest du fragen. In diesem Artikel erklären wir Ihnen, warum wir mit bestehenden Protokollen nicht zufrieden waren und unseren eigenen erstellt haben, und teilen unsere Roadmap mit.
Spoiler: Das AdGuard VPN-Protokoll ist schwerer zu aufzudecken und schneller als seine Alternativen.
Aber zuerst müssen wir uns mit einigen technischen Aspekten befassen und herausfinden:
- Wie Internet funktioniert
- Wie populäre VPN-Protokolle funktionieren
- Einschränkungen bestehender Protokolle
- Vorteile des AdGuard VPN-Protokolls
- Unsere Entwicklungspläne
Wie Internet funktioniert
Keine Angst: Wir werden nicht das gesamte Internet hier erklären, aber wollen seine fundamentale Funktionen betrachten. Also, die gesamte Kommunikation im Internet basiert auf der Übertragung kleiner Datenpakete von einem Computer zu einem Server und zurück. Es gibt verschiedene Arten von Paketen, die jeweils ihren Zweck erfüllen. Regeln der Paketkapselung und Verarbeitung werden als Protokoll bezeichnet.
IP-Protokoll
Ich bin sicher, Sie haben von der IP-Adresse gehört, nicht wahr? Also, IP-Adresse ist ein Teil des IP-Protokolls — des Hauptmechanismus der Netzwerk-Datenübertragung. Jedes Paket besteht aus drei Teilen: Daten, IP-Adressen des Absenders und des Empfängers.
Der Empfänger weiß, wer das Paket gesendet hat, und kann daher einige Daten zurücksenden. Das "reine" IP-Protokoll wird jedoch praktisch nicht verwendet, aber zwei andere darauf basierende Protokolle werden überall verwendet — TCP und UDP.
TCP-Protokoll
TCP ist das wichtigste "Arbeiter" des Internets. Wenn Sie eine Website öffnen, ist es sehr wahrscheinlich, dass TCP für die Datenübertragung verwendet wird.
Ein TCP-Paket besteht aus vier Teilen:
- IP-Paket-Header, einschließlich Quell- und Zieladressen.
- Portnummern des Absenders und des Empfängers. Diese Nummer wird benötigt, damit das Betriebssystem versteht, an welches Programm das Paket zur Verarbeitung gesendet werden soll.
- Paketsequenznummer. Pakete kommen dem Empfänger möglicherweise nicht in der Reihenfolge an, in der sie gesendet wurden. Sequenznummern ermöglichen die Wiederherstellung der richtigen Sequenz.
- Pakettyp. Diese Eigenschaft wird benötigt, um "garantierte Lieferung" zu implementieren, die unten diskutiert wird.
Unabhängig davon, welches Netzwerk Sie verwenden, gibt es die Möglichkeit, dass einige gesendete Pakete auf ihrem Weg verloren werden. Das TCP-Protokoll stellt sicher, dass das Ziel erfolgreich erreicht wird: Als Antwort auf jedes gesendete Paket sendet der Empfänger ein kleines TCP-Paket, das den Empfang bestätigt. Wenn der Absender keine Bestätigung erhält, sendet er das Paket erneut, bis die Bestätigung endgültig eingegangen ist.
UDP-Protokoll
UDP ist ein weiteres bekanntes, obwohl weniger beliebtes, IP-basiertes Protokoll. Im Vergleich zum IP-Protokoll besteht der einzige Unterschied darin, dass es außer Daten selbst und Adressen des Absenders und des Empfängers auch Informationen über Portnummern überträgt (siehe die Beschreibung der Portnummern im TCP-Abschnitt). Wie Sie aus der Animation sehen können, bewegt sich der Datenpaketfluss schneller als bei TCP — und kein Wunder, dass es in UDP keine Lieferbestätigung gibt. Im Gegensatz zu TCP garantiert UDP nichts. Aber es sendet auch keine zusätzlichen Bestätigungspakete, was es schneller macht.
Wie VPN-Protokolle funktionieren
Wenn Sie einen Brief oder eine E-Mail an jemanden senden, können Sie auf den Inhalt, die Kopfzeile und die Signatur verzichten, jedoch nicht auf die Adresse des Empfängers. Das Internet funktioniert genauso — Sie benötigen eine IP-Adresse, um Daten zu senden.
Wenn Sie eine Website besuchen, ist Ihre IP-Adresse für sie sichtbar, und wenn man die IP-Adresse kennt, ist es nicht so schwierig, den Standort des Benutzers herauszufinden. Mit einem VPN können Ihre Daten über eine verschlüsselte Verbindung von Ihrem Zuhause/Arbeitsplatz oder Smartphone zu einem anderen Punkt im Internet, möglicherweise in einem anderen Land, und dann ins öffentliche Internet geleitet werden. Wie ein hinterhältiger Hase, der in ein Loch taucht, das zum Wunderland führt.
Als Ergebnis der Verschlüsselung wird Ihren Daten eine IP-Adresse vom anderen Ende des Tunnels anstelle von Ihrer Heim- oder Arbeitsadresse zugewiesen. Wenn Sie nun eine Verbindung zu einem Webserver herstellen, wird nicht Ihre Heim-IP-Adresse angezeigt, sondern die einer anderen Person, die zum VPN-Endpunkt gehört. Wenn Sie also auf eine Website gehen, werden Ihre Daten nicht weitergegeben.
Wahrscheinlich wussten Sie das schon, aber eine Zusammenfassung würde nicht schaden, oder? Lassen Sie uns nun tatsächlich in die technischen Details graben. Damit ein VPN funktioniert, muss es Daten von Ihrem Gerät zum VPN-Server und zurück übertragen und verschlüsseln. Die Regeln zum Übertragen und Verschlüsseln dieser Daten werden als VPN-Protokoll bezeichnet. Die verbreitesten VPN-Protokolle sind OpenVPN, WireGuard und IPSec. Sie sind alle ungefähr gleich und funktionieren sehr ähnlich, aber der Teufel steckt im Detail (der Verschlüsselung und Verbindungsaufbau).
Schauen wir uns mal an, wie sie funktionieren. Angenommen, Sie möchten eine Website besuchen. Wenn Sie ein VPN aktiviert haben, vermittelt der VPN-Server zwischen Ihnen und der Website. Zunächst wird ein verschlüsseltes IP-Paket an den Server gesendet. Der VPN-Server entschlüsselt es, ändert die "Absenderadresse" (d.h. Ihre IP) und sendet das Paket an den Empfänger (d.h. die Website). Dies wird normalerweise mit UDP als Transport durchgeführt, da es im Allgemeinen "schneller" ist, da nicht auf die Bestätigung gewartet werden muss.
Einschränkungen bestehender VPN-Protokolle
Alle populäre VPN-Protokolle (OpenVPN, WireGuard, IPSec usw.) sind durch zwei Mängel vereint:
- Sie können auf Netzwerkebene leicht erkannt und blockiert werden.
- Wenn Sie versuchen, sie zu "verstecken", sinkt die Leistung.
Um die Verwendung von VPN zu "verbergen", wird der Datenfluss häufig in eine TCP-Verbindung "eingeschlossen" und manchmal zusätzlich verschlüsselt, damit der Datenverkehr wie eine normale Website-Verbindung aussieht. Leider hat dieser Ansatz einen Nachteil - aufgrund der Verwendung von TCP ist eine zusätzliche Lieferbestätigung erforderlich.
Mit jedem beliebten VPN-Protokoll stehen wir also immer vor einem Kompromiss: schnell, aber einfach zu erkennen vs. langsam.
Warum AdGuard VPN so toll ist
Wir haben das AdGuard VPN-Protokoll entwickelt, weil wir die Nachteile früherer Protokolle erkannt haben und nicht bereit waren, damit umzugehen. Was sind also seine Stärken?
- Es ist fast unmöglich, von normalem HTTPS-Verkehr zu unterscheiden, das heißt, die Verbindung zum AdGuard VPN-Server sieht genauso aus wie die Verbindung zu einer normalen Website.
- Für die Verschlüsselung verwenden wir HTTPS (TLS), das diese Aufgabe perfekt bewältigt. Es ist die beliebteste Verschlüsselungsmethode der Welt, und die Bibliotheken, die es implementieren, werden ständig auf Sicherheit geprüft.
Einige vorhandene VPN-Protokolle übernehmen auch die Verschlüsselungsaufgabe, und sie (und damit die Tatsache der Verwendung eines VPN) sind schwer zu erkennen. Das hat jedoch normalerweise den Preis einer reduzierten Geschwindigkeit. Dies ist dank mehrerer Lösungen nicht unser Fall.
- Wir verwenden das HTTP/2-Transportprotokoll, das es praktisch unmöglich macht, das AdGuard VPN-Protokoll bei hoher Geschwindigkeit zu erkennen.
- Im Gegensatz zu anderen bedient das AdGuard VPN-Protokoll mit Daten und nicht mit Paketen. Das bedeutet, dass AdGuard VPN für jede Verbindung einen separaten "Tunnel" aufbaut, jeder HTTP/2-Stream entspricht einer Verbindung. AdGuard VPN überträgt Daten über diesen Tunnel. Auf diese Weise können wir den Vorgang beschleunigen, indem wir Bestätigungspakete speichern, da wir die Daten mehrerer Pakete zu einem puffern können, bevor wir sie an den VPN-Server (oder vom Server an den Client) senden. Und je weniger Pakete, desto weniger Bestätigungen werden benötigt.
Pläne für die Zukunft
Umstellung auf HTTP/3 und QUIC
Als erstes beabsichtigen wir, die Protokolle HTTP/3 und QUIC für die Kommunikation mit dem Server zu verwenden. HTTP/3 ist die neueste, fortschrittlichste Version von HTTP. Leider wirken sich die neuen Protokolle nicht auf die Geschwindigkeit aus, wenn die Verbindung in Ordnung und stabil ist, aber ihre Vorteile zeigen sich, wenn die Verbindung schlechter ist – beispielsweise auf Mobilgeräten oder beim Herstellen einer Verbindung zu öffentlichem WLAN. Es gibt mehrere offensichtliche Vorteile der neuen Protokolle – sie verursachen keine Paketwiederübertragungen und Head-of-Line-Blocking (oder HoLB) Warteschlangen, und sie ermöglichen auch die Verbindungsmigration. Ohne zu technisch zu sein, ist der Hauptvorteil die bereits erwähnte Verbesserung der Verbindungsqualität unter nicht idealen Bedingungen.
TCP und andere Protokolle, die darüber funktionieren (TLS, SSL, HTTP/1.1 und HTTP/2), gibt es schon eine Weile und sind großartig in dem, was sie tun, aber es gibt nur eine Sache: Sie brauchen nahezu perfekte Bedingungen, um reibungslos zu funktionieren. Das bedeutet, dass sie in einem Netzwerk mit einer stabilen und qualitativ hochwertigen Verbindung (z. B. einem Heim-Wi-Fi-Netzwerk) eine gute Leistung erbringen. Wenn Sie jedoch mit ihren Mobilfunknetzen in die Außenwelt eintreten, können Sie sich nicht vor schwachen Signalen, langsamen Verbindungen und anderen Problemen schützen, die Paketverlust verursachen. Diese Verluste führen zu dem oben erwähnten Retransmissions und HoLB. Selbst 5G ist nicht allmächtig, und die Verbindung wird in Aufzügen und langen U-Bahn-Abschnitten zwischen den Stationen schlechter sein. Mit VPN über HTTP/3 ist das Problem auf magische Weise gelöst: Die VPN-Verbindung wird nicht unterbrochen, selbst wenn Sie in einen Aufzug gehen oder sich das Netzwerk aus einem anderen Grund ändert.
Wir testen derzeit einen Prototyp dieser neuen Implementierung. Erwarten Sie, dass es in ein paar Monaten fertig ist.
Оpen-Source
Wenn Sie schon lange mit AdGuard vertraut sind, wissen Sie bereits, wie viele unserer Produkte Open-Source sind. Das Konzept der Open-Source-Software liegt uns am Herzen, weil wir glauben, dass solche Projekte Menschen helfen und zur Entwicklung von Technologie beitragen. Aber unser Ansatz ist datenschutzfreundlich, so dass wir Produkte nur Open-Source machen, wo möglich.
Wir werden unsere Protokollimplementierung in Zukunft öffentlich zugänglich machen. Leider haben wir im Moment nicht genug Zeit, um das Projekt vorzubereiten, weil es viel Arbeit ist. Wir hoffen jedoch, dass wir bis Ende dieses Jahres genügend Zeit finden und den Code sowohl der Server als auch der Client-Implementierungen veröffentlichen können.
Unser Protokoll wird von allen Mobil- und Desktop-Apps von AdGuard VPN verwendet. Laden Sie jetzt eines unserer Produkte (oder mehrere!) und verwenden Sie es zu wissen, dass Ihre Daten in der sichersten Weise geschützt sind. Und wenn Sie möchten, teilen Sie Ihre Eindrücke mit uns — im Kommentarbereich des Blogposts oder in sozialen Netzwerken.