O Signal adicionou uma camada extra para garantir que você está falando com a pessoa certa: verificação de contato com confirmação manual de um código. Contra engenharia social, é um bom passo. Entre pessoas, funciona.
O problema aparece quando a conversa é intermediada por código. Se quem lê e responde é um agente, quem verifica não é o humano, é o sistema. E o sistema não tem intuição: ele não estranha um contato trocado se a mensagem parece legítima, com nome de exibição parecido e um pretexto convincente.
O cenário deixa de ser hipotético em qualquer operação que use agente para ler e responder mensagem, recebendo instrução por aplicativo. Se um atacante conseguir que o agente aceite um contato novo como confiável, criptografia nenhuma salva: o dado vai para quem não devia e ninguém fica sabendo. No instante em que chega a primeira mensagem de um número desconhecido, o agente não tem como saber que aquele não é o número original.
A prática que funciona não está no aplicativo. Está em nunca confiar que o remetente é quem diz ser. Instrução escrita no pedido não é controle de acesso. O desenho que sustenta é uma lista de contatos autorizados carregada quando o sistema sobe, com cada mensagem conferida contra ela: número que não consta é descartado ou vai para uma fila de revisão à mão.
Verificação de perfil é bom. Verificação de identidade dentro do código é o que não pode faltar.
