Chave 0, chave pública do par
Bytes de chave pública X9.62 não comprimida (33 bytes para P-256). O celular usa isso para estabelecer o túnel criptografado.
Padrões · FIDO CTAP 2.2 híbrido (QR de passkey)
Somente se VOCÊ acabou de iniciar um login com passkey no dispositivo que exibe o QR. Se qualquer outra pessoa gerou o QR — um estranho, um agente de "suporte técnico", uma chamada de assistência remota — escanear com o seu celular autentica a sessão deles, não a sua. O padrão aberto do protocolo (FIDO CTAP 2.2 híbrido) é sólido; a ameaça é a engenharia social em torno de quem pressionou o botão "Entrar com uma passkey" primeiro.
Uma passkey é uma credencial — um par de chaves pública/privada — vinculada a um dos seus dispositivos. Se você cadastrou uma passkey para exemplo.com no seu celular, somente seu celular pode assinar o desafio de login para exemplo.com.
Isso funciona bem quando você está autenticando NO celular. Mas e quando você está no notebook que não tem uma passkey para aquele site? Você pode:
A opção 3 é o que o FIDO CTAP 2.2 "híbrido" define. O QR é a inicialização — carrega informações suficientes para que o celular encontre o notebook via Bluetooth Low Energy, estabeleça um túnel seguro de uso único e faça a proxy da cerimônia WebAuthn.
O URI tem o seguinte aspecto:
FIDO:/0123456789012345678901234567890123456789...
Os dígitos decimais são uma codificação base10 de um mapa CBOR. Após decodificação base10 + análise CBOR, o mapa tem chaves inteiras:
Bytes de chave pública X9.62 não comprimida (33 bytes para P-256). O celular usa isso para estabelecer o túnel criptografado.
10 bytes de dados aleatórios. Identifica este QR específico; o anúncio BLE transmite um hash dele para que o celular encontre o notebook correto.
0 = make-credential (cadastrando nova passkey), 1 = get-assertion (login), 2 = discoverable-credential.
O host HTTPS que faz proxy do túnel entre os dois dispositivos quando o BLE direto não está disponível (ex.: por trás de NAT). Geralmente um servidor operado por um fornecedor como cable.ua5v.com (Google) ou cable.auth.com (Apple/MS).
Segundos desde a época Unix em que o QR foi gerado. Usado para proteção contra replay — o celular recusa QRs com mais de alguns minutos.
Booleano. Indica se o notebook quer que o celular participe de manutenção passiva de estado (relevante principalmente para fluxos de enumeração de credenciais).
O protocolo é criptograficamente sólido. A verificação de proximidade via Bluetooth é real e limita o ataque a quem está fisicamente próximo. Então como isso dá errado?
Por engenharia social na iniciação. O atacante inicia um login com passkey na SUA conta no NOTEBOOK DELE. O notebook dele exibe um QR FIDO. Ele coloca esse QR na sua frente de alguma forma:
Se você escanear, seu celular envia a assinatura da sua passkey de volta para o navegador do notebook do atacante. O site para o qual você tem uma passkey pensa que você entrou. O atacante está agora logado na sua conta.
A verificação de proximidade não ajuda — o atacante está fisicamente presente. O conteúdo do QR não ajuda — é criptograficamente válido. O destino do login não ajuda — é o site correto para o qual você tem uma passkey. A única coisa que ajuda é reconhecer a situação: você nunca deve escanear um QR FIDO que não gerou você mesmo clicando em "Entrar" no seu próprio dispositivo.
Quando você envia um QR FIDO para o nosso scanner, o resultado mostra:
cable.ua5v.com do Google, servidor de túnel da Apple, etc.)?A classe de ameaça é sempre suspeito — não porque o protocolo seja falho, mas porque a avaliação de segurança é contextual e o scanner não pode saber quem pressionou "Entrar". O aviso do resultado diz exatamente isso: "escanear completa um login que ALGUÉM INICIOU EM OUTRO DISPOSITIVO. Se você mesmo não acabou de iniciar um login, recuse."
Seguro: você se sentou no notebook, abriu o site do banco ou e-mail, clicou em "Entrar com uma passkey" e o notebook exibiu o QR. Você pega o celular, escaneia o QR e aprova o prompt de proximidade. Pronto.
Não seguro: qualquer pessoa que não seja você iniciou o login. Isso inclui qualquer pessoa ao telefone, em uma chamada de suporte remoto, que enviou um QR por e-mail, que mostrou um "QR para verificar sua identidade" e qualquer QR em lugar que não seja o seu próprio dispositivo recém-exibido.
Se não tiver certeza se um QR veio de um login QUE VOCÊ iniciou, cancele o login no dispositivo original (feche a aba do navegador) e recomece do zero no dispositivo que pretendia usar. QRs FIDO reais são válidos por apenas ~10 minutos — reiniciar descarta qualquer sessão em andamento e torna a ameaça impossível.
Envie a imagem ou cole o URI FIDO:. O resultado mostra a operação, o servidor de túnel, o timestamp e um aviso claro para recusar caso você não tenha iniciado o login.