Cisco

16 jul, 2008

Conceitos de IPSec

Publicidade

Recentemente participei de um projeto de IPSec e tive algumas dúvidas. Resolvi traduzir um artigo do site SecurityFocus.com que me ajudou muito a entender os conceitos de segurança envolvidos neste processo

Conceitos de IPSec

Quando uma mensagem é transmitida utilizando uma rede pública como a Internet, a mensagem trafega por diversos equipamentos antes de chegar até o computador de destino. Durante o transito até o computador de destino a mensagem está sujeita a ser lida ou até mesmo alterada por uma terceira pessoa. Não existe garantia que a mensagem recebida pelo destino seja a mesma enviada.

O tráfego entre origem e destino precisa possuir:

Privacidade – ninguém pode ler suas mensagens

O remetente precisa garantir que a mensagem enviada pode ser lida somente pelo destinatário. Privacidade pode ser obtida utilizando criptografia.

Integridade – suas mensagens não podem ser alteradas

O remetente precisa garantir que a mensagem recebida é exatamente a mesma mensagem enviada, isto é, a mensagem não foi alterada no caminho. Integridade pode ser obtida através do uso de hashing.

Autenticidade – que ninguém enviará mensagens falsas.

O destinatário precisa ter certeza que as mensagens enviadas pelo remetente foram enviadas por ele. Autenticidade pode ser obtida através do uso de assinaturas digitais.

Definições

Criptografia

A mensagem criptografada modifica (“criptografa”) seu texto (“plaintext” ou “cleartext”) de modo que o texto modificado (“ciphertext”) somente pode ser lido (“decriptografado”) com ajuda de informações adicionais (“keys”) conhecidas apenas pelo remetente e o destinatário.

Algoritmo de Criptografia

Composto por uma complexa seqüências de operações matemáticas em que uma chave é combinada com o conteúdo cleartext resultando em um texto criptografado. Exemplos de algoritmos de criptografia são o DES (Data Encryption Standard) e o AES (Advanced Encryption Standard).

Key Strength

Um forma de medir a dificuldade para decriptar um texto quando o algoritmo de criptografia é conhecido e somente a chave é desconhecida. O key strength é geralmente uma função do tamanho da chave.

Hashing

Um hash é o calculo feito em uma mensagem em que o resultado pode ser utilizado para unicamente identificar a mensagem, pois:

(a) Uma mínima alteração na mensagem acarreta em um hash completamente diferente.

(b) É computacionalmente inviável conseguir calcular uma mensagem a partir de um hash conhecido.

Assinatura Digital

Assinatura digital é um texto que somente pode ser criado por alguém que conhece uma chave especifica. A criptografia de um texto pode ser utilizada como assinatura digital pois somente o “signer” conhece a chave utilizada.

Privacidade

Criptografia com chave secreta (secret key)

A maneira mais simples de criptografar uma mensagem é a utilização de uma secret key, conhecida somente pelo remetente e o destinatário. Por ser utilizada tanto para criptografar quanto para decriptografar uma mensagem, a secret key também é conhecida como chave simétrica. Garantir a privacidade da secret key é uma tarefa crítica pois qualquer pessoa de posse da chave poderia decifrar a mensagem.

Compartilhando a Secret Key

Criptografia com secret key é rápido e simples, porém possui duas desvantagens:

1. Um canal seguro é requerido para que os correspondentes possam concordar em uma chave única antes de iniciar a criptografia das mensagens.

Esta necessidade é uma grande desvantagem, pois se existisse um tal canal seguro, talvez não fosse necessário a necessidade por criptografia. A negociação de uma secret key feita através de um acordo face-a-face entre os correspondentes seria impraticável e poderia ser feita através de telefone ou outro meio inseguro.

2. A quantidade de keys necessárias poderia aumentar rapidamente tornando a solução sem controle, pois é necessário uma key diferente para cada correspondente.

Criptografia por chave Pública (Public Key)

Um par de chaves é composto de duas chaves matematicamente relacionadas: a chave pública conhecida por todos, e a chave privada conhecida somente pelo dono. Uma mensagem criptografada por qualquer uma das chaves é somente decriptografada pela chave oposta. Por possuir uma chave diferente para criptografar e outra para decriptografar este sistema é conhecido como chaves assimétricas.

Exemplo de utilização da chave pública RSA:

Se Alice precisa enviar a Bob uma mensagem, ela criptografa a mensagem utilizando a chave pública de Bob. Por ter utilizado a chave pública de Bob a mensagem somente pode ser decifrada utilizando a chave privada de Bob. A única pessoa que conhece a chave privada de Bob é Bob, assim somente Bob pode ler a mensagem. Se uma terceira pessoa interceptasse a mensagem, ela seria incapaz de ler a mensagem pois não conhece a chave privada de Bob.

Integridade

O remetente precisa garantir que a mensagem enviada é a mesma que o destinatário recebeu, ou seja, que durante o trânsito até o computador do destinatário ela não foi alterada por alguém. Para garantir a integridade da mensagem o remetente aplica um hash na mensagem.

Quando o destinatário receber a mensagem ele vai decripta-la e aplicar a mesma função de hash na mensagem e comparar com o hash obtido pelo remetente. Se ambos resultados forem iguais, o destinatário terá certeza que a mensagem não foi alterada.

Autenticidade

Se um remetente enviar uma mensagem, ele quer que o destinatário possa verificar que a mensagem realmente foi enviada por ele e não por um impostor. A assinatura digital funciona como prova de identidade para o remetente e integridade da mensagem.

Uma técnica amplamente utilizada para criação de assinaturas digitais é Bob criptografar um texto (por exemplo o hash da mensagem) com sua chave privada. Alice pode decriptografar a assinatura digital utilizando a chave pública de Bob e comparar o resultado com o hash calculado por ela. Se os resultados forem os mesmos, ela saberá que a mensagem somente poderá ter vindo de Bob.

Certificados

Confiança na chave pública

Por ser um item necessário para a criptografia, precisa haver uma maneira eficiente e segura para obtenção das chaves públicas. Por exemplo, se Bob obter a chave pública da Alice via um meio inseguro como a Internet, ele precisa de garantia sobre a genuinidade da chave. Bob não pode simplesmente pedir a Alice sua chave pública, pois Charlie (um intruso) poderia interceptar a requisição e enviar a Bob sua própria chave pública. Charlie poderia então ser capaz de ler todas as mensagens criptografadas para Alice.

Autoridade Certificadora (Certification Authority)

Autoridade Certificadora (CA) é uma entidade em que as chaves públicas ( e possivelmente outras informações) podem ser obtidas de maneira confiável, mesmo sob meio inseguro como a Internet.

Certificado Digital

Um certificado é emitido pela CA e identifica um indivíduo ou equipamento e contém informações sobre os mesmos. Por exemplo, uma CA pode enviar a Alice o certificado de Bob. Se Alice confia na CA então por conseqüência confia nas informações contidas no certificado. Estas informações podem ser:

  • Identificador de Bob (por exemplo, seu LDAP Distinguished Name)
  • Chave pública de Bob
  • Identificador da CA, para que todos possam identificar quem gerou o certificado
  • Uma assinatura digital, assinado com a chave privada da CA.

Outra alternativa é Bob enviar a Alice seu certificado diretamente. Em ambos os casos Alice pode verificar o certificado (é equivalente a verificar a chave pública de Bob) pelo procedimento descrito anteriormente. Para isso Alice precisa da chave pública da CA, que precisa ser obtida de maneira segura e “desconectada” como por exemplo diretamente do administrador da CA.

Para provar sua identidade a Alice, Bob envia uma mensagem a Alice contendo:

oA assinatura digital, criptografado com sua chave privada.

oSeu certificado (se Alice não já o tiver) contendo o Identificador de Bob (por exemplo, seu LDAP Distinguished Name e seu endereço IP)

Alice verifica a assinatura digital utilizando a chave pública de Bob (contida no certificado) provando que a mensagem só pode ter sido criptografada por Bob e que a informação apresentada (principalmente o identificador único de Bob que esta presente no certificado e na mensagem) é genuína. Assim, Bob pode provar quem ele é e qual é seu endereço IP, e Alice pode ter certeza que está se comunicando com Bob e não com outra pessoa fingindo ser Bob.

Depois que Alice e Bob se identificam utilizando o procedimento acima, eles podem utilizar a chave pública de seu parceiro com confiança, pois elas são garantidas por certificados emitidos por uma CA confiável. Geralmente as chaves públicas são utilizadas para negociar o secret key utilizado para finalmente criptografar a mensagem.

Um certificado é emitido por uma Autoridade Certificadora e identifica o portador (pessoa ou equipamento). Um certificado pode ser acoplado a um token que pode ser um arquivo criptografado ou um hardware como o Smart Card. O token possui um password ou PIN. Somente a pessoa que tem posse física do token (arquivo ou dispositivo) e sabe o PIN pode usar o token.

O certificado contém informações importantes sobre o portador.

1. Prova que o certificado pertence ao portador, por exemplo a chave pública do portador.

2. A chave pública pode ser considerada como prova, pois a assinatura pode ser verificada com ela.

3. Informações importantes sobre o portador: por exemplo o DN (distinguish name) do portador

4. Data de validade

5. Prova que o certificado é genuíno e que não foi falsificado: assinatura digital.

6.Todo o certificado, incluindo seu hash é assinado pela CA, provando que o certificado somente pode ter sido criado pela CA.

Continuando a utilizar nosso exemplo, Bob não pode utilizar o certificado de Alice por duas razões:

1. Bob não possui a chave privada da Alice

2. Mesmo que Bob consiga o certificado da Alice, ele não terá acesso ao PIN. Somente Alice possui o PIN e sem o PIN o certificado não pode ser utilizado.

Esquema de Criptografia

O projeto IPSec representa um esforço desenvolvido pelo Working Group IPSec da IETF para desenvolver uma arquitetura de segurança para o protocolo IP e tem como objetivos:

  • criar uma infra-estrutura de rede segura providenciando proteção nos cabeçalhos de dados e de chaves;
  • reduzir a preocupação de implementar mecanismos de segurança nas aplicações;
  • compatibilizar o seu funcionamento com mecanismos de segurança já existentes e utilizados por aplicações;
  • evitar problemas de exportação de criptografia;
  • ser parte integrante do protocolo IPv6 e poder ser aplicável ao IPv4.

Através dos seus componentes, o IPSec usa este conceito para permitir a implementação de redes virtuais privadas (VPN) e seguras através de redes públicas tais como a Internet.

Isto implica em um custo mínimo na criação de redes corporativas pois são utilizadas com a segurança e infra-estrutura já existente.

Características

O IPSec representa uma arquitetura para o protocolo IP, integrando mecanismos de autenticação, gestão e distribuição de chaves que podem ser usados com qualquer das versões do protocolo IP.

O IPSec utiliza como mecanismos de autenticação dois cabeçalhos de extensão específicos do protocolo IPv6: o cabeçalho de Autenticação (Authentication Header) e o cabeçalho de encapsulamento de dados de segurança (Encapsulating Security Payload Header).

Além destes dois cabeçalhos, o IPSec define também o conceito de associação de segurança (security associations) – conjunto de diretivas que permite negociar algoritmos de criptografia a utilizar. Uma associação de segurança representa uma relação entre duas ou mais entidades que comunicam e descrevem quais os mecanismos de segurança a utilizar para estabelecer uma comunicação segura. A associação de segurança permite negociar protocolos, algoritmos de criptografia e chaves a usar e contém informação sobre:

  • Algoritmo e modo de autenticação a aplicar ao cabeçalho de autenticação;
  • Chaves usadas no algoritmo de autenticação;
  • Algoritmo e modo de criptografia utilizados no cabeçalho de encapsulamento de dados de segurança, ESP;
  • Chaves usadas no algoritmo de criptografia do cabeçalho de encapsulamento de dados;
  • Chaves de autenticação usadas com o algoritmo que faz parte da “transform” ESP;
  • Tempo de vida da chave;
  • Tempo de vida da associação de segurança;
  • Endereço(s) fonte da associação de segurança;
  • Nível de sensibilidade dos dados protegidos.

Na prática, uma associação de segurança é representada por um índice de parâmetros de segurança – Security Parameter Index (SPI) – com um endereço IP destino. O SPI é um campo que surge nos cabeçalhos de segurança IPv6 (AH e ESP), que não é criptografado na transmissão, já que a sua informação é essencial para decifrar a informação transmitida.

Quando uma entidade quiser estabelecer uma associação de segurança, utiliza um SPI e um endereço destino (pertencente à entidade com quem deseja estabelecer comunicação segura) e envia essa informação à entidade com quem se quer estabelecer o canal seguro. Assim, para cada sessão de comunicação autenticada entre dois nós, são necessários dois SPI – um para cada sentido, dado que cada associação de segurança é unidirecional.

Elementos de um esquema de Criptografia

Um esquema de criptografia consiste dos seguintes elementos:

  • Um protocolo para gerenciamento de chaves – para geração e troca de chaves
  • Um algoritmo de criptografia – para criptografar mensagens
  • Um algoritmo de autenticação – para garantir integridade.

Esquema de Criptografia IKE

Os elementos do mecanismo criptofrafia IKE, são mostrados na tabela abaixo:

DES, 3DES e AES, são algoritmos de criptografia utilizados para criptografar a parte de dados de um pacote.

O IKE é o protocolo padrão para negociar as Security Associations (SAs) entre dois hosts que estarão utilizando IPSec, e é o mecanismo para gerenciamento de chaves escolhido para a versão 6 do IP. Na versão 4, o IKE é opcional.

A implementação IKE na plataforma Cisco suporta PKI (Infra-estrutura de chaves Públicas)

O IKE usa a porta 500 do protocolo UDP e interage com os restantes mecanismos de segurança IPSec através de associações de segurança. Assim, o IKE proporciona a possibilidade de estabelecer associações de segurança para diversos protocolos e aplicações de segurança, tendo assim um método transparente e aberto de associar diferentes mecanismos de segurança, sem envolver as entidades participantes na comunicação.

Quando uma entidade pretende estabelecer comunicação segura, passa pelas seguintes fases IKE:

Fase 1: Ocorre num meio inseguro. Tem o objetivo de estabelecer um canal seguro que irá proteger as trocas da Fase 2. É executada uma vez para várias fases 2;

Fase 2: Ocorre no canal seguro criado na fase 1. As suas negociações têm o objetivo de estabelecer as associações de segurança que irão proteger a comunicação.

Após estas duas fases, encontra-se estabelecido um canal seguro através do qual ocorre comunicação segura.

Mecanismos de Chave Pública

A plataforma Cisco suporta dois tipos de chaves públicas:

  • Diffie-Hellman

O sistema de chaves públicas/privadas Diffie-Hellman é utilizado para calcular um secret key, que por sua vez é utilizado para criptografar e decriptografar as mensagens. Nenhuma informação confidencial é transportada durante a criação das chaves, assim não é necessário utilizar um canal seguro.

  • Chaves Públicas RSA (Certificates)

Ao contrário do par de chaves público/privado utilizado pelo algoritmo Diffie-Hellman, o par de chaves público/privado do algoritmo RSA é utilizado para criptografar e decriptografar mensagens. A mensagem criptografada com a chave pública pode somente ser decriptografada com a chave privada e vice-versa.

Mecanismo Diffie-Hellman

Para criação do secret key, utilizando o Diffie-Hellman, nenhuma informação confidencial é enviada durante a transmissão. Cada peer calcula sua chave secreta, que será utilizada para criptografar e decriptografar as mensagens.

Como exemplo, a figura abaixo ilustra o mecanismo para geração do secret key, utilizando as chaves DH públicas/privadas de Bob e Alice. O processo é o seguinte:

1.Bob recebe a chave pública de Alice e calcula o secret key, utilizando sua chave privada e a chave pública de Alice

2.Alice recebe a chave pública de Bob e calcula o secret key, utilizando sua chave privada e a chave pública de Bob.

O resultado de ambos cálculos são iguais, e o resultado é o secret key. Nenhuma informação confidencial é enviada, assim não há oportunidade para um intruso obter acesso a secret key.