Peering

Peering / Blog

Was das Relay von Peering sehen kann und was nicht

Ein Relay ist ein Server mitten in deiner Remote-Desktop-Sitzung, die richtige Frage ist also, was ihn am Hinsehen hindert. Die Antwort ist ein Schlüssel, den er nie erhält.

Was es tut

Das Relay hat drei Aufgaben. Es stellt zwei Geräte einander vor, die sich nicht direkt erreichen können, es kopiert Bytes zwischen ihnen, wenn es auch dann nicht geht, und es sendet Push-Mitteilungen im Namen eines Macs, etwa „dein Coding-Agent braucht eine Antwort“. Es ist ein kleines Rust-Programm, und seine Aufgabe klein zu halten ist der Entwurf.

Was es weiß

Dabei ehrlich zu sein, gehört zur Sache. Um seine Arbeit zu tun, sieht das Relay:

Die Datenschutzerklärung listet diese vollständig auf. Nichts davon ist der Inhalt deiner Sitzung.

Was es nicht sehen kann

Bild, Ton, Zwischenablage, Tastenanschläge und Zeiger liegen alle in einem verschlüsselten Kanal, der auf deinen beiden Geräten endet. Das Relay kann sie nicht lesen, nicht verändern und nicht erneut einspielen. Zwei Mechanismen sorgen dafür, und keiner hängt davon ab, dem Relay zu vertrauen.

Der Steuerkanal ist TLS zwischen den Geräten

Läuft eine Sitzung über das Relay, führt das iPhone einen TLS-1.3-Handshake mit dem Mac durch das Relay. Das Relay kopiert die verschlüsselten Datensätze, ohne sie zu terminieren, und besitzt deshalb nie einen Sitzungsschlüssel. Beide Seiten authentifizieren sich mit den Schlüsseln, die sie bei der Kopplung gespeichert haben, sodass das Relay sich nicht dazwischenschieben kann, ohne dass das iPhone die Verbindung ablehnt.

Der Videoschlüssel reist nie durch das Relay

Video nimmt einen anderen Weg, über UDP, und braucht deshalb einen eigenen Schlüssel. Sobald die Sitzung bereit ist, erzeugt der Mac 32 Zufallsbytes und sendet sie innerhalb des TLS-Streams an das iPhone. Das Relay trägt diesen Stream und kann ihn nicht öffnen. Jede Richtung leitet dann mit HKDF-SHA256 ihren eigenen Schlüssel ab, und jedes Datagramm wird mit ChaCha20-Poly1305 und einem Zähler versiegelt.

key = HKDF-SHA256(secret, salt = "pl.dmq.peering.video-datagram", info = direction)
datagram = token | counter | ciphertext | tag

Das 16-Byte-Token am Anfang ist das Einzige, was das Relay liest. Es ist ein Routing-Hinweis, der sagt, zu welcher Sitzung das Datagramm gehört, und das Relay entfernt es vor der Weiterleitung. Alles danach ist Chiffretext.

iPhone-Sperrbildschirm mit zwei Peering-Mitteilungen: ein Terminal ist fertig, und ein Terminal braucht eine Freigabe.
Push-Mitteilungen tragen kurzen Text und codierten Status. Dein Bildschirm ist nie Teil davon.

Push-Mitteilungen und Live Activities

Schläft dein iPhone, bittet der Mac das Relay, es per Apple-Push zu wecken. Was in diesem Push steckt, ist bewusst dünn: ein kurzer Titel und eine Nachricht für einen Hinweis, und bei Live-Activity-Updates nur codierter Status wie IDs, Zustände, Zähler und Zeiten. Der Mac sendet dem Relay nie deinen Bildschirm oder die Ausgabe deines Terminals. Zu Agenten-Freigaben siehe Mitteilungen für Coding-Agenten.

Nachweise statt Konten

Das kostenlose Kontingent muss an etwas hängen. Statt an einem Konto signieren Geräte eine kurze Nachricht mit ihrem eigenen Schlüssel, und das Relay prüft die Signatur innerhalb eines Fünf-Minuten-Fensters. Das bindet das Kontingent an einen Schlüssel statt an eine zurücksetzbare ID, und es erlaubt niemandem, sich als registrierter Mac auszugeben, ohne dessen privaten Schlüssel zu besitzen.

Prüf es selbst

Das Drahtformat ist dokumentiert, und das Relay ist um eine Einschränkung herum gebaut: Es stellt Gegenstellen vor und kopiert verschlüsselte Bytes und kann nicht einsehen, verändern oder autorisieren, was es trägt. Wie eine Sitzung überhaupt auf das Relay kommt, steht in So erreicht dein iPhone deinen Mac von überall, und wie die Schlüssel auf beiden Seiten zu vertrauten werden, in Kopplung ohne Konto.

Fragen

Kann das Relay von Peering meinen Bildschirm sehen?

Nein. Das Bild wird mit einem Schlüssel versiegelt, den der Mac innerhalb einer verschlüsselten Verbindung an das iPhone sendet, die das Relay nicht öffnen kann. Das Relay kopiert also immer nur Chiffretext.

Was weiß das Relay von Peering über mich?

Geräte-IDs, den Namen deines Macs, den genutzten Tarif, die Relay-Nutzung und die Netzwerkadresse, von der sich jedes Gerät verbindet. Video, Audio, Tastenanschläge und Inhalte der Zwischenablage sieht es nicht.