A autenticação de dois fatores (A2F) ou autenticação em duas etapas (Two-factor authentication ou 2FA em inglês) tem se tornado uma tendência, especialmente para serviços de Internet como Facebook, Twitter, Gmail, Dropbox, entre outros. Pois permitem ter uma camada extra de segurança das informações dos usuários.
Neste post eu vou lhe mostrar o que é a autenticação de dois fatores, e, nas seguintes publicações, como implementar com o Scriptcase, especificamente com o uso de 2 softwares diferentes: Swivel, e desenvolvimento em NodeJS, pretendo em seguida, mostrar-lhes como fazê-lo com algum hardware específico.
Conceitos
Conceitualmente, a autenticação de dois fatores consiste em adicionar uma etapa à autenticação existente, quando o acesso a um aplicativo é necessário ou a validação de um usuário para uma tarefa específica. Em termos gerais de segurança, existem diferentes tipos de autenticação que, combinados, fornecem um melhor nível de segurança, são eles:
- Algo que o usuário conhece. Isso significa que o usuário sabe e lembra quando solicitado, como a senha de e-mail ou a senha de 4 dígitos do seu caixa eletrônico.
- Algo que o usuário possui. Refere-se a algum objeto físico ou virtual que o usuário possui, por exemplo, Cartões de Débito ou Crédito urgente, além de aplicar chaves USB com ou sem códigos, teclados virtuais, mensagens SMS, e-mails, entre outros.
- Algo que o usuário é. Refere-se a algum recurso biométrico, como impressão digital ou leitura de íris.
OTC On Time Code e OTP One Time Password
Estas definições referem-se a cadeias de caracteres que podem ser numéricos ou alfanuméricos e que serão usados apenas uma vez para acessar o aplicativo, são gerados dinamicamente e enviados por SMS, ou com um aplicativo móvel, etc, sempre que um usuário deseja fazer o login. No entanto, para essas estações de trabalho ou estações móveis, onde o acesso é constante e/ou regular, pode ser configurado para que não peça esse A2F, mas quando for acessado de outro dispositivo diferente.
Vamos ver um pouco mais detalhadamente alguns exemplos dos elementos mais usados do tipo de autenticação “Algo que o usuário tem” são:
Tokens de hardware para A2F (Hard Tokens)
É certamente a maneira mais antiga de usar o A2F, os tokens de hardware são pequenos, como um chaveiro, e produzem um novo código numérico de vez em quando (30 segundos em média). Toda vez que o usuário quiser entrar no aplicativo, observe o dispositivo, insira o código A2F atual e digite-o no site ou aplicativo.
Alguns outros tokens de hardware transferem automaticamente o código A2F quando estão conectados diretamente à porta USB do computador.
Tokens de Software para A2F (Soft Tokens)
Talvez seja uma das formas mais populares de autenticação de dois fatores, que funciona de maneira semelhante à anterior, já que usa um código de acesso exclusivo gerado, mas a diferença é que é apenas um software. Primeiro, o usuário deve baixar e instalar um aplicativo A2F gratuito em seu smartphone ou computador de mesa, por exemplo, o Google Authenticator. Ao efetuar login, o usuário primeiro insere um nome de usuário e uma senha e, quando solicitado, você deve digitar o código exibido no aplicativo.
Exemplo de A2F em Google com o Google Autenticador.
Mensagem de texto SMS e/ou voz baseada em A2F
Obviamente, como é um SMS, a dependência do celular é total. Sua operação é que depois de receber um nome de usuário e senha, o site usando SMS envia ao usuário um código de acesso único (OTP). A diferença entre texto e voz, é que quando é por voz, quando o usuário acessa, uma chamada é feita automaticamente para o usuário ler o OTP para só então poder acessar. Esta opção é usada em países onde a telefonia móvel é deficiente e/ou os smartphones são muito caros.
Então, se pudermos combinar elementos de cada um desses tipos de autenticação, poderíamos dizer que nosso aplicativo seria mais seguro. E devemos esclarecer, isso não significa que seja impenetrável, apenas que será mais difícil para alguém não autorizado acessar nossas informações.
No entanto, regularmente quando falamos sobre a implementação do A2F em nossos aplicativos, o que fazemos regularmente é adicionar uma camada à tradicional que já temos, porque 99% dos aplicativos usam o tipo de autenticação “Algo que o usuário conhece” porque as credenciais de acesso são um usuário e uma senha. Assim, um segundo fator poderia ser outro elemento dos dois tipos restantes de autenticação.
Nas próximas 2 publicações usaremos como um segundo fator “Algo que o usuário possui“, mas no nível de serviços (software) já que no primeiro exemplo, usaremos um “teclado virtual” para validar um PIN ou Senha em nosso aplicativo e no outro exemplo, eles nos enviarão um código por email, SMS ou usaremos o Google Authenticator.
Também é claro que as especificações e como funciona o A2F, depende inteiramente do provedor de serviços. E na maioria dos casos existem exemplos em código-fonte para diferentes linguagens como PHP, .Net, Java, entre outros.
Existem diferentes provedores de serviços para o A2F entre muitos outros, alguns deles são:
- Giro https://swivelsecure.com/
- CA. https://www.ca.com/us/products/ca-strong-authentication.html
- RSA. https://www.rsa.com/pt-br/products/rsa-securid-suite/rsa-securid-access/authentication- manager
- SafeNet. https://www2.gemalto.com/sas/
No meu próximo post, vou falar sobre como implementar o A2F usando o Swivel em uma aplicação no Scriptcase.
Confira mais artigos no nosso blog!
Você pode gostar também…