4 Punkte von GN⁺ 2025-12-14 | 2 Kommentare | Auf WhatsApp teilen
  • Der Kerncode des Tor-Netzwerks wird von der bisherigen C-Sprache auf das Rust-basierte Arti umgestellt
  • Im bestehenden C-Code gibt es Schwachstellen wie Buffer Overflows, Use-after-free und Speicherkorruption
  • Die neue Version Arti 1.8.0 beseitigt durch eine Neugestaltung der Circuit-Timeouts vorhersehbare Muster und senkt das Risiko der Nachverfolgung
  • Für Betreiber von Onion-Services wurde ein neuer Befehl hinzugefügt, mit dem sie Schlüssel automatisch von C-basiertem Tor zu Arti migrieren können
  • Diese Umstellung ist ein wichtiger technischer Fortschritt des Tor-Projekts zur Verbesserung von Sicherheit und Stabilität

Wichtige Änderungen in Arti 1.8.0

  • Im Mittelpunkt dieser Veröffentlichung steht die Anwendung einer Überarbeitung der Circuit-Timeouts (circuit timeout rework)

    • Das bisherige Circuit Dirty Timeout (CDT) in Tor steuerte den Zeitpunkt der Beendigung eines Circuits mit einem einzelnen Timer
    • Dieser Ansatz war vorhersehbar, sodass Beobachter des Datenverkehrs Muster erkennen konnten
    • Arti 1.8.0 führt nutzungsbasierte Timeouts und individuelle Timer ein, sodass Circuits zu zufälligen Zeitpunkten beendet werden, wenn sie neue Verbindungen annehmen oder im Leerlauf sind
    • Dadurch wird das Risiko von Fingerprinting verringert
  • Neuer experimenteller Befehl arti hsc ctor-migrate hinzugefügt

    • Betreiber von Onion-Services können restricted discovery keys aus C-basiertem Tor in den Keystore von Arti migrieren
    • Diese Schlüssel werden für die Client-Authentifizierung verwendet, und der neue Befehl unterstützt die automatische Migration ohne manuelle Arbeit
  • Weitere Verbesserungen

    • Zahlreiche interne Komponenten wurden verbessert, darunter Routing-Architektur, Protokollimplementierung, Unterstützung für Directory Cache und Konfiguration des OR-Port-Listeners
    • Details zu den Änderungen finden sich im offiziellen Changelog von Arti 1.8.0

Hintergrund der Umstellung auf Rust

  • Das Tor-Netzwerk wird seit den frühen 2000er-Jahren auf Basis der Programmiersprache C betrieben
  • Wegen Problemen mit der Speichersicherheit in der C-Codebasis traten jedoch immer wieder Sicherheitslücken auf
  • Daher treibt das Tor-Projekt das Neuschreibungsprojekt Arti voran, das die Speichersicherheit von Rust nutzt
  • Arti implementiert die Funktionen von Tor in Rust neu, mit dem Ziel, Sicherheit, Stabilität und Wartbarkeit zu verbessern

Technische Bedeutung

  • Die Umstellung auf Rust stärkt die Struktur zur Gewährleistung der Anonymität von Tor grundlegend
  • Die Beseitigung vorhersehbaren Circuit-Verhaltens und die Automatisierung des Schlüsselmanagements tragen zu einem höheren Schutz der Privatsphäre der Nutzer bei
  • Die kontinuierlichen Updates von Arti gelten als Signal für eine schrittweise Ablösung des C-basierten Tor

2 Kommentare

 
GN⁺ 2025-12-14
Hacker-News-Kommentare
  • Ich habe kürzlich den Test EFFs Cover Your Tracks ausprobiert, und nur der Tor Browser mit deaktiviertem JS erwies sich als vollständig resistent gegen Fingerprinting.
    Selbst Tor mit aktiviertem JS wurde nur als „teilweise“ resistent bewertet, und bei Firefox kam selbst mit deaktiviertem JS kein gutes Ergebnis heraus. Ziemlich beängstigend, deshalb würden mich auch die Experimente anderer interessieren

    • Dieses Tool hat Mängel bei der Messmethode für Fingerprinting-Schutz. Schutzmechanismen mit Randomisierung werden eher schlechter bewertet, während nur Binning hoch bewertet wird.
      Umgekehrt sind auch Tools wie fingerprinting.com/demo, die nur Persistenz testen, problematisch.
      Das eigentliche Warnsignal ist, wenn man in beiden Tests durchfällt
    • Als ich mit Safari auf macOS getestet habe, bekam ich das Ergebnis „starker Schutz vor Web-Tracking“.
      Der Tor Browser fällt zwar sicher auf, aber allein aus diesem Test lässt sich nicht schließen, dass sich Fingerprints zwischen Tor-Nutzern leicht unterscheiden lassen
    • Der Tor Browser versucht, die Fingerprint-Buckets durch Dinge wie Abrunden der Canvas-Größe zu verbreitern. Letztlich ist der größte unvermeidbare Bucket einfach „Tor-Nutzer“
    • Als ich auf Debian mit dem Tor Browser in der Standardkonfiguration getestet habe, kamen 8,24 Bit an Identifikationsinformation heraus.
      Bei höherer Sicherheitsstufe stieg die Zahl der Identifikations-Bits sogar, bis sie bei komplett deaktiviertem JS wieder sank.
      Das heißt, deaktiviertes JS bietet die höchste Anonymität
  • Es wäre schön gewesen, wenn Mozilla die Rust-Migration (oxidizing) von Firefox weiter vorangetrieben hätte. Das wäre auch für das Rust-Ökosystem positiv gewesen, schade

    • Immerhin arbeitet das Chrome-Team weiterhin an der Einführung von Rust
    • Auch nachdem Mozilla viele Rust-Entwickler entlassen hat, ist der Rust-Anteil im Firefox-Code auf über 12 % gestiegen. Chromium liegt mit unter 4 % vergleichsweise deutlich darunter
      Wenn Rust Mozillas „Geheimwaffe“ geblieben wäre, hätte sich Rust vielleicht sogar langsamer verbreitet
    • Das Scheitern des Servo-Projekts lag meiner Meinung nach nicht an Rust, sondern an internen Grenzen bei Mozilla
  • Wenn der Einsatz von Rust bei ihren Problemen hilft, ist das eine vernünftige Entscheidung.
    Sprachen sind Werkzeuge, die je nach Projekt, Team und Problem unterschiedlich passen

    • Solche „Sprachwechsel“-Geschichten sind oft weniger interessant als Themen wie Abhängigkeitsoptimierung oder Performance-Verbesserungen
    • Der ursprüngliche Blogpost hat C nicht schlechtgemacht, deshalb finde ich nicht, dass man es extra erwähnen muss
    • Dass speichersichere Sprachen aus Sicherheitssicht technisch überlegen sind, ist eine offensichtliche Tatsache.
      Das ist kein Rust-Fanboy-Argument, sondern eher ein Fall von Widerstand wie damals, als Ärzte oder Piloten sich gegen Checklisten gewehrt haben
    • Rust passt für diesen Fall, ist aber für die meisten UI-Projekte ungeeignet.
      Bei UI zählen schnelle Iteration und GC, Performance ist weniger wichtig. Wenn man UI in Rust schreibt, kann das zur Wartungshölle werden
    • Ich mag die Haltung „Lasst uns alles in Rust neu schreiben“ nicht, aber bei Tor ist Rust das passende Werkzeug.
      Tor ist nämlich eine Multithread-Umgebung, in der Sicherheit und Performance gleichermaßen wichtig sind.
      Zig könnte auch eine Alternative sein, ist aber noch nicht reif. Ansätze wie bei Tigerbeetle, wo Determinismus im Vordergrund steht, sind ebenfalls interessant
  • Die größte Beschwerde über Tor ist die geringe Geschwindigkeit. Ich glaube nicht, dass es durch eine Migration auf Rust schneller wird

    • Onion Routing bringt einen Trade-off zwischen Privatsphäre und Performance mit sich. Die Hauptursache ist Netzwerklatenz
    • Tor ist nicht wegen des Codes langsam, sondern vor allem wegen zu weniger Nodes. Die neue Version wird sicherer, aber nicht schneller
    • Der Traffic umrundet strukturell zweimal den Globus, dadurch entsteht physikalisch bedingt Latenz. Letztlich ist das die Grenze der Lichtgeschwindigkeit
    • Tor ist für garantierte Anonymität da, nicht für Video-Streaming
    • Ein schnelles anonymes Netzwerk zu bauen, ist sehr schwierig. Trotzdem ist Tor in letzter Zeit viel schneller geworden als früher, und wenn man sich nur innerhalb von Onion-Diensten bewegt, ist die Anonymität höher
  • Diese Rust-Migration wurde mit Unterstützung von Zcash Community Grants ermöglicht. Auch aus Krypto-R&D können gute Ergebnisse kommen

    • Mir fällt dazu der Ausdruck „Pecunia non olet“ ein.
      Allerdings mit dem scherzhaften Zusatz, dass Kryptowährungen vielleicht schlimmer sein könnten als Urin
  • Beim Betrieb eines Tor-Exit-Nodes hätte ich Sorge wegen des rechtlichen Risikos. Ich frage mich, ob es eine Möglichkeit gibt, nur Dinge auf Whitelist-Basis zuzulassen

    • Es lohnt sich, den Leitfaden zum Betrieb eines Exit-Nodes im offiziellen Tor-Blog zu lesen.
      Wenn möglich, wird eine Registrierung im Namen einer Organisation empfohlen, und wenn man sicherer helfen will, ist der Betrieb eines Relays besser
    • Wenn man rechtliche Aufmerksamkeit vermeiden will, kann man auch eine Bridge betreiben.
      Oder man betreibt ein Guard-/Middle-Relay, was dem Netzwerk stark hilft
    • Exit-Nodes sind schwierig, aber man kann auch Bandbreite spenden, etwa indem man Linux-ISO-Torrents oder einen OpenMap-Tile-Server hostet.
      Allerdings sollte man einige chinesische ASNs blockieren. Es gibt viel gefälschten Download-Traffic
  • Diese Rust-Einführung wirkt wie das Ersetzen der Holzpfeiler einer alten Festung durch Stahl.
    Der C-basierte Tor-Code trägt Spuren jahrzehntelanger Sicherheitskompromisse und Performance-Altlasten, daher ist eine schrittweise Umstellung auf Rust der realistischste Weg, Sicherheit zu erhöhen
    Der Kernpunkt ist nicht ein „kompletter Rewrite“, sondern die Reduktion speicherunsicherer Bereiche.
    Wenn nur die besonders riskanten Teile wie Parsing, Kryptografie und Protokollgrenzen nach Rust verlagert werden, wird Tor robuster
    Interessant ist auch die Frage, ob sich das künftig zu Rust-basierten Pluggable Transports oder einer hybriden Runtime weiterentwickelt

  • Tatsächlich ist diese Entscheidung nicht erst von heute. Tor hat 2020 das Rust-basierte Arti-Projekt gestartet und 2022 Arti 1.0 angekündigt
    Man war zu dem Schluss gekommen, dass sich die C-Codebasis nur schwer schrittweise refaktorisieren lässt, und war mit Entwicklungsgeschwindigkeit, Portabilität und Beiträgen neuer Mitwirkender in Rust zufrieden
    Auch zuletzt wird laut dem Arti-Changelog weiterhin aktiv entwickelt

    • Arti ist so entworfen, dass es sich als Bibliothek in andere Apps einbetten lässt.
      Zum Beispiel könnte eine Messaging-App das Netzwerk nutzen, ohne einen separaten Tor-Daemon zu brauchen. Ich denke, das ist die größere Veränderung
    • Manche meinen auch, der Titel sei übertrieben. Das Tor-Team geht seit Langem vorsichtig vor
    • Dieser Link ist als Referenz viel besser als der Originalartikel. Die Strategie ist so klar, dass damit die Debatte „Warum Rust?“ praktisch im Voraus abgewehrt wird
    • Es wurde auch die Frage aufgeworfen, ob Rust bei der Portabilität zwischen Betriebssystemen wirklich besser ist als C
  • Tor ist nicht nur ein einfaches Konzept, sondern ein Name für das Protokoll (Onion Routing), das Netzwerk und die Referenzimplementierung zusammen

    • Onion Routing ist das Protokoll, Tor das darauf aufbauende Netzwerk und seine Implementierung
    • Tor ist tatsächlich ein herunterladbares Produkt und besteht aus mehreren Komponenten
    • Die Formulierung „Tor wird in Rust neu geschrieben“ ist also nicht unbedingt falsch
  • Es gab auch den scherzhaften Vorschlag, Tor einfach mit Fil-C zu kompilieren, um Speichersicherheit gratis zu bekommen

    • Diese Migration begann allerdings schon vor dem Auftauchen von Fil-C