Introdução

O protocolo "IP Security Protocol", mais conhecido como "IPSec", fornece um serviço de comunicação segura (o conceito de seguro será definido na próxima seção) entre quaisquer duas entidades de rede (roteadores ou hosts) na camada de rede da Internet.

Pra que segurança ?

Quando falamos do IPsec, tratamos da segurança de dados e para que fique clara a importância de segurança de dados para redes de computadores, será apresentado um exemplo fora do contexto de redes. Quando um remetente precisa enviar uma carta a um destinatário, é desejado que a carta não seja extraviada ou adulterada no meio do caminho, também é desejado que a carta seja do remetente certo e chegue apenas ao destinatário final. No mundo real, pacotes são extraviados e adulterados, sendo assim, os serviços postais precisam tomar medidas de segurança para que as pessoas continuem a utilizar os seus serviços com confiança. Quando a rede foi criada com seus protocolos, não havia uma grande preocupação com a segurança dos dados, mas com o decorrer do tempo, a segurança dos dados tornou-se uma das principais preocupações no contexto de transferências de dados confidenciais. Deste modo, vemos que tanto quanto era importante a proteção das cartas para um usuário de um serviço postal, é importante para o usuário das redes a segurança dos dados enviados por ele. O desejo de usar a proteção na camada de rede, ao invés de nas outras camadas é que é a camada que podemos, de fato, proteger completamente os dados enviados pelo remetente e até é possível se proteger de alguns ataques na rede.

IPv6 e IPsec

O IPsec foi pensado originalmente para o IPv6, no entanto, devido à lenta adoção do mesmo, o IPsec sofreu modificaçōes para funcionar no IPv4. Isso explica o porquê da incompatibilidade de algumas implementaçōes do IPsec com o NAT, como será melhor visto em seçōes subsequentes.

Seu uso mais comum é na implementação de Redes Privadas Virtuais (VPNs), desse modo, fornecemos uma breve explicação das VPNs, o que, com sorte, servirá de motivação para o estudo do IPsec.

Redes Privadas Virtuais (VPNs)

Uma instituição que se estende por múltiplas localidades frequentemente deseja se comunicar em sua própria rede IP, para que seus usuários possam se comunicar de maneira segura. Para tal, a instituição poderia implementar sua rede fisicamente desacoplada da Internet, alocando toda sua infraestrutura de rede por conta própria (roteadores, enlaces, servidores de DNS). Tal solução é chamada de rede privada. Se de alguma maneira a instituição puder implementar sua própria rede utilizando a infraestrutura já existente da Internet, tem-se o que chamamos de Rede Privada Virtual (VPN).

Os requisitos de comunicação que os usuários de uma VPN esperam são:

  • Confidencialidade da informação trocada entre as duas entidades comunicantes.
  • Ocultação dos endereços exatos da fonte e destino para algum "sniffer" localizado fora da instituição, ou seja, os endereços IP completos da fonte e destino só devem ser conhecidos enquanto o datagrama não está circulando pela infra-estrutura pública da Internet.

Em breve, veremos como o IPsec garante o cumprimento dos requisitos desejados em uma VPN. Mas antes, precisamos cobrir alguns conceitos básicos em segurança da informação para melhor entendermos o funcionamento do IPsec.

Conceitos Básicos

Segurança

Segurança de rede pode ser definida segundo as suas três propriedades constituintes:

  • Confidencialidade: Somente as duas entidades participantes da comunicação devem entender as mensagens trocadas entre si. Dado que qualquer outro indivíduo é capaz de escutar tal troca de mensagens, a confidencialidade necessariamente requer uma forma de criptografia.
  • Integridade: Os agentes da comunicação devem ser capazes de verificar que as mensagens trocadas entre si não foram alteradas, tanto intencional quanto acidentalmente.
  • Autenticidade: Ambos os agentes da comunicação devem ser capazes de verificar a identidade de seu par, dessa forma garantindo que o indivíduo com quem eles se comunicam de fato é quem diz ser.

Criptografia

Um algoritmo de criptografia transforma uma mensagem legível m (em texto plano) em uma versão ininteligível da mesma, chamada de cifra ou texto cifrado (Figura 1). Para tal, a função faz uso de uma chave Kc para a codificação e outra Kd, diferente ou não de Kc, para a decodificação de m. A forma como as chaves são gerenciadas define a classe do algoritmo, sendo as duas relevantes para a discussão de IPsec a criptografia de chave simétrica e de chave pública.

Figura 1: Esquema geral de envio de mensagem criptografada


Chave Simétrica

Tanto o remetente quanto o destinatário utilizam a mesma chave para criptografar e descriptografar as mensagens, ou seja, Kr = Kd na figura acima. Este método é relativamente rápido e eficiente de ser implementado por algoritmos como DES (Data Encryption Standard), 3DES e AES (Advanced Encryption Standard). Para que funcione corretamente, porém, a distribuição das chaves entre os agentes deve ser feita de forma segura.

Chave Pública

Tanto o remetente quanto o destinatário possuem um par de chaves, uma designada como pública (K+ conhecida por qualquer um) e outra como privada, secreta (K-). A mensagem criptografada é obtida utilizando-se uma das chaves (pública ou privada) e um algoritmo adequado, enquanto a mensagem original é descriptografada utilizando-se a outra chave (privada ou pública). O algoritmo de criptografia por chave pública mais utilizado é o RSA. Esta técnica pode ser utilizada de duas formas, uma para garantir a confidencialidade da comunicação e a outra para providenciar a autenticação do autor.

Comunicação Segura

Quando o autor utiliza a chave pública do destinatário (Kd+) para criptografar a sua mensagem (Figura 2), obtendo Kd+(m), o mesmo garante que somente a entidade de destino poderá descriptografar m e ler o seu conteúdo, uma vez que somente ela possui a chave privada K- correspondente à chave pública K+.

Figura 2


Autenticação

Quando o autor utiliza a sua própria chave privada no processo de criptografia (Figura 3), ele permite que qualquer um descriptografe a sua mensagem, porém garante a autoria da mesma. Apesar de pouco eficiente, esta é uma das formas de assinar digitalmente um documento.

Figura 3


Função Hash Criptográfica

Uma função hash criptográfica transforma uma mensagem m em uma sequência alfanumérica H(m) de comprimento fixo, a partir da qual é computacionalmente inviável encontrar duas mensagens x e y tal que H(x) = H(y).

Message Authentication Code (MAC)

O MAC faz uso de uma função hash em conjunto com uma chave de autenticação (uma sequência conhecida somente pelas duas entidades se comunicando) para não só verificar a integridade das mensagens transmitidas mas como também a identidade do autor.

O processo de autenticação é composto pelas seguintes etapas (Figura 4):

  1. A chave de autenticação s é concatenada ao final da mensagem m, obtendo-se m+s.
  2. O hash da mensagem estendida é computado, obtendo-se H(m+s). Esta sequência é chamada de MAC.
  3. H(m+s) é concatenado ao final da mensagem original e transmitido.

Desta forma, o receptor pode, conhecendo a função hash e a chave de autenticação utilizadas pelo remetente, repetir os passos 1 e 2 acima para computar o MAC e comparar o seu resultado com o valor recebido. Como o hash de m+s é único e o remetente é a única outra entidade em posse de s, o destinatário pode, então, garantir a autenticidade da mensagem recebida.

Figura 4: Esquema de autenticação utilizando um MAC.

Funcionamento do IPSec

O IPsec consiste de uma suite de protocolos que cooperam entre si com o fim de prover os serviços de segurança previamente mencionados à camada de rede: confidencialidade, integridade e autenticidade.

Para o entendimento da suite IPSec, devemos visitar alguns conceitos chave em seu funcionamento:

  • Associações de Segurança ("SAs, Security Associations")
  • Modos de funcionamento do IPSec: Modo Transporte e Modo Túnel
  • Protocolos AH (Authentication Header) e ESP (Encapsulation Security Payload)
  • Protocolo IKE (Internet Key Exchange)

Associações de Segurança ("SAs")

A comunicação entre duas entidades IPsec (host-host, host-roteador, roteador-roteador) é feita através do estabelecimento de uma conexão lógica unidirecional entre ambas as partes. A essa conexão dá-se o nome de Associação de Segurança (Figura 5). Nela são armazenadas informações necessárias ao envio seguro de mensagens de uma entidade fonte à sua entidade destino. Vale enfatizar que as SAs são conexões unidirecionais, desse modo, em caso de comunicação bidirecional entre as entidades, duas SAs estarão presentes, uma para cada direção.

Figura 5: Associação de Segurança entre R1 e R2

A SA mantém informação de estado da conexão que consiste de:

  • Um identificador de 32 bits para a SA, chamado de Índice de Parâmetros de Segurança (SPI)
  • O IP da interface de origem (no caso da figura, 200.168.1.100) e de destino (193.68.2.23)
  • O tipo de criptografia utilizado
  • A chave de encriptação
  • O tipo de verificação de integridade
  • A chave de autenticação

No exemplo da Figura 1, o roteador R1 consulta as informações da SA para processar (criptografar, autenticar, etc) cada um dos datagramas antes de enviá-los ao destino. O roteador R2 também mantém as informações da SA para processar o datagrama recebido. As SAs ficam armazenadas em um Banco de Dados de Associações de Segurança (SAD) presente em cada entidade da conexão.

Modos do IPsec - Introdução

A suite IPsec pode operar em dois modos: Transporte e Túnel.

O modo Transporte consiste de proteger o datagrama IP original oferecendo alguma segurança (dependendo do protocolo utilizado: AH, ESP, etc) mas expondo as informações originais de fonte e destino do datagrama às entidades da internet pública.

O modo Túnel promove um encapsulamento dessas informações fonte-destino por um header IP novo com informações referentes ao túnel (roteador-gateway para roteador-gateway) escondendo as identidades dos hosts atrás de tais roteadores na sub-rede fonte e sub-rede destino.

A vantagem do modo transporte é que a proteção do datagrama é feita fim-a-fim, enquanto no modo túnel essa proteção existe apenas enquanto o datagrama está no túnel. No entanto, o modo transporte tem o inconveniente de expor as identidades (endereços IP) dos hosts em comunicação.

Sendo assim, é comum que se implemente a segurança na camada de rede fazendo uso de ambos os modos simultaneamente: O datagrama no host é processado para modo transporte, e no gateway que inicia o túnel ele é processado para modo túnel.

Antes que possamos entrar nos detalhes dos modos transporte e túnel, precisamos conhecer os dois principais protocolos que implementam de fato o serviço de segurança oferecido pela suite: o Authentication Header (AH), e o Encapsulation Security Payload (ESP).

Authentication Header (AH)

O header de autenticação (Figura 6) provê os serviços de integridade, autenticidade e prevenção de replay-attack ao datagrama IP, não provendo confidencialidade. Para isso, ele possui os seguintes campos:

Figura 6: Cabeçalho do protocolo Authentication Header (AH)
  • Next header: identifica o protocolo do header encapsulado pelo header AH (imediatamente mais interno).
  • AH length: define o comprimento do header AH em palavras de 32 bits.
  • Reserved: campo reservado para uso futuro.
  • Security Parameters Index (SPI): identificador da SA ao qual o datagrama AH pertence.
  • Sequence Number: Número de sequência do datagrama utilizado para prevenir ataques de replay.
  • Authentication Data: contém o Valor de Checagem de Integridade (ICV) calculado para todo o datagrama usado para garantia de autenticidade e integridade do datagrama. O ICV é calculado para o datagrama inteiro exceto por alguns campos que devem poder mudar ao longo da rota (TTL, dados de fragmentação, etc).

Uma incompatibilidade no AH: NAT

Uma vez que a motivação original do IPsec era prover comunicação segura ao protocolo IPv6, algumas de suas opçōes de funcionamento (como o uso do protocolo AH) se mostram incompatíveis com o protocolo NAT (solução criada para remediar o esgotamento de endereços públicos no IPv4). Na Figura 7, podemos ver que apesar de o AH não autenticar alguns campos que devem poder mudar durante a rota do datagrama, ele autentica os endereços IP de fonte e destino. Sendo assim, quando o NAT altera esses endereços a autenticação feita pelo AH falha.

Figura 7: NAT agindo sobre datagrama autenticado pelo AH.


Encapsulation Security Payload (ESP)

O protocolo ESP, além dos serviços entregues pelo AH, também confere confidencialidade à comunicação, serviço essencial no caso de implementação de VPNs e, por isso, é mais comumente utilizado que o protocolo AH no IPsec. Ao contrário do AH, que adiciona um header ao inicio do payload, o ESP envolve o payload, como pode ser visto na Figura 8:

Figura 8: Cabeçalho do protocolo ESP

O datagrama com proteção ESP tem a seguinte estrutura:

  • Security Parameters Index (SPI): identificador da SA ao qual o datagrama ESP pertence.
  • Sequence Number: Número de sequência do datagrama utilizado para prevenir ataques de replay.
  • Encrypted Payload: header e payload TCP protegidos por criptografia (definida na SA).
  • Padding: bits de padding para que o trecho criptografado do datagrama tenha o comprimento adequado ao uso de criptografia por cifras de bloco.
  • Padding length: comprimento do padding.
  • Next header: identifica o protocolo do payload (imediatamente mais interno) encapsulado (criptografado) pelo ESP.

O protocolo ESP processa o datagrama na seguinte sequência:

  • Adiciona ao final do payload um ESP trailer (contendo o padding necessário à encriptação do payload).
  • Encripta o resultado (payload + trailer) conforme especificado na SA.
  • Adiciona ao início do payload um header ESP (contendo o SPI e o Seq. Number)
  • Autentica o resultado (ESP header + Payload + ESP trailer).
  • Adiciona ao final do datagrama o dados de autenticacao (HMAC)

Modos do IPsec - Detalhes da Implementação

Agora que conhecemos a estrutura dos protocolos AH e ESP, podemos visitar os detalhes do IPsec nos modos transporte e túnel:

Modo Transporte

IPsec modo transporte com AH (Figura 9):

Figura 9: Modo transporte com protocolo AH. (Os campos em amarelo representam os campos contemplados pela autenticação do AH.)

O datagrama resultante consiste de:

  • Header IP com os endereços originais, comprimento de pacote aumentado (levando em conta o AH) e campo IP de protocolo interno com o código do AH.
  • O header AH com os dados de autenticação do novo datagrama.
  • Payload original do datagrama (camadas superiores).

Nessa configuração, o serviço oferecido é apenas de uma comunicação IP autenticada. Os endereços dos hosts e o conteúdo do payload ainda podem ser descobertos por um packet sniffer presente na rota do datagrama.


IPsec modo transporte com ESP(Figura 10):

Figura 10: Modo transporte com protocolo ESP. (Os campos em amarelo referem-se aos campos contemplados pela criptografia. O trecho limitado pela linha tracejada azul refere-se ao trecho autenticado.)

O datagrama resultante consiste de:

  • Header IP com os endereços originais e campo IP de protocolo interno com o código do ESP.
  • Header ESP.
  • Payload do datagrama encriptado.
  • ESP trailer encriptado.
  • Dados de autenticacao do ESP.

Como já mencionado, no modo transporte o header IP original é mantido, sofrendo apenas uma modificação no campo de protocolo interno que agora passa a ter o código do protocolo ESP. Nessa configuração, o serviço oferecido é de uma comunicação segura (segundo os 4 quesitos) entre as duas entidades. Os endereços das entidades fonte e destino continuam expostos a um packet sniffer, porém o conteúdo do payload é confidencial.


Modo Túnel

IPsec modo túnel com AH (Figura 11):

Figura 11: Modo túnel com protocolo AH. (Os campos em amarelo representam os campos contemplados pela autenticação do AH.)

O datagrama resultante consiste de:

  • Novo Header IP com os endereços IP das entidades nas extremidades do tunel, comprimento de pacote aumentado (levando em conta o AH e o novo header IP mais externo) e campo IP de protocolo interno com o código do AH.
  • Header AH com os dados de autenticação do novo datagrama.
  • Header IP original.
  • Payload original do datagrama (camadas superiores).

Nessa configuração, o serviço oferecido é de uma comunicação IP autenticada com os endereços expostos. Apesar de fazer uso de tunelamento, ou seja, o pacote é roteado dentro do túnel utilizando os endereços das entidades nas extremidades do túnel (geralmente roteadores-gateway), os endereços dos hosts fonte e destino estão expostos a um packet sniffer uma vez que o conteúdo do datagrama não está encriptado. Esta configuração faz pouco sentido.


IPsec modo túnel com ESP (Figura 12):

Figura 12: Modo túnel com protocolo ESP. (Os campos em amarelo referem-se aos campos contemplados pela criptografia. O trecho limitado pela linha tracejada azul refere-se ao trecho autenticado.)

O datagrama resultante consiste de:

  • Novo Header IP com os endereços IP das entidades nas extremidades do túnel e campo IP de protocolo interno com o código do ESP.
  • Header ESP.
  • Header IP encriptado.
  • ESP trailer encriptado.
  • Dados de autenticação do ESP.

Esta é a configuração mais adequada aos requisitos (confidencialidade e ocultação do endereço completo das entidades comunicantes) das VPNs (maior motivo de utilização do IPsec).


IKE - Internet Key Exchange

Uma importante questão ao funcionamento do IPSec foi ignorada na discussão anterior com o propósito de simplificar a exposição do leitor ao IPsec: De que maneira são estabelecidas as SAs entre as duas entidades comunicantes ? As VPNs, aplicação mais frequente da suite IPsec, costumam ser compostas de muitas entidades (roteadores ou hosts) em sua rede. Seria prático um administrador de rede submeter manualmente a informação de SA nos SADs de cada entidade da VPN ? Provavelmente não. Sendo assim, faz-se necessário um mecanismo automatizado para criação das SAs: o protocolo IKE.


O protocolo de "Troca de Chaves da Internet" é composto de duas fases:

  • Durante a primeira fase, as duas entidades (e.g, dois roteadores R1 e R2) utilizam o algoritmo Diffie-Hellman para estabelecerem chaves de encriptação e autenticação para formarem uma SA IKE, uma SA com o propósito de prover um canal seguro entre as duas entidades para a fase 2. Também é estabelecida uma chave para computar as chaves das SA IPsec da fase 2. Então, são negociadas as chaves e os algoritmos de encriptação a serem usados nas SA IPsec.
  • Na segunda fase, ambos os lados criam uma SA IPsec em cada direção. Ao final da segunda fase, as chaves de encriptação e autenticação são estabelecidas para as duas SAs IPsec. As duas entidades agora podem enviar datagramas protegidos.

Conclusão

Como foi visto, o protocolo IPsec é uma boa solução para segurança de comunicação e tem o diferencial de ser aplicado na camada de rede. Também foi visto que está previsto na implementação do IPv6, que, portanto, será um protocolo com um nível elevado de segurança. Além disso, o seu uso atual está mais atrelado ao uso de VPNs para garantir segurança de dados sigilosos trafegando no meio da rede pública. Tanto como foram sugeridas alterações e melhorias para o protocolo IPv4, a expectativa não pode ser diferente para o protocolo IPsec, que certamente será tornado mais eficiente e mais seguro, fazendo com que a confiabilidade das redes seja cada vez maior e assim, as redes sejam mais eficientes para aplicações que necessitem segurança.

Perguntas

1 - Quais são as informaçōes referentes à conexão guardadas pelas SAs e como as entidades as armazenam?

A SA armazena um número identificador de 32 bits chamado de SPI (Security Parameter Index), os endereços de origem e de destino da SA, os tipos de criptografia e verificação de integridade/autenticação utilizadas e as suas respectivas chaves. Estas informaçōes são guardadas pelas entidades em um banco de dados chamado de SAD (Security Association Database).

2 - A quais requisitos de segurança de rede os protocolos ESP e AH atendem? Considere que o IPsec opera em modo túnel.

O ESP atende a todos os três requisitos. Confidencialidade, pois criptografa o datagrama original, integridade e autenticação pois autentica o datagrama original mais o enchimento através do MAC. O AH atende aos requisitos de integridade e autenticidade mas não o de confidencialidade.

3 - Como é feita a autenticação pelos dois protocolos do IPsec?

Tanto o ESP quanto o AH implementam a autenticação (e integridade) através do MAC. Enquanto que o ESP calcula o MAC sobre o payload do datagrama original (e alguns headers próprios do protocolo), o AH aplica o hash sobre todo o datagrama, payload e cabeçalho.

4 - Quais as vantagens e desvantagens de cada modo de operação do IPsec, Túnel e Transporte?

O modo Transporte tem a vantagem de oferecer um canal seguro fim-a-fim, porém sem ocultar os endereços das entidades finais. O modo Túnel, oferece comunicação segura somente enquanto o datagrama está dentro do túnel, porém oculta os endereços das entidades finais.

5 - Quais ão os requisitos de uma VPN e como o IPsec os satisfaz?

Uma VPN tem os requisitos de uma comunicação segura (segundo os 4 requisitos) e com ocultação dos endereços finais dos hosts para algum indivíduo localizado fora da instituição(rede privada). O IPsec em modo túnel utilizando o protocolo ESP fornece todas essas características desejadas.

Referências

  • [1] KUROSE, James F. Computer Networking: A Top-Down Approach, 7th Edition. Pearson Education, 2016.
  • [2] PERLMAN, Radia; KAUFMAN, Charlie; SPECINER, Mike. Network security: Private Communication in a Public World, 2nd Edition. Pearson Education, 2016.
  • [3] FRIEDL, S. J. An Illustrated Guide to IPsec. Disponível em http://www.unixwiz.net/techtips/iguide-ipsec.html, acessado em maio de 2019.
  • [4] KENT, S. RFC 4302 “IP Authentication Header”. Disponível em http://tools.ietf.org/html/rfc4302, 2005.
  • [5] KENT, S. RFC 4303 "IP Encapsulating Security Payload (ESP)". Disponível em http://tools.ietf.org/html/rfc4303, 2005.