O que o relay do Peering pode e não pode ver
Um relay é um servidor no meio da sua sessão de área de trabalho remota, então a pergunta certa é o que o impede de olhar. A resposta é uma chave que ele nunca recebe.
O que ele faz
O relay faz três trabalhos. Apresenta dois dispositivos que não conseguem se alcançar diretamente, copia bytes entre eles quando ainda assim não conseguem, e envia notificações push em nome de um Mac, como "o seu agente de código precisa de uma resposta". É um pequeno programa em Rust, e manter o seu trabalho pequeno é o projeto.
O que ele sabe
Ser honesto sobre isso faz parte do objetivo. Para fazer o seu trabalho, o relay vê:
- Identificadores de dispositivo e o nome do Mac, para poder combinar um iPhone com um Mac.
- O endereço de rede de onde cada dispositivo se conecta, como qualquer servidor, e ele entrega a cada dispositivo o do outro para que possam tentar um caminho direto.
- Qual plano está em uso e quanto tempo de relay foi gasto, para aplicar a franquia grátis de 30 minutos por dia.
- Que uma sessão existe, quando começou e quanto durou.
A política de privacidade lista tudo isso por completo. Nada disso é o conteúdo da sua sessão.
O que ele não pode ver
A imagem, o som, a área de transferência, as teclas digitadas e o ponteiro ficam todos dentro de um canal criptografado que termina nos seus dois dispositivos. O relay não pode lê-los, alterá-los nem reproduzi-los. Dois mecanismos tornam isso verdade, e nenhum depende de confiar no relay.
O canal de controle é TLS entre os dispositivos
Quando uma sessão passa pelo relay, o iPhone executa um handshake TLS 1.3 com o Mac através do relay. O relay copia os registros criptografados sem encerrá-los, então nunca guarda uma chave de sessão. As duas pontas se autenticam com as chaves que fixaram quando você fez o pareamento, então o relay não pode se colocar no meio sem que o iPhone recuse a conexão.
A chave do vídeo nunca passa pelo relay
O vídeo segue por outra estrada, pelo UDP, então precisa da sua própria chave. Depois que a sessão está pronta, o Mac cria 32 bytes aleatórios e os envia ao iPhone dentro do fluxo TLS. O relay carrega esse fluxo e não consegue abri-lo. Cada direção então deriva a sua própria chave com HKDF-SHA256, e cada datagrama é selado com ChaCha20-Poly1305 e um contador.
key = HKDF-SHA256(secret, salt = "pl.dmq.peering.video-datagram", info = direction) datagram = token | counter | ciphertext | tag
O token de 16 bytes no início é a única coisa que o relay lê. É uma dica de roteamento que diz a qual sessão o datagrama pertence, e o relay o remove antes de encaminhar. Tudo depois dele é texto cifrado.
Notificações push e Live Activities
Quando o seu iPhone está em repouso, o Mac pede ao relay que o desperte com um push da Apple. O que vai nesse push é deliberadamente enxuto: um título e uma mensagem curtos para um alerta e, para as atualizações de Live Activity, apenas estado codificado, como IDs, estados, contagens e horários. O Mac nunca envia ao relay a sua tela nem a saída do seu terminal. Para as aprovações de agentes, veja notificações para agentes de código.
Provas em vez de contas
A franquia grátis precisa se prender a alguma coisa. Em vez de uma conta, os dispositivos assinam uma curta mensagem com a própria chave, e o relay confere a assinatura dentro de uma janela de cinco minutos. Isso prende a franquia a uma chave, e não a um ID que pode ser redefinido, e impede que alguém se passe por um Mac registrado sem ter a sua chave privada.
Confira você mesmo
O formato de transmissão é documentado e o relay é construído em torno de uma restrição: ele apresenta os pares e copia bytes criptografados, e não pode inspecionar, alterar nem autorizar o que carrega. Para saber como uma sessão chega ao relay, leia como o seu iPhone chega ao seu Mac de qualquer lugar e, para saber como as chaves de cada ponta passam a ser confiáveis, pareamento sem conta.
Perguntas
O relay do Peering consegue ver a minha tela?
Não. A imagem é selada com uma chave que o Mac envia ao iPhone dentro de uma conexão criptografada que o relay não consegue abrir, então o relay só copia texto cifrado.
O que o relay do Peering sabe sobre mim?
Identificadores de dispositivo, o nome do seu Mac, o plano em uso, o uso do relay e o endereço de rede de onde cada dispositivo se conecta. Ele não vê vídeo, áudio, teclas digitadas nem o conteúdo da área de transferência.