Introdução ao conceito de autenticação
Tags: security, webdev, beginners
Published: 2021-06-23 03:04:00

Qualquer pessoa que utilize algum serviço da internet hoje, 
independente da função, pode esbarrar com a autenticação. 

Autenticação faz parte de um processo de segurança. No caso de uma aplicação, o famoso "login" é uma forma de autenticação.

Existem inúmeras maneiras de um usuário realizar o login em alguma aplicação, mas aqui o foco é introduzir como funciona a autenticação de maneira bem breve e entender alguns conceitos de segurança da informação.

##**Entendendo o IAAA**

 Entrando mais no quesito fundamental de segurança, a sigla IAAA vem de *identification, authentication, authorization* e *accounting*, que em português significa identificação, autenticação, autorização e auditoria. 

Ter em mente esses 4 conceitos é bem importante para entender o processo de autenticação.

* Identificação - Algo que mostre quem você é

* Autenticação - Algo que prova quem você é

* Autorização - Algo que permite o que você pode acessar

* Auditoria - Registro de todo esse processo

No ciclo de autenticação, você precisa mostrar quem você é, enquanto a autenticação vai provar que você é você mesmo. Com isso você vai ter a autorização de tudo que é permitido que você tenha acesso e a auditoria vai deixar registrado que você executou todo esse processo.

Com esse conceito em mente fica mais fácil entender que a autenticação permite que uma entidade prove a sua identidade utilizando credenciais conhecidas por outra entidade. E claro, que seja dada a devida autorização para acessar tal conteúdo.

Isso significa que para alguém realizar uma autenticação, ela precisa primeiro saber quem você é. Por isso que sempre que vamos criar uma conta em um site novo por exemplo, são solicitadas informações básicas que nos identifique, e nesse caso, um meio de autenticação, que faça com que a aplicação saiba que somos nós mesmos que estamos acessando aquele site. Nesse caso, o uso de senhas e usernames são uma das maneiras mais comuns de prover autenticação, porém não são as únicas. 

Esse conceito acontece até no mundo fora da internet, por exemplo, quando você precisa entrar em um prédio que possui controle de acesso pela primeira vez. Geralmente você precisa se identificar, mostrar quem você é (com um RG por exemplo), alguém irá conferir se é você mesmo no RG (ou pelo menos deveria hehe) ,  e então será dada a devida permissão para você acessar o prédio.

Portanto, se a autenticação não provar que você é você, a autorização para acessar o que deseja não será concedida. Isso significa também que, por mais que você tenha acesso ao banco de dados da aplicação por exemplo, se você só tiver permissão de consulta, o processo de autenticação vai garantir que você consiga consultar o banco de dados, mas se não for permitida alteração no banco, a autenticação não irá conceder a autorização de edição.

A autenticação vai sempre ocorrer através da comunicação de duas entidades, isto é, você vai contar quem você é para uma entidade e essa entidade vai confirmar que você é você. Essa entidade pode ser o serviço de autenticação da aplicação por exemplo. 

Esses serviços de autenticação podem ser Kerberos, LDAP, SSO, OAuth, Federation ID e etc. 


A autenticação pode acontecer de inúmeras formas, e todas elas variam de acordo com a sensibilidade da informação que necessita da devida autorização para ser acessada, isto é, em locais muito restritos, a autenticação pode acontecer através de múltiplos fatores para reduzir a chance de fraudes e acessos indevidos. 

##**O fator de autenticação**

O fator de autenticação é a maneira que uma entidade utiliza para garantir que a autorização de acesso a tal conteúdo seja dada para a pessoa que é legitimamente autorizada à acessá-la. 

Voltando ao exemplo do banco, se sua credencial possui permissões de administrador, isso significa que você possui uma grande quantidade de permissões ao banco de dados da aplicação, que se não for utilizada de maneira prudente, pode causar diversos danos.

Isso significa que uma credencial de administrador deve ser protegida e possuir acesso restrito, logo, utilizar somente um fator de autenticação (como usuário e senha) pode apresentar grandes riscos à aplicação.

Para isso, existem 5 fatores de autenticação:

* Algo que você sabe - Se refere a algum tipo de segredo compartilhado. Ex. Senhas, pins

* Algo que você tem - se refere a algo que você fisicamente possui. Ex. Smartcards, tokens

* Algo que você é - se refere a utilização de biometria. Ex. Digitais, voz

* Onde você esta - se refere à autenticação através da localização Ex. Gps, máquina específica

* Algo que você faz - se refere a alguma ação utilizada para completar a autenticação. Ex. Assinatura

 

*Não vou me aprofundar no conceito de fator de autenticação, mas caso queiram entender mais a fundo segue uma sugestão de leitura: [https://dojowithrenan.medium.com/the-5-factors-of-authentication-bcb79d354c13](https://dojowithrenan.medium.com/the-5-factors-of-authentication-bcb79d354c13)*

O conceito de multi fator de autenticação significa que você utiliza dois ou mais fatores exemplificados acima como formas de autenticar, isto é, você precisa provar, no mínimo, duas vezes que você é de fato você e não algum tipo de fraude.

A utilização em múltiplos fatores é interessante também em casos que ocorram alguma falha no primeiro fator, pois o segundo fator consegue bloquear uma autenticação fraudulenta.

Isso significa que se o primeiro fator seja uma senha (algo que você sabe) e o segundo fator seja um token (algo que você tem), e alguém descubra sua senha mas não tenha o token, esse alguém não vai conseguir autenticar e ter acesso as devidas autorizações que aquela credencial permite.

Um outro exemplo é quando existe um controle físico que utiliza cartão de acesso (algo que você tem) mais biometria (algo que você é). Caso a pessoa X perca o cartão e a pessoa Y ache e tente utilizar esse cartão para acessar essa área restrita, a pessoa Y não vai conseguir dar continuidade no processo de autenticação pois ela não possui a biometria da pessoa X. 

Além disso, existem alguns problemas muito comuns em autenticação, como senhas fracas, perda de senhas, erros de biometria e por ai vai, portanto, utilizar dois ou mais fatores de autenticação é mais uma barreira de proteção em casos de roubos de credencial, força bruta ou vulnerabilidade em algum dispositivo de autenticação. 

Por conta desses fatores é de extrema importância habilitar multifator de autenticação em qualquer tipo de processo de autenticação, principalmente em artefatos que possui um grande poder de impacto caso caia em mãos erradas (como utilizar somente usuário e senha para credenciais de administrador/domain controller por exemplo), pois caso ocorra alguma falha no primeiro fator, o segundo fator pode bloquear que pessoas não autorizadas consigam acesso a alguma credencial que não é devida. 

##**E a auditoria?**

A auditoria, no fim das contas, são os registros. O registro de que aquela autenticação ocorreu por aquele usuário em X hora e X data. Em cybersecurança costumamos utilizar logs como forma de registro, mas se tratando de proteção de algum artefato físico, os registros podem ser câmeras de segurança por exemplo.

Isso significa que quando uma aplicação possui logs de auditoria habilitados para autenticação dos usuários de uma aplicação, a gente consegue ter o registro de todas as autenticações realizadas e investigar se houve um possível acesso não autorizado, ou até mesmo tentativa de roubo de credencial (em caso de ataques de força bruta por exemplo).

Por conta desse registro, é possível identificar incidentes de segurança e realizar o monitoramento efetivo de um artefato, além de ajudar em análises pós incidente.