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.
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:
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.
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 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:
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 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.
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.
Alle populäre VPN-Protokolle (OpenVPN, WireGuard, IPSec usw.) sind durch zwei Mängel vereint:
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.
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?
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.
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.
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.