Dissertação: Protocolo Seguro Para Autoconfiguração de

Propaganda
Dissertação: Protocolo Seguro Para Autoconfiguração
de Endereços de Redes Móveis Ad Hoc
Autor: Fábio Mesquita Buiati
1. Visão Geral das Redes Ad Hoc
Uma rede móvel ad hoc é composta por nodos móveis conectados por interfaces
sem fio, que se comunicam através de ondas de rádio. Esses nodos podem formar
dinamicamente uma rede sem a necessidade de qualquer infra-estrutura fixa. Numa rede
ad hoc, um nodo só pode se comunicar com os nodos com os nodos que estão no seu
raio de transmissão. Em virtude disto, um pacote destinado a um nodo fora do alcance
de transmissão do nodo de origem deverá passar pelos nodos intermediários, que
funcionarão como roteadores até o pacote chegar ao seu nodo de destino.
1.1. Características
Uma rede ad hoc pode operar de forma isolada ou pode ser a extensão de uma rede
cabeada. Para atuar como uma extensão de uma rede fixa é necessário o uso de um
gateway, que será responsável pela transmissão dos pacotes de uma rede para outra.
Redes ad hoc possuem algumas particularidades que as tornam mais complexas que
as redes cabeadas e às redes móveis com concentrador de acesso. Essas características
são observadas na tabela abaixo:
Características
Topologia dinâmica
Descrição
Os nodos podem se movimentar livremente, logo a
topologia da rede muda constantemente e de forma
imprevisível.
Largura de banda restrita Devido a ruídos, interferências, enfraquecimento de sinal,
efeitos dos acessos múltiplos e fatores externos, as redes
sem fio possuem uma capacidade significativamente menor
do que redes cabeadas.
Economia de energia
Dispositivos móveis geralmente utilizam baterias, portanto
para esses aparelhos o consumo de energia é um ponto
crucial.
Segurança limitada
Redes móveis sem fio são mais vulneráveis a ataques que
redes fixas, o que implica numa maior possibilidade de
escuta, invasão e ataques. Técnicas de segurança devem ser
implementadas para reduzir as chances de ataques. Por
outro lado, por possuir um controle descentralizado,
possuem maior robustez, já que os serviços operam de
forma distribuída.
1.2. Classificação
Existem diversas maneiras de classificar as redes ad hoc. Algumas delas são quanto
sua:

Comunicação:
o Único salto: os nodos se comunicam diretamente com os outros nodos,
pois estão dentro da área de transmissão.
o Múltiplos saltos: alguns nodos não podem se comunicar com outros
nodos, assim é preciso transmitir os dados por nodos intermediários,
também chamados de nodos roteadores.

Simetria:
o Simétrica: todos os nodos da rede possuem capacidades iguais e dividem
responsabilidades similares.
o Assimétrica: as capacidades como, por exemplo, raio de transmissão,
capacidade de processamento e velocidade de movimento, e suas
responsabilidades como habilidade para efetuar roteamento, variam de
nó para nó.
1.3. Vantagens
A necessidade de instalar redes sem infra-estrutura, a um baixo custo associado
com aplicações móveis são as principais vantagens das redes ad hoc. Em relação as
redes cabeadas, podem-se observar as seguintes vantagens:

Mobilidade: vantagem primordial em relação as redes cabeadas.

Rápida instalação: podem sem instaladas em qualquer local sem a necessidade
de infra-estrutura física, tornando a rede disponível em pouco tempo e de forma
mais rápida.

Confiabilidade: devido a não utilização de infra-estrutura física, torna-se muito
mais fácil identificar problemas e reduz-se o tempo de re-configuração de algum
nodo caso haja problemas.
1.4. Desvantagens
Apesar das vantagens citadas, alguns problemas e dificuldades podem surgir
devido as peculiaridades das redes sem fio. Os maiores problemas relacionados a essa
tecnologia são:

Localização: como os nodos se movem livremente e de forma imprevisível, são
necessários mecanismos para conhecer a real localização de cada nodo.

Interferências: como a transmissão e recepção dos dados são feitos utilizando
ondas de rádio e freqüências públicas, redes ad hoc tornam-se vulneráveis a
ruídos e interferência de outros sistemas.

Consumo de energia: dispositivos portáteis geralmente utilizam baterias e estas
têm suprimento limitado de energia. Portanto são utilizadas técnicas pelos
fabricantes de equipamentos para diminuir o consumo de energia, influenciando
diretamente na rede, visto que o nodo não é capaz de receber qualquer
informação quando entra em funcionamento visando reduzir o consumo.

Inexistência de um ponto central: a falta de uma entidade centralizadora, com a
função de coordenar a rede, é preciso a adoção de algoritmos que gerenciem a
rede através dos nodos conectados.

Banda passante: redes sem fio possuem banda passante de no máximo 54 Mbps
enquanto em redes cabeadas essa banda pode chegar até 10 Gbps.

Interoperabilidade: redes ad hoc ainda possuem diversos produtos proprietários,
que
podem
operar
em
freqüências
diferentes
ocasionando
um
mal
funcionamento da rede. Por isso, é aconselhável a implantação de redes ad hoc
com equipamentos de um mesmo fabricante.

Segurança: os dados propagados em uma rede ad hoc podem exceder os limites
físicos desejados, aumentando a possibilidade de escuta, invasão e ataques.

Roteamento: como as rede possuiu uma topologia dinâmica, é necessário um
protocolo de roteamento eficiente para a entrega correta dos pacotes.
1.5. Roteamento
O mecanismo de roteamento em uma rede é responsável pela entrega dos dados
entre os diferentes nodos da rede. O nodo responsável por isso recebe a nomenclatura de
roteador. Sua principal função é entregar os pacotes de uma maquina de origem para as
maquinas de destino. Quando um nodo origem envia pacotes pra um nodo destino, os
dados são encaminhados ao roteador local que os encaminha até o destino final. Esse
caminho pode conter vários roteadores. Cada roteador seleciona o próximo salto
baseado na sua tabela de roteamento, que contem informações sobre todos os roteadores
ao longo da rede, até que o pacote chegue ao seu destino.
Um protocolo robusto e confiável deve gerenciar dinamicamente as informações
contidas na tabela de roteamento, visto que, a topologia de rede pode mudar
frequentemente.
Os algoritmos de roteamento nas redes cabeadas podem ser classificados em:

Algoritmos estáticos ou não-adaptativos: são previamente configurados pelo
administrador de rede

Algoritmos dinâmicos ou adaptativos: descobrem rotas automaticamente
conforme as mudanças na topologia de rede.
Em redes móveis sem fio todos os algoritmos de roteamento são dinâmicos
devido à mobilidade dos nodos.
As características desejáveis em um algoritmo de roteamento são as descritas na
tabela abaixo:
Características
Descrição
Correto funcionamento
Escolher a melhor rota para o pacote chegar ao seu destino.
Simplicidade
Disponibilizar os serviços com o mínimo de processamento
possível.
Robustez
Sempre chegar a uma resposta aceitável e funcionar sem
problemas durante anos.
Escalabilidade
Prever o funcionamento da rede e mesmo com o aumento
do numero de nodos, continue funcionando corretamente.
Convergência
Escolher rapidamente a melhor rota, mesmo com alterações
sucessivas das rotas.
Parâmentros de QoS
Suporte a parâmetros de QoS é imprecindivel para
determinados tipos de tráfego.
Adaptabilidade
Ser capaz de trabalhar com mudanças freqüentes de
topologia.
Independência da
Funcionamento na maior variedade de computadores e
tecnologia de rede
meios físicos.
Justiça
Todos nodos devem ter acesso a recursos disponíveis na
rede a qualquer momento.
A escolha de um protocolo de roteamento varia de acordo com fatores como, por
exemplo, complexidade da rede, tamanho, segurança, escalabilidade e estabilidades.
Características sobre o roteamento em redes ad hoc
Existem diferenças entre os algoritmos de roteamento utilizados em redes
cabeadas e redes ad hoc. Isso porque, redes ad hoc dependem de diversos fatores, como
topologia, seleção de roteadores e características que podem ser heurísticas na hora de
encontrar o melhor caminho para a entrega dos pacotes. Devido a escassez de recursos
nas redes ad hoc é necessário otimizar o uso da banda disponível, motivando o
desenvolvimento de algoritmos mais eficientes.
Características como a simetria dos enlaces também influencia na questão do
roteamento dessas redes, sendo que são baseados em enlaces simétricos a maior parte
desses protocolos.
Diferentes padrões de mobilidade também resultam em dificuldades de
desenvolvimento de protocolos de roteamento, visto que, alguns nodos podem se
movimentar de rapidamente, enquanto outros podem ser fixos ou moverem-se
lentamente, sendo quase impossível prever o padrão de movimentação de nodos,
principalmente em redes de larga escala. Isso pode ocasionar uma sobrecarga na troca
de mensagem do algoritmo de roteamento, ocasionando a sobrecarga do uso de banda.
O grupo de trabalho Manet, com o intuito de observar o mérito e a performance
de um protocolo de roteamento, enumera algumas métricas que os protocolos devem
seguir. Podem ser tanto qualitativas como quantitativas. Na tabela abaixo são
informadas as métricas qualitativas:
Métrica
Operação distribuída
Descrição
Característica fundamental a fim de evitar a centralização
de informações, podendo ocasionar vulnerabilidade.
Livre de loops
Para evitar o trafego de pacotes por muito tempo na rede,
pode ser usada uma variável TTL (time to live), entretanto
uma abordagem mais estruturada é indicada.
Operação
baseada
na Algoritmo adaptável às condições de trafego, utilizando de
demanda
forma mais eficiente recursos de energia e largura de banda.
Operação pró-ativa
Em certas ocasiões, a latência adicionada pela operação na
demanda poderá ser inaceitável. Se os recursos de energia e
banda permitir, operações pró-ativas são desejáveis.
Segurança
Se as camadas de rede e enlace não garantirem segurança,
os protocolos de roteamento estarão vulneráveis a ataques.
Mecanismos para inibir modificações nas operações do
protocolo são desejáveis.
Operação no período de Durante um período de inatividade o nodo deve deixar de
“sonolência”
transmitir e/ou receber pacotes, sem que isso resulte em
maiores conseqüências.
Características quantitativas para avaliação de desempenho dos protocolos de
roteamento:
Métrica
Descrição
Atraso e desempenho de Variância,
dados fim a fim
Tempo
descobrimento de rota
média
e
distribuição
são
dados
muito
importantes para avaliação de um protocolo de roteamento.
de Uma forma de medir o atraso do pacote fim a fim de um
algoritmo de roteamento é o tempo requerido para
estabelecer rotas quando requisitadas.
Porcentagem
dos Medida para avaliar performance de roteamento de
pacotes entregue fora de protocolos da camada de transporte como TCP, que
ordem
entregam pacotes na ordem correta.
Eficiência
Como o trafego de pacotes de dados e de controle deve
compartilhar o mesmo meio e a capacidade dos meios é
limitada, o trafego excessivo de pacotes de controle causará
impacto na performance do roteamento.
Devido as peculiaridades características das redes ad hoc, obter a eficiência de
um protocolo de roteamento não é muito simples. Mas tendo como base os seguintes
valores, pode-se medir a eficiência de um protocolo de roteamento de redes ad hoc:

Bits de dados transmitidos / Bits de dados entregues: medida que representa a
eficiência dos bits de dados entregues dentro da rede. Indiretamente, essa
medida fornece também a media de saltos percorridos pelos pacotes de dados.

Bits de controle transmitidos / Bits de dados entregues: medida que respresenta a
eficiência do protocolo no uso entre os pacotes de controle sobre os pacotes de
dados entregues.

Pacotes de controle e pacotes de dados transmitidos / Pacotes de dados
entregues: medida que tenta capturar a eficiência de acesso ao canal do
protocolo.
Protocolos de roteamento em redes ad hoc
Devido a grande quantidade de protocolos de roteamento existentes para redes
ad hoc, eles foram dividos em dois grupos:

Protocolos reativos: determinam as rotas a serem usadas somente sob demanda.
Esse tipo de protocolo proporciona economia de energia e banda, mas em
conseqüência o atraso de entrega de pacotes pode ser significativamente alto.

Protocolos pró-ativos: tentam avaliar continuamente a rede mantendo um
conhecimento atualizado das rotas, para que, no momento em que precisar
encaminhar pacotes, a rota já seja conhecida e possa ser encaminhado
imediatamente. Possuem a vantagem de atraso mínimo, visto que, no momento
que receber a solicitação já encaminha o pacote, em compensação precisam
trocar informações continuamente entre os nodos acarretando uso de banda.
Portanto, nota-se que nenhum dos dois grupos atende a todos os tipos de
ambiente. Dessa forma, temos os protocolos híbridos, que usam uma estrutura
hierárquica em que apenas alguns nodos fazem a atualização periódica da topologia da
rede.
1.3. Descrição do problema de autoconfiguração
Todo nodo, para se comunicar em uma rede, necessita de um identificador único,
que geralmente é o IP. Em redes cabeadas, esse endereço pode ser configurado
manualmente pelo administrador de rede ou automaticamente, via servidor DHCP, que
fornece todas as informações para os nodos serem configurados na rede. Em redes ad
hoc é difícil garantir acesso a um servidor, devido a mobilidade da rede. Portanto, é
desejável que a configuração dos nodos seja feita de forma dinâmica, automática e de
preferência sem intervenção humana.
1.4. Necessidades do protocolo de autoconfiguração
Para se obter um protocolo de autoconfiguração rápido, seguro e confiável, as
seguintes características são necessárias:
Necessidade
Descrição
Unicidade dos endereços Dois ou mais nodos não podem obter o mesmo endereço IP
IP
em um determinado instante de tempo
Correto funcionamento
Um endereço IP é associado a um nodo somente durante o
período que ele estiver na rede. Quando um nodo deixar a
rede o seu endereço IP deve ser disponibilizado a outros
nodos que queiram se juntar a rede
Solucionar
problemas Caso algum nodo falhe ou ocorra perda de mensagens, o
relacionados à perda de protocolo deve agir de forma que não hajam dois ou mais
mensagens
nodos com o mesmo endereço IP
Permitir endereçamento Um nodo só não será configurado na rede com um endereço
IP somente se não houver nenhum endereço disponivel em
multi-hop
toda a rede
Minimizar o tráfego de O protocolo deve minimizar a troca de pacotes entre os
pacotes
adicionais
rede
na nodos durante o processo de autoconfiguração de um nodo
a fim de evitar afetar a performance da rede
Verificar a ocorrência de Quando dois nodos solicitam um endereço IP no mesmo
solicitações concorrentes instante de tempo, deve realizar um tratamento a fim de
de endereço IP
Ser
evitar que os dois nodos obtenham o mesmo endereço.
flexível
particionamento
ao O protocolo deve manipular a fusão de duas redes distintas
e
fusão de redes ad hoc
a ad hoc como também o particionamento em duas ou mais
redes.
Realizar o processo de O protocolo deve-se adaptar as mudanças da topologia da
sincronização
rede.
Possuir segurança
O protocolo deve se assegura que somente nodos
autorizados e confiáveis tenham permissão para acesso a
rede.
1.5. Classificação dos Protocolos
Os protocolos de autoconfiguração podem ser classificados de duas formas.
Uma em relação ao processo de configuração e outra em relação a forma de detecção de
endereços duplicados.
1.5.1. Quanto ao processo de autoconfiguração
Independente
O nodo constrói seu próprio endereço baseado em um numero randômico ou no
identificador do hardware. Neste processo é necessário um mecanismo de detecção de
endereços duplicados para assegurar a unicidade do endereço.
Dependente
Cada nodo da rede mantém um conjunto de endereços IP, assim é necessária
uma segunda entidade para atribuir um novo endereço IP.
1.5.2. Quanto ao processo de detecção de endereços duplicados
Alocação para detecção de conflitos
O nodo escolhe um endereço IP por tentativa e faz a requisição esperando pela
aprovação de todos os nodos da rede. Caso algum nodo negar, esse endereço já está em
uso e o processo se repete ate que se encontre um endereço disponível.
Alocação livre de conflitos
Usa o conceito de divisão binária, onde cada nodo possui um conjunto de
endereços distintos. Cada nodo pode atribuir um endereço IP sem a necessidade dos
demais nodos da rede aprovar. Sendo assim, todos os nodos são responsáveis pelo
processo de atribuição de endereços.
Alocação do melhor esforço
Os nodos da rede são responsáveis por atribuir um endereço IP para os novos
nodos, tentando associar um endereço que não esteja sendo usando na rede. Todos os
nodos possuem uma lista de endereços livres ou em uso na rede. Esse tipo de protocolo
funciona muito bem em conjunto com protocolos de roteamento pró-ativos, pois os
nodos frequentemente realizam difusão com as informações de endereços usados na
rede.
1.6. Métricas para avaliação de performance
Operação Distribuída
Em uma rede ad hoc um nodo não é tão confiável quanto um servidor DHCP
devido aos diversos fatores particulares a esse tipo de rede. A falha de alguns nodos não
deve impedir o funcionamento do protocolo, sendo então necessário seu funcionamento
de forma distribuída.
Exatidão
Dois ou mais nodos não devem possuir o mesmo endereço IP, portanto quando
acontecer esse fato o algoritmo de detecção de endereços duplicados deve ser executado
o mais rápido possível.
Complexidade
Devido a quantidade limitada de memória e processamento de nodos móveis, a
solução deve ser o mais simples possível, podendo consistir de módulos como alocação
de endereços, detecção de endereços duplicados e manutenção de tabelas de estado do
nodo.
Comunicação excessiva
Deve-se evitar a difusão em virtude do alto consumo de banda, utilizando-se de
alternativas como a comunicação somente com nodos vizinhos. Logo, protocolos onde
cada nodo pode atribuir um endereço IP isoladamente são mais eficazes.
Igualdade
Distribuição de endereços IP deve ser justa, a fim de evitar a duplicidade de
endereços.
Latência
Latência é o tempo entre a solicitação e a atribuição de um endereço IP livre a
um nodo solicitante. Quanto menor as mensagens de difusão menor a latência.
Escalabilidade
Protocolos que utilizam difusão para a autoconfiguração possuem uma baixa
escalabilidade em virtude do consumo de banda estar ligado ao numero de nodos na
rede. Já se a comunicação ocorre entre nodos vizinhos e localmente, o protocolo tem
alta escalabilidade.
2. Autenticação para o protocolo de autoconfiguração
2.1. Introdução
Inúmeros fatores devem ser levados em consideração para disponibilizar
segurança em protocolos de autoconfiguração como: autenticidade, confidencialidade,
disponibilidade e integridade. Com isso obtemos redução no risco de vazamento de
informações, fraudes, erros, uso indevido, sabotagens e roubo de informações.
A autenticidade habilita um nodo a assegurar a identidade do nodo com o qual
está se comunicando. O serviço de autenticação deve assegurar ao nodo receptor que a
mensagem seja realmente procedente da origem informada em seu conteúdo.
Confidencilidade assegura que informações não serão reveladas por nodos não
autorizados. Seu objetivo é proteger a informação contra leitura e/ou copia por alguém
que não tenha sido autorizado pelo proprietário da informação.
Disponibilidade consiste na proteção dos serviços prestados pelo sistema de
forma que eles não se tornem indisponíveis sem autorização, assegurando ao usuário o
acesso aos recursos da rede sempre que ele precisar e for necessário.
Integridade garante que uma mensagem que está sendo transmitida não será
modificada sem a permissão do proprietário da informação.
A criptografia é o mecanismo básico para se prover segurança e consiste no
processo de transformar uma informação antes da comunicação para que ela se torne
inintelegivel para destinatários indesejados.
2.2. Modelo de Segurança
2.2.1. Modelo Inimigo
Pode se considerar “inimigo” qualquer nodo anunciando informações falsas nas
mensagens pré-definidas no protocolo de autoconfiguração, que visam atingir o “alvo”,
ou seja, qualquer nodo que aceite e use essas informações falsas, visto que, os nodos
inimigos produzem as mensagens com sintaxe válida.
Nodos inimigos exploram qualquer mensagem que faça parte do protocolo de
autoconfiguração. Esses ataques podem ser classificados como:

Ataques de solicitação: nodos inimigos atuam como clientes e fabricam
mensagens requerendo o serviço de autoconfiguração.

Ataques de servidor: nodos inimigos atuam como servidores na rede e atendem
requisições solicitadas respondendo com falsas mensagens.
2.2.2. Requerimentos de Segurança
Mecanismos para acompanhamento do comportamento dos nodos pelos próprios
nodos da rede devem ser empregados nos protocolos a fim de prover uma maior
segurança na rede. Esse mecanismo deve atuar de forma distribuída e autoconfigurável,
portanto a verificação da confiabilidade desses nodos deve ser feita de forma
colaborativa e adaptativa.
Quando um nodo é corrompido, este deve ser excluído da rede e
consequentemente não pode mais fornecer o serviço de autoconfiguração. Se o
protocolo esta habilitado a identificar o mau comportamento dos nodos, pode-se usar
esse mecanismo para tratar os nodos que estão se comportando de forma inadequada e
classificá-los como nodos não confiáveis.
2.2.3. Modelo de Segurança
Pode-se identifcar unicamente um nodo de forma confiável através de um
certificado, visto que endereços IP podem ser duplicados, assim como o endereço MAC.
Para um nodo obter o certificado e se tornar membro da rede é preciso adquirir
pelo menos um numero X de certificados parciais dos nodos confiáveis já presentes na
rede.
2.3. Serviço de Certificação em Redes Ad Hoc
O serviço de certificação deve ser baseado em algoritmos e protocolos
escaláveis para distribuir de forma segura os serviços de segurança para os nodos da
rede. O serviço fica disponível para qualquer nodo da rede desde que seja possível
localizar uma coalizão com um número mínimo suficiente de nodos, já que um
determinado número de nodos pode colaborativamente prover serviços de certificação.
A distribuição das funcionalidades de uma Autoridade Certificadora (CA) é
baseada no modelo RSA e realizada através do compartilhamento da chave privada da
CA entre todos os nodos participantes da rede utilizando a técnica de criptografia de
limiar.
Os certificados gerados por uma CA composta por um número X de nodos têm a
finalidade de certificar as chaves publicas de cada nodo da rede.
Os nodos que não possuem o certificado ou possuem certificado invalido são
isolados, não possuindo acesso aos recursos da rede e serão tratados como nodos
inimigos, ou seja, seus pacotes serão descartados.
2.3.1. Emissão e Revogação do Certificado
Um nodo sem certificado ou precisando renovar seu certificado deve solicitar
um certificados para outros nodos que ofereçam o serviço de certificação. A política de
autenticação utilizada deve especificar de que maneira os nodos que recebem a
requisição de certificados devem servir tal requisição. Diversos critérios podem ser
usados para a emissão e renovação dos certificados a fim de proporcionar um serviço
com a maior escalabilidade possível.
Basicamente não existem diferenças entre a emissão e a renovação de
certificados. Quando um nodo precisa solicitar um certificado ele prepara uma
mensagem de requisição contendo informações da identidade do nodo e sua chave
publica. Em caso de renovação, ele envia uma mensagem e juntamente com ela o seu
certificado antigo. Qualquer nodo que possui o compartilhamento da chave secreta pode
responder a essa requisição. Se o certificado enviado junto com a mensagem é valido, a
requisição é tratada como uma renovação de certificado, caso contrário, será tratado
como requisição de um novo certificado. Então, a política apropriada é aplicada a
requisição e o nodo pode decidir se atende à requisição gerando um certificado parcial
que deve ser encaminhado unicamente ao nodo que requisitou. Quando o nodo
requerente receber X certificados parciais validos, ele gera seu novo certificado.
2.3.2. Armazenamento local dos certificados
Neste modelo de segurança os nodos armazenam em uma base de dados local
em cada nodo os certificados para que a relação de confiança colaborativa seja
estabelecida entre os nodos.
2.3.3. Anulação e Revogação do Certificado
Para controlar a validade do certificado, são empregados dois métodos de
revogação. O primeiro é denominado revogação implícita onde cada nodo deve renovar
o certificado em um determinado período após a emissão ou a ultima renovação. O
outro método é conhecido como revogação explicita de certificado em que um
certificado acusado pela lista do sistema de certificados revogados (CRL) é invalidado
independentemente do tempo de validade dele. Com isso, apenas os certificados
revogados que não expiraram ainda precisam estar na CRL.
2.3.4. Uso de Múltiplas Autoridades Certificadoras
A junção de duas os mais redes ad hoc implica em uma serie de cuidados que
devem ser tomados, visto que nodos podem estar utilizando o mesmo endereço IP e
também a questão dos certificados, a fim de saber quais foram as autoridades
certificadoras que emitiram os certificados para os nodos.
Levando em consideração duas redes ad hoc distintas, para cada partição, existe
uma autoridade certificadora distribuída, que assina os certificados para todos os nodos
dessa rede. Porem, quando essas redes se unem os nodos da nova rede ficam com
certificados diferentes, vindos de diferentes autoridades certificadoras distribuídas. Para
resolver esse problema é necessário que haja uma relação de confiança cruzada entre as
autoridades certificadoras distribuídas.
3. Especificação do Protocolo de Autoconfiguração
3.1. Objetivo
O protocolo deve associar de forma segura e confiável um endereço IP a um
nodo que deseja se juntar a rede ad hoc. O protocolo especificado usa o processo de
divisão binária e considera questões como partição e junção de redes ad hoc, falha de
nodos e perda de mensagens.
3.2. Funcionamento
Todo nodo válido e confiável que pertence à rede possui um endereço IP
identificando sua interface e um conjunto de endereços IP livres para servir aos nodos
clientes que desejam se associar a rede. Os conjuntos de endereços IP livres dos nodos
de uma mesma rede ad hoc devem ser disjuntos, garantindo que dois ou mais nodos
servidores distribuam o mesmo endereço IP para nodos clientes. Cada rede ad hoc
possui um identificador único com o objetivo de facilitar a detecção de junções e
separações de redes.
O protocolo DCDP (Dynamic Configuration Distribution Protocol) serve para
distribuição de configurações de rede como: endereço IP, mascara de rede e gateway
padrão e utiliza o mecanismo de divisão binária para fornecer conjuntos distintos de
endereços IP aos nodos da rede.
3.2.1. Inicialização da rede ad hoc
Para que a rede possa atender e autenticar de forma segura novas requisições de
nodos clientes é necessário que existam pelo menos um numero X de nodos
previamente configurados na rede. Portanto na faze de inicialização da rede o principal
objetivo é inicializar os X nodos que irão atender as futuras requisições.
Para iniciar os X nodos é utilizado um nodo líder que possua o certificado total
assinado e com a chave secreta para que possa fornecer os compartilhamentos desta.
Após inicializar os X nodos o nodo líder deixa a rede para evitar que algum nodo
inimigo posso obter a chave secreta, garantindo uma inicialização segura e colaborativa
através do processo de difusão.
3.2.2. Associação de um endereço IP a um novo nodo
Para que um nodo possa obter um endereço IP em na rede ad hoc é preciso que
ele já tenha obtido o certificado valido seguindo o modelo de confiança colaborativa.
Um nodo com o certificado valido para obter um endereço IP envia uma
mensagem em difusão utilizando seu endereço físico da placa como endereço de
origem. Qualquer servidor pertencente à rede, responde a solicitação enviando o
conjunto com maior quantidade de endereços IP livres que possui. O nodo cliente pode
receber mais de uma resposta vinda de diferentes servidores. Nesse caso ele seleciona o
nodo servidor com o maior conjunto de endereços IP livres. Após o nodo cliente
escolher o servidor do qual irá receber o conjunto de IPs o servidor então divide seu
conjunto de endereços ao meio, fornecendo a metade ao nodo cliente e mantendo a
outra metade consigo.
Então o nodo cliente associa o primeiro endereço do conjunto e os demais serão
utilizados para atender requisições de novos nodos que venham querer se juntar a rede.
3.2.3. Saída de nodos
O processo de saída ou falha de um nodo dever ser cuidadosamente analisada a
fim de evitar problemas na alocação de endereços IP para novos nodos. O protocolo é
projetado para minimizar o trabalho do nodo cliente, permitindo que o mesmo deixe a
rede e troque o menor numero de mensagens possíveis com os nodos vizinhos, visto
que, um nodo, devido a sua mobilidade ou recursos escassos de energia, pode não
conseguir realizar a troca de mensagens com os vizinhos.
Portanto, pode haver duas situações a se considerar quando um nodo deixa a
rede. A primeira é quando o nodo deseja sair da rede e avisa seus vizinhos de sua
intenção. A segunda forma é quando ocorre falha do nodo ou o nodo deixa a rede sem
avisar previamente seus vizinhos.
Saída graciosa dos nodos
Ao sair da rede o nodo deixa seu conjunto de endereços IP para o nodo mais
próximo da sua área de transmissão. Isso evita que um nodo deixa a rede com uma
quantidade elevada de endereços IP não possibilitando que outros nodos possam utilizálos posteriormente.
Saída brusca e falha dos nodos
Com base na tabela de endereços IP associados aos nodos amigos, um nodo
pode detectar se o seu nodo amigo saiu da rede abruptamente. Um nodo envia uma
mensagem de ping aos seus nodos amigos. Caso o nodo receba alguma resposta,
significa que o nodo ainda está na rede, caso contrario, é detectado que o nodo amigo ao
qual foi enviada a mensagem deixou a rede abruptamente e realiza a recuperação dos
endereços IP, adicionando estes ao seu conjunto de endereços IP livres.
Esse método de recuperação possui a vantagem de que cada nodo é responsável
por encontrar seus nodos amigos não sendo necessária a necessidade de broadcast na
rede. Mas possui a desvantagem de que caso um nodo amigo deixe a faixa de
transmissão por algum instante e retornar posteriormente, é considerada a partida do
nodo da rede.
3.2.4. Processo de Sincronização
Na associação de endereço IP a um novo nodo a rede, todo nodo pertencente a
rede possui uma tabela que mostra a alocação dos endereços IP feitas aos nodos amigos.
Com as informações de cada tabela armazenada localmente em cada nodo, é montada
outra tabela para que sejam armazenadas os endereços alocados por todos os nodos da
rede mantendo uma atual situação da topologia da rede. Nesta tabela global têm-se
todos os nodos da rede e seus respectivos conjuntos de endereços IP.
3.2.5. Migração do nodo cliente
Devido à mobilidade dos nodos, é possível que o nodo cliente se mova durante o
processo de associação do endereço IP e com isso pode perder contato com o nodo
servidor, que estava associando um endereço IP a ele. Então, o nodo cliente escolhe um
novo nodo servidor e informa ao mesmo a existência do antigo nodo servidor. O novo
nodo servidor informa ao antigo nodo servidor da migração do nodo cliente. Quando o
processo de associação estiver terminado no antigo nodo servidor, ele encaminha o
resultado para o novo nodo servidor que por sua vez encaminha pra o nodo cliente.
3.2.6. Perda de mensagens
Para tratar a perda de mensagens, evitando problemas no funcionamento do
protocolo, são usadas mensagens de confirmação e tempos apropriados para a troca de
mensagens, garantindo assim que cada serviço seja realizado dentro de um tempo finito.
3.2.7. Detectando junção e separação de partições
A mobilidade dos nodos pode ocasionar a divisão de uma rede ad hoc em duas
ou mais partições. Essas partições devem convergir e tornar-se uma única rede. Neste
caso, pode ocorrer que dois ou mais nodos possuam o mesmo endereço IP, portanto
devem-se tratar esses casos a fim de evitar um possível conflito de endereços IP. Cada
partição ou cada rede ad hoc possui uma identificação única que tem por objetivo
auxiliar na detecção da junção de duas ou mais partições.
Detectando o particionamento em uma rede ad hoc
O particionamento da rede pode ser comparado a uma saída abrupta de vários
nodos. Assim, os nodos enviam uma mensagem ping para seus amigos e caso eles não
respondam, os endereços IP são recuperados. Esse processo é gradativo e , aos poucos,
os blocos de endereços IP vão sendo recuperados.
Junção de duas ou mais partições
Quando um nodo recebe uma mensagem de outro nodo contendo o identificador
único da rede diferente do seu, ele detecta que houve uma junção de duas redes ad hoc.
Então, o nodo com maior ou menor endereço IP envia uma mensagem broadcast para
coletar as configurações atuais da rede.
Para que os nodos de diferentes partições possam se comunicar e formar uma
nova rede ad hoc, é preciso cumprir o requerimento principal que é o estabelecimento
de uma relação de confiança cruzada entre as autoridades certificadoras distribuídas de
cada rede.
Na junção de duas redes ad hoc, pode acontecer que a quantidade de nodos seja
maior do que a quantidade de endereços IP disponíveis do endereçamento. Nesse caso, é
realizada a troca de endereçamento de rede faixa que possua uma maior quantidade de
endereços IP.
4. Implementação do Protocolo
4.1. Configuração do Ambiente
4.1.1. Configuração Física
A rede ad hoc utiliza nos testes de implementação é totalmente móvel.
Inicialmente, a rede é inicializada com dois nodos. Para realizar todos os testes mais
dois nodos se juntam a rede. Todas as máquinas são equipadas com placas de rede sem
fio modelo Orinoco Silver operando no modo ad hoc, ou seja, as maquinas se
comunicam de forma direta, sem um ponto comum para centralizar o tráfego e as
informações.
4.1.2. Configuração Lógica
O protocolo de autoconfiguração proposto no trabalho recebeu o nome de
Autoconf. Esse software é complementado com o software de autenticação, chamado de
Cert. O modulo Autoconf possui todas as funcionalidades do serviço de
autoconfiguração dos nodos, tanto para o nodo cliente como para o nodo servidor. Já o
modulo Cert é responsável pela certificação dos nodos, também servindo tanto para
atuar como nodo cliente como nodo servidor.
4.2. Ferramentas Utilizadas
Foram utilizadas para o desenvolvimento do protocolo ferramentas de código
aberto ou de uso livre.
4.2.1. Linguagem de Programação C
A linguagem C foi escolhida, pois apresenta características que facilitam o
desenvolvimento de software para uso em redes como, por exemplo, a independência de
plataforma e o uso de sockets para efetuar a comunicação via rede.
4.2.2. Linux
Foi utilizado o Linux Red Hat 9.0 por possuir na época a ultima versão dos
compiladores, a maioria dos drivers para placas de redes sem fio, as bibliotecas de
programação para redes e a ferramenta Wireless Tools.
4.2.3. Libnet
Libnet é uma biblioteca escrita em C que permite que programadores construam
pacotes para serem enviados pela rede através de qualquer plataforma. Essa biblioteca
estabelece uma interface simples entre programadores e a programação de baixo nível
TCP/IP.
4.2.4. Libcap
Biblioteca escrita na linguagem C que permite que programadores capturem e
recuperem pacotes pela rede com a utilização de filtros.
4.2.5. Wireless Extensions for Linux
Consiste numa API de redes sem fio para o sistema Linux. É composta de três
partes complementares.
A primeira consiste na interface com o usuário, que é o conjunto de ferramentas
para manipular as extensões. A segunda parte é uma modificação de kernel para
suportar e definir todas essas extensões. E a terceira trata da interface de hardware e
seus drives.
4.3. Definição e Especificação dos Estados do Protocolo
Para um melhor entendimento do protocolo, a implementação foi dividida em
estados pelo qual o protocolo deve passar. Dessa forma existe um diagrama a ser
seguido pelos nodos clientes ao requisitar um endereço IP e outro diagrama para ilustrar
o sequenciamento que os nodos servidores devem seguir para fornecer um endereço IP.
Cada diagrama consiste em vários estados que modularizam o protocolo,
tornando-o mais flexível e portável.
4.3.1. Estados do nodo cliente
No processo de solicitação de endereço IP, existem cinco estados principais que
descrevem o funcionamento do protocolo no lado do nodo cliente. São os estados:

Requester: o nodo cliente faz a solicitação de um endereço IP, enviando uma
mensagem em broadcast. Após o envio dessa mensagem é configurado um
tempo para a obtenção de alguma resposta dentro da rede.

WaitingOffer: o nodo cliente coleta as mensagens de resposta dos nodos
servidores. As mensagens são armazenadas em uma estrutura de dados que serve
para identificar os nodos servidores que responderam. O nodo cliente fica nesse
estado por um determinado período de tempo coletando todas as respostas e caso
não receba nenhuma resposta, volta ao estado Requester. A principal função
desse estado é a seleção do nodo servidor com o maior conjunto de endereços IP
livres.

ChoosingServer: após selecionar o servidor, esse estado tem por função enviar
uma mensagem ao nodo servidor escolhido informando que ele foi selecionado.

WaitingAssigment: nesse estado o nodo cliente aguarda uma mensagem do nodo
servidor. Caso não receba resposta, o protocolo envia novamente, por um
numero determinado de vezes, a mensagem informando ao nodo servidor que ele
foi escolhido. Não recebendo resposta nesse numero de vezes ele retorna ao
estado Request, caso contrário avança para o próximo estado.

Configured: nesse estado o nodo cliente associa o primeiro endereço do conjunto
de endereços IP livres recebidos do nodo servidor a sua interface. Em seguida
armazena o restante dos endereços em sua estrutura de dados local. Por fim
envia uma mensagem ao nodo servidor confirmando o fim da operação.
4.3.2. Estados do nodo servidor
No lado do servidor, existem seis estados que descrevem o funcionamento do
protocolo. São eles:

Configured: O nodo cliente ao atingir esse estado, ele torna-se um nodo servidor
e está apto a atender as requisições dos nodos cliente. Nesse estado o nodo
servidor fica escutando as requisições dos nodos clientes. Ao receber uma
solicitação de endereço IP ele apenas retorna uma mensagem ao nodo cliente.

WaitingClientChoose: o nodo servidor aguarda que o nodo cliente decida qual
servidor irá utilizar para fazer o processo de autoconfiguração. Se o nodo
servidor receber uma mensagem informando que ele foi escolhido ele passa para
o próximo estagio, caso contrário retorna ao estado Configured.

AssociateIPAddress: ao ser escolhido pelo nodo cliente o nodo servidor divide
seu conjunto de endereços IP livres. Uma metade desse conjunto será enviada
junto com o identificador da rede ad hoc. E por fim o nodo servidor configura
um tempo de resposta para aguardar a confirmação do nodo cliente que foi
realizada a autoconfiguração.

WaitConfirm: estado crucial para atualização das tabelas do nodo servidor. A
partir desse estado o nodo pode partir para outros dois estados dependendo do
comportamento do nodo cliente. Se o servidor receber a mensagem que o
endereço foi atribuído corretamente ele passa para o estado SetTables. Caso não
recebe a mensagem de confirmação o nodo servidor passa para o estado
CheckClientNode

CheckClientNode: para chegar nesse estados dois problemas podem ter
acontecido. O nodo cliente não recebeu a mensagem enviada pelo estado
AssociateIPAddress ou o nodo servidor não tenha recebido a confirmação
devido a perda da mensagem. No primeiro caso o nodo cliente não vai ser
configurado. No segundo apesar de não ter confirmado a configuração ao nodo
servidor o nodo cliente está configurado na rede. É enviado um ping ao nodo
cliente. Caso obtenha resposta ele vai para o estado de configuração das tabelas,
caso contrário retorna ao estado Configured sem associar o endereço ao cliente.

SetTables: atualiza as tabelas. O bloco com os endereços IP é reduzido a metade
é o IP do nodo cliente é associada a tabela de nodos amigos. Após feito isso,
passa ao estado Configured.
Download