É seguro utilizar Autenticação sem Senha?

Em segurança da informação é comum ouvirmos falar na tríade da segurança composta pelos aspectos da confidencialidade, integridade e disponibilidade, contudo, temos outra tríada importante e nem tão conhecida que envolve os aspectos da segurança, funcionalidade e usabilidade.

Imagem de uma Triângulo descrevendo a relação entre segurança, funcionalidade e usabilidade

Como se pode observar na representação do triângulo, existe uma interdependência entre estes aspectos. À medida que tornamos um sistema mais seguro, dificultamos seu uso e perdemos em termos de funcionalidade. Ou seja, em teoria, um sistema perfeitamente seguro seria tão difícil de usar ou com tão poucas funcionalidades que se tornaria inútil.

Na contramão deste processo observamos o crescimento da Autenticação sem Senha ou Passwordless Authentication, com a finalidade de proporcionar, simultaneamente, maior segurança e usabilidade (facilidade de uso). Mas o quanto disso é verdade?

Em primeiro lugar, precisamos perceber que a proteção de dados por senhas já não é mais suficiente. Segundo relatório da Verizon, estima-se que aproximadamente 81% dos incidentes com comprometimento de dados ocorrem em razão de senhas fracas ou roubadas.

Somado a este cenário, em enquete realizada pelo Google / Harris Poll, aponta que 52% dos respondentes utilizam a mesma senha em vários serviços e 13% utiliza a mesma senha em todas as suas contas.

Na autenticação sem senha a verificação das credenciais não depende do segredo de algo que usuário sabe (a senha), mas sim de algo que o identifica de forma única (posse).

Uma pessoa usando um aplicativo de autenticação

A autenticação sem senha anda de mãos dadas com outro conceito, denominado autenticação de dois fatores (two factor authentication - 2FA) que utiliza, por exemplo, uma segunda senha de uso único ou "link mágico" enviado por e-mail, SMS, por meio de aplicativos instalados no celular, biometria (iris, digital, face etc.) ou ainda tokens UF2/FIDO.

Alguns benefícios no uso da autenticação sem senha incluem:

  • melhor experiência do usuário;
  • simplificação na gestão de senhas pela área de TI;
  • menor exposição a ataques de força bruta, phishing, keylogging ou roubo de credenciais;

Mas finalmente respondendo a pergunta... É seguro utilizar Autenticação sem Senha?

Bem, isso depende principalmente do método utilizado. Entre os mais fracos estão os links mágicos ou códigos de uso único enviados por e-mail. Isso porque a segurança estará diretamente relacionada a segurança do e-mail que pode utilizar para autenticação a forma convencional de usuário e senha. Em terceiro lugar eu elegeria o SMS. Apesar de estar sujeito a ataques de SIM Swap ou interceptação, é bem mais seguro do que o e-mail, e a mensagem é entregue diretamente para algo que o usuário de fato tem a posse física, no caso, o celular.

No segundo lugar os aplicativos de autenticação no celular. Esse método resolve o problema do SIM Swap, mas normalmente requer que você armazene de forma segura, geralmente de forma impressa, códigos de backup para o caso de perda do aparelho. Ainda assim gosto bastante desta abordagem. No topo da lista e primeiro lugar estão os tokens UF2/FIDO. Estes dispositivos podem combinar múltiplos fatores de autenticação, como biometria da digital, e utiliza técnicas avançadas de criptografia assimétrica.

Os maiores problemas na autenticação sem senha, como já mencionado, são os custos elevados dependendo da solução, não protege contra ataques de SIM Swap, pode ser um problema para o usuário no caso da perda do dispositivo (celular ou token) e a biometria não é a prova de falhas. Apesar de tudo, é um controle de segurança que vale à pena. O Google, por exemplo, iniciou no ano passado a adoção de 2FA para seus usuários e já reduziu em 50% o comprometimento de contas entre os usuários que adotaram.

* Migrado para TabNews pelo autor.

Ricardo, muito obrigado por trazer esse conteúdo para cá! Principalmente pelo fato da primeira ideia de implementação de login aqui no TabNews ser com magic link, mas por um medo das pessoas não receberem o email e terem a conta num estágio "limbo", optamos pelo método tradicional.

Eu ainda acho que devemos voltar com essa ideia e eliminar o dado da senha do banco de dados.

Bem... Implementa os dois kkkk. Brincadeiras a parte, empresas como a [Microsoft](https://microsoft.com) usam seus métodos de 2fa como métodos de login, sem precisar da senha (apesar de ainda existir essa opção). O [Github](https://github.com), por exemplo, usa o seu aplicativo como 2fa. Então, **é bom ter opção de entrar com senha**, mas não necessariamente é ruim ter a opção de entrar com magic links ou, como o [Notion](https://notion.so/product) faz, um tipo de magic link, só que tem, também, a opção de colocar o código enviado por e-mail.
Justo! Acho que implementar as suas seja uma solução boa, mas isso ainda faz manter uma informação valiosa no banco de dados que é a senha... e caso a pessoa tenha utilizado a mesma senha em outro serviço na qual teve seus dados expostos, ela está 50% exposta aqui (faltando só o email). Em paralelos, já vi serviços implementarem magic link de uma forma muito insegura, que é receber um email e ao clicar no link dele, o dispositivo na qual fez a requisição é autenticado. Por exemplo: 1. Atacante (pelo celular, ou qualquer outro client) faz requisição com o usuário/email da vítma. 2. Vítma recebe email e clica sem querer no link (ou o Outlook clica por você, como vimos no passado) 3. Celular do atacante é autenticado.
Sim sim. Além de autenticação por magic link (ou outro método sem senha) ser segura (se implementada da forma correta), por não precisar armazenar a senha em um banco de dados "home-made" e pelo acesso estar mais seguro (por exemplo: é muito mais difícil hackear um banco de dados que é da Google do que um que não podemos garantir se vai vazar a URL, etc.), também é conveniente para o usuário. Quanto a implemantação, não acho que devemos fazer apenas por e-mail. Além de aplicativos como o [Google Authenticator](https://pt.wikipedia.org/wiki/Google_Authenticator), se no futuro nós fizermos um aplicativo, poderiamos implementar ele assim também. Em pararelo, poderíamos criar backup codes, para caso a pessoa perder o acesso do e-mail, resolvendo o problema que fez com que não implementasse o magic link.
João... gosto bastante da opção com OPT (One-Time Password) que utiliza aplicativos como o Google Authenticator que você mencionou ou o [Authy](https://authy.com/). Seria uma opção segura, viável e sem custos adicionais para o usário, como no caso dos tokens UF2/FIDO. Respondendo ao Filipe, também não gosto de links mágicos por e-mail, como mencionei, acho a pior implementação de autenticação sem senha em termos de segurança. Contudo ainda temos um "pequeno" problema na implementação de soluções assim. Uma solução totalmente passwordless só transfere a responsabilidade da autenticação por senha para um terceiro. O OTP facilita logins futuros, mas daí o usuário já fez um cadastro, confirmou a criação da conta por e-mail (como no TabNews). Então como se daria a recuperação do acesso? Suponha que o usuário perca os códigos de backup e o celular com o app de autenticação. Solicitar o reset de senha pelo e-mail torna tudo novamente frágil e susceptível a ataques. Tenho algumas ideias que envolvem biometria e a assinatura de documentos com a plataforma Gov.BR, mas abordarei esse assunto mais profundamente quando conseguir fazer uam prova de conceito mínima.
Ricardo, não deixe de fazer uma nova postagem na raiz do TabNews com os seus estudos no tema 🤝