Ataques e Mecanismos de Segurança em Redes I
Noções Básicas em Redes de Informática
1 Ataques e Mecanismos de Segurança em Redes
As redes ad hoc móveis (Mobile Ad hoc NETworks - MANETs) são constituídas por dispositivos móveis que utilizam comunicação sem fio. A principal característica dessas redes é a ausência de infra-estrutura, como pontos de acesso ou estações-base, existentes em outras redes locais sem fio ou ainda nas redes de telefonia celular. A comunicação entre nós que estão fora do alcance de transmissão do rádio é feita em múltiplos saltos, através da colaboração de nós intermediários. Além disso, a topologia da rede pode mudar dinamicamente devido à mobilidade dos nós. As redes ad hoc sem fio, possuem como grande vantagem o baixo custo de instalação e facilidade de configuração. Por outro lado, o meio de comunicação sem fio, a ausência de infra-estrutura e o roteamento colaborativo em múltiplos saltos as tornam alvos potenciais de diversos tipos de ataques. Assim, a segurança é um ponto crucial das redes ad hoc.
A utilização do ar como meio de transmissão torna a rede susceptível a diversos ataques, vão desde uma simples escuta clandestina (espionagem) passiva das mensagens até interferências ativas com a criação, modificação e destruição das mensagens. As redes cabeadas são consideradas mais seguras, pois um atacante tem maior dificuldade para obter um acesso ao meio físico e também para transpor as barreiras formadas pelos firewalls. Os ataques às redes sem fio, podem vir de várias direções e alvejar qualquer nó da rede, basta que o nó atacado esteja no alcance da transmissão do nó atacado. Dessa maneira, é possível que um nó malicioso tenha acesso a informações sigilosas, possa alterar mensagens em trânsito ou ainda tentar se passar por outros nós da rede. Portanto, o preço que se paga pelas facilidades oferecidas pela comunicação sem fio é a ausência de uma barreira de defesa clara. Assim, cada nó da rede deve estar preparado para lidar direta ou indiretamente com ações maliciosas.
Outro aspecto importante a ser considerado nas redes ad hoc é a ausência de centralização e de infra-estrutura. Portanto, não existem dispositivos dedicados a tarefas específicas da rede como, por exemplo, prover algumas funcionalidades básicas. Apesar de a descentralização ter como vantagem a robustez, devido a inexistência de pontos únicos de falha, a ausência de infra-estrutura dificulta a aplicação das técnicas convencionais de autorização de acesso e de distribuição de chaves. Isto dificulta a tarefa de distinguir os nós confiáveis dos nós não-confiáveis, pois nenhuma associação segura prévia pode ser assumida.
Devido a ausência de infra-estrutura, as redes ad hoc exigem a colaboração distribuída dos nós da rede para o encaminhamento das mensagens. Nas redes ad hoc, todos os nós participam do protocolo de roteamento, pois também desempenham a função de roteador. Além disso, estes nós roteadores estão sob o controle dos usuários da rede, e não de administradores. Isso possibilita a criação de novos ataques que visam as vulnerabilidades dos algoritmos cooperativos. Ou seja, as principais particularidades das redes ad hoc estão na camada de rede. Desta forma, os protocolos de roteamento das redes ad hoc devem ser robustos a novos tipos de ataques. As redes ad hoc móveis introduzem outros obstáculos importantes à implementação de mecanismos de segurança, devido às constantes alterações na topologia da rede.
Esta dinamicidade implica novos nós que se tornam vizinhos e antigos nós que deixam de ser vizinhos e pode até causar o particionamento da rede. Assim, os mecanismos de segurança devem se adaptar dinamicamente às mudanças na topologia da rede e ao movimento dos nós entrando e saindo da rede. Além disso, as redes ad hoc móveis são em geral compostas por dispositivos portáteis, portanto com restrições de energia, processamento e memória. Com isso, as MANETs estão sujeitas a diferentes ataques de negação de serviço que visam esgotar os recursos dos nós, a fim de prejudicar o funcionamento da rede.
Desta forma, as redes ad hoc móveis possuem vulnerabilidades específicas ligadas principalmente ao meio de comunicação sem fio, à ausência de infra-estrutura e o roteamento colaborativo. A maior parte dos novos ataques concentra-se na camada redes e, consequentemente, também a maioria dos mecanismos de defesa específicos das redes ad hoc.
2 Fundamentos de Segurança em Redes:
Para o projeto de protocolos seguros, é necessário definir os objetivos que os mecanismos de segurança a serem implementados na rede devem buscar. Os requisitos de segurança clássicos que devem ser observados são a autenticação, a confidencialidade, a integridade, o não-repúdio e a disponibilidade. A autenticação garante que uma dada entidade é realmente quem ela diz ser, enquanto que o não-repúdio impede que o emissor de uma mensagem negue a sua autoria. A confidencialidade garante o sigilo das informações trocadas por dois nós e a integridade, permite afirmar que as informações recebidas por um nó não foram alteradas durante o trânsito ao longo da rede. A disponibilidade trata de garantir que os recursos da rede estarão disponíveis quando forem necessários. A criptografia é uma ferramenta fundamental para prover segurança, pois por meio dela, é possível atender a todos os requisitos clássicos. A maioria dos ataques a redes poderia ser solucionada pela utilização de um mecanismo criptográfico seguro.
Tradicionalmente, a criptografia é separada em dois ramos: simétrica e assimétrica. A criptografia simétrica é caracterizada pela existência de um segredo, chamado de chave secreta, compartilhado entre os nós que desejam se comunicar. Esta chave é utilizada em operações que alteram os dados a transportar, enviando um texto criptografado ao invés de um texto em aberto. As principais operações realizadas pelos algoritmos simétricos são o ou-exclusivo, a troca de colunas, a troca de linhas, a permutação, a rotação e a expansão, que são operações de baixo custo computacional. Apesar de serem simples, as combinações dessas operações devem ser capazes de tornar difícil a descoberta da mensagem para quem não possui a chave secreta. Por essa razão, a eficiência desses algoritmos é medida pelo seu custo computacional e pela capacidade de modificar a saída dada uma pequena mudança na entrada.
Os algoritmos simétricos mais conhecidos são o DES e o AES. Na criptografia assimétrica existem duas chaves, a chave pública e privada. A chave pública deve ser distribuída aos membros da rede, enquanto que a privada deve ser mantida em segredo pelo nó. Esse tipo de criptografia possui maior custo computacional que a simétrica, por fazer uso de operações como o logaritmo discreto, curva elíptica e fatoração de inteiros, aliadas as considerações de segurança da Teoria dos Números. O objetivo principal é que, a partir de uma das chaves, não seja possível encontrar a outra, o que é obtido quando se usa para o cálculo funções que são simples de calcular, mas quase impossíveis de se reverter computacionalmente. Outras funcionalidades, como a distribuição de chaves de forma segura e a assinatura de mensagens são possíveis com o uso de criptografia assimétrica. Os algoritmos mais conhecidos são o RSA, o Diffie-Hellman, que utilizam números primos entre si muito grandes para gerar as suas chaves, e mais recentemente a Criptografia de Curva Elíptica, considerada a mais segura.
Em redes cabeadas, é comum utilizar as características dos dois tipos de criptografia para garantir uma comunicação segura, o que é conhecido como criptografia híbrida. Primeiramente, é trocado um segredo entre os nós por intermédio das chaves públicas. Este segredo, servirá como chave secreta para criptografar a comunicação posterior usando criptografia simétrica, de menor custo computacional. A Figura abaixo, mostra como funciona a criptografia híbrida. Primeiramente, ambos os nós trocam suas chaves públicas. Em seguida, o nó A gera uma chave secreta, a criptografa com chave pública de B e a envia. O nó B, então, decriptografa a mensagem com sua chave privada e gera uma mensagem contendo a chave secreta, criptografada com a chave pública de A, para confirmar que conseguiu obter o segredo. É importante notar que um esquema como esse não é suficiente para garantir a autenticação e confiabilidade das mensagens, pois um nó malicioso poderia realizar o Ataque do Homem do Meio (Man in the Middle Attack), forjando a comunicação para os dois nós.
O uso de uma Infra-Estrutura de Chave Pública e assinatura digital permite solucionar o problema de interceptação, além de garantir a autenticação e o não-repúdio na rede. No PKI, existe uma terceira entidade, chamada autoridade certificadora (AC), capaz de garantir a quem pertence realmente uma chave pública, através da emissão, validação e revogação de certificados. Um certificado deve conter a identificação e a chave pública do nó, criptografados com a chave privada da AC. A assinatura digital será feita criptografando a mensagem com a chave privada do emissor e enviando junto com ela um certificado emitido pela AC para aquele emissor. Assim, ao receber a mensagem, o destino decriptografa o certificado com a chave pública da AC, que deve ser conhecida por todos os nós da rede, obtendo a chave pública do emissor, que será a única chave capaz de decriptografar a mensagem. Assim, é possível garantir a autenticação e o não-repúdio, pois a chave privada deve ser mantida sempre em segredo pelos nós. É importante ressaltar, que apesar dessas características, tal mecanismo não garante a privacidade dos dados, o que poderia ser feito criptografando todo o pacote com a chave pública do receptor ou ainda com uma chave secreta obtida por criptografia híbrida.
Uma outra entidade importante para o funcionamento do PKI é a Autoridade Registradora, que realiza o cadastro dos usuários que desejam ser certificados. Um usuário sem registro não pode assinar mensagens, pois a AC não será capaz de emitir certificados para ele. Uma outra ferramenta importante que pode ser utilizada para garantir integridade dos dados são as funções hash. Uma função hash é definida como uma função H que mapeia uma sequência de bits de tamanho arbitrário em uma de tamanho fixo. O conceito de função hash unidirecional foi introduzido em Diffie e Hellman. De maneira informal, uma função hash unidirecional deve ser simples de calcular, porém computacionalmente impossível de ser invertida. Para o uso em criptografia simétrica, ainda se exige que a função hash seja resistente a colisões, ou seja, é computacionalmente impossível encontrar duas sequências distintas x e y tais que H(x) = H(y). Os famosos algoritmos MD5 Rivest e SHA-1 foram projetados para possuírem essas propriedades. Além dessas propriedades básicas, as funções hash criptográficas geralmente possuem propriedades aleatórias, como a uniformidade dos valores de saída ao longo do conjunto imagem, a independência entre a entrada e a saída, a impossibilidade de inferência da saída ainda que partes da sequência de entrada sejam conhecidas, etc. Devido a essas propriedades, essas funções também são conhecidas como funções de espalhamento.
A disponibilidade não é tratada diretamente com o uso de criptografia. De fato, para garantir esse conceito, é necessário evitar ataques de negação de serviço. A autenticação dos usuários permite que seja dado acesso à rede ou aos serviços disponíveis apenas aos nós autorizados, o que já ajuda a reduzir o acesso dos atacantes à rede.
Criptografia Simétrica x Assimétrica: Vantagens e Desvantagens:
A criptografia assimétrica trouxe inúmeros avanços, resolvendo questões como a autenticação e o não-repúdio através do PKI, que eram problemas em aberto para algoritmos simétricos. Mesmo os mecanismos que utilizam autenticação com chaves secretas e funções hash não são capazes de garantir quem foi o gerador da mensagem, pois o segredo é conhecido por todos os nós que fazem parte da mesma comunicação.
Outro ponto é que para se manter uma comunicação segura utilizando apenas criptografia simétrica, é necessário que cada par de nós possua uma chave para comunicação. Dessa forma, em uma rede com n nós, seriam necessários (n ∗ (n − 1))/2 pares de chaves em cada nó. Utilizando criptografia assimétrica, o número de valores armazenados cai para n. Cabe ressaltar que o tamanho da chave utilizada com a criptografia assimétrica tradicional é muito superior ao tamanho da chave da criptografia simétrica, o que pode ser um problema para nós com restrições de memória. Neste caso, é aconselhado o uso de criptografia elíptica, pois suas chaves são menores que a dos demais algoritmos assimétricos devido à alta complexidade da inversão da função elíptica.
Apesar de todas as vantagens do PKI, o seu uso em redes ad hoc não é simples. A primeira razão são as fortes restrições de processamento e memória dos nós, o que torna muito complicado o cálculo para criptografar e decriptografar mensagens. Mesmo em redes com mais recursos, como as cabeadas, não se utiliza criptografia assimétrica para criptografar todas as informações, devido ao seu alto custo. Em redes de sensores sem fio, essa restrição é ainda maior, pois seus recursos são muito reduzidos, devendo ser poupados ao máximo. Medidas com sensores MICA, mostraram que estes se tornam entre 100 e 1000 vezes mais lentos utilizando criptografia assimétrica. Medidas utilizando hardwares específicos para os algoritmos RSA e DES mostraram um desempenho 1500 vezes mais lento do RSA. Os recursos das redes ad hoc costumam ser menos restritos que os das redes de sensores, mas, ainda assim, o uso de criptografia assimétrica deve ser evitado ao máximo, tentando buscar formas de equilibrar suas vantagens com a facilidade da criptografia simétrica.
Outro ponto importante a ser observado é que a utilização de PKI exige uma terceira entidade para certificar a comunicação, o que é, geralmente, feito por um servidor. No entanto, redes ad hoc não possuem pontos centrais. Assim, um outro problema a ser solucionado é como distribuir as tarefas da AC pelos nós da rede e como fazer o registro das chaves públicas em uma rede que deve ser auto-configurável.
Principais Formas de Ataques:
Os ataques a redes ad hoc móveis podem ser divididos em passivos ou ativos. Os ataques passivos não afetam a operação da rede, sendo caracterizados pela espionagem dos dados sem alterá-los. Por outro lado, os ataques ativos são aqueles em que o atacante cria, altera, descarta ou inviabiliza o uso dados em trânsito. Os ataques ativos são os mais numerosos, podendo atuar em diferentes camadas do modelo OSI.
Os atacantes podem ser classificados como internos ou externos. Atacantes internos são aqueles que conseguem de alguma forma se passar por membros da rede, enquanto que os externos são aqueles que influenciam, mas não participam da rede. De fato, a eficiência e as possibilidades de ataques variam de acordo com o acesso que o atacante tem à rede. Se de alguma forma ele conseguir obter chaves ou for incluído na lista de vizinhos válidos, passando a ser um atacante interno, poderá causar mais problemas.
- Ataques Passivos:
Nos ataques passivos, o atacante não interfere no funcionamento da rede, mas pode escutá-la e analisar o seu tráfego. O atacante tem acesso à informação, porém não a altera ou destrói. Os ataques passivos são de difícil detecção por não influírem no comportamento da rede.
- Espionagem:
A espionagem (eavesdropping2 ) caracteriza-se pela escuta do tráfego sem modificação dos dados. O atacante aproveita-se do meio inseguro, apenas para roubar informações. Quando o atacante utiliza o tráfego observado para aprender a localização dos recursos críticos da rede, o ataque é chamado de Revelação de Informações Críticas (Homing/Information Disclosure). Uma vez que esses pontos são encontrados, essas informações são passadas para outros nós maliciosos que poderão realizar ataques ativos. Protocolos de roteamento que utilizam encaminhamento geográfico são ainda mais expostos a esse ataque, pois a posição exata dos nós críticos é passada para os atacantes ativos, facilitando a localização e ataque ao nó.
A proteção contra espionagem costuma ficar sob responsabilidade das camadas superiores, que, em geral, cuidam do sigilo das informações. No entanto, como a espionagem de informações de roteamento pode levar à exposição da topologia da rede para o atacante, o sigilo através da criptografia passa a ser uma necessidade do roteamento.
- Ataques Ativos:
Os ataques ativos, em sua maior parte, têm como alvo a vulnerabilidade de alguma camada específica do modelo OSI. Esta seção considera cada uma das camadas, descrevendo os seus principais ataques.
- Camada Física:
Na camada física estão os ataques de tratamento mais difícil, pois eles exercem uma utilização indevida do meio sem fio por dispositivos que não participam da rede. Os ataques são mais fáceis que nas redes cabeadas, pois não há a necessidade de conexão “física” ao meio de comunicação. Cabe ressaltar que os ataques da camada física são característicos do meio físico utilizado, e não específicos das redes ad hoc.
- Interferência Contínua:
Esse é um ataque muito conhecido, que consiste em sujar continuamente com interferências a frequência de comunicação da rede sem fio. Um adversário pode impedir totalmente o funcionamento de uma rede com N nós utilizando k nós maliciosos distribuídos randomicamente, onde k << N. Para redes com uma única frequência de comunicação, esse é um ataque simples e muito efetivo.
A detecção da interferência contínua também é simples, pois basta que o nó atacado ou algum nó próximo à área de interferência observe que um nível constante de energia, e não a falta de uma resposta, impede a comunicação. Se o nó está no alcance da interferência, mas não totalmente imerso nela, ele pode comunicar ao resto da rede que evite rotas por aquela área. Embora o resultado do ponto de vista da aplicação seja o mesmo devido à perda de pacotes ou devido à interferência, esta é mais grave por impedir que o nó envie ou receba pacotes, ou mesmo que se faça uma notificação para algum nó de monitoramento. A interferência é um ataque de difícil combate. Entre algumas das propostas estão o espalhamento de espectro, descrito mais adiante, e o descobrimento de novas rotas isolando a área de interferência. Para os nós que estão dentro dessa área só resta dormir e checar periodicamente até que a interferência acabe.
- Interferência Esporádica ou Exaustão por Interferência:
Este tipo de interferência pode ser ainda pior que a contínua. Ela consiste em gerar interferências por curtos períodos, o que já é suficiente para impedir a comunicação. A grande eficiência dos ataques com interferência esporádica se deve a eles poderem causar grandes prejuízos no consumo de bateria do nó atacado, que deve fazer retransmissões, e ao mesmo tempo terem um custo mínimo para o nó atacante, que realiza apenas pequenas transmissões de tempos em tempos. Além disso, como o ataque é esporádico, é de mais difícil detecção. A melhor forma de minimizar os efeitos desse ataque é através do método de espalhamento de espectro.
- Método de Espalhamento de Espectro:
Algumas tecnologias de transmissão sem fio impõem um nível de dificuldade a mais a ataques da camada física. Um exemplo são as técnicas de modulação baseadas em um espectro de frequências espalhado (Spread Spectrum). Técnicas de espalhamento de espectro como DSSS (Direct Sequence Spread Spectrum) e FHSS (Frequency Hopping Spread Spectrum) foram projetadas com o objetivo de maior resistência a interferências de fontes de faixa de frequências estreita. A ideia básica é utilizar uma largura de banda maior do que a que é realmente necessária para transmitir dados a uma velocidade específica. No FHSS, o espalhamento de espectro é obtido saltandose continuamente de uma freqüência de portadora para outra, minimizando, desta forma, interferências. Se um atacante não conhecer qual a sequência em que as portadoras são utilizadas, ele não é capaz de obter acesso ou sujar a informação sendo transmitida. Já o DSSS literalmente aumenta a taxa de dados de um sinal, mapeando cada bit de informação em uma cadeia de bits a transmitir, chamada de sequência de chips. O efeito é espalhar um bit de informação no tempo, o que aumenta a robustez a interferências. Para cada valor binário 0 ou 1 a transmitir, uma sequência de chips é transmitida. Os códigos utilizados como sequência de chips para transmitir os bits de dados fornecem a segurança inerente do DSSS.
É importante notar que as técnicas de modulação por espalhamento de espectro possuem um nível de segurança inerente, mas não fornecem qualquer proteção criptográfica. A segurança vem apenas do fato de manter os códigos (sequência de portadoras ou de chips) secretos. Uma vez que estes códigos não são protegidos, e, normalmente, são bem conhecidos ou fáceis de descobrir, o nível de segurança fornecido é mínimo. Assim, estes códigos provêem pouca ou nenhuma proteção contra ataques de negação de serviço na camada física através das interferências, embora ainda seja o melhor método para prevení-las.
- Camada Enlace:
A camada enlace é a responsável pela transmissão confiável de dados ponto a ponto. Desta forma, nesta camada, os ataques visam à retransmissão de quadros, a prioridade de mensagens e os códigos corretores de erro, características específicas do IEEE 802.11, a tecnologia mais usada nas redes ad hoc. A solução para esses ataques consiste de uma implementação mais robusta do protocolo de enlace, prevendo o comportamento malicioso.
- Exaustão de Bateria por Colisão:
Neste ataque, o nó malicioso tem como objetivo consumir a bateria do nó atacado gerando retransmissões continuamente, através de uma implementação maliciosa da camada de enlace. As retransmissões são geradas por recursos como, ao ouvir o início de uma transmissão, gerar uma colisão tardia no fim do quadro. No caso desta colisão intencional ocorrer com um pacote de ACK, isso poderia acarretar em um aumento exponencial do back-off em alguns protocolos MAC. O uso repetido desse método culmina na exaustão da bateria do nó atacado, pois a transmissão é uma operação muito custosa, e que só deve ser feita quando estritamente necessário.
Uma variação deste ataque é conhecida como o ataque da interrogação. Neste, o nó atacante, que é um nó suicida, explora características da interação de protocolos da subcamada MAC que utilizam o Request To Send (RTS), Clear To Send (CTS) e mensagens de dado e ACK. O nó malicioso faz pedidos de alocação do canal com RTS repetidos, forçando inúmeras respostas CTS da vítima, levando ambos à morte. A exaustão de bateria é de difícil tratamento, pois necessariamente a camada de enlace conta com certa confiança entre os nós participantes. Um nó malicioso poderia negar acesso ao canal repetidamente, impedindo o funcionamento da rede sem ter um grande gasto de energia. Soluções para essa variação do ataque são obtidas na reformulação dos protocolos, tornando-os mais robustos a comportamentos inadequados.
- Alteração de ACK:
A maioria dos algoritmos de roteamento confia de alguma forma em ACKs da camada de enlace. Uma vez que o meio é o ar, um atacante pode forjar esses ACKs com a finalidade de enganar o receptor a respeito de dados como a qualidade do canal, ou ainda dizer que um nó que já desativado ainda está ativo. Isso implicaria na escolha de rotas por enlaces inapropriados ou passando por nós que não participam mais da rede
- Camada Transporte:
Os ataques à camada de transporte [Wood e Stankovic, 2002], visam vulnerabilidades do TCP, na fase de sincronização e na retransmissão de pacotes.
- Inundação de Sync:
Para realizar a comunicação utilizando o TCP, é necessário um período de tempo para o estabelecimento da conexão. Cada processo de conexão ocupa um espaço de memória no nó até que seja concluído. Este ataque visa explorar essa característica, gerando vários pedidos de conexão para a vítima. Cada um desses pedidos, que nunca é completado, provoca a alocação de mais recursos, até o momento que acontece um estouro de memória. A limitação do número de conexões pode impedir que o ataque consiga a exaustão de recursos, mas não pode impedir que conexões reais com nós legítimos sejam perdidas devido a inúmeros pedidos de conexões falsos na fila. Outra possível solução é o uso de desafios para diminuir a velocidade que o nó malicioso gera os pedidos de conexão.
- Dessincronização:
Neste ataque, um terceiro nó influi em uma conexão entre dois nós legítimos. O atacante envia mensagens falsas pedindo retransmissões, a partir da observação do número de sequência que está sendo utilizado na comunicação. Para o funcionamento efetivo do ataque, é necessário que o atacante mantenha um controle preciso do momento de envio das mensagens, para evitar que os nós legítimos troquem informações úteis. O tratamento para esse ataque exige autenticação e criptografia das mensagens.
- Sequestro de Sessão (Session Hijacking):
O sequestro de sessão, descrito em Murthy e Mano, é um ataque onde o adversário toma o controle de uma sessão entre dois nós. Uma vez que a maioria dos processos de autenticação só é feita no início da sessão, após essa fase, o atacante pode se passar por uma das extremidades, se comunicando com o outro nó como se fosse o nó legítimo. Para evitá-lo deve-se utilizar criptografia ou assinatura digital em todas as mensagens trocadas.
- Camada Rede:
Na camada rede acontece a maior parte dos ataques, devido tanto às características críticas da rede, quanto às vulnerabilidades dos protocolos de roteamento. Muitos dos ataques a essa camada possuem soluções eficientes, com métodos preventivos capazes de reduzir bastante a interferência do atacante na rede.
- Ataque Bizantino:
Neste ataque, geralmente ligado a problemas de tolerância a falhas, um ou mais nós maliciosos trabalham em conluio para gerar problemas como loops de roteamento, pacotes de roteamento falsos, escolha de caminhos não-ótimos, entre outros, utilizando mensagens de controle dos protocolos que estão sendo utilizados. Murthy cita esse problema com o nome de mensagens de roteamento alteradas, restringindo-o apenas aos problemas de roteamento. Além disso, os nós também podem executar um encaminhamento seletivo. Esse tipo de ataque é de difícil detecção, pois para os nós comuns, o funcionamento estará correto, embora, de fato, esteja apresentando anomalias.
O nome ataque bizantino tem uma origem curiosa. A ideia é baseada no problema dos generais bizantinos, distribuídos em campo com suas tropas para organizar o ataque à cidade inimiga. A comunicação entre eles é feita apenas por mensagens e isso deve ser suficiente para organizar o ataque. No entanto, um ou mais generais podem ser traidores tentando confundir os demais, o que gera a necessidade de um algoritmo capaz de garantir que os generais leais conseguirão chegar a um acordo.
Tem-se como objetivos que todos os generais leais devem decidir pelo mesmo plano de ação e um pequeno número de generais maliciosos não deve levar os generais leais a adotar um plano ruim. Para satisfazer estes dois objetivos, é necessário que todos os generais leais recebam a mesma informação, e se um general é leal, então sua informação deve ser utilizada por todos os generais leais. Como ambas as condições levam ao mesmo ponto sobre como um general envia sua ordem, é possível simplificar o problema a um general e dois tenentes que devem receber a sua ordem. No caso de apenas um general e um tenente, a solução é trivial, pois a comunicação é direta e não existem mais versões sobre o que foi dito. Assim, o problema acontece a partir de três generais. Por simplificação, a mensagem só pode ser de atacar ou bater em retirada.
O problema pode ser caracterizado como na Figura Ataque Bizantino onde um tenente é traidor, onde há um general e dois tenentes. No primeiro caso, temos um tenente traidor, e o tenente leal receberá duas mensagens, uma do general mandando atacar e uma do traidor dizendo que as ordens do general são de bater em retirada. No segundo caso, mostrado na Figura Ataque Bizantino onde o general é traidor, e o mesmo grupo de informações chega ao tenente leal, de forma que, com três entidades, sendo uma traidora, não há solução. Generalizando o problema, se cada entidade representasse m generais/tenentes, ainda assim, não seria possível resolver o problema, pois seria necessário mais algum testemunho para concluir qual é a informação que deve ser usada. Isto leva a regra de que são necessários pelo menos 3m+1 generais, sendo m o número de generais mentirosos, para que os generais leais cheguem a uma solução única e verdadeira.
- Estouro (Overflow) da Tabela de Roteamento:
Este ataque se baseia no fato de os protocolos de roteamento ad hoc pró-ativos armazenarem todas as rotas anunciadas pelos seus vizinhos. Nestes protocolos, o nó armazena em sua tabela de roteamento todas as mensagens de rota que recebe periodicamente. A estratégia deste ataque é anunciar diversas rotas para nós inexistentes, de modo a aumentar progressivamente o tamanho da tabela de roteamento, até que ela estoure e o nó não possa mais armazenar as rotas reais. Os protocolos reativos que armazenam diversas rotas para um mesmo destino também estão expostos a esse tipo de ataque, pois o nó malicioso poderia enviar rotas passando pelos nós inexistentes.
Esse ataque é grave no caso de redes ad hoc que possuem nós com escassos recursos, onde tanto o gasto de energia com a recepção de um número excessivo de mensagens, quanto o estouro de buffer são cruciais. Para prevení-lo, deve-se limitar o número máximo de rotas nas tabelas de roteamento, além de só aceitar entradas de nós autenticados.
- Replicação de Pacotes:
Este ataque possui dois objetivos principais: ocupar o meio de transmissão e levar os nós à exaustão. Esta é a versão de nível roteamento do ataque de exaustão de bateria da camada enlace. Para conseguir seus objetivos, o atacante envia réplicas de pacotes de roteamento antigos. As soluções propostas para esse tipo de ataque são limitadas, pois ainda que se deduza que o mesmo nó envia mensagens de roteamento antigas, através da observação do número de sequência, o máximo que poderia ser feito é retirar aquele nó das rotas, mas nada poderia impedí-lo de continuar as suas réplicas, assim como acontece no ataque da interferência na camada física.
- Envenenamento de Cache:
Muito semelhante ao ataque do estouro da tabela de roteamento, este ataque visa envenenar o cache de roteamento fazendo anúncios falsos de rotas para nós reais. Esse ataque se aproveita em especial de protocolos sob demanda, como o Ad Hoc On demand Distance Vector (AODV), que mantêm rotas para nós que foram aprendidas no passado. Estes protocolos estão mais susceptíveis que os protocolos pró-ativos pelo fato de anunciarem para onde desejam mandar o pacote sempre que não tem rota, permitindo ao nó invasor anunciar a rota falsa antes do nó confiável. No caso dos protocolos pró-ativos, esse ataque também é possível, mas seria necessário mandar anúncios de rota falsos em todas as rodadas de atualização, para todos os possíveis destinos. Para evitar esse tipo de comportamento dos nós maliciosos, deve-se utilizar sistemas de confiabilidade baseados em monitoramento e punição
- Ataque da Pressa (Rushing Attack):
Este ataque permite a formação de um buraco negro, se aplicando a protocolos de roteamento sob demanda que guardam apenas uma rota para cada destino em sua tabela. Ao receber um Route Request, o atacante o envia de forma mais rápida aos demais nós da rede, de forma que todas as respostas passem por ele. Assim, como ele será o primeiro a responder, as demais respostas provenientes dos outros vizinhos serão descartadas. Desta forma, as rotas sempre passariam pelo nó malicioso, tornando a rede vulnerável.
A detecção de tal ataque é difícil, dado que, para o protocolo de roteamento, tudo está transcorrendo de forma normal. A solução seria tentar identificar os métodos para conseguir enviar a mensagem de forma mais rápida, como por exemplo, um abuso do protocolo de enlace. De fato, existem vários métodos para acelerar o envio da mensagem, e que não exigem muitos recursos do nó malicioso. Em geral, os protocolos MAC (Medium Access Control) impõem atrasos entre o momento no qual o pacote é recebido e a transmissão. Um exemplo são os protocolos MAC que utilizam divisão de tempo para acesso ao meio, onde o nó precisa esperar até a sua vez de transmitir, ou ainda os protocolos de acesso ao meio que utilizam Carrier-Sense Multiple Access (CSMA), onde é utilizado um backoff para evitar colisões. Outro espaço de tempo que também pode ser burlado por um nó malicioso é aquele que pode ser usado pelo roteamento entre a recepção de um RREQ e o encaminhamento do mesmo, para evitar colisões. Assim, um atacante que deseja enviar um pacote mais rápido que outros nós pode simplesmente ignorar um ou mais destes tempos de espera.
Uma outra forma de executar esse ataque seria, por exemplo, provocar a criação de filas nas interfaces dos nós vizinhos, de forma a que o nó malicioso repasse o pacote enquanto seus vizinhos estão processando os pacotes das filas. Esse tipo de atitude do nó malicioso é mais fácil em sistemas que utilizam autenticação da mensagem, pois ele poderia gerar várias mensagens com defeito, levando os vizinhos a perder tempo verificando as mensagens. No caso de autenticação por chave pública esse problema é ainda maior, devido ao alto custo computacional para realizar a verificação. Outros métodos para transmitir os pacotes mais rápido que os vizinhos também são possíveis, como a utilização de uma potência de transmissão maior, ou, ainda, através da utilização de um túnel de minhoca (Wormhole). A melhor solução para este ataque é o uso de múltiplas rotas disjuntas ou trançadas, que garantiriam que mesmo que o atacante atraísse o trafego para si em uma das rotas, as outras permaneceriam seguras.
- Direcionamento Falso (Misdirection):
O direcionamento falso consiste na fabricação de mensagens, visando gerar negação de serviço para um determinado nó. Assim, são enviadas mensagens de modo a direcionar tráfego para uma determinada região que se deseja atacar. Na versão da Internet desse ataque, conhecida como Ataque Smurf, o atacante forja pacotes echo, colocando como emissor o nó vítima, que irá receber inúmeros echo-backs.
Esse ataque pode ser realizado por mecanismos além do uso de echos. O caso do protocolo Dynamic Source Routing (DSR) é um exemplo, onde o atacante pode responder às requisições de rotas com caminhos falsos que incluem o nó que se deseja atacar.
- Inundação de Hellos:
Este ataque inicialmente foi considerado para redes de sensores. De fato, ele também se aplica as redes ad hoc, desde que o atacante possua uma potência de transmissão maior que os demais nós da rede. A Inundação de Hello só se aplica a protocolos que utilizam a mensagem de hello para identificação dos vizinhos, embora não façam a verificação de bidirecionalidade do enlace. Para realizar o ataque, o nó malicioso envia hellos com alta potência, informando que o nó possui enlaces muito bons com determinados destinos. Assim, ele atinge um grande número de nós, que por terem ouvido a mensagem, o colocam na sua lista de vizinhos e podem escolhê-lo para encaminhamento de dados. No entanto, apesar dos nós ouvirem o nó malicioso, o nó malicioso não é capaz de escutá-los, de forma que vários nós da rede irão apontar suas rotas de encaminhamento para um nó inalcançável, como ilustrado na Figura abaixo.
A inundação de hello funciona melhor quando é realizada em conjunto com uma revelação de informações críticas, de forma a permitir que o nó malicioso descubra quais rotas ele deve tentar interceptar. Esse ataque pode ser evitado pela verificação de bidirecionalidade do link. Cabe observar que apesar de ser uma solução simples, muitos protocolos de roteamento não a aplicam, assumindo que os enlaces são bidirecionais.
- Ganância (Greed):
A Ganância é caracterizada quando um nó dá uma prioridade injusta às suas mensagens. O nome representa o fato de o nó, apesar de não prejudicar o funcionamento da rede de forma explicita, atrapalhar por tentar ter sempre a maior fatia de tempo para transmissão. A detecção de um nó ganancioso é difícil, pois um nó que já esteja com falhas de bateria apresenta um comportamento semelhante. Assim, a melhor forma de evitar esse ataque é a utilização de redundâncias, garantindo que, ainda que pacotes sejam perdidos por demora ao enviar, uma segunda rota poderá garantir a sua entrega.
- Encaminhamento Seletivo ou Buraco Cinza:
Uma das características principais das redes ad hoc é a confiança nos vizinhos para o encaminhamento de dados. No entanto, um vizinho malicioso pode encaminhar apenas alguns pacotes. Neste caso não se deseja prejudicar todos os nós, ou uma determinada área da rede. O nó malicioso pode escolher não passar alguma ou todas as mensagens pra um determinado nó alvo, ou pode optar por passar as mensagens de roteamento, mas impedir a transmissão de dados, impedindo o funcionamento da aplicação.
Um tipo especial de encaminhamento seletivo é chamado de egoísmo, no qual o nó não encaminha nenhuma mensagem dos vizinhos, passando apenas as suas próprias. O egoísmo nem sempre é um ataque, podendo ser uma escolha de um nó por um comportamento não cooperativo. Tal decisão pode ser tomada, por exemplo, em momentos nos quais o nó deseja se poupar. Diferentemente de um buraco negro, esse ataque é de difícil detecção, assim como a Ganância, pois nós com pouca energia e perdas de pacotes normais podem gerar um quadro muito semelhante.
- Buraco Negro:
Este é caso extremo do Encaminhamento Seletivo, onde todos os pacotes são atraídos até o nó e são descartados. Este ataque, dependendo da posição do atacante, pode ter um efeito totalmente destrutivo na rede, impedindo todo o seu funcionamento. Por outro lado, ao contrário do Encaminhamento Seletivo, sua detecção é fácil, pois em muito pouco tempo todo um ramo da rede deixará de funcionar. Uma segunda consequência do buraco negro, é que, como ele atrái muito tráfego em sua direção, ele acaba consumindo os recursos dos nós à sua volta, tanto em termos do meio, que fica excessivamente ocupado, assim como em termos de recursos dos nós. No caso de exaustão desses nós, o resultado poderia acabar particionando a rede.
Assim como o Encaminhamento Seletivo, uma premissa de funcionamento do ataque é que o nó malicioso se torne atrativo durante a escolha de rotas. Para tanto, vários métodos podem ser utilizados. A solução mais simples para os ataques de descarte de pacotes é a utilização de múltiplas rotas. Outros métodos que ajudam a detectar e prevenir esse comportamento são a investigação e a autorização.
- Túnel de Minhoca (Wormholes):
No ataque do túnel de minhoca, dois atacantes criam um túnel de comunicação por um enlace de baixa latência, através do qual irão trocar informações da rede, replicando-as do outro lado do túnel, de forma a tornar excepcionalmente atrativo o enlace formado pelos dois. Assim, os nós maliciosos podem convencer nós da rede que eles podem se comunicar com determinado destino por apenas um salto, ao invés de utilizar os vários saltos que existem realmente entre o nó e o destino.
O túnel é um canal seguro e de baixa latência entre os dois nós maliciosos, que permite que os nós vizinhos sejam incapazes de perceber que o ataque está sendo realizado. Uma forma simples de obter esse resultado é utilizar uma conexão por fio entre os dois nós, fazendo uma transmissão mais rápida que o encaminhamento por múltiplos saltos. Outra possibilidade seria a utilização de um enlace direcional sem fio de longa distância, para conseguir maior velocidade que comunicações que normalmente utilizariam mais que um salto. Uma terceira forma seria utilizar um canal diferente do utilizado na comunicação com uma potência de transmissão superior, o que também permitiria a maior velocidade sem que os vizinhos notassem. Além disso, uma técnica que pode ser usada é o envio dos bits diretamente, sem aguardar a chegada do pacote completo para começar a transmissão.
É interessante notar que, no caso de o atacante construir o seu túnel de forma honesta e confiável, nenhum prejuízo direto é causado a rede. Pelo contrário, um serviço é prestado ao melhorar a eficiência da conexão da rede. No entanto, o ataque coloca os nós maliciosos em uma posição privilegiada, que os permite gerar, no momento que desejarem, diversos tipos de prejuízos à rede. Ainda que a rede implemente autenticidade e confiabilidade, o ataque ainda pode ser realizado, pois, normalmente, o nó não precisa se autenticar para encaminhar um pacote. É importante observar que, para as camadas superiores, o ataque é invisível, e mesmo para a camada de roteamento, a princípio é complicado perceber a presença de um Túnel de Minhoca.
- Ataques Multicamadas:
Existem alguns ataques que não estão ligados a uma camada específica do modelo OSI, mas que podem afetar diversas camadas.
- Exaustão de Bateria:
Neste ataque, o nó malicioso tem como objetivo consumir a bateria do nó atacado, até que o nó fique inativo. De fato, esse ataque pode se aplicar a várias camadas. No caso de fazer essa atividade por meio de interferências, se trataria de um problema de camada física. Já se a interferência for gerada com o objetivo de gerar retransmissões, trata-se de um problema da camada enlace. O ataque pode também retransmitir mensagens reais da rede, dificultando sua detecção.
Tantas versões para o mesmo ataque se justificam pela importância da vida útil da bateria para dispositivos móveis, e, pela mesma razão, várias metodologias para poupar bateria já foram desenvolvidas. Por essa razão aplicativos de segurança que exigem modo promíscuo são muito criticadas, pois a ação de escutar a rede continuamente gasta muita energia do nó, sendo mais recomendado colocá-lo dormindo sempre que possível. Outros nomes dados a esse ataque são Sleep Deprivation Attack e Spam Attacks.
- Negação de serviço:
O conceito de negação de serviço é muito amplo. O ataque de negação de serviço pode ser definido como qualquer ação que reduza ou elimine a capacidade da rede de realizar uma de suas funções esperadas. Assim sendo, a negação de serviço não seria causada apenas por ataques, mas por qualquer evento que prejudicasse a rede, como falhas de hardware, defeitos de programas, exaustão de recursos intencional ou não, condições ambientais não favoráveis ou qualquer interação entre esses fatores. Dessa forma, todos os ataques ativos poderiam gerar uma negação de serviço na rede, o que dá a esse ataque a classificação de multicamadas.
Uma forma mais severa deste ataque é a negação de serviço distribuída. Nesta, vários adversários estão espalhados pela rede fazendo um conluio para impedir que usuários legítimos tenham acesso aos serviços. Este ataque tem um efeito muito mais rápido sobre a rede, podendo impedir totalmente o seu funcionamento sem grandes dificuldades.
- Sybil:
O ataque Sybil se baseia no fato de que é praticamente impossível, em sistemas computacionais distribuídos, que nós que não se conhecem apresentem identidades distintas convincentes. Sem a existência de um ponto central para controlar a associação de uma identidade a uma entidade, é sempre possível para uma entidade desconhecida apresentar múltiplas identidades. Assim, o ataque sybil acontece quando um único hardware assume múltiplas identidades em uma rede. Este ataque tem grande importância por muitos sistemas utilizarem sistemas de réplicas de dados armazenados, para ter garantia contra violação de integridade, e sistemas de fragmentação de tarefas, para impedir a violação da privacidade. Em ambos os casos, a redundância, mecanismo explorado pelo ataque, é um ponto chave. Assim, devido ao nó malicioso assumir múltiplas personalidades, o sistema poderia escolher o mesmo nó para guardar todas as réplicas ou fragmentos, o que acabaria com toda a segurança adquirida com o mecanismo.
O Sybil pode ser utilizado para atacar não só armazenamentos distribuídos. Uma outra possibilidade que utiliza redundância é o roteamento com múltiplos percursos. Em geral, protocolos que utilizam essa técnica buscam escolher caminhos disjuntos ou trançados para diminuir a possibilidade de existir um atacante na rota. O ataque sybil pode ser feito de tal forma a colocar uma identidade falsa em cada rota, de forma que todos os caminhos continuarão passando pelo nó malicioso. Ainda no campo de roteamento, outro possível problema que não tem relação com redundância é o ataque ao roteamento geográfico. Neste caso, o nó malicioso anunciará sempre uma de suas identidades sybil como o nó mais próximo ao destino, fazendo com que todos os pacotes de roteamento passem por ela.
Outro ataque possível é a utilização dos nós sybils para falsificar resultados de votações na rede. Sempre que existir algum mecanismo cooperativo para tomada de decisões na rede, o nó malicioso pode gerar diversas identidades para votar sempre a seu favor. Outro ataque é a alocação injusta de recursos, que pode ocorrer em redes que fazem divisão temporal para acesso ao meio. Neste caso, o nó malicioso utiliza todas as suas identidades falsas para obter um maior tempo de acesso. Por fim, uma outra utilização para os nós sybils acontece em redes que utilizam mecanismos de confiabilidade. Em tais redes, a índole do nó é dada pela observação de suas ações. Um nó só é considerado malicioso se cometer diversas ações consideradas ruins ou se cometer uma grande ação ruim. Assim, duas estratégias podem ser utilizadas. A primeira seria o espalhamento da culpa, na qual o nó sybil utiliza cada uma de suas identidades para fazer pequenas ações ruins, de forma que nenhuma delas possa ser considerada maliciosa. A outra estratégia seria utilizar uma identidade para realizar uma ou mais ações ruins até que ela fosse expulsa, classificada como maliciosa. Quando isso acontecesse o nó geraria uma nova identidade e a usaria para continuar atacando.
- Identidade Falsa (Impersonating) e Ataque da Replicação:
Estes ataques se assemelham muito ao Sybil. Nestes, nós maliciosos assumirão uma ou mais identidades da rede, porém desta vez, todas as identidades são reais, e cada identidade estará ligada a um ou mais hardwares diferentes, caracterizando respectivamente a Identidade Falsa e o Ataque da Replicação. A Replicação serve para inserir vários nós maliciosos, sem ter a dificuldade de se roubar várias identidades. Desta forma, os nós maliciosos replicam alguma identidade roubada e utilizam as réplicas simultaneamente dentro da rede. No caso dessas réplicas serem muito numerosas, os adversários podem dominar a rede através de um conluio para ter vantagens em casos votação, ou ainda tirar vantagem apenas por estarem participando da rede. Deve-se notar que esses ataques, que, em geral, acontecem após uma violação ou uma quebra de algoritmo criptográfico, fazem com que o atacante tenha o segredo da rede, podendo participar de todas as suas atividades como um nó legítimo. Assim, ele pode, por ter se tornado um atacante interno, executar a maioria dos ataques já descritos, com a facilidade do conluio com as outras réplicas.
Cabe ressaltar, que apesar da gravidade do efeito causado, a Replicação é de fácil detecção, devido a uma mesma identidade se anunciar em diversos pontos da rede. Algumas propostas eficientes já foram feitas, embora elas não estejam incluídas nos protocolos mais populares. No caso da identidade falsa, se o nó legítimo tiver sido destruído, a detecção é muito mais complicada, pois a identidade é única na rede. Uma outra variação da Identidade Falsa é o Ataque do Homem no Meio (Man-inthe-Middle). Neste, o nó malicioso intercepta uma comunicação, enganando os dois nós que deveriam se comunicar, como pode ser visto na Figura abaixo. Uma vez que ele se passa por x para y e por y para x, ele está assumindo duas identidades reais da rede. Esse tipo de ataque só pode ocorrer em redes que não possuem um terceiro ponto para autenticar a comunicação entre os dois primeiros.
- Violação:
Este é um dos ataques mais preocupantes para redes onde os nós ficam desprotegidos. Ele consiste da violação física dos nós com o fim de obter informações e segredos, além de também comprometer o nó, com a inserção de códigos maliciosos ou ainda pela troca de partes do hardware. A maioria dos protocolos desenvolvidos para prover segurança falha em ambientes onde é possível ocorrer a violação. De fato, não é simples garantir a segurança de todos os nós quando tratamos de redes de larga escala. Em especial pelo fato de que, em geral, existem muitas falhas de comunicação e períodos de sono, que tornam impraticável distinguir uma falha de um nó propositalmente desligado ou destruído. A proposta de defesa é a resistência à violação, descrita a seguir:
- Resistência à Violação:
O termo resistência à violação (tamper proofing), diz respeito à dificuldade imposta por um mecanismo de segurança à violação da informação, seja por software ou por hardware. O conceito pode ser estendido à capacidade da rede em resistir a ataques onde um usuário não autorizado se apossou de um dos nós da rede. Desta forma, as técnicas de resistência à violação podem ser baseadas em hardware, em software, ou em ambos. Uma forma de aumentar a resistência à violação baseada em software é a utilização de associações de segurança temporárias. Por exemplo, toda vez que um nó for enviar uma requisição de rota em um protocolo de roteamento reativo, o sistema operacional pode exigir que o usuário entre com uma senha, ou forneça sua impressão digital para se autenticar. Se o equipamento for perdido ou roubado, o usuário não autorizado não conseguirá gerar pedidos de rota, e quando esta tentativa for feita, o sistema operacional do nó pode tomar alguma atitude adicional, como, por exemplo destruir qualquer chave armazenada no sistema, aumento sua resistência à violação. Esse tipo de medida tem o problema de ser considerada como inconveniente pela maioria dos usuários.
A utilização de hardware resistente à violação possui, naturalmente, um problema de custo-benefício. Quanto mais seguro o hardware, mais caro. Além disso, como na segurança do software, não existe sistema de hardware inviolável. Considerem-se os smart-cards, utilizados, por exemplo, em alguns decodificadores de TV por assinatura para controlar os canais aos quais o usuário tem direito de acesso. Smartcards típicos são constituídos de um micro-processador, memórias ROM, EEPROM e RAM, além de portas de entrada e saída.
Normalmente, o apagamento de um bit da EEPROM exige uma voltagem alta. Ataques podem se basear no bloqueio desta voltagem mais alta, para evitar o apagamento de alguma informação. Por exemplo, em algumas empresas de TV por assinatura, o smart-card é gravado por padrão com todos os canais de TV habilitados. No set-top Box do usuário, um sinal é emitido pela operadora de forma a "apagar" os canais não contratados do smart-card. Um ataque simples consiste em bloquear a geração de voltagem mais alta para esta operação, no set-top box, garantindo o acesso a todos os canais. Uma solução para aumentar a segurança contra este tipo de ataque é incluir o circuito de geração da voltagem alta dentro do próprio smart-card, o que aumenta o custo do cartão, e dificulta a ação do atacante: o circuito para gerar a voltagem mais alta utiliza um capacitor, que pode ser identificado e destruído com a ajuda de um microscópio. Para aumentar a segurança, um encapsulamento inviolável pode ser utilizado, o que aumenta ainda mais o custo do sistema.