Kerberos: Separando AS e TGS

9

No Kerberos, o Authentication Server (AS) e o Ticket Granting Server (TGS) geralmente são implementados no mesmo servidor. Esta máquina é chamada de Key Distribution Center (KDC).

Certamente, faz sentido implementar esses serviços na mesma máquina física, pois em redes pequenas e médias seria exagero separar esses dois serviços. Além disso, tenho uma fonte relativamente confiável, que diz (traduzida):

O TGS e o AS precisam acessar o mesmo DB => não faz muito sentido implementar o TGS e o AS em máquinas diferentes

No entanto, não vejo qual banco de dados deve ser compartilhado entre os dois.

Essa é minha ideia: como eu separaria o AS e o TGS, não há bancos de dados compartilhados:

  • Como AS e TGS são separados, eles têm um Master Secret diferente
  • O AS possui um banco de dados com todos os usuários com o respectivo segredo principal (usado quando o Usuário entra para criptografar a chave da sessão), bem como o segredo principal do TGS (para criptografar os TGTs solicitados).
  • O TGS possui um banco de dados, que permite determinar qual usuário tem permissão para usar qual serviço (ACL, lista de revogação, ...), além de um banco de dados com todos os serviços com seus respectivos segredos principais (para criptografar tickets).

Quando um usuário deseja usar um serviço (simplificado):

  • Autenticar no AS
  • Obtenha um TGT (Ticket Granting Ticket), criptografado com o TGS Master Secret, bem como a chave da sessão, criptografada com o segredo principal do usuário.
  • Entre em contato com o TGS com o TGT
  • Adquira um ticket, criptografado com o segredo principal do serviço
  • Entre em contato com o serviço com o ticket

Estou faltando alguma coisa ou realmente não há nenhum problema em separar o AS e o TGS?

Misch
fonte
1
Parece que você é muito profundo nos internos do Kerberos. A maneira usual de escalar é apenas adicionar mais KDCs, então não tenho muita certeza do que você está tentando realizar.
Michael Hampton
1
Certo - que problema você realmente enfrenta e que está tentando resolver?
mfinni
1
Não estou tentando resolver nenhum problema concreto. Estou apenas tentando entender os internos do Kerberos (para um exame) sem realmente querer usá-lo no momento. A pergunta é puramente teórica, só quero saber se entendi algo errado ou se a citação na minha pergunta não está totalmente correta.
Misch

Respostas:

4

Sua pergunta é toda teoria. Então eu vou responder da mesma forma. O AS e o TGS são servidores lógicos e, como tal, poderiam teoricamente ser separados. Mas, na prática, não há boas razões para implementá-las em máquinas separadas e, portanto, ninguém faz isso na vida real. Mesmo as redes maiores e mais movimentadas do mundo em termos de autenticação Kerberos não precisam separar os componentes lógicos dos KDCs. Nas implementações reais do Kerberos, todos os dados que o AS precisa e todos os dados que o TGS precisa são armazenados no mesmo banco de dados. Ele poderia , teoricamente, ser separados, mas simplesmente não há uma boa razão para fazê-lo e não faria nada, mas desnecessariamente complicar a execução.

Ryan Ries
fonte
1
Acabei de encontrar outro problema ao separar o AS e o TGS: não é apenas possível obter TGTs do AS, mas você também pode solicitar um ticket para qualquer outro serviço (por exemplo, se você sabe que precisará apenas desse bilhete, então sem necessidade de desvio via TGT). Isso significa que o AS precisa adicionalmente de todos os dados que eu supus que apenas o TGS precisa.
Misch