Technischer Überblick des Snowflake Proxy

Technischer Überblick des Snowflake Proxy

Snowflake ist ein neuer WebRTC Pluggable Transport. Dieses Dokument bietet einen technischen Überblick über Snowflake hinsichtlich der Systemkomponenten, Interaktionen und des Codes. Es soll Snowflake einem technisch versierten Leser vorstellen und jenen, die an diesem Projekt und an der Internetfreiheit im Allgemeinen interessiert sind. Insbesondere wird in diesem Dokument die Nutzung von WebRTC durch Snowflake, sein Ansatz für das Rendezvous unter Verwendung von Domain Fronting, seine Methode zur NAT-Überquerung mittels ICE-Verhandlung und eine Reihe weiterer Überlegungen diskutiert, ohne signifikante Vorkenntnisse in diesen Themen vorauszusetzen. Snowflake und dieses Live-Dokument befinden sich in Entwicklung. Während sich das Snowflake-Projekt weiterentwickelt, wird dieses Dokument aktualisiert und zusätzliche Dokumente werden verfügbar gemacht, um Metriken, weitere Themen und andere relevante Ergebnisse im Hinblick auf zukünftige Arbeiten an diesem Projekt zu diskutieren.

Einleitung
Snowflake ist ein neues Umgehungswerkzeug, das Zugang zum freien und offenen Internet bietet. Als Pluggable Transport ermöglicht es einen einfachen Zugang zu einem System zur Umgehung von Zensur, wie zum Beispiel Tor. Es ist von früheren Arbeiten wie Flashproxy inspiriert und baut darauf auf. Snowflake ähnelt einer Mischung aus früheren Pluggable Transports, und dieses Dokument dient als Leitfaden zur Erkundung dieses Systems.
Um dies im Kontext von Tor zu veranschaulichen, ermöglicht Snowflake jedem, einen Browser-Tab offen zu lassen, um eine ephemere Tor-Brücke zu werden. Ähnlich wie das Design von Flashproxy, besteht Snowflake aus einem großen Netzwerk von hochgradig ephemeren freiwilligen Proxies, mit dem Ziel, die Fähigkeit des Zensors zu überholen, Proxy-IP-Adressen zu blockieren und eine sehr einfache, zuverlässige und schwer zu filternde Methode zur Umgehung der Zensur zu bieten. Früher hatten Benutzer Schwierigkeiten mit der manuellen Konfiguration der Portweiterleitung, was die Übernahme älterer Tools wie Flashproxy einschränkte. Snowflake adressiert die NAT-Überquerung, indem es sie automatisch macht und nicht in der Verantwortung des Benutzers liegt, neben einer Reihe von neuen Vorteilen.
Benutzerfreundlichkeit und Zuverlässigkeit sind wichtig für das Snowflake-System, sowohl im Hinblick auf die Vereinfachung des Verbindungsprozesses für Menschen in zensierten Regionen als auch auf die Ermöglichung für Freiwillige, anderen sehr einfach zu helfen, sich zu verbinden. Dies ermöglicht es dem Umgehungssystem, sowohl in der Anzahl der Freiwilligen als auch der Kunden leichter zu skalieren. Auf diese Weise wird das Snowflake-System immer stärker in Bezug auf die Umgehungskapazität, Bandbreite und Resilienz mit der Größe seines Freiwilligennetzwerks.

Überblick
Unter Verwendung von Tor als Anwendungsfall kann die Abfolge der Interaktionen in einer Snowflake-Sitzung wie folgt sein:

Ein Benutzer in der gefilterten Region möchte auf das freie und offene Internet zugreifen. Sie öffnen den Tor-Browser und wählen Snowflake als Pluggable Transport. Dies startet den Snowflake-Client.
Freiwillige außerhalb der gefilterten Region besuchen Websites, die den Snowflake-Proxy-Code hosten. Die Browser dieser Freiwilligen werden dann zu temporären Proxies, die einem Snowflake-Client zur Verfügung stehen.
Der Snowflake-Client des gefilterten Benutzers findet automatisch einige dieser freiwilligen entfernten In-Browser-Snowflake-Proxies mithilfe einer sicheren Rendezvous-Strategie, die ebenfalls NAT automatisch überquert.
Diese beiden Snowflake-Peers stellen eine Peer-to-Peer-Verbindung über WebRTC her.
Sobald WebRTC bereit ist, macht der Snowflake-Client den WebRTC-Transport für die Nutzung durch Tor verfügbar.
In der Zwischenzeit verbindet sich der Snowflake-Proxy des Freiwilligen mit einem Ziel-Tor-Relay und beginnt, den Verkehr zwischen dem Snowflake-Client und dem Tor-Relay zu übertragen.
Tor baut einen Schaltkreis auf und der Benutzer kann nun die Zensur umgehen.

Zur weiteren Klarstellung: Es ist nicht die Website, die Snowflake hostet, die als Snowflake-Proxy fungiert. Vielmehr ist es der Besucher der Website – deren Browser-Tab wird zum Freiwilligen-Proxy.
Snowflake besteht aus drei Komponenten, die diesen Prozess ermöglichen:

Der Snowflake-Client, der ein Client-Transport-Plugin ist, das der Pluggable Transport-Spezifikation entspricht. Tor nutzt dies wie jeden anderen Pluggable Transport. Jedes andere ptspec-bewusste System könnte dies ebenfalls tun. Diese Komponente ist in Golang geschrieben.
Der Snowflake-Proxy, der ein Miniatur-In-Browser-WebRTC-Proxy ist. Er überträgt Daten zwischen Snowflake-Clients und einem Ziel – für Tor wäre dies ein Tor-Relay. Diese Komponente ist in CoffeeScript geschrieben.
Der Broker, verantwortlich für das Rendezvous. Er ähnelt dem „Facilitator“ von Flashproxy, verwendet aber derzeit ausschließlich Domain Fronting. Diese Komponente ist in Golang geschrieben.

Der Snowflake-Client und der Snowflake-Proxy können auch als Snowflake-Peers bezeichnet werden.
In Snowflake erfolgt WebRTC nur zwischen den Snowflake-Peers: einem Snowflake-Client und einem Snowflake-In-Browser-Proxy, da WebRTC als Transportmittel dient, das die Filtergrenze überquert. Die Kommunikation vom Proxy zum Ziel erfolgt derzeit über WebSocket. Die Kommunikation zum Broker erfolgt über HTTPS / Domain Fronting.