Peering

Peering / Blog

Lo que el relay de Peering puede y no puede ver

Un relay es un servidor en medio de tu sesión de escritorio remoto, así que la pregunta correcta es qué le impide mirar. La respuesta es una clave que nunca recibe.

Qué hace

El relay hace tres tareas. Presenta a dos dispositivos que no pueden alcanzarse directamente, copia bytes entre ellos cuando sigue sin ser posible, y envía notificaciones push en nombre de un Mac, como «tu agente de programación necesita una respuesta». Es un pequeño programa en Rust, y mantener su trabajo pequeño es el diseño.

Qué sabe

Ser honestos con esto es parte del objetivo. Para hacer su trabajo, el relay ve:

La política de privacidad los enumera por completo. Ninguno de ellos es el contenido de tu sesión.

Qué no puede ver

La imagen, el sonido, el portapapeles, las pulsaciones de teclas y el puntero están dentro de un canal cifrado que termina en tus dos dispositivos. El relay no puede leerlos, modificarlos ni reproducirlos. Dos mecanismos lo hacen cierto, y ninguno depende de confiar en el relay.

El canal de control es TLS entre los dispositivos

Cuando una sesión pasa por el relay, el teléfono hace un handshake TLS 1.3 con el Mac a través de él. El relay copia los registros cifrados sin terminarlos, así que nunca tiene una clave de sesión. Ambos extremos se autentican con las claves que fijaron al emparejar, así que el relay no puede ponerse en medio sin que el teléfono rechace la conexión.

La clave del vídeo nunca viaja por el relay

El vídeo toma otro camino, por UDP, así que necesita su propia clave. Cuando la sesión está lista, el Mac crea 32 bytes aleatorios y se los envía al teléfono dentro del flujo TLS. El relay lleva ese flujo y no puede abrirlo. Cada dirección deriva entonces su propia clave con HKDF-SHA256, y cada datagrama se cifra con ChaCha20-Poly1305 y un contador.

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

El token de 16 bytes del principio es lo único que lee el relay. Es una pista de enrutamiento que indica a qué sesión pertenece el datagrama, y el relay lo quita antes de reenviarlo. Todo lo que va después es texto cifrado.

Pantalla de bloqueo del iPhone con dos notificaciones de Peering: un terminal ha terminado y otro necesita aprobación.
Las notificaciones push llevan texto breve y estado codificado. Tu pantalla nunca forma parte de una.

Notificaciones push y Live Activities

Cuando tu teléfono está dormido, el Mac pide al relay que lo despierte con un push de Apple. Lo que va en ese push es deliberadamente mínimo: un título y un mensaje cortos para una alerta y, para las actualizaciones de Live Activity, solo estado codificado como ids, estados, recuentos y horas. El Mac nunca envía al relay tu pantalla ni la salida de tu terminal. Para las aprobaciones de agentes, consulta notificaciones para agentes de programación.

Pruebas en lugar de cuentas

La asignación gratuita tiene que asociarse a algo. En lugar de una cuenta, los dispositivos firman un breve mensaje con su propia clave, y el relay comprueba la firma dentro de una ventana de cinco minutos. Eso vincula la asignación a una clave y no a un ID que se pueda restablecer, y hace que nadie pueda suplantar a un Mac registrado sin tener su clave privada.

Compruébalo tú mismo

El formato de transmisión está documentado y el relay está construido en torno a una restricción: presenta a los pares y copia bytes cifrados, y no puede inspeccionar, alterar ni autorizar lo que lleva. Para saber cómo una sesión llega al relay en primer lugar, lee cómo llega tu iPhone a tu Mac desde cualquier lugar y, para saber cómo se llega a confiar en las claves de cada extremo, emparejar sin cuenta.

Preguntas

¿Puede el relay de Peering ver mi pantalla?

No. La imagen se cifra con una clave que el Mac envía al teléfono dentro de una conexión cifrada que el relay no puede abrir, así que el relay solo copia texto cifrado.

¿Qué sabe de mí el relay de Peering?

Identificadores de dispositivo, el nombre de tu Mac, el plan en uso, el uso del relay y la dirección de red desde la que se conecta cada dispositivo. No ve vídeo, audio, pulsaciones de teclas ni el contenido del portapapeles.