Ambos são melhores que nada
Vamos deixar isso claro: se você está escolhendo entre 2FA baseado em SMS e nenhum 2FA, ative o SMS. Um segundo fator fraco é melhor que nenhum segundo fator. Mas se você tem a escolha entre SMS e um aplicativo autenticador TOTP, o autenticador é a melhor opção. Veja por quê.
Como funciona o 2FA por SMS
Quando você faz login em uma conta com 2FA baseado em SMS, o serviço envia uma mensagem de texto contendo um código numérico curto para seu número de telefone. Você digita o código no formulário de login, e se corresponder, você está autenticado.
Simples. Amplamente suportado. Quase todo mundo tem um telefone que recebe mensagens.
O problema é que SMS foi projetado para comunicação, não para segurança. Mensagens de texto passam pela rede da sua operadora, e existem vários pontos ao longo desse caminho onde as coisas podem dar errado.
Como funciona o TOTP
O TOTP gera códigos no seu dispositivo usando um segredo compartilhado e a hora atual. Se quiser a explicação completa, há um post separado sobre como o TOTP funciona. A versão curta: seu aplicativo autenticador e o servidor têm uma cópia da mesma chave secreta. Ambos sabem que horas são. Então eles produzem independentemente o mesmo código de 6 dígitos a cada 30 segundos. Nenhuma rede necessária.
Onde o SMS falha
Troca de SIM
Esse é o maior problema. Um ataque de troca de SIM acontece quando alguém convence sua operadora de telefone a transferir seu número para um novo cartão SIM. O atacante liga para o suporte ao cliente, se passa por você (usando informações pessoais de vazamentos de dados, redes sociais ou engenharia social), e pede para ativar seu número em um dispositivo deles.
Uma vez que eles controlam seu número, recebem seus códigos SMS. Podem então fazer login em qualquer conta onde você usa 2FA baseado em SMS.
Troca de SIM não é teórico. Foi usado para roubar criptomoedas, invadir contas corporativas e atingir jornalistas e ativistas. O Centro de Denúncias de Crimes na Internet do FBI recebeu mais de 2.000 reclamações de troca de SIM em um único ano.
Vulnerabilidades SS7
SS7 é um conjunto de protocolos que redes de telefone usam para rotear chamadas e mensagens. Foi projetado nos anos 1970, quando as únicas entidades na rede eram empresas de telecom confiáveis. Segurança não era prioridade.
Pesquisadores demonstraram que atacantes com acesso à rede SS7 podem interceptar mensagens de texto sem a vítima saber. Esse tipo de ataque requer alguma sofisticação técnica e acesso à rede, então não é algo que um script kiddie aleatório execute. Mas atores de nações-estados e grupos criminosos bem financiados já o usaram.
Dependência de rede
SMS requer serviço celular. Sem sinal, sem código. Se você estiver viajando internacionalmente, em um porão, ou em algum lugar com cobertura irregular, pode não conseguir fazer login.
O TOTP funciona offline. O código é gerado localmente no seu dispositivo. Você poderia estar no modo avião, em um submarino, onde for. Desde que o relógio do seu dispositivo esteja mais ou menos correto, os códigos funcionam.
Atrasos de entrega
Mensagens às vezes chegam atrasadas. Congestionamento da operadora, problemas de rede ou roteamento internacional podem atrasar um SMS por segundos ou até minutos. Se o código expirar antes de você recebê-lo, você terá que solicitar um novo. Irritante, e ocasionalmente um problema real quando você precisa fazer login rapidamente.
Códigos TOTP estão disponíveis instantaneamente. Você abre o aplicativo e o código está lá.
Onde o SMS tem vantagem
Conveniência. Você não precisa instalar um aplicativo. Não precisa escanear QR codes. Não precisa entender o que é uma “chave secreta”. O serviço envia um código por mensagem, e você digita. Para pessoas que não se sentem confortáveis gerenciando um aplicativo autenticador, SMS é mais fácil de configurar e usar.
Há também a questão do backup. Se você perder seu telefone, pode obter um novo SIM com o mesmo número da sua operadora. Recuperar acesso a um aplicativo autenticador pode ser mais difícil se você não configurou backups.
A diferença de segurança, em termos simples
A diferença central: códigos TOTP nunca viajam por uma rede. São gerados no seu dispositivo e digitados em um formulário de login. É só isso. Não há mensagem para interceptar, nenhuma operadora para enganar socialmente, nenhuma vulnerabilidade de protocolo para explorar.
Códigos SMS viajam por infraestrutura que você não controla: rede da sua operadora, roteamento SS7, torres de celular. Cada salto é um ponto potencial de interceptação.
O NIST (Instituto Nacional de Padrões e Tecnologia dos EUA) sinalizou SMS como um autenticador “restrito” já em 2016, recomendando que serviços se movam para métodos baseados em aplicativos ou hardware. Essa recomendação não mudou.
Comparação prática
| SMS | TOTP | |
|---|---|---|
| Precisa de serviço celular | Sim | Não |
| Vulnerável a troca de SIM | Sim | Não |
| Vulnerável a interceptação SS7 | Sim | Não |
| Dificuldade de configuração | Baixa | Baixa-média |
| Entrega de código | Às vezes atrasada | Instantânea |
| Funciona offline | Não | Sim |
| Padrão aberto | Não | Sim (RFC 6238) |
O veredito
Se um serviço oferece TOTP como opção, use. A configuração leva um minuto, e você obtém um segundo fator significativamente mais seguro. Se SMS é a única opção disponível, use de qualquer forma. Qualquer segundo fator reduz seu risco comparado a uma senha sozinha.
Para um gerador de TOTP gratuito baseado em navegador que você pode experimentar agora, confira 2fa.zip.