Pareamento sem conta: como o Peering decide em quem confiar
A maioria das ferramentas de área de trabalho remota pede que você crie uma conta para que uma empresa decida se dois dispositivos pertencem um ao outro. O Peering dispensa a empresa e pergunta a você, com seis dígitos.
Cada dispositivo é a sua própria identidade
Na primeira vez que o Peering roda em um Mac ou em um iPhone, ele gera um par de chaves P-256 e guarda a metade privada no Keychain desse dispositivo. Essa chave é a identidade do dispositivo para sempre. Não há nome de usuário, senha nem servidor que guarde uma cópia. A cada vez que o app inicia, ele assina um novo certificado autoassinado sobre essa chave, e os outros dispositivos fixam a chave, não o certificado.
Isso importa porque um certificado autoassinado não prova nada sozinho. Ele diz "esta chave fez este certificado", não "este é o Mac da sua sala". Alguma coisa precisa ligar uma chave a um dispositivo físico, e essa coisa é você.
Os seis dígitos
Quando um iPhone encontra um Mac pela primeira vez, as duas telas mostram um código de seis dígitos. Você confirma que são iguais. Se forem, cada dispositivo guarda a chave do outro. Se não forem, há alguém no meio dos dois e você recusa.
O código não é aleatório e não é uma senha. É um hash curto de todo o handshake: os dois IDs de dispositivo, chaves descartáveis novas de cada lado, números aleatórios descartáveis de cada lado e a chave de identidade do Mac. Mais precisamente, são os quatro primeiros bytes de um SHA-256 sobre esses campos, reduzidos a seis dígitos decimais. Se um atacante retransmitir a conexão, o Mac e o iPhone verão cada um uma transcrição diferente e, portanto, um número diferente.
Por que se comprometer primeiro
Um código de seis dígitos tem apenas um milhão de valores, então um atacante esperto poderia tentar percorrer chaves descartáveis até que os dois lados mostrassem o mesmo número. O protocolo fecha essa porta com uma etapa de compromisso e revelação:
- Cada lado envia primeiro um hash da sua chave descartável e do seu número aleatório.
- Só depois que os dois hashes chegam é que cada lado revela os valores reais.
- Cada lado confere o que foi revelado com o hash que recebeu antes.
Como o atacante precisa se comprometer antes de ver qualquer coisa, ele não consegue ajustar os valores para coincidirem. Sobra um palpite às cegas, com uma chance em um milhão de gerar um código igual a cada tentativa, e uma tentativa fracassada aparece como uma divergência que você consegue ver.
O atalho do QR
Se você escanear o código QR do Mac, não há nada para comparar a olho. O QR contém um segredo de 16 bytes que só quem estivesse olhando para a tela do Mac poderia ter. O iPhone o usa para calcular uma prova (um HMAC sobre o handshake), e o Mac a aceita como evidência de que a pessoa que está pareando está fisicamente diante do Mac. Sem essa prova, o Mac pede ao próprio usuário que aprove.
Depois do pareamento, a confiança é uma comparação de chaves
Toda conexão seguinte é uma sessão TLS 1.3 em que os dois lados apresentam a sua chave. O iPhone pega a chave do Mac do certificado que realmente recebeu, nunca de algo que o Mac diga em uma mensagem, e a compara com a guardada em tempo constante. Uma chave diferente significa nenhuma conexão. Depois da primeira vez, nada mais é pedido a você.
Se um Mac afirmar "eu já conheço você" mas o seu iPhone não tiver chave guardada para ele, o iPhone recusa. A afirmação não prova nada, já que um estranho poderia dizê-la com a mesma facilidade.
O passo a passo prático está no guia de pareamento. Para saber o que acontece com a conexão depois que ela existe, veja o que o relay pode ver.
Perguntas
O Peering precisa de uma conta ou de um endereço de e-mail?
Não. Cada dispositivo cria a sua própria chave e a guarda no seu próprio Keychain. O pareamento é um código de seis dígitos que você compara nas duas telas.
Contra o que o código de pareamento de seis dígitos protege?
Contra alguém no meio entre o seu iPhone e o seu Mac. O código é derivado de todo o handshake, então um intermediário produz códigos diferentes nas duas telas e você vê a divergência.