Signal baut die Anmeldung ohne Telefonnummer: ein bezahlter "Signal Login" steckt bereits im Android-Code
Signal baut eine Registrierung ohne Telefonnummer, und die ganze Arbeit liegt offen im Quellcode. In den vergangenen vier Wochen hat ein Signal-Entwickler eine Reihe von Commits unter dem Namen "Signal Login" in das Repository Signal-Android eingestellt: ein einmaliger Kauf über Google Play, nach dem der Nutzer statt einer Nummer eine Konto-ID und einen 64 Zeichen langen Wiederherstellungsschlüssel erhält. Am 9. September kam der Bezahlbildschirm selbst dazu, mit dem Knopf "Pay" und dem Preis. Signal hat die Funktion nicht angekündigt, und im aktuellen Code ist sie nur für die internen Builds des Unternehmens freigeschaltet, sodass von außen noch niemand sie ausprobieren kann.
Kurz gefasst
- Die Commits, fast alle vom selben Signal-Ingenieur, reichen vom 17. August (Netzwerk-Platzhalter) bis zum 9. September ("Add ability to pay for a signal login", 2.439 hinzugefügte Zeilen). Der Servercode hat seit dem 13. August passende Commits zu "numberless accounts".
- Die Oberflächentexte sind fertig: "Registriere dich ohne Telefonnummer mit Signal Login. Mit einem einmaligen Kauf erhältst du einen Kontoschlüssel." Die Strings versprechen "keine Telefonnummer nötig" und "Benutzername für Nachrichten und Anrufe".
- Bezahlt wird über Google Play, und die App wandelt die Quittung in einen Zero-Knowledge-Nachweis um, wie Signal ihn schon für Spenderabzeichen nutzt: Der Server prüft, dass ein Login bezahlt wurde, ohne zu erfahren, welcher Kauf zu welchem Konto gehört.
- Für alle in einem Land, in dem eine SIM-Karte nur gegen Pass oder Fingerabdruck ausgegeben wird, fällt damit der einzige Identifikator weg, den Signal noch verlangte, und die Nummer, mit der ein Fremder über Zustellbestätigungen den Tagesablauf mitliest.
Was der Code zeigt, der Reihe nach
Signal veröffentlicht Client- und Servercode, deshalb lässt sich die Funktion auch ohne Ankündigung Commit für Commit verfolgen. Die Android-Arbeit trägt überwiegend die Unterschrift von Greyson Parrelli, einem langjährigen Signal-Entwickler; die Serverseite läuft parallel im Repository Signal-Server. Das interne Flag, das den Ablauf freischaltet, wurde am 9. September von "nur Staging" auf "nur interne Builds" umgestellt. Deshalb sehen Nutzer der öffentlichen Beta, die den Code seit Version 8.26 auf dem Telefon haben, nichts davon.
- 17. bis 19. August: Netzwerk- und Einstellungs-Platzhalter für die "Registrierung ohne Telefonnummer"; auf dem Server kommt ein Test hinzu, der ein nummernloses Konto mit einem statischen Credential registriert (18. August).
- 25. bis 26. August: Die Login-Bildschirme werden angelegt, 1.632 Zeilen Strings kommen dazu, darunter "Als PDF speichern" für die Schlüssel und die Warnung, dass ein verlorener Login nicht wiederherstellbar ist.
- 2. September: "Add basic ability to register numberless account" und "Add basic ability to login to an existing numberless account"; PIN-Erinnerungen, Registrierungssperre und die Einstellung zur Auffindbarkeit per Nummer werden für diese Konten ausgeblendet; die Ablage des Logins im Passwortmanager kommt hinzu.
- 9. September: "Add ability to pay for a signal login" verdrahtet Google Play Billing, das Receipt Credential und die Logik zum Fortsetzen nach einem Fehler; am selben Abend folgen End-to-End-Tests für die nummernlosen Abläufe.
Wie ein bezahlter Login anonym bleiben soll
Telefonnummern waren für Signal nie ein Identitätsnachweis, sondern die Spam-Bremse: Eine Nummer kostet Geld, und es gibt nur endlich viele. Der Technikchef des Unternehmens, Ehren Kret, sagte das auf der FUTO-Konferenz "Don't Be Evil", als er bestätigte, dass eine Registrierung ohne Nummer "hoffentlich später in diesem Jahr" geplant sei und das Hindernis Missbrauch heiße, nicht Datenschutz. Ein bezahlter Login behält die Kosten und lässt die Nummer weg. Der naheliegende Einwand: Eine Zahlung identifiziert mindestens so gut wie eine SIM. Der Code beantwortet ihn mit derselben Konstruktion, die Signal 2021 für Spenderabzeichen eingeführt und für bezahlte Backups wiederverwendet hat. Die App wickelt den Kauf über Google Play ab und erstellt dann eine "geblindete" Receipt-Credential-Anfrage; der Signal-Server signiert sie, ohne das Konto zu sehen, an das sie gebunden wird; bei der Registrierung legt die App das Credential als Nachweis vor, dass irgendein Login bezahlt wurde. Der Kommentar im Repository erklärt, der Kaufdatensatz werde vor dem Einlösen gespeichert, "damit ein Fehler an jeder Stelle nach der Zahlung etwas zum Fortsetzen hinterlässt", und ein eingelöster Kauf werde "verbraucht", sodass jemand einen zweiten Login für ein zweites Konto kaufen kann.
Was ein nummernloses Konto aufgibt
Strings und ausgeblendete Einstellungen beschreiben eine andere Art von Konto. Es gibt keine PIN-basierte Registrierungssperre, weil es keine Nummer zu sperren gibt; stattdessen bekommen die Einstellungen eine Karte für einen zweiten Faktor, "um dein Konto zu schützen, wenn du deinen Signal Login auf einem neuen Gerät verwendest", und der Registrierungsaufruf im Code akzeptiert einen einmaligen TOTP-Code. Es gibt keinen Schalter "Wer kann mich über meine Nummer finden", weil die Auffindbarkeit fest auf Aus steht. Ein früherer Commit, den die Community entdeckt hat, hält fest, dass Konten ohne Nummer nie eine bekommen und Konten mit Nummer sie nie verlieren können; ein bestehendes Konto lässt sich also nicht einfach von der SIM lösen, ein nummernloses Konto ist ein neues Konto. Der Benutzername wird zum Weg, auf dem man erreichbar ist, und die App zeigt jetzt einen Bestätigungsdialog, wenn man das Anlegen überspringen will. Vor allem aber sind die Schlüssel das Konto: Der Infobildschirm sagt unmissverständlich, "wenn du deine Schlüssel vergisst, kannst du dein Konto nicht wiederherstellen", und die App lässt sie erneut eingeben, um zu beweisen, dass man sie gesichert hat. Das ist derselbe Handel, den jeder eingeht, der von SMS-Codes auf eine Authenticator-App oder einen Hardware-Schlüssel wechselt: Niemand kann es für einen zurücksetzen, und genau das ist der Sinn.
Warum die Nummer das Problem war
Signal hat über Jahre eingeengt, was eine Telefonnummer preisgibt. Die Nummernprivatsphäre verbirgt sie standardmäßig vor anderen Nutzern, Benutzernamen erlauben es Fremden, ohne sie zu schreiben, und die Kontaktsuche auf dem Server ist so gebaut, dass sie nichts außer Treffern verrät. Was all das nicht ändert, ist der Moment der Registrierung: ein SMS-Code an eine Nummer, die in immer mehr Ländern beim Kauf an Pass, Biometrie oder Aufenthaltstitel gebunden ist. Wer Zugriff auf den Anbieter hat oder auf die Person, die die SIM registriert hat, kennt den Kontoinhaber, egal was die App danach verbirgt. Ein ohne Nummer gekaufter Login verlagert dieses Risiko vom Mobilfunkanbieter in den App-Store. Ob der Preis eher bei einem Dollar oder bei zehn liegt, steht nicht im Code: Der Bildschirm lädt ihn zur Laufzeit von Google Play, und die Entwurfsvorschauen zeigen einen Platzhalter. Bis Signal das Flag umlegt und das Produkt veröffentlicht, lautet die ehrliche Zusammenfassung: Client, Server und Bezahlweg sind geschrieben und getestet, die Ankündigung nicht.
Kann ich mich heute ohne Telefonnummer bei Signal registrieren?
Was genau ist ein Signal Login?
Identifiziert mich die Zahlung über Google Play?
Kann ich die Nummer aus meinem bestehenden Konto entfernen?
Was passiert, wenn ich die Schlüssel verliere?
• Add ability to pay for a signal login - Signal-Android, GitHub
• Add basic ability to register numberless account - Signal-Android, GitHub
• Registration strings (Signal Login screens) - Signal-Android, GitHub
• Add an integration test for registering a numberless account - Signal-Server, GitHub
• Registration without a phone number - Signal Community forum
• Signal Android Beta Has Merged Support for Numberless Accounts - Privacy Guides
• Signal is Looking at Adding an Option to Sign Up Without a Phone Number - Privacy Guides
• Registration without a phone number on Signal will use zero-knowledge proofs - Hacker News