Peering

Peering / Blog

Kopplung ohne Konto: Wie Peering entscheidet, wem es vertraut

Die meisten Remote-Desktop-Tools verlangen eine Anmeldung, damit eine Firma entscheiden kann, ob zwei Geräte zusammengehören. Peering lässt die Firma weg und fragt stattdessen dich, mit sechs Ziffern.

Jedes Gerät ist seine eigene Identität

Beim ersten Start auf einem Mac oder iPhone erzeugt Peering ein P-256-Schlüsselpaar und legt die private Hälfte im Keychain dieses Geräts ab. Dieser Schlüssel ist von da an die Identität des Geräts. Es gibt keinen Benutzernamen, kein Passwort und keinen Server, der eine Kopie hält. Bei jedem Start der App signiert sie ein frisches selbstsigniertes Zertifikat über diesen Schlüssel, und andere Geräte merken sich den Schlüssel, nicht das Zertifikat.

Das ist wichtig, weil ein selbstsigniertes Zertifikat allein nichts beweist. Es sagt „dieser Schlüssel hat dieses Zertifikat erstellt“, nicht „das ist der Mac in deinem Wohnzimmer“. Etwas muss einen Schlüssel mit einem physischen Gerät verbinden, und dieses Etwas bist du.

Die sechs Ziffern

Wenn ein iPhone zum ersten Mal auf einen Mac trifft, zeigen beide Bildschirme einen sechsstelligen Code. Du bestätigst, dass sie übereinstimmen. Tun sie das, speichert jedes Gerät den Schlüssel des anderen. Tun sie es nicht, sitzt jemand zwischen den beiden, und du lehnst ab.

Der Code ist nicht zufällig und kein Passwort. Er ist ein kurzer Hash des gesamten Handshakes: beide Geräte-IDs, frische Einmalschlüssel von jeder Seite, einmalige Zufallszahlen von jeder Seite und der Identitätsschlüssel des Macs. Genauer: Es sind die ersten vier Bytes eines SHA-256 über diese Felder, reduziert auf sechs Dezimalstellen. Leitet ein Angreifer die Verbindung um, sehen Mac und iPhone jeweils ein anderes Protokoll und damit eine andere Zahl.

Der Peering-Bildschirm „Dein erstes iPhone koppeln“ auf dem Mac mit den drei Verbindungswegen und einem QR-Code.
Der Mac wartet auf ein iPhone. Der Code erscheint auf beiden Bildschirmen, sobald sie sich treffen.

Warum zuerst festlegen

Ein sechsstelliger Code hat nur eine Million Werte, ein geschickter Angreifer könnte also versuchen, so lange Einmalschlüssel durchzuprobieren, bis beide Seiten zufällig dieselbe Zahl zeigen. Das Protokoll schließt diese Tür mit einem Schritt aus Festlegen und Offenlegen:

  1. Jede Seite sendet zuerst einen Hash ihres Einmalschlüssels und ihrer Zufallszahl.
  2. Erst wenn beide Hashes vorliegen, legt eine Seite die echten Werte offen.
  3. Jede Seite prüft die offengelegten Werte gegen den Hash, den sie zuvor erhalten hat.

Weil ein Angreifer sich festlegen muss, bevor er etwas sieht, kann er seine Werte nicht passend einstellen. Übrig bleibt blindes Raten, mit einer Chance von eins zu einer Million auf einen passenden Code pro Versuch, und ein gescheiterter Versuch zeigt sich als Abweichung, die du sehen kannst.

Die QR-Abkürzung

Scannst du den QR-Code des Macs, gibt es nichts, was du mit dem Auge vergleichen müsstest. Der QR-Code enthält ein 16-Byte-Geheimnis, das nur jemand haben kann, der auf den Bildschirm des Macs schaut. Das iPhone berechnet damit einen Nachweis (einen HMAC über den Handshake), und der Mac akzeptiert ihn als Beleg, dass die Person, die koppelt, körperlich vor dem Mac steht. Ohne diesen Nachweis bittet der Mac seinen eigenen Nutzer um Bestätigung.

Nach der Kopplung ist Vertrauen ein Schlüsselvergleich

Jede spätere Verbindung ist eine TLS-1.3-Sitzung, in der beide Seiten ihren Schlüssel vorlegen. Das iPhone nimmt den Schlüssel des Macs aus dem Zertifikat, das es tatsächlich erhalten hat, nie aus etwas, das der Mac in einer Nachricht sagt, und vergleicht ihn in konstanter Zeit mit dem gespeicherten. Ein anderer Schlüssel heißt: keine Verbindung. Nach dem ersten Mal wirst du nichts mehr gefragt.

Behauptet ein Mac „ich kenne dich schon“, dein iPhone hat aber keinen gespeicherten Schlüssel für ihn, lehnt es ab. Die Behauptung beweist nichts, denn ein Fremder könnte sie genauso leicht aufstellen.

Die praktische Anleitung steht in der Kopplungsanleitung. Was mit der Verbindung passiert, sobald sie besteht, steht in Was das Relay sehen kann.

Fragen

Braucht Peering ein Konto oder eine E-Mail-Adresse?

Nein. Jedes Gerät erzeugt seinen eigenen Schlüssel und speichert ihn in seinem eigenen Keychain. Die Kopplung ist ein sechsstelliger Code, den du auf beiden Bildschirmen vergleichst.

Wovor schützt der sechsstellige Kopplungscode?

Vor jemandem, der zwischen deinem iPhone und deinem Mac sitzt. Der Code wird aus dem gesamten Handshake abgeleitet, sodass ein Man-in-the-Middle auf den beiden Bildschirmen unterschiedliche Codes erzeugt und du die Abweichung siehst.