Warum Ihre Anmeldung eine Nummer ist, keine E-Mail-Adresse
Das Konto, das Sie nicht brauchen, ist eine 128-Bit-Nummer, ausgestellt von einer Maschine, die Ihren Tunnel strukturell nicht öffnen kann. Hier ist, warum beides zusammen gelten muss.
Veröffentlicht am 5. September 2026 · Aktualisiert am 16. Oktober 2026
Die meisten Apps fragen nach einer E-Mail-Adresse, bevor sie nach dem fragen, weswegen Sie eigentlich gekommen sind. ForestVPN fragt weder nach einer E-Mail-Adresse noch nach einem Passwort — öffnen, auf Verbinden drücken. Wollen Sie ein Abonnement auf mehr als einem Gerät, bekommen Sie stattdessen eine 32-stellige Nummer, einmal angezeigt, und das ist das gesamte Anmeldesystem.
Das ist keine Stilfrage. Es ist das, was übrig bleibt, wenn zwei Anforderungen aufeinanderprallen, und der interessante Teil ist, welche davon gewinnt.
Wo eine Anmeldung normalerweise lebt
Ein Button „Mit Apple anmelden" oder „Mit Google anmelden" ist eine Weiterleitung auf die Domain von jemand anderem — appleid.apple.com, accounts.google.com, ein *.auth0.com-Mandant. Auf einem Smartphone mit offenem Zugang zu diesen Hosts ist diese Weiterleitung unsichtbare Verkabelung.
Wir können nicht davon ausgehen, dass dieser Zugang offen ist, denn ein Teil der Aufgabe dieses Produkts ist es, auch in Netzwerken weiterzuarbeiten, die einem Gerät nur eine kurze, feste Liste von Hosts erreichen lassen. Das gesamte Sicherheitsmodell unseres eigenen Relay-Proxys ist diese Liste — drei Namen, api., sess. und catalog.fvpn.net, exakt abgeglichen. Sie um einen CDN-gestützten Identitätsanbieter zu erweitern, hieße, einen Anbieter zuzulassen, dessen CDN gleichzeitig einen großen Teil des Internets ausliefert, was aus einem engen Relay ein allzweckfähiges macht. Und speziell auf iOS läuft die Anmelde-Webansicht für einen Identitätsanbieter eines Drittanbieters in einem eigenen Prozess — eine App-seitige Proxy-Einstellung hat keine Möglichkeit, in sie hineinzugreifen und sie über irgendetwas zu leiten, das wir betreiben. Die Weiterleitung scheitert genau dort, wo sie am dringendsten funktionieren müsste.
Die Nummer ist also nicht die freundliche Option, die wir anstelle der vertrauten gewählt haben. Sie ist die Option, die unter der Einschränkung, die stärker wog, noch funktioniert.
Die andere Hälfte: Niemand, der die Nummer hat, kann Ihren Datenverkehr sehen
Anders gesagt: Die Kontonummer ist ein Zugangsmittel, ausgestellt von einem Dienst, der auf Cloudflare Workers läuft — anfrage-gebundene Ausführung, kein langlebiger Prozess, kein Raw Socket, eine Speichergrenze pro Isolate im zweistelligen Megabyte-Bereich. Nichts davon ist eine Einschränkung, um die wir herumarbeiten. Sie ist der Grund, warum diesem Dienst überhaupt zugetraut werden kann, Ihren Anspruch zu verwahren:
no raw UDP or TCP sockets
no long-lived process — execution is request-scoped
128 MB per isolate
a few MB, compressed, is the entire deployableEine so gebaute Maschine kann keinen zustandsbehafteten UDP-Tunnel terminieren — nicht im Sinne von „noch nicht", sondern strukturell. Die Server, die Ihren Datenverkehr tatsächlich tragen, sind also eine getrennte Flotte auf getrennter Infrastruktur, und die beiden Seiten treffen sich durch genau eine Sache: ein Ticket. Ihr Gerät fragt die Workers-Seite nach einem und bekommt einen Wert zurück, der signiert, aber ungelesen ist — die Signatur wird über eine Nummer erzeugt, die der Unterzeichner nie zu Gesicht bekommt, sodass sich das Ticket, das Sie später vorzeigen, nicht auf die Anfrage zurückverfolgen lässt, die es ausgestellt hat. Es beweist, welche Stufe es gekauft hat. Es sagt nicht, welches Gerät, und es sagt nicht, wer Sie sind.
Das ist es, was die Kontonummer so unspektakulär macht, wie sie sein muss. Es gibt in diesem System keine Spalte, die die Kontonummer neben einem Exit-Server oder einer Adresse führt, von der aus Sie sich verbunden haben — nicht „wir entscheiden uns, nicht hinzusehen", die Spalte existiert nicht, und eine Build-Prüfung schlägt fehl, wenn eine hinzugefügt wird. Es gibt eine engere, bewusste Ausnahme, und sie betrifft das Gerät, nicht die Nummer: Solange ein Ticket gültig ist, führt eine Zeile den Hash des Geräteschlüssels neben einem Hash der Sitzung, zu der er gehört — das ist es, was erlaubt, ein verbrauchtes Ticket gegen Ihr Kontingent anzurechnen und ein gesperrtes Gerät mitten in der Sitzung zu kappen. Diese Zeile wird etwa einen Tag nach Ende der Sitzung gelöscht, früher, wenn sie sich schnell klärt, und sie hat kein Feld für einen Exit oder eine Adresse — Gerät und Sitzung, sonst nichts. Haben Sie ein Gerät mit einem Konto verknüpft, reicht die Verknüpfung genau so weit; die Kontonummer selbst berührt nie eine Sitzungszeile. Der Dienst, der Ihren Datenverkehr tatsächlich sieht, erfährt die Nummer von vornherein nie.
Was es kostet, gesagt statt verschwiegen
Nichts davon ist kostenlos. Die Nummer wird einmal angezeigt und bei uns nirgendwo gespeichert; verlieren Sie sie, ohne dass noch ein Gerät daran hängt, gibt es nichts, womit sie sich wiederherstellen ließe, weil es nichts anderes gibt, das Sie identifiziert, wogegen sich das prüfen ließe. Eine Verknüpfung lässt sich lösen: Ein Gerät kann sich selbst abmelden, und jedes andere Gerät am Konto kann es entfernen (ein Konto fasst bis zu zehn Geräte; ein Gerät, das in den letzten 7 Tagen beigetreten ist, kann keine älteren Geräte entfernen, und ein Router kann keine anderen Geräte entfernen). Nicht rückgängig zu machen ist der Verlust der Nummer: Es gibt kein Zurücksetzen des Passworts, weil das einen Weg bräuchte zu beweisen, dass die Anfrage vom echten Kontoinhaber kam, und der ganze Sinn des Designs war, niemals etwas zu sammeln, das das beweisen könnte.
Das ist ein echter Kompromiss, keine Fußnote, und wir würden lieber, dass Sie das von Anfang an wissen, als dass Sie es erst in dem Moment erfahren, in dem es zählt.