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:
- Identificadores de dispositivo y el nombre del Mac, para poder emparejar un teléfono con un Mac.
- La dirección de red desde la que se conecta cada dispositivo, como cualquier servidor, y entrega a cada dispositivo la del otro para que prueben un camino directo.
- Qué plan se usa y cuánto tiempo de relay se ha gastado, para aplicar la asignación gratuita de 30 minutos al día.
- Que existe una sesión, cuándo empezó y cuánto duró.
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.
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.