|
@@ -7,16 +7,19 @@ Protocolo de autenticação segura
|
|
|
|
|
|
# Kerberos
|
|
|
|
|
|
-Kerberos é um protocolo de rede para autenticação. Seu objetivo é garantir a autenticação segura e confiável, com o uso de chaves criptografadas. O protocolo (e sua implementação de referência) foi desenvolvido no Instituto de Tecnologia de Massachussets (Massachussets Insitute of Technology - MIT).
|
|
|
+Kerberos é um protocolo de rede para autenticação segura. O protocolo (e sua implementação de referência) foi desenvolvido no Instituto de Tecnologia de Massachussets (Massachussets Insitute of Technology - MIT). Sua especificação está disponível pela Internet Engineering Task Force - IETF, no documento RFC 4120[^1].
|
|
|
|
|
|
A premissa básica deste protocolo é a de que uma rede não oferece a segurança necessária para trafegar senhas de usuário ou outras informações sensíveis. Embora o uso de Firewalls ajude a restringir consideravelmente atividades maliciosas que possam vir a ocorrer, eles só previnem contra ataques de fora da rede, porém nada podem fazer para impedir ataques de dentro.
|
|
|
|
|
|
-O serviço Kerberos tem como seu principal objetivo garantir a autenticação segura, isto é, provar que um usuário é quem alega ser antes que este tenha acesso a demais serviços da rede. Porém, ele não tem como objetivo gerenciar contas de usuário ou controlar a autorização. Ou seja, ele não armazena IDs ou outros atributos de usuário de usuário e não define o que um usuário pode fazer. Esse tipo de controle normalmente é feito pelos próprios serviços que serão acessados via Kerberos ou delegados por estes a um serviço de diretório como o LDAP, por exemplo.
|
|
|
+O serviço Kerberos tem como seu principal objetivo garantir a autenticação segura, isto é, provar que um usuário é quem alega ser antes que este tenha acesso a demais serviços da rede. Opcionalmente, ele também pode provar que um servidor é o servidor que o usuário deseja acessar e não um servidor impostor, que eventualmente possa obter informações do usuário indevidamente.
|
|
|
+
|
|
|
+Porém, o Kerberos não tem como objetivo gerenciar contas de usuário ou controlar a autorização. Ou seja, ele não armazena IDs ou outros atributos de usuário e não define o que um usuário pode fazer. Esse tipo de controle normalmente é feito pelos próprios serviços que serão acessados via Kerberos ou delegados por estes a um serviço de diretório como o LDAP, por exemplo.
|
|
|
|
|
|
Algumas características-chave do Kerberos são:
|
|
|
|
|
|
-* As senhas nunca são transferidas pela rede em texto simples. Elas sempre são criptografadas.
|
|
|
+* As senhas nunca são transferidas pela rede.
|
|
|
* Single Sign On: o usuário não precisa digitar a senha a cada vez que quiser acessar um serviço. A sessão é persistida por algum tempo, de forma que ele pode se autenticar uma única vez e acessar vários serviços diferentes.
|
|
|
+* Aplicações que fizerem uso do Kerberos devem ser adaptadas para isso. Nem todas as aplicações são integradas ao Kerberos.
|
|
|
|
|
|
## Como o Kerberos funciona?
|
|
|
|
|
@@ -24,24 +27,44 @@ Identificar pessoas é um hábito comum. Cada pessoa tem características única
|
|
|
|
|
|
Porém, quando se tem a complexidade de uma comunicação em rede de computadores em jogo, é necessário também utilizar técnicas mais complexas no processo de identificação. Informar uma senha em uma rede sem protegê-la dará a possíveis espiões, que ficam monitorando a rede, a possibilidade de tomar conhecimento desta senha e assim poderão se fazer passar por alguém que não são, e com isso obter acesso a recursos que não deveriam ter.
|
|
|
|
|
|
-Para facilitar a compreensão do Kerberos, pode-se pensar em dois modelos de autenticação: diretamente com o serviço (não segura), e via Kerberos (segura). No primeiro cenário, o usuário conecta-se ao serviço que deseja acessar, informa sua senha de acesso e então consome o serviço. Embora seja um cenário simples, apresenta uma brecha de segurança: as senhas dos usuários trafegam pela rede sem qualquer tipo de proteção. Assim podem ser facilmente capturadas por alguém que esteja monitorando a rede.
|
|
|
+### Modelos de autenticação
|
|
|
+
|
|
|
+Para facilitar a compreensão do Kerberos, pode-se pensar em três modelos de autenticação: por asserção, por senha, diretamente com o serviço (não segura), e via Kerberos (segura). No primeiro cenário, o usuário simplesmente informa seu nome e o serviço parte do pressuposto de que ele está sendo honesto. Este modelo sequer pode ser considerado uma autenticação, propriamente, mas oferece a conveniência de não solicitar senha a cada vez que o usuário deseja fazer acesso ao serviço. Neste primeiro cenário, é muito fácil que um usuário finja ser outro e obtenha acesso indevido.
|
|
|
+
|
|
|
+No segundo modelo, o usuário conecta-se ao serviço que deseja acessar, informa sua senha de acesso e então consome o serviço. A cada vez que fizer acesso deverá fornecer sua senha novamente. Embora seja um cenário simples, apresenta uma brecha de segurança: as senhas dos usuários trafegam pela rede sem qualquer tipo de proteção. Assim podem ser facilmente capturadas por alguém que esteja monitorando a rede. Se a senha for informada várias vezes, isso aumenta ainda mais o risco de que esta seja interceptada em algum momento.
|
|
|
+
|
|
|
+No terceiro cenário, não pode haver conexão direta entre o usuário e o serviço. Ele deve primeiro ser identificado por uma "autoridade da rede", que atesta que ele é quem alega ser, portanto sua primeira conexão será feita com essa autoridade (o Kerberos), que fará uma série de negociações com o usuário e com o serviço até que prove a autenticidade do usuário (e opcionalmente do serviço também).
|
|
|
+
|
|
|
+### O modelo de autenticação do Kerberos
|
|
|
|
|
|
-No segundo cenário, não pode haver conexão direta entre o usuário e o serviço. Ele deve primeiro ser identificado por uma "autoridade da rede", que atesta que ele é quem alega ser, portanto sua primeira conexão será feita com essa autoridade (o Kerberos), que lhe dará um tíquete com prazo de validade. Este tíquete, enquanto válido, dá ao usuário a possibilidade de conectar-se ao serviço.
|
|
|
+Para melhor compreender este modelo de autenticação, vamos primeiramente entender o que é o serviço Kerberos, também conhecido como *Key Distribution Center* (centro de distribuição de chaves). Para simplificar, vamos chamá-lo de KDC. O KDC é composto por três partes:
|
|
|
|
|
|
-O Kerberos trabalha com um modelo de autenticação centralizada e chaves criptografadas. Essas chaves são armazenadas em um centro de distribuição de chaves (do inglês, *Key Distribution Center* - KDC). Há dois tipos de chave armazenadas em um KDC: as chaves de usuário e as chaves de serviço. As chaves de usuário são as senhas dos usuários adaptadas por uma função de mascaramento (hash). As chaves de serviço são um valor gerado aleatoriamente, que funciona como a senha do serviço. A chave de serviço é armazenada não apenas no KDC, mas também em um arquivo chamado keytab, na máquina que executa o serviço.
|
|
|
+* Um serviço de autenticação (*Authentication Service* - AS);
|
|
|
+* Um serviço de concessão de tíquetes (*Ticket Granting Service* - TGS);
|
|
|
+* Uma base de dados de usuários e serviços (coletivamente chamados de *principals*).
|
|
|
+
|
|
|
+Além do KDC, outra parte importante desse modelo são os utilitários de cliente do Kerberos, que garantem a comunicação do usuário (ou serviço) com o KDC.
|
|
|
+
|
|
|
+Em uma rede *kerberizada*, o primeiro contato do usuário com o KDC é o serviço de autenticação (AS). O usuário, por meio de seu software cliente do Kerberos conecta-se ao AS para se identificar. Esse primeiro passo é necessário para que ele possa ter acesso a qualquer serviço da rede que esteja *kerberizado* (cujo acesso somente seja possível por meio deste protocolo).
|
|
|
|
|
|
## Implementações do Kerberos
|
|
|
|
|
|
-Um protocolo apenas define características que o serviço deve oferecer, entretanto não é o serviço em si. Este dependerá das suas implementações, isto é, o software que apresentará as características do protocolo. Algumas das implementações do Kerberos são:
|
|
|
+Um protocolo apenas define características que o serviço deve oferecer, entretanto não é o serviço em si. Este dependerá das suas implementações, isto é, o software que apresentará as características do protocolo. Algumas das implementações do Kerberos, de código-fonte livre são:
|
|
|
|
|
|
* MIT Kerberos
|
|
|
* Heimdal Kerberos
|
|
|
* GNU Shishi
|
|
|
|
|
|
+Algumas implementações de código fechado são:
|
|
|
+
|
|
|
+* CyberSafe TrustBroker
|
|
|
+* Microsoft Active Directory
|
|
|
+
|
|
|
## Referências
|
|
|
|
|
|
-* [](http://web.mit.edu/kerberos/)
|
|
|
-* [](http://web.mit.edu/kerberos/krb5-latest/doc/)
|
|
|
-* [](http://kerberos.org/software/tutorial.html)
|
|
|
-* [](https://tools.ietf.org/html/rfc4120)
|
|
|
-* [](https://kerberos.org/software/adminkerberos.pdf)
|
|
|
+* [MIT Kerberos](http://web.mit.edu/kerberos/)
|
|
|
+* [Designing an Authentication System: a Dialogue in Four Scenes](https://web.mit.edu/Kerberos/dialogue.html) (Projetando um Sistema de Autenticação: um Diálogo em Quatro Cenas)
|
|
|
+* [Kerberos Protocol Tutorial](http://kerberos.org/software/tutorial.html) (Tutorial do Protocolo Kerberos)
|
|
|
+* [The MIT Kerberos Administrator's How-to Guide](https://kerberos.org/software/adminkerberos.pdf) (O Guia de Administração do MIT Kerberos)
|
|
|
+
|
|
|
+[^1]: [The Kerberos Network Authentication Service (V5)](https://tools.ietf.org/html/rfc4120) (O Serviço de Autenticação em Rede Kerberos (V5))
|