ENTENDENDO OS PROTOCOLOS DE AUTENTICAÇÃO PPP (REDE)
A autenticação é um dos pontos forte na segurança de qualquer sistema pois sua finalidade é atravessar os mecanismos de segurança para autenticar o usuário, autorizando ou não a sua conexão.
A autenticação PPP é realizada por um processo na segunda fase da conexão. Durante a primeira fase, ambos - servidor e cliente concordam em utilizar um único e específico canal de comunicação chamado Protocolo PPP (Point to Point Protocol - Protocolo de ponto a ponto).
A família Windows suporta os seguintes protocolos de autenticação remota PPP: Password Authentication Protocol (PAP), Shiva Password Authentication Protocol (SPAP), Challenge Handshake Authentication Protocol (CHAP) e Microsoft Challenge Handshake Authentication Protocol (MS-CHAP) versões 1 e 2. Esses protocolos de autenticação visam prover, mas não garantem totalmente, proteção contra ataques de retomada, personificação de cliente remoto e do servidor de acesso remoto.
Como acontecem os ataques nas conexões PPP
· Um ataque de retomada acontece quando um terceiro computador captura os pacotes de uma conexão em andamento entre dois computadores e então, joga de novo esses pacotes numa tentativa de obter uma conexão autenticada.
· A personificação de cliente remoto acontece quando um terceiro computador assume uma conexão já autenticada entre dois computadores. O intruso espera até a conexão entre os computadores seja autenticada e então, obtém os parâmetros de conexão, desconecta o usuário do segundo computador e leva o controle da conexão já autenticada.
· A personificação de servidor de acesso remoto acontece quando um terceiro computador se passa perante ao segundo, cliente de acesso remoto, como sendo o servidor de autenticação remota. O falso servidor verifica as credenciais do cliente remoto e então começa capturar todo o tráfico dele.
A descrição de como os protocolos operam
PAP
O Password Authentication Protocol (PAP) é um protocolo de autenticação de texto em formato simples. O nome do usuário e senha são esperados pelo servidor de acesso remoto e são enviados pelo cliente remoto em texto de formato simples. Porém, o protocolo PAP não é um protocolo de autenticação seguro. Um usuário remoto que capture pacotes de um segmento de rede aonde esta acontecendo uma conexão autenticada por esse protocolo, vai obter de maneira fácil e rápida o usuário e senha entre essa autenticação. Ele também não oferece nenhuma proteção contra ataques de retomada, personificação de cliente ou do servidor de autenticação.
O uso do protocolo PAP é negociado durante a negociação do protocolo LCP (Link Control Protocol). Uma vez que a negociação do protocolo LCP esteja estabelecida, mensagens do protocolo PAP vão usar o ID 0xC0-23 do protocolo PPP.
O PAP é um protocolo de troca de mensagens simples:
- o cliente de acesso remoto envia uma mensagem de pedido de autenticação PAP ao servidor de acesso remoto contendo o nome de usuário e senha do cliente em texto de formato simples; - o servidor de acesso remoto então confere o nome de usuário e senha do cliente e envia de volta uma mensagem PAP Authenticate-Ack quando as credenciais do usuário estiverem corretas ou uma mensagem PAP Authenticate-Nak quando as credenciais do usuário estiverem incorretas.
O protocolo PAP esta incluído na família de servidores e clientes Windows. E possível então que clientes de acesso remoto Windows possam conectar a servidores de acesso remotos mais antigos e que não utilizem protocolos de autenticação segura. Outros clientes de acesso remoto que também não estejam usando sistemas operacionais da Microsoft e que por acaso não apoiem protocolos de acesso remoto seguro, vão poder se conectar a um servidor de acesso remoto Windows.
Para fazer com que o seu servidor de acesso remoto seja seguro, assegure-se que o protocolo de autenticação PAP esteja desabilitado. Porém, clientes de acesso remoto mais antigos ou os que não apoiem protocolos de autenticação seguros estarão impossibilitados de se conectar ao servidor.
SPAP
O Shiva Password Authentication Protocol (SPAP) é um protocolo de mão dupla. Servidores de acesso remoto Shiva empregam mecanismo de criptografia reversível. Um cliente de acesso remoto Windows pode usar o protocolo SPAP para se autenticar em um servidor Shiva. Pode também usar o protocolo SPAP para se autenticar em um servidor de acesso remoto da família Windows. O protocolo SPAP é mais seguro do que o protocolo PAP mas, menos seguro que o protocolo CHAP ou MS-CHAP. Esse protocolo não oferece nenhuma proteção contra personificação do servidor de acesso remoto.
O uso do protocolo SPAP é negociado durante a negociação do protocolo LCP (Link Control Protocol). Uma vez que a negociação do protocolo LCP esteja estabelecida, mensagens do protocolo SPAP vão usar o ID 0xC0-27 do protocolo PPP.
Assim como o PAP, o SPAP também é um protocolo simples de troca de mensagens:
- o cliente de acesso remoto envia um pedido de autenticação SPAP contendo o nome de usuário e senha codificada do cliente remoto; - o servidor de acesso remoto decifra a senha e confere o nome de usuário e envia de volta uma mensagem SPAP Authenticate-Ack quando as credenciais do usuário estiverem corretas ou uma mensagem SPAP Authenticate-Nak com a razão pelo qual as credenciais do usuário estavam incorretas.
CHAP
O Challenge Handshake Authentication Protocol (CHAP) é um protocolo de autenticação de desafio de resposta documentado na RFC 1994. Ele usa o protocolo de criptografia Message Digest 5 (MD5) de um só sentido para responder a um desafio de resposta hash emitido pelo servidor de acesso remoto.
O protocolo CHAP é usado por vários servidores e clientes Dial-up inclusive os da família Windows.
O protocolo CHAP é uma melhoria em cima dos protocolos PAP e SPAP pois a senha, nunca é enviada em cima da primeira mensagem. Ao invés, a senha é usada para criar uma string hash de desafio de um só sentido. O servidor sabe a senha do cliente e duplica a operação para comparar o resultado das respostas do cliente.
O uso do protocolo CHAP é negociado durante a negociação do protocolo LCP (Link Control Protocol) e usa o algoritmo 0x05. Uma vez que a negociação do protocolo LCP esteja estabelecida, mensagens do protocolo CHAP vão usar o ID 0xC2-23 do protocolo PPP.
O CHAP é um protocolo de troca de mensagens que usa três mensagens:
- o servidor de acesso remoto envia uma mensagem de desafio CHAP que contém uma chave de sessão e um string hash de desafio arbitrário; - o cliente de acesso remoto devolve uma mensagem de resposta CHAP que contém o nome de usuário em texto simples, uma string hash de desafio, a chave de sessão e a senha do cliente usando o algoritmo Message Digest 5 (MD5) de um só sentido; - o servidor de acesso remoto duplica a string hash e compara com a string hash da resposta CHAP. Se as strings hashes são as mesmas, o servidor manda de volta uma mensagem de sucesso CHAP. Se as strings hashes são diferentes, uma mensagem de fracasso CHAP é enviada.
O protocolo CHAP protege contra ataques de retomada usando um string hash de desafio arbitrário por tentativa de autenticação. Porém, ele não protege contra personificação de servidor remoto.
MS-CHAP v1
O Challenge Handshake Authentication Protocol versão 1 (MS-CHAP v1) é um protocolo de autenticação codificado bem parecido com o CHAP. Como no protocolo CHAP o servidor de acesso remoto envia um desafio ao cliente remoto que consiste em uma chave de sessão e um string hash de desafio arbitrário. O cliente remoto tem que devolver o nome de usuário e um string hash de desafio em Message Digest 4 (MD4), a chave sessão e a senha em MD4 também.
Uma diferença entre o CHAP e MS-CHAP v1 é que, no CHAP, a versão de texto simples da senha deve estar disponível para validar a resposta de desafio. No MS-CHAP v1, o servidor de acesso remoto exige só a string hash MD4 da senha para validar a resposta de desafio.
O uso do protocolo MS-CHAP v1 é negociado durante a negociação do protocolo LCP (Link Control Protocol) e usa o algoritmo 0x80. Uma vez que a negociação do protocolo LCP esteja estabelecida, mensagens do protocolo MS-CHAP v1 vão usar o ID 0xC2-23 do protocolo PPP.
O MS-CHAP v1 é um protocolo de troca de mensagens que usa três mensagens:
- o servidor de acesso remoto envia uma mensagem de desafio MS-CHAP que contém uma chave de sessão e um string hash de desafio arbitrário; - o cliente remoto devolve uma mensagem de resposta MS-CHAP que contém o nome de usuário em texto de formato simples e um string hash de desafio, a chave de sessão e a string da senha em formato MD4 de um só sentido; - o servidor duplica o string hash e compara com a string hash MS-CHAP resposta do cliente. Se as strings hashes são as mesmas, o servidor envia de volta uma mensagem de Sucesso MS-CHAP. Se as strings hashes são diferentes, uma mensagem de Fracasso MS-CHAP será enviada.
O MS-CHAP v1 trabalha com códigos de erro e um deles é, "senha expirou". MS-CHAP v1 protege contra ataques de retomada usando um string hash de desafio arbitrário por tentativa de autenticação. Ele não provê proteção contra personificação de servidor de acesso remoto.
Se o protocolo MS-CHAP v1 estiver sendo usado como protocolo de autenticação e o MPPE for negociado, chaves secretas criptografadas serão geradas a cada escuta PPP.
MS-CHAP v2
O Challenge Handshake Authentication Protocol versão 2 (MS-CHAP v2) é um protocolo de autenticação mutua codificado e que opera de forma parecida com os protocolos CHAP e MS-CHAP v1.
O Windows NT 4.0 com o service pack 4 e o Windows 98 service pack 1 apoiam o protocolo MS-CHAP versão 2 (MS-CHAP v2). Esse protocolo oferece segurança mais forte para conexões de acesso remoto.
O MS-CHAP v2 oferece características de segurança adicionais em relação aos seus antecessores (CHAP e MS-CHAP v1):
- Autenticação de mão dupla. Ela verifica a identidade de ambos os lados da conexão. O cliente de acesso remoto autentica contra o servidor e esse, autentica contra o cliente remoto. Autenticação de mão dupla, também é conhecida como autenticação mútua, pois ela assegura que o cliente remoto está discando para um servidor de acesso remoto que tem acesso à senha do usuário. Autenticação mútua provê proteção contra personificação de servidor remoto; - Chaves de criptografias separadas são geradas tanto para a transmissão como para recepção dos dados; - As chaves de criptografia estão baseado na senha do usuário e no string hash de desafio arbitrário. A cada tempo que o usuário se conecta com a mesma senha, uma chave de criptografia diferente é usada.
O uso do protocolo MS-CHAP v2 é negociado durante a negociação do protocolo LCP (Link Control Protocol) e usa o algoritmo 0x81. Uma vez que a negociação do protocolo LCP esteja estabelecida, mensagens do protocolo MS-CHAP v2 vão usar o ID 0xC2-23 do protocolo PPP.
O MS-CHAP v2 é um protocolo de troca de mensagens que usa três mensagens:
- o servidor de acesso remoto envia uma mensagem MS-CHAP v2 de desafio para o cliente de acesso remoto que consiste em uma chave de sessão e um string hash de desafio arbitrário; - o cliente remoto envia uma mensagem de resposta MS-CHAP v2 contendo: o nome de usuário, uma string hash de desafio arbitrário que ela escutou, uma string hash de desafio que ela recebeu, a chave de sessão e uma string codificada em Message Digest 4 (MD4) da senha do usuário; - o servidor confere a mensagem resposta MS-CHAP v2 do cliente e envia de volta uma outra mensagem de resposta MS-CHAP v2 contendo: uma indicação do sucesso ou fracasso da tentativa de conexão, uma resposta autenticada baseada na string de desafio enviado, a string de desafio escutada, a resposta codificada do cliente e a senha do usuário.
O cliente remoto verifica se a resposta de autenticação está correta e usa a conexão. Se a resposta de autenticação não está correta, o cliente termina a conexão.