Das Tor-Projekt stellt auf Rust um
(itsfoss.com)- 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-migratehinzugefü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
Arti 1.0.0 veröffentlicht – eine in Rust geschriebene Tor-Implementierung
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
Umgekehrt sind auch Tools wie fingerprinting.com/demo, die nur Persistenz testen, problematisch.
Das eigentliche Warnsignal ist, wenn man in beiden Tests durchfällt
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
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
Wenn Rust Mozillas „Geheimwaffe“ geblieben wäre, hätte sich Rust vielleicht sogar langsamer verbreitet
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
Das ist kein Rust-Fanboy-Argument, sondern eher ein Fall von Widerstand wie damals, als Ärzte oder Piloten sich gegen Checklisten gewehrt haben
Bei UI zählen schnelle Iteration und GC, Performance ist weniger wichtig. Wenn man UI in Rust schreibt, kann das zur Wartungshölle werden
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
Diese Rust-Migration wurde mit Unterstützung von Zcash Community Grants ermöglicht. Auch aus Krypto-R&D können gute Ergebnisse kommen
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
Wenn möglich, wird eine Registrierung im Namen einer Organisation empfohlen, und wenn man sicherer helfen will, ist der Betrieb eines Relays besser
Oder man betreibt ein Guard-/Middle-Relay, was dem Netzwerk stark hilft
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
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
Tor ist nicht nur ein einfaches Konzept, sondern ein Name für das Protokoll (Onion Routing), das Netzwerk und die Referenzimplementierung zusammen
Es gab auch den scherzhaften Vorschlag, Tor einfach mit Fil-C zu kompilieren, um Speichersicherheit gratis zu bekommen