Distribuição de chaves

A técnica de autenticação de chave secreta não explica como o cliente e o servidor obtêm a chave de sessão secreta a ser usada em sessões entre si. Se forem pessoas, podem se encontrar em segredo e concordar com a chave. Mas se o cliente for um programa em execução em uma estação de trabalho e o servidor for um serviço em execução em um servidor de rede, esse método não funcionará.

Um cliente desejará se comunicar com muitos servidores e precisará de chaves diferentes para cada um deles. Um servidor se comunica com muitos clientes e também precisa de chaves diferentes para cada um deles. Se cada cliente precisar de uma chave diferente para cada servidor e cada servidor precisar de uma chave diferente para cada cliente, a distribuição de chaves se tornará um problema. Além disso, a necessidade de armazenar e proteger muitas chaves em muitos computadores cria um enorme risco à segurança.

O nome do protocolo Kerberos sugere sua solução para o problema da distribuição de chaves. Kerberos (ou Cerberus) era uma figura na mitologia clássica grega— um cão feroz de três cabeças que impedia os intrusos vivos de entrar no Submundo. Como a proteção mítica, o protocolo Kerberos tem três cabeças: um cliente, um servidor e um terceiro confiável para mediar entre eles. O intermediário confiável nesse protocolo é o KDC (Centro de Distribuição de Chaves).

O KDC é um serviço em execução em um servidor fisicamente seguro. Ele mantém um banco de dados com informações de conta para todas as entidades de segurança em seu realm. Um realm é o equivalente kerberos de um domínio no Windows.

Juntamente com outras informações sobre cada entidade de segurança, o KDC armazena uma chave criptográfica conhecida apenas pela entidade de segurança e pelo KDC. Essa é a chave master usada em trocas entre cada entidade de segurança e o KDC. Na maioria das implementações do protocolo Kerberos, essa chave master é derivada usando uma função de hash da senha de uma entidade de segurança.

Quando um cliente deseja criar uma conexão segura com um servidor, o cliente começa enviando uma solicitação para o KDC, não para o servidor que ele deseja alcançar. O KDC cria e envia ao cliente uma chave de sessão exclusiva para o cliente e um servidor usarem para autenticar uns aos outros. O KDC tem acesso à chave de master do cliente e à chave de master do servidor. O KDC criptografa a cópia do servidor da chave de sessão usando a chave de master do servidor e a cópia do cliente usando a chave master do cliente.

O KDC poderia cumprir sua função de intermediário confiável enviando a chave de sessão diretamente para cada uma das entidades de segurança envolvidas, mas, na prática, esse procedimento não funcionará, por vários motivos. Em vez disso, o KDC envia as duas chaves de sessão criptografadas para o cliente. A chave de sessão do servidor está incluída em um tíquete de sessão.