7. Internet Key Exchange

Motivação

    Os serviços de autenticação e encriptação (AH e ESP) dependem da utilização de chaves secretas (conhecidas apenas pelos comunicantes) para serem fornecidos pelo IPSec.

    Caso uma entidade intercepte uma comunicação IPSec em modo transporte, por exemplo, esta será incapaz de alterar qualquer parte do pacote sem que seja notada (se estiver sendo utilizado o AH) ou ter acesso às informações nele contidas (caso seja utilizado o ESP). Todavia, isto é válido apenas se esta entidade não possui acesso ao segredo compartilhado pelos comunicantes.

    Portanto, é preciso que o acordo quanto às chaves que serão usadas na comunicação seja feito de maneira segura.

    A forma mais trivial de estabelecer uma chave secreta no IPSec é através de configuração manual. Os comunicantes escolhem as chaves que serão usadas e registram manualmente as SAs necessárias.

    Esta é uma estratégia bastante prática para cenários pequenos, mas não é escalável, já que seria preciso configurar ao menos duas SAs (entrada e saída) para cada par de endereços IP. Para resolver este problema e permitir maior flexibilidade no compartilhamento de chaves, foi criado o IKE (Internet Key Exchange), um protocolo para gerenciamento automático de chaves que também faz parte do IPSec.

Funcionamento

    Este protocolo, que pode ser considerado o mais complexo do conjunto IPSec, usa o ISAKMP (Internet Security Association Key Management Protocol) como base para criar as SAs nos dois lados da comunicação, que serão utilizadas pelos protocolos AH e ESP.

    O primeiro passo para o estabelecimento das SAs para os comunicantes é a criação de um canal seguro. Este é definido por uma SA bidirecional (ao contrário das demais) referente ao IKE. Nela, estão contidas informações como a chave secreta e os algoritmos de criptografia que serão usados nas negociações subsequentes (para as SAs do AH e do ESP).

    Para a escolha da chave secreta, é realizada uma série de procedimentos baseada no algoritmo de troca de chaves Diffie-Hellman [11].

Diffie-Hellman

    Proposto em 1976, este algoritmo permite o estabelecimento de uma chave secreta compartilhada através de um canal de comunicação inseguro. Esta chave poderá ser utilizada, por exemplo, em algoritmos de criptografia simétrica.

    Numa troca de chaves entre duas entidades hipotéticas A e B, ocorre primeiro um acordo quanto a um número primo p e a uma raiz primitiva de p, r.
    O número
r será uma raiz primitiva de p se

    Fórmula 1

    Os números p e r não são secretos.

    Em seguida, A e B escolhem um número secreto entre 1 e p-1 (inclusive) cada, XA e XB.

    Então, A envia para B:

    Fórmula 2

    A chave secreta K, calculada por B, será:

    Fórmula 3

    Analogamente, A poderá calcular a mesma chave secreta a partir de YB, fazendo:

    Fórmula 4

    Desta forma, a partir da escolha de r e p e da troca (sem segurança) de YA e YB, o algoritmo de Diffie-Hellman permite o estabelecimento de uma chave secreta, conhecida apenas por A e B.

    Este algoritmo não autentica os usuários que estão realizando a troca de chaves, o que o torna vulnerável a ataques. Devido a isso, o protocolo IKE inclui mecanismos adicionais para garantir a autenticação, baseados na troca de assinaturas digitais. Para mais detalhes, ver [2].


    Escolhida a chave secreta e criada a SA para o IKE, ocorre o estabelecimento das demais SAs através do canal seguro criado.