IPsec
Pilha de protocolos TCP/IP |
---|
Camada de aplicação |
Camada de transporte |
Camada de rede |
Camada de enlace de dados |
Protocolo de Segurança IP (IP Security Protocol, mais conhecido pela sua sigla, IPsec) é uma extensão do protocolo IP que visa a ser o método padrão para o fornecimento de privacidade do usuário (aumentando a confiabilidade das informações fornecidas pelo usuário para uma localidade da internet, como bancos), integridade dos dados (garantindo que o conteúdo que chegou ao seu destino seja o mesmo da origem) e autenticidade das informações ou prevenção de identity spoofing (garantia de que uma pessoa é quem diz ser), quando se transferem informações através de redes IP pela internet.
Segundo a RFC 6071, IPsec é uma suíte de protocolos que provê segurança no nível da camada IP para comunicações pela Internet.[1] Opera na camada de rede (ou camada 3) do modelo OSI, sendo essa a camada de mesmo nome no modelo TCP/IP. Outros protocolos de segurança da internet como SSL e TLS operam desde a camada de transporte (camada 4) até a camada de aplicação (camada 7).
Isso torna o IPsec mais flexível, como pode ser usado protegendo os protocolos TCP e UDP, mas aumentando sua complexidade e despesas gerais de processamento porque não se pode confiar em TCP (camada 4 do modelo OSI) para controlar a confiabilidade e a fragmentação. O IPsec é parte obrigatória do IPv6, e opcional para o uso com IPv4. O padrão foi projetado para ser indiferente às versões do IP, à distribuição atual difundida e às implementações do IPv4.
História e desenvolvimento
[editar | editar código-fonte]A RFC 1825, publicada em 1995, estabeleceu a arquitetura de segurança na camada de interredes da pilha TCP/IP (equivalente à camada de rede do modelo OSI) por meio da especificação dos protocolos AH (Autentication Header, "cabeçalho de autenticação") e ESP (Encapsulated Security Payload, "encapsulamento de segurança de carga útil"), cujos cabeçalhos seriam usados para prover serviços de segurança (autenticidade, integridade e confidencialidade) ao IPv4 e IPv6.[2] Detalhes de implementação destes dois protocolos foram inicialmente especificados nas RFC 1826 e RFC 1827.[3][3] A RFC 1825 também definiu a necessidade de um protocolo de gerenciamento de chaves como necessário ao uso de AH ou ESP, bem como especificou o conceito de Security Association ("associação de segurança", ou simplesmente SA), um conjunto de informações que definem uma conexão, igualmente necessário em qualquer implementação dos protocolos AH e ESP. Foram ainda definidos o MD5 e o DES no modo CBC como algoritmos padrões do AH e ESP, respectivamente.
Em novembro 1998, uma série de RFCs foram publicadas (da RFC 2401 à RFC 2412), atualizando e estendendo as especificações da suíte de protocolos e ferramentas IPsec, por exemplo, introduzindo o protocolo IKE (Internet Key Exchange, "compartilhamento de chaves na Internet") como ferramenta de gerenciamento automático de chaves. Este conjunto de RFCs ficou conhecido como "antigo IPsec" ou "IPsec-v2". Em 2005 a arquitetura IPsec foi novamente renovada e expandida em uma terceira geração de RFCs (RFC 4301, 4302 e 4306, dentre outras), o que se convencionou chamar "IPsec-v3", ou "novo IPsec". Atualmente, o HMAC-SHA-1 e o AES-CBC de 128 bits são os algoritmos padrões para garantia de autenticidade, integridade e confidencialidade no IPsec, em substituição ao MD5 e ao DES.[1]
Características
[editar | editar código-fonte]O IPsec é uma combinação de diferentes tecnologias criadas para prover uma segurança melhor, como um mecanismo de troca de chaves de Diffie-Hellman; criptografia de chave pública para assinar as trocas de chave de Diffie-Hellman, sendo assim, garantindo a integridade das partes e evitando ataques como o man-in-the-middle; algoritmos para grandes volumes de dados, com o DES; algoritmos para cálculo de hash como utilização de chaves, com o HMAC, junto com os algoritmos de hash tradicionais como o MD5 ou SHA, autenticando pacotes e certificados digitais assinados por uma autoridade certificadora, que agem como identidades digitais.[4]
Arquitetura de segurança
[editar | editar código-fonte]IPsec é o protocolo de criptografia da internet para tunelamento, criptografia e autenticação. Existem dois modos, consoante a unidade o que se está protegendo. No modo transporte se protege o conteúdo útil do pacote IP e no modo túnel se protege o pacote IP completo.
Modo de transporte
[editar | editar código-fonte]No modo transporte, somente a mensagem (payload) é criptografada. O roteamento permanece intacto, desde que o cabeçalho do IP não seja modificado e nem cifrado; entretanto, quando o cabeçalho da autenticação é usado, os endereços IP não podem ser traduzidos, porque isto invalida o valor de hash. As camadas de transporte e de aplicação são fixas sempre pelo hash, assim, não podem sofrer nenhuma modificação. O modo transporte é usado para comunicações de host-a-host.
Modo de tunelamento
[editar | editar código-fonte]No modo de tunelamento, o pacote IP é criptografado por inteiro. Deve, assim, encapsular um novo pacote IP para distribuí-lo. O tunelamento é usado para comunicações da rede-a-rede (túneis seguros entre roteadores) ou comunicações de host-a-rede e de host-a-host sobre a internet.
Características técnicas do IPsec
[editar | editar código-fonte]Dois protocolos foram desenvolvidos para prover um nível de segurança para os fluxos dos pacotes e mudanças de chaves como:
- Encapsulating Security Payload (ESP), que provê autenticação, confidencialidade dos dados e integridade da mensagem.
- Cabeçalho de autenticação (AH), que provê a autenticação e integridade dos dados, mas não a confidencialidade.
Cabeçalho de autenticação (AH)
[editar | editar código-fonte]0 - 7 bit | 8 - 15 bit | 16 - 23 bit | 24 - 31 bit |
---|---|---|---|
Próximo cabeçalho | Tamanho da mensagem | RESERVADO | |
Identificação dos Parâmetros de Segurança (SPI) | |||
Número de Sequência | |||
Dados de autenticação (variável) |
Descrição dos campos:
- Próximo cabeçalho: Identifica o protocolo de dados de transferência;
- Tamanho da mensagem: Tamanho do cabeçalho AH;
- RESERVADO: reservado para uso futuro;
- Identificação dos parâmetros de segurança (SPI): a identificação dos parâmetros de segurança (SPI) que, em combinação com o endereço IP, identifica a Associação de Segurança (SA) implementada para este pacote;
- Número de sequência: um número crescente, usado para impedir ataques repetitivos;
- Dados de autenticação: contém o valor da verificação da integridade (ICV) necessário para autenticação do pacote.
Encapsulating Security Payload (ESP)
[editar | editar código-fonte]O diagrama ESP:
0 - 7 bit | 8 - 15 bit | 16 - 23 bit | 24 - 31 bit |
---|---|---|---|
Identificação dos Parâmetros de Segurança (SPI) | |||
Número de Sequência | |||
Dados de payload (variável) | |||
Padding (0-255 bytes) | |||
Tamanho do Pad | Próximo cabeçalho | ||
Dados de autenticação (variável) |
Descrição dos campos:
- Identificação dos parâmetros de segurança (SPI): identifica os parâmetros de segurança em combinação com o endereço de IP;
- Número de sequência: um número crescente, usado para impedir ataques repetitivos;
- dados da mensagem: os dados a serem transferidos;
- Padding: usado por alguns algoritmos criptográficos para reordenar por inteiro o conteúdo dos blocos;
- Tamanho do pad: tamanho do pad em bytes;
- Próximo cabeçalho: identifica o protocolo para transferência dos dados;
- Dados de autenticação: contém os dados usados para autenticação do pacote.
Implementações
[editar | editar código-fonte]O suporte ao IPsec é geralmente incluído no núcleo do sistema operacional com gerência de chave e ISAKMP/IKE entre as negociações realizadas no espaço do usuário-final. Existem implementações do IPsec que tendem a incluir ambas as funcionalidades. Entretanto, porque há uma relação padrão para a gerência de chave, é possível controlar uma pilha do IPsec no núcleo usando uma ferramenta de gerência de chave com implementação diferente.
Por esta causa, há confusão a respeito das origens da implementação do IPsec que está no núcleo Linux. FreeS/WAN é o projeto que primeiro implementou uma solução completa e de código aberto do IPsec para Linux, e o projeto foi encerrado em março de 2004. Openswan e strongSwan são as continuações do FreeS/WAN. KAME project também implementou um suporte completo ao IPsec para o NetBSD e FreeBSD. O OpenBSD fez seu próprio daemon de ISAKMP/IKE, nomeado simplesmente como isakmpd (que foi movido também a outros sistemas, incluindo Linux).
Entretanto, nenhumas destas pilhas do IPsec foram integradas no Linux. Alexey Kuznetsov e David S. Moleiro escreveram uma implementação de IPsec para o Linux em torno do fim de 2002. Esta pilha foi liberada subsequentemente como parte do Linux 2.6.
Consequentemente, contrariando a opinião popular, a pilha do IPsec no Linux não se originou do projeto KAME. Como suporta o protocolo padrão PF KEY (RFC 2367) e a relação nativa XFRM para a gerência de chave, a pilha do IPsec no Linux pode ser usada conjuntamente com qualquer uma das implementações citadas abaixo.
- 6WINDGate, Network processor MPU Fast Path IPsec stack
- NRL [1] IPsec, [2]
- OpenBSD, com seu próprio código derivado da NRL IPsec
- KAME, usado no Mac OS X, NetBSD e FreeBSD
- "IPsec" da Cisco IOS Software [3]
- "IPsec" no Microsoft Windows, incluindo Windows XP [4] [5], Windows 2000 [6], e Windows 2003 [7]
- SafeNet QuickSec toolkits [8]
- IPsec no Solaris [9]
- IBM AIX
- IBM z/OS
- IPsec e IKE na HP-UX (HP-UX IPsec)
- "IPsec and IKE" in VxWorks [10]
Ver também
[editar | editar código-fonte]- Segurança da informação
- IP spoofing é uma máscara de pacotes IP com endereços remetentes falsificados.
- Layer 2 Tunneling Protocol (L2TP) ou Protocolo de Tunelamento sob a Camada 2.
- Sistema de prevenção de intrusos
- Firewall
- ↑ a b «IP Security (IPsec) and Internet Key Exchange (IKE) Document Roadmap». Internet Engineering Task Force. Fevereiro de 2011
- ↑ «Security Architecture for the Internet Protocol». Internet Engineering Task Force. Agosto de 1995
- ↑ a b «IP Authentication Header». Internet Engineering Task Force. Agosto de 1995
- ↑ Curso de "Redes Privadas Virtuais" Arquivado em 27 de junho de 2007, no Wayback Machine. por Eduardo Rapoport
Ligações externas
[editar | editar código-fonte]- «Usar o IPsec para fornecer comunicação segura entre dois servidores» pela Microsoft.
- «Curso de VPN com IPsec e L2TP»
- «Introdução ao IPsec»
- «What is IPsec?» (em inglês) pela Webopedia.
- «Ferramentas de IPsec para Linux» (em inglês)
- «Controlando o Acesso à Rede com IPsec e 802.1x»
- «Padrões de Protocolos VPN» (em inglês)