Kerberos
O Kerberos é um protocolo de autenticação em redes não seguras, baseado em bilhetes (tickets), e que permite identificar os utilizadores de forma segura.
O Kerberos usa apenas cifra simétrica.
Existem várias versões de Kerberos disponíveis, sendo a versão 5 (V5) a mais recente.
De forma simplificada, tanto o cliente como o servidor de uma determinada aplicação provam a sua identidade entre si através do acesso a um servidor Kerberos.
As mensagens do protocolo Kerberos são protegidas contra ataques de intercepção e repetição.
A interacção entre um cliente e o servidor Kerberos V5 é ilustrada na figura seguinte.
O detalhe do protocolo pode ser consultado nas aulas téoricas.
Kerberos simplificado
É possível simplificar o Kerberos para ficar apenas com o componente Saut.
A figura seguinte ilustra a troca de mensagens da versão simplificada (slide das aulas teóricas).
A tabela no canto superior direito da figura indica a distribuição de chaves.
Para ajudar na utilização do Kerberos, foi criada a biblioteca kerby-lib que contém
os stubs de invocação do web service já gerados, bem como classes utilitárias, a saber:
-
Ticket e Auth representam as estruturas de dados do Kerberos.
SessionKey e RequestTime representam as restantes estruturas.
-
TicketView e AuthView (e restantes views) representam cópias dos dados, e podem ser transformadas em XML.
-
CipheredView permite proteger o conteúdo de uma view com uma cifra de dados.
Restantes módulos do Kerberos simplificado:
- Kerby-contract: WSDL do servidor.
- Kerby-lib: depende de Kerby-ws-cli. Os handlers vão depender de Kerby-lib.
- A classe SecurityHelper contém vários métodos estáticos para gerar chaves e cifrar/decifrar Views com uma chave.
- A classe CipherClerk contém vários métodos para marshalling/unmarshimalling de CipheredViews de/para XML/Bytes.
- Kerby-ws: servidor que está a correr na RNL. Ao arrancar, carrega os utilizadores e passwords a partir de um txt, gera chaves para cada um e mantém em memória. Implementa a Operação RequestTicket, que devolve uma SessionKeyandTicketView, de acordo com o esquema acima.
- Kerby-ws-cli: stubs para invocação do Web Service.
Informação mais detalhada sobre as classes da biblioteca:
© Docentes de Sistemas Distribuídos, DEI, IST, UL