Prévia do material em texto
Sumário
Unidade I ................................................................................................................................ 4
Introdução ......................................................................................................................... 4
WANET ou MANET ........................................................................................................... 5
Desafios e benefícios ...................................................................................................... 6
Requisitos técnicos ......................................................................................................... 6
Aplicações ......................................................................................................................... 6
Roteamento em redes ad hoc ........................................................................................ 7
Manutenção de rotas ..................................................................................................... 11
Considerações finais ..................................................................................................... 12
Referências...................................................................................................................... 14
Unidade II ............................................................................................................................. 15
Introdução ....................................................................................................................... 15
Aplicações ....................................................................................................................... 16
Estado de pesquisa em redes sobrepostas .............................................................. 17
Resiliência e multicast .................................................................................................. 18
Protocolos P2P ............................................................................................................... 19
Redes sobrepostas e sistemas P2P ........................................................................... 21
Considerações finais ..................................................................................................... 22
Referências...................................................................................................................... 23
Unidade III ............................................................................................................................ 25
Redes virtuais privadas ................................................................................................ 25
Protocolos de encapsulamento VPN .......................................................................... 28
PPTP ................................................................................................................................. 28
L2TP .................................................................................................................................. 29
SSTP ................................................................................................................................. 30
Escolhendo entre protocolos de encapsulamento .................................................. 31
Firewalls ........................................................................................................................... 31
Considerações finais ..................................................................................................... 35
Referências...................................................................................................................... 37
Unidade IV ........................................................................................................................... 38
Introdução ....................................................................................................................... 38
Segurança de redes 802.11 .......................................................................................... 38
Segurança do WAP 2.0 .................................................................................................. 41
Segurança do Bluetooth ............................................................................................... 42
Protocolos de autenticação ......................................................................................... 43
Autenticação baseada em uma chave secreta compartilhada .............................. 44
Autenticação com a criptografia de chave pública ................................................. 49
Considerações finais ..................................................................................................... 50
Referências...................................................................................................................... 52
Unidade V ............................................................................................................................ 53
Qualidade de Serviço .................................................................................................... 53
Requisitos ........................................................................................................................ 53
Técnicas para buscar a qualidade de serviço .......................................................... 55
Superdimensionamento ................................................................................................ 55
Armazenamento em buffers ......................................................................................... 55
Moldagem de tráfego ..................................................................................................... 56
O algoritmo de balde furado ........................................................................................ 57
Reserva de recursos ...................................................................................................... 59
Controle de admissão ................................................................................................... 60
Roteamento proporcional ............................................................................................. 62
Programação de pacotes .............................................................................................. 63
Considerações finais ..................................................................................................... 64
Referências...................................................................................................................... 66
Unidade I
Introdução
Ad hoc é uma expressão em Latin que significa, literalmente, “para isso”. No
idioma inglês, geralmente significa uma solução designada para uma tarefa ou
problema específico, não generalizável e que não tem intenção de ser
adaptado para outros propósitos.
No contexto de ad hoc networks, ou redes descentralizadas, a expressão se
encaixa como um verbo, descrevendo um método temporário, provisório ou
improvisado de resolver um determinado problema. Pode ser descrito como um
protocolo de rede feito à mão. Em resumo, uma rede ad hoc se refere a uma
tecnologia que permite comunicação em rede de forma ad hoc, ou,
descentralizada.
São dois os principais tipos de redes ad hoc: rede ad hoc sem fio/móvel, do
inglês wireless ad hoc network (WANET) ou mobile ad hoc network (MANET); e
rede ad hoc veicular, do inglês vehicular ad hoc network (VANET). A segunda
aplica os mesmos princípios da primeira para o domínio de veículos. No
contexto do capítulo, temos maior interesse nas aplicações gerais do protocolo,
que tem sua base no estudo das redes móveis e sem fio, logo será o foco dele.
O que torna as redes ad hoc diferentes das redes fisicamente conectadas é
que todas as regras habituaisa respeito de topologias fixas, vizinhos fixos e
conhecidos, relacionamento fixo entre endereço IP e localização e outras, são
repentinamente abandonas. Os roteadores podem ir e vir, ou aparecer em
novos lugares de um momento para outro. Em uma rede fisicamente
conectada, se um roteador tiver um caminho válido para algum destino, esse
caminho continuará a ser válido indefinidamente, desde que não ocorra uma
falha em algum lugar no sistema. No caso de uma rede ad hoc, a topologia
pode se alterar o tempo todo, e assim o interesse e até mesmo a validade dos
caminhos podem se alterar de modo espontâneo, sem qualquer aviso prévio. É
desnecessário dizer que essas circunstâncias tornam o roteamento em redes
ad hoc bem diferente do roteamento nas redes equivalentes fixas.
Foram propostos diversos algoritmos de roteamento para redes ad hoc. Um
dos mais interessantes é o algoritmo de roteamento AODV, do inglês Ad hoc
On-demand Distance Vector. Trata-se de um algoritmo semelhante ao de
roteamento com um vetor de distância de Bellman-Ford, mas adaptado para
funcionar em um ambiente móvel e que considera a largura de banda limitada e
a baixa duração das baterias nesse ambiente. Outra característica incomum é
que é um algoritmo por demanda, isto é, determina uma rota até algum destino
apenas quando alguém deseja enviar um pacote para esse destino.
Uma diferença crítica entre os algoritmos AODV e Bellman-Ford é o fato de que
os nós não transmitem difusões periódicas contendo sua tabela de roteamento
inteira. Essa diferença economizar largura de banda e também a carga das
baterias. AODV também é capaz de realizar o roteamento por difusão e por
multidifusão. O algoritmo será detalhado quando discutirmos o roteamento em
redes ad hoc.
WANET ou MANET
Uma rede sem fio ou móvel ad hoc é um tipo descentralizado de rede. Esse
tipo de rede é chamado de ad hoc porque não necessita de uma infraestrutura
pré-existente, como, por exemplo, roteadores em redes cabeadas. A primeira
vez que foi colocada em prática e demostrado que era viável foi em 1999, mas
o início de sua pesquisa data do início da década de 1990.
Nela, cada nó participa do processo de roteamento, ao encaminhar os dados
para outros nós. A definição sobre qual dos nós deve encaminhar os dados é
feito de forma dinâmica, baseando-se na conectividade de rede e no algoritmo
de roteamento utilizado. No exemplo ilustrado pela Figura 1, o nó C não está
dentro do alcance do transmissor sem fio do nó A e o nó A também não está
dentro do alcance do transmissor sem fio do nó C. Se A e C desejarem trocar
pacotes, terão que recrutar os serviços do nó B para encaminhar os seus
pacotes, já que B está em sobreposição com o alcance de A e C.
Figura 1 - Estrutura simples de rede ad hoc sem fio com três nós
É provável que você já tenha visto, ou até mesmo utilizado, uma conexão ad
hoc. No Windows, existe a opção de criar ou conectar-se a uma rede ad hoc,
permitindo a comunicação direta com outros dispositivos sem a necessidade de
um roteador.
Em resumo, redes ad hoc sem fio são autoconfiguráveis e dinâmicas, onde os
nós podem se mover livremente. Essa falta de complexidade, principalmente
em termos de infraestrutura e configuração, permite que dispositivos criem ou
se conectem a redes em qualquer momento ou lugar.
Desafios e benefícios
A mobilidade proveniente das redes ad hoc dá origem a muitas questões
desafiadoras. Se um hospedeiro pode se mover, como será possível descobrir
sua localização corrente na rede, de modo que seja possível lhe transmitir
dados. Como é realizado o endereçamento, dado que um hospedeiro pode
estar em uma entre muitas localizações possíveis. Se o hospedeiro de
movimentar durante uma conexão, como os dados serão roteados de modo
que a conexão continue sem interrupção.
Em algumas situações, a possibilidade de todas as entidades da rede serem
móveis podem adicionar uma complexidade excessiva, tornando a topologia
muito dinâmica e volátil. Da mesma forma, por não ter entidades centrais, a
operação funciona de forma totalmente distribuída. Isso faz com que as
funções de rede tenham que ter um alto grau de adaptabilidade.
Entre as vantagens, estruturas ad hoc proporcionam uma rede de alta
performance, não demandam uma infraestrutura de alto custo monetário para
operarem, permite uso de espectro de frequência não licenciado, proporcionam
distribuição rápida de informações ao redor dos remetentes e, em caso de
falhas, não há interferência no funcionamento da rede, visto que não há
roteadores centrais.
Requisitos técnicos
Uma rede ad hoc é formada por múltiplos nós conectados. A conexão entre
esses nós é influenciada pelos recursos de cada um dos nós, como potência
do transmissor, potência de computação e memória, etc. Aspectos de
comportamento, como confiabilidade, também influenciam. Esses recursos
afetam diretamente a qualidade entre as conexões, como largura da conexão,
perda de sinal, interferência e ruído.
Visto que conexões podem ser feitas e desfeitas a qualquer momento, uma
rede funcional deve ser capaz de lidar com essa restruturação dinâmica,
preferencialmente de uma forma que seja conveniente, eficiente, confiável,
robusta e escalável. A rede deve permitir que dois nós se comuniquem ao
retransmitir informação por meio de outros nós.
Aplicações
Devido a essa natureza descentralizada e falta de complexidade, redes ad hoc,
assumindo daqui para frente como sendo sempre sem fio, são aplicáveis à uma
gama de diferentes situações onde nós centrais, como roteadores, não são
confiáveis. Além disso, esse tipo de rede é mais escalável em comparação com
redes sem fio gerenciadas por rotadores.
Por exigirem pouquíssima configuração e serem rápidas de tornar disponível,
redes ad hoc são ótimas soluções para situações de emergência ou crises,
como desastres naturais.
A aplicação mais comum de rede ad hoc é para dispositivos móveis. Por
dispensar infraestrutura e ser autoconfigurável, permite que esses dispositivos
se conectem com o mínimo de fricção.
No caso de smartphones, é possível utilizar um tipo específico de rede ad hoc,
denominado smartphone ad hoc networks (SPAN). O que a diferencia de uma
rede ad hoc móvel comum é o uso de hardware pré-existente nesses
dispositivos, como Wi-Fi e Bluetooth, para atuar como conexão, permitindo
ligação de ponta a ponta com dispositivos semelhantes. Sua vantagem é
dispensar o uso da rede celular das operadoras de telefonia, roteadores sem
fio ou qualquer outra forma tradicional de infraestrutura de rede.
Há também a aplicação veicular, caso da já citada VANET. Esse tipo é utilizado
para a comunicação entre veículos e equipamentos de beira de estrada. A
comunicação ocorre por meio de ondas de rádios, sendo formadas de forma
instantâneas conforme esses veículos se movem ao longo da estrada.
Um subproduto da VANET são as redes ad hoc veiculares inteligentes, do
inglês Intelligent vehicular ad hoc networks (InVANETs), que por meio de
inteligência artificial auxiliam os veículos a se comportar em situações de
colisões com outros veículos e acidentes em geral.
Outras aplicações que se beneficiam das facilidades das redes ad hoc são as
militares, principalmente por não necessitar de infraestrutura e serem fáceis de
operar, e o âmbito de sensores, como naqueles presentes em dispositivos de
smart home, sinais de tráfego e até mesmo robôs.
Roteamento em redes ad hoc
Conforme o vimos anteriormente, uma forma de resumir redes ad hoc é dizer
que é uma estrutura de rede formada por roteadores móveis. Entre exemplos
possíveis estão veículos militares em um campo de batalha, uma frota de
navios no mar, trabalhos de emergência em calamidades, um grupo de
pessoas com notebooks, todos esses casos em um situações onde não há
uma infraestrutura prévia. Em todos esses casos e em outros, cadanó consiste
em um roteador e um host, normalmente no mesmo dispositivo.
Em qualquer instante, uma rede ad hoc pode ser descrita por um grafo dos
nós, ou seja, roteadores e hosts. Dois nós estão conectados, isto é, há um arco
entre eles no grafo, se puderem comunicar-se diretamente utilizando seus
sinais de rádio. Tendo em vista que um dos dois pode ter um transmissor mais
potente que o outro, é possível que A esteja conectado a B, mas que B não
esteja conectado a A. Para simplificar, iremos assumir que todas as conexões
são simétricas. Também devemos considerar que o simples fato de dois nós
estarem dentro do alcance um do outro não significa que eles estão
conectados. Pode haver obstáculos, como edifícios ou rochas, que bloqueiem
sua comunicação.
Para descrever o algoritmo AODV, iremos utilizar a Figura 2, onde um processo
do nó A deseja enviar um pacote ao nó I. O algoritmo AODV mantém uma
tabela em cada nó, classificada por destino, fornecendo informações sobre
esse destino, inclusive a que vizinhos enviar pacotes para alcançar o destino.
Supondo que A procure em sua tabela e não encontre uma entrada
correspondente a I. Será necessário descobrir uma rota até I. Essa propriedade
de descoberta de rotas apenas quando surge a necessidade é o que torna
esse algoritmo por demanda.
Figura 2 – Grafo de descoberta de rota utilizando algoritmo AODV
As etapas demonstradas na Figura 2 são: a) alcance da difusão de A; b) depois
de B e D receberem a difusão de A; c) depois de C, F e G receberem a difusão
de A; d) depois de E, H e I receberem a difusão de A. Os nós sombreados são
novos destinatários. As setas mostram as rotas inversas possíveis.
Para localizar I, A constrói um pacote especial, denominado Route Request, e
o transmite por difusão. O pacote alcança B e D, conforme a etapa a) da Figura
2. De fato, a razão para B e D estarem conectados a A no grafo é que eles
podem receber comunicações de A. Por exemplo, F não é mostrado como um
arco para A, pois não pode receber o sinal de rádio de A. Dessa forma, F não
está conectado a A.
O formato do pacote Route Request é mostrado na Figura 3. O pacote contém
os endereços de origem e destino, em geral seus endereços IP, que identifica
quem está sendo procurado. Há também um campo ID da solicitação, um
contador local mantido separadamente por cada nó e incrementado toda vez
que um pacote Route Request é transmitido. Juntos, os campos endereço de
origem e ID de solicitação identificam de forma exclusiva o pacote Route
Request, a fim de permitir que os nós descartem quaisquer duplicadas que
venham a receber.
Figura 3 – Formato de um pacote Route Request
Além do contador ID de solicitação, cada nó também mantém um segundo
contador de sequência, incrementado sempre que é enviado um pacote Route
Request, ou uma resposta ao pacote de outro roteador. Sua função é identificar
novas rotas a partir de rotas antigas. O quarto campo da Figura 3 é o contador
de sequência de A; o quinto campo é o valor mais recente do número de
sequência de I que A detectou, sendo 0 se ele nunca foi detectado. O último
campo, contagem de saltos, controlará o número de saltos que o pacote
efetuou. Seu valor inicial é 0.
Quando um pacote Route Request chega a um nó, B e D no exemplo da Figura
3, esse é processado conforme as seguintes etapas:
i) O par, endereço de origem e ID de solicitação, é procurado em uma
tabela de histórico local para verificar se essa solicitação já foi vista e
processada. Se for uma duplicata, será descartada e o
processamento será interrompido. Se não for uma duplicata, o par
será inserido na tabela de histórico, para que duplicatas futuras
possam ser rejeitadas, e o processamento irá continuar;
ii) ii) O receptor procura o destino em sua tabela de rotas. Se for
conhecida uma nova rota até o destino, será transmitido de volta à
origem um pacote Route Reply, informando como chegar ao destino.
Nesse caso, a palavra nota significa que o número de sequência de
destino armazenado na tabela de roteamento é maior que ou igual ao
número de sequência de destino contido no pacote Route Request.
Se for menor, isso quer dizer que a rota armazenada é mais antiga
que a rota anterior que a origem tinha para o destino, e então a etapa
iii será executada;
iii) Tendo em vista que o receptor não conhece uma nova rota para o
destino, irá incrementar o campo contagem de saltos e retransmite o
pacote Route Request. Também irá extrair os dados do pacote e o
armazena como uma nova entrada em sua tabela de rotas inversas.
Essas informações serão utilizadas para construir a rota inversa, de
forma que a resposta possa voltar à origem mais tarde. As setas na
Figura 2 são usadas para construir a rota inversa. Também será
inicializado um timer com a entrada de rota inversa inserida mais
recentemente. Se ela expirar, a entrada será eliminada.
Os pontos B e D não sabem onde está I, e então cada um deles cria uma
entrada de rota inversa apontando de volta para A, como demonstrado
pelas setas na Figura 2, e transmite o pacote com o campo contagem de
saltos definido como 1. A difusão de B alcança C e D. C cria uma entrada
para ela em sua tabela de rotas inversas e retransmite. Em contraste, D a
rejeita como uma duplicata. De modo semelhante, a difusão de D é
rejeitada por B. Porém, a difusão de D é aceita por F e G, sendo
armazenada, como mostra a etapa c) da Figura 2. Depois de E, H e I
receberem a difusão, o pacote Route Request finalmente alcança um
destino que sabe onde I está, ou seja, o próprio I, como ilustra a etapa d) da
Figura 2. É possível observar que, embora tenhamos mostrado as difusões
em três etapas discretas nesse caso, as difusões de nós diferentes não são
coordenadas de nenhuma forma.
Em resposta à solicitação recebida, I constrói um pacote Route Reply, como
ilustra a Figura 4. Os campos endereço de origem, endereço de destino e
contagem de saltos são copiados da solicitação recebida, mas o campo
número de sequência de destino é removido de seu contador na memória.
O campo contagem de saltos é definido como 0. O campo duração controla
por quanto tempo a rota é válida. Esse pacote é retransmitido por unidifusão
para o nó de onde veio o pacote Route Request, nesse caso, o nó G. Então
o pacote segue o caminho inverso até D e finalmente até A. Em cada nó, o
campo contagem de saltos é incrementado, de forma que o nó possa ver a
que distância se encontra do destino, no caso I.
Figura 4 – Formato de um pacote Route Reply
Em cada nó intermediário no caminho de volta, o pacote é inspecionado. O
mesmo é inserido na tabela de roteamento local como uma rota para I se uma
ou mais das três condições a seguir é satisfeita:
i) Não é conhecida nenhuma rota para I;
ii) O número de sequência correspondente a I no pacote Route Reply é
maior que o valor encontrado na tabela de roteamento;
iii) Os números de sequência são iguais, mas a nova rota é mais curta.
Desse modo, todos os nós na rota inversa aprendem a rota para I de forma
indireta, como um subproduto da descoberta de rota de A. Os nós que
receberam o pacote Route Request original, mas que não estavam no
caminho inverso, ou seja, B, C, E, F e H no exemplo, descartarão a entrada
da tabela de rotas inversas quando o timer associado expirar.
Em uma rede grande, o algoritmo gera muitas difusões, até mesmo para
destinos que estão próximos. Há, entretanto, uma forma de reduzir número
de difusões. O campo prazo de validade do pacote IP é inicializado pelo
transmissor com o diâmetro esperado da rede e é decrementado em cada
salto. Se alcançar 0, o pacote será descartado, ao invés de ser transmitido
por difusão. O processo de descoberta é então modificado. Para localizar
um destino, o transmissor envia um pacote Route Request com o campo
prazo de validade definido como 1. Se não houver nenhuma reposta dentrode um período de tempo razoável, um outro pacote será enviado, dessa vez
com prazo de validade definido como 2. As tentativas subsequentes
utilizarão 3, 4, 5, etc. Desse modo, a pesquisa será realizada por tentativa,
primeiro no local, e depois em anéis cada vez mais amplos.
Manutenção de rotas
Por ser possível mover ou desativas os nós, a topologia pode mudar
espontaneamente. Por exemplo, na Figura 2, se G for desativado, A não
perceberá que a rota esteve usando para I não é mais válida. O algoritmo
precisa ter a possibilidade de lidar com esse problema. Periodicamente,
cada nó transmite por difusão uma mensagem de “olá”. Cada um de seus
vizinhos deve responder a essa mensagem. Se não chegar nenhuma
resposta, o transmissor saberá que aquele vizinho saiu de seu alcance e
não está mais conectado a ele. De modo semelhante, se tentar enviar um
pacote a um vizinho que não responde, o nó aprenderá que o vizinho não
está mais disponível.
Essas informações são usadas para limpar rotas que não estão mais ativas.
Para cada destino possível, cada nó N mantém o controle de seus vizinhos
que enviaram um pacote para esse destino durante os últimos T segundos.
Esses vizinhos são chamados de ativos de N para esse destino. N faz isso
mantendo uma tabela de roteamento organizada por destino e contendo o
nó de saída a ser utilizado para acessar o destino, a contagem de saltos até
o destino, o número de sequência de destino mais recente e a lista de
vizinhos ativos correspondente a esse destino. Uma tabela de roteamento
possível para o nó D do exemplo de topologia é mostrada na Figura 5.
Figura 5 - Tabela de roteamento de D antes de G ficar inativo
Quando qualquer dos seus vizinhos se torna inacessível, N verifica sua tabela
de roteamento para ver quais destinos tem rotas que utilizam o vizinho agora
inativo. Para cada uma dessas rotas, cada vizinho ativo é informado de que
sua rota que passa por N agora é inválida e, portanto, deve ser limpa de suas
tabelas de roteamento. Em seguida, os vizinhos ativos comunicam essa
informação a seus próprios vizinhos ativos e assim por diante, recursivamente,
até todas as rotas que dependem do nó agora inativo serem retiradas de todas
as tabelas de roteamento.
Como uma ilustração de manutenção de rotas, iremos considerar o exemplo
anterior, mas agora com G repentinamente desativado. A topologia alterada é
demonstrada na Figura 6. Quando descobre que G está inativo, D observa sua
tabela de roteamento e vê que G foi usado nas rotas para E, G e I. A união dos
vizinhos ativos para esses destinos é o conjunto {A, B}. Em outras palavras, A
e B dependem de G para algumas de suas rotas, e então tem de ser
informados de que essas rotas não são mais válidas. D envia essa informação
a eles transmitindo pacotes que fazem com que esses vizinhos atualizem suas
próprias tabelas de roteamento e, depois disso, D também limpa as entradas
para E, G e I de sua tabela de roteamento.
Figura 6 - Grafo depois que G fica inativo
Considerações finais
Redes ad hoc, em geral conhecidas como MANET ou WANET, são um tipo
de rede sem infraestrutura e continuamente autoconfigurável de dispositivos
móveis conectados de forma sem fio. Cada dispositivo é livre para se mover
de maneira independente em qualquer direção, assim sendo, sua conexão
com outros dispositivos irá mudar com frequência.
Cada um desses dispositivos deve encaminhar dados mesmo que esse
dado não tenha uso para si próprio, portanto, cada dispositivos é de certa
forma um roteador. O principal desafio em construir uma rede ad hoc é
equipar cada dispositivo para continuamente manter a informação
necessária para rotear o tráfego de maneira apropriada.
Essas redes podem operar de forma independente ou podem estar conectar
a Internet. Podem conter um ou múltiplos e diferentes transceptores entre
os nós. Isso resulta em uma topologia altamente dinâmica e autônoma.
A principal vantagem de redes ad hoc é a sua natureza ad hoc, onde os nós
são móveis, ou seja, não há uma infraestrutura fixa, tornando possível
diversas aplicações em áreas diferentes. Por ser descentralizada, esse tipo
de rede é tipicamente mais robusta que redes comuns centralizadas, devido
a forma multisaltos com que a informação é retransmitida. A Figura 7 ilustra
a diferença entre uma rede com protocolo de salto único e uma rede
multisaltos. Outras vantagens incluem flexibilidade, escalabilidade e baixo
custo de administração.
Figura 7 - a) Roteamento de salto único; b) roteamento multisaltos
Com essas vantagens seguem algumas desvantagens em performance de
rede. Em virtude da falta de infraestrutura fixa, variações de performance
podem ocorrer frequentemente. Ademais, visto que a topologia da rede
determina a ocorrência de interferência e, consequentemente,
conectividade, o padrão de mobilidade dos dispositivos dentro da rede irão
impactar na performance da rede, possivelmente resultando em dados
tendo que ser reenviados diversas vezes.
Em referência as aplicações, são diversas as possibilidades, indo desde
sensores para captação de informações ambientais, comunicação entre
veículos, equipamentos de tráfego, dispositivos de domésticos inteligentes,
troca de mensagens de ponta a ponta, operações de resgate em desastres,
robôs e assim por diante.
Referências
Hoebeke, Jeroen, et al. "An overview of mobile ad hoc networks: applications
and challenges." Journal-Communications Network 3.3 (2004): 60-66.
Johnson, David B., and David A. Maltz. "Dynamic source routing in ad hoc
wireless networks." Mobile computing. Springer, Boston, MA, 1996. 153-181.
Li, Jinyang, et al. "Capacity of ad hoc wireless networks." Proceedings of the
7th annual international conference on Mobile computing and networking. ACM,
2001.
Maltz, David A., et al. "A performance comparison of multi-hop wireless ad hoc
network routing protocols." Proceedings of ACM MobiCom. Vol. 114. 1998.
Tanenbaum, Andrew S. "Network protocols." ACM Computing Surveys (CSUR)
13.4 (1981): 453-489.
Toh, C-K., et al. "Experimenting with an ad hoc wireless network on campus:
insights and experiences." ACM SIGMETRICS Performance Evaluation Review
28.3 (2000): 21-29.
Toh, Chai-Keong. Wireless ATM and Ad-Hoc Networks: Protocols and
Architectures. Springer Science & Business Media, 2012.
Zanjireh, Morteza M., Ali Shahrabi, and Hadi Larijani. "Anch: A new clustering
algorithm for wireless sensor networks." 2013 27th International Conference on
Advanced Information Networking and Applications Workshops. IEEE, 2013
Unidade II
Introdução
De forma bem simples, uma rede overlay, ou sobreposta, é uma rede
construída em cima de outra rede. Para entender como uma rede sobreposta
funciona, podemos pensar em nós conectados por ligações virtuais ou lógicas,
onde cada uma dessas ligações corresponde a um caminho, podendo
percorrer diversas ligações físicas, na rede subjacente. Uma outra forma de
definir redes sobrepostas é dizer que elas criam uma topologia virtual
estruturada acima do nível básico de protocolo de transporte que facilita a
busca determinística e garante a convergência.
Redes sobrepostas possuem uma camada semântica de rede acima do nível
básico de protocolo de transporte que organiza a topologia da rede de acordo
com o conteúdo dos nós, implementando uma abstração de uma tabela de
hash distribuída que proporciona balanceamento de cargo, encaminhamento
de consulta e tempos de pesquisa limitados. Devido a essas características,
redes sobrepostas tem se tornado um componente crítico para sistemas que
demandam organização automática.
Por exemplo, sistemas distribuídos como redes de ponta a ponta (P2P) e
aplicações cliente-servidor são redes sobrepostas, uma vez que seus nós
funcionam “por cima” da Internet. A Figura 1 apresenta um exemplode
topologia de uma rede sobreposta.
Figura 2 - Exemplo de rede sobreposta
Por definirem os vizinhos dos nós de acordo com o conteúdo armazenado,
redes sobrepostas podem mudar a forma de busca de um problema de
travessia de gráfico em um processo iterativo localizado. Nesse processo, cada
salto aproxima a consulta do seu conjunto de saltos de destino, que pode ser
calculado de acordo com uma função matemática. Isso reduz a carga geral da
rede e torna o processo de busca determinístico. Em termos abstratos, uma
rede sobreposta opera de forma similar uma tabela de hash distribuída, ao
permitir inserção de chave, consulta e remoção.
Ao destrincharmos a rede sobreposta ilustrada na Figura 1, podemos identificar
as diversas camadas lógicas que a compõe, entre eles uma camada IP, uma
camada SONET/SDH, uma camada ótica e uma camada de site.
Figura 3 - Rede sobreposta quebrada em camadas lógicas
SONET, ou synchronous optical networking, e SDH, ou synchronous digital
hierarchy, são protocolos padrões que transferem vários fluxos de bits digitais
de forma síncrona sobre, por exemplo, fibra óptica.
Aplicações
Redes sobrepostas são utilizadas em telecomunicações devido a
disponibilidade de equipamentos de comutação de circuitos digitais e a fibra
ótica. Redes de telecomunicações e redes baseadas em IP são todas
sobrepostas com pelo menos uma camada de fibra ótica, uma camada de
transporte e uma camada IP ou camadas de comutação de circuitos.
Atualmente a Internet é a base para redes sobrepostas que podem ser
construídas visando possibilitar o roteamento de mensagens à destino que não
são especificados por um endereço de IP. Por exemplo, tabelas de hash
distribuídas podem ser usadas para rotear mensagens à um nó que possua um
endereço lógico específico, de quem o endereço de IP não é previamente
conhecido.
Redes sobrepostas também foram propostas como forma de melhorar o
roteamento da Internet, como por meio de garantias de qualidade de serviço
visando alcançar streaming de mídia de alta qualidade. Várias das propostas,
porém, não foram aceitas em larga escala, principalmente devido a
necessidade de mudanças em todos os roteadores da rede. Por outro lado,
uma rede sobreposta pode ser implantada de forma incremental em end-hosts
rodando o software de protocolo de sobreposição, mesmo sem a cooperação
das provedoras de Internet. A rede sobreposta não possui controle sobre como
os pacotes na rede subjacente são roteados entre dois nós sobrepostos, mas
pode controlar a sequência de nós sobrepostos que uma mensagem percorre
antes de atingir seu destino.
Entre os principais protocolos de redes sobrepostas baseados em TCP/IP,
podemos citar: http e https; as já mencionadas tabelas de hash distribuídas
(DHT), do inglês Distributed hash tables; diversos protocolos P2P, como Tor e
JXTA; e XMPP.
Estado de pesquisa em redes sobrepostas
Pesquisadores estão utilizando redes sobrepostas em diversas aplicações,
desde roteamento de Internet até armazenamento de rede distribuído. O
sistema de roteamento Internet Indirection Infrastructure (i3), baseado em
sobreposição, por exemplo, busca simplificar a implantação e gerenciamento
de serviços de rede ao dissociar os atos de envio e recebimento. Esse nível
adicional de indireção proporciona maior flexibilidade na mobilidade de nós e
em localização e implantação de serviços.
Há também sucesso, por parte dos pesquisadores, em implantar redes
sobrepostas como parte de sistemas de armazenamento distribuído, como por
exemplo, sistema de arquivos cooperativo. O sistema de arquivo cooperativo
interpreta os valores armazenados da rede Chord como um sistema de
arquivos e inclui recursos como replicação para uma maior robustez. A rede
Chord é um tipo de rede sobreposta, onde a rede é organizada com base no
endereço IP de cada um dos nós participantes, diferentemente de outras redes,
que utilizam o conteúdo dos nós como forma de organização.
No caso do Pastry, um tipo de rede sobreposta similar ao Chord, porém, focada
na implementação de uma tabela hash distribuída (DHT), os pesquisadores
conseguiram aplicar o sistema para diversas aplicações finais, já disponíveis
para usuários, como armazenamento em cache da Web cooperativo,
notificação de grupos e mensagens instantâneas.
Algoritmos de redes sobrepostas são temas de diversas pesquisas e
desenvolvimento em andamento. Particularmente, o principal foco dessas
pesquisas está em reduzir os custos de operação de rede, como entrada e
saída simultânea de múltiplos nós, tolerância a falhas, segurança e
proximidade física, ao modificar a sobreposição ao adaptar-se melhor a
topologia física subjacente.
Resiliência e multicast
Redes Sobrepostas Resilientes, ou Resilient Overlay Networks (RON), são
arquiteturas que permitem aplicações distribuídas da Internet a detectar e se
recuperar de desconexão ou interferência. Protocolos de roteamento de área
ampla atuais que levam cerca de vários minutos para se recuperar são
melhorados com esta sobreposição de camada de aplicação. Os nós da RON
monitoram os caminhos da Internet entre si próprios e irão determinar se
devem ou não redirecionar pacotes diretamente via a Internet ou via outros nós
da RON, otimizando assim as métricas específicas da aplicação.
Uma rede sobreposta resiliente possui um projeto conceitual simples. Nós RON
são implantados em diversas localidades da Internet. Esses nós formam uma
camada de aplicação sobreposta que coopera no roteamento de pacotes. Cada
um dos nós RON monitoram a qualidade dos caminhos de Internet entre eles, e
usa essa informação para automaticamente selecionar os caminhos de cada
pacote de maneira precisa, portanto, reduzindo a quantidade de tempo
necessária para se recuperar de uma baixa qualidade de serviço.
Em redes de computadores, multicast é uma comunicação em grupo, onde a
transmissão de dados é endereçada para um grupo de nós de destino de forma
simultânea. Em um roteamento unicast, a mensagem é destinada a apenas um
dos nós que compõem uma rede, conforme ilustra a Figura 3.
Figura 4 - Esquema de roteamento unicast
Por outro lado, em um roteamento broadcast, a mensagem é distribuída entre
todos os nós da rede. A Figura 4 demonstra esse funcionamento.
Figura 5 - Esquema de roteamento broadcast
O multicast está entre esses dois tipos, pois a mensagem é destinada para
mais de um nó, mas não obrigatoriamente para todos os nós. O multicast pode
ser distribuído de um para muitos e de muitos para muitos. A Figura 5
apresenta o esquema de distribuição multicast.
Figura 6 - Esquema de roteamento multicast
O multicast sobreposto é também conhecido como End System ou Multicast de
ponta a ponta. Multicast de múltiplas fontes de alta largura de banda entre nós
amplamente distribuídos é uma capacidade crítica de uma grande variedade de
aplicações, incluindo conferência de áudio e vídeo, jogos multi-party e
distribuição de conteúdo. Ao longo da última década, um número de projetos
de pesquisa tem explorado o uso de multicast como um mecanismo eficiente e
escalável para suportar estes tipos de aplicações de comunicação em grupo. O
multicast desacopla o tamanho do conjunto de receptores da quantidade de
estado mantida em um único nó e evita potencialmente a comunicação
redundante na rede.
A implantação limitada do IP Multicast, um protocolo multicast de camada de
rede de melhor esforço, tem levantado um interesse considerável em
abordagens alternativas que são implementadas na camada de aplicação,
utilizando apenas end-systems. Em uma abordagem multicast sobreposta ou
end-system, nós participantes organizam-se em uma topologia sobreposta para
entrega de dados. Cada aresta nesta topologia corresponde a um caminho
unicast entre dois end-systems ou nós na rede subjacente da Internet.
Toda a funcionalidaderelacionada a multicast é implementada nos nós e não
nos roteadores, e o objetivo do protocolo multicast é construir e manter uma
sobreposição eficiente para a transmissão de dados. Há, porém, algumas
desvantagens relacionadas ao multicast, entre elas, lentidão na propagação
dos dados, latência longa e pacotes duplicados em certos pontos.
Protocolos P2P
Sistemas peer-to-peer (P2P), ou de ponta a ponta, são sistemas distribuídos
que operam sem uma organização ou controle centralizados. A arquitetura P2P
particiona as tarefas entres os nós, esses nós possuem os mesmos privilégios
e participam em mesma medida. Os nós disponibilizam uma fração dos seus
recursos, como poder de processamento, armazenamento em disco ou largura
de banda, para outros nós que participam da rede, tudo sem a necessidade de
um controle central mediado por servidores. A Figura 6 e Figura 7, ilustram,
respectivamente, uma rede P2P e uma rede baseada no modelo tradicional de
cliente-servidor.
Figura 7 - Modelo de rede P2P
Figura 8 - Modelo de rede baseada em cliente-servidor
Portanto, em sistemas P2P, os nós são igualmente fornecedores e
consumidores de recursos, em contraste com o tradicional modelo cliente-
servidor, onde o consumo e o fornecimento de recursos é dividido. Sistemas
P2P colaborativos emergentes vão ainda além de ter apenas nós executando
tarefas similares enquanto dividem recursos, ao procurar por nós diversos que
possam agregar recursos e capacidades únicas a uma comunidade virtual, e
assim, tornando a comunidade capaz de empenhar tarefas maiores, além
daquelas que podem ser realizadas por nós individuais, mas que ainda são
benéficas para todos os nós.
A arquitetura P2P, embora tenha sido utilizada anteriormente em diversos
domínios de aplicação, tornou-se popular com a advento dos softwares de
compartilhamento de arquivos, em especial o Napster. No Brasil, quem já tinha
acesso a Internet no início dos anos 2000, mesmo que discada, provavelmente
utilizou, ou conheceu, softwares similares, como eMule (Figura 8) e Kazaa.
Figura 9 - Interface do eMule
Redes sobrepostas e sistemas P2P
Para encontrar um pedaço de dado em particular dentro da rede, sistemas
P2P, de maneira explícita ou implícita, fornecem um mecanismo de pesquisa,
ou função de localizador, que corresponde um dado pedaço de texto, ou chave,
com um ou mais nós de redes responsáveis pelo valor associado com aquela
chave. Nós P2P interoperam usando o mesmo software ou o mesmo conjunto
de APIs baseadas em rede.
As aplicações P2P atuais na Internet tipicamente proporcionam funções
localizadoras utilizando mecanismos de inundação controlada time-to-live
(TTL). Nessa abordagem, o nó de pesquisa encapsula a consulta em uma
mensagem única e envia para todos os vizinhos conhecidos. Os vizinhos então
verificam se eles podem responder à consulta combinando-a com as chaves
em seu banco de dados interno. Se eles encontram uma correspondência, eles
respondem, caso contrário, eles encaminham a consulta para seus vizinhos e
aumentam a contagem de saltos da mensagem. Se a contagem de saltos
ultrapassa o limite do TTL, o encaminhando para. O valor TTL define, assim,
um limite para a consulta, que controla a sua propagação.
Sistemas baseados em inundações, porém, não escalam de forma adequada
devido a carga de largura de banda e processamento que colocam sobre a
rede. Além disso, eles não fornecem garantias quanto a tempos de pesquisa ou
acessibilidade ao conteúdo. É aqui que redes sobrepostas entram, pois podem
abordar essas questões.
As qualidades de redes sobrepostas que foram expostas durante a introdução
são a razão para estas serem formas interessantes de aplicar sistemas P2P.
Porém, podemos destacar novamente, de forma resumida, quatro dessas
principais qualidades, sendo: recuperação de dados garantida; horizontes de
tempo de pesquisa disponíveis, sendo normalmente O(log N), onde N é o
número de nós da rede; balanceamento de carga automático; e auto-
organização.
O padrão de conectividade de uma rede sobreposta é diferente daquele obtido
em um algoritmo baseado em TTL, pois é estruturado e tipicamente simétrico.
A estrutura é baseada em uma ou mais funções matemáticas que determinam
como os nós estão conectados. A estrutura da rede contribui para os limites de
tempos de pesquisa associados às sobreposições. Quando um nó falha, o
algoritmo da rede sobreposta proporciona mecanismos que permitem que a
rede se recupere e recrie, ou mantenha, uma estrutura de rede apropriada.
Uma diferença importante entre redes sobrepostas e redes P2P
desestruturadas é que as sobreposições buscam pelos dados com base em
identificadores que são derivados diretamente do conteúdo, com isso, não há
um suporte nativo para busca por meio de inserção de texto. Embora o trabalho
esteja em andamento para a pesquisa de palavras-chave em camadas sobre
as sobreposições, se isso pode ser feito com eficiência suficiente para suportar
redes de larga escala, ainda é um problema em aberto.
Considerações finais
Uma rede sobreposta, ou rede overlay, é um conceito de redes de
computadores. Nesse tipo de redes, uma nova rede é criada virtualmente por
cima de uma já existente. Um exemplo simples de uma rede sobreposta está
presente em redes domésticas, com uma rede ethernet, que pode conectar
computadores que estão na mesma rede. Nesse exemplo, a rede é criada na
camada de enlace. Isto é o suficiente para ter uma comunicação entre os nós
desta rede, mas não para ligar esta rede com outras redes, como a Internet.
Para isso, é preciso adicionar a camada de rede para os computadores e para
o roteador, dando assim ao sistema a capacidade de rota e a criação de uma
rede sobreposta.
Uma rede sobreposta é organizada como nós de laços virtuais que funcionam
por cima da Internet. Dessa forma, é possível ver uma rede sobreposta como
uma máscara que cobre uma rede previamente existente. Essa máscara serve
para criar laços virtuais entre certos nós da rede existente. Com isso, é criada
uma rede onde a comunicação é baseada nos nós pertencentes a rede
sobreposta, como o que acontece em redes P2P, na maioria dos casos sem
levar em conta os nós intermediários do caminho que não fazem parte da rede
sobreposta. Do ponto de vista físico, redes sobrepostas são muito complexas,
já que combinam diversas camadas lógicas que são operadas e construídas
por diversas entidades. Mas elas permitem um maior nível de abstração, dessa
forma permitindo muitos serviços que não poderiam ser propostos por um único
operador de telecomunicações.
Muitas redes P2P são redes sobrepostas, pois são organizadas como um
sistema virtual de nós que funcionam em cima da Internet. Além disso, esse
tipo de rede pode ser utilizado para que um pequeno grupo de nós possa se
comunicar com benefícios superiores em relação aos que são acessíveis a
outros nós da rede. Dessa forma, criando uma rede com hierarquias. Redes
Virtuais Privadas, do inglês Virtual Private Network (VPN), são outro tipo
comum de rede sobreposta que utilizamos no dia a dia.
Em uma rede P2P, um algoritmo de roteamento distribuído é utilizado para
definir a localização dos nós da rede sobreposta. Esse algoritmo não considera
a real localização dos nós na rede em que está sobreposto, já que é
implementado sobre a camada de aplicação. Com esse algoritmo, localiza-se
que hospedeiro da rede P2P possui o objeto requisitado, e depois é gerado o
caminho até ele, por meio da rede sobreposta. Como em redes P2P é comum
existirem réplicas dos objetos para fins de disponibilidade, o algoritmo guarda
pouca informação sobre a localização das cópias. Ao invés disso, como essa
essa informação pode ser alterada diversas vezes em um curto espaço de
tempo, o algoritmo manda requisições procurando um nó disponível com a
cópia do objeto desejado mais próximo.Referências
Andersen, David, et al. Resilient overlay networks. Vol. 35. No. 5. ACM, 2001.
Bandara, HMN Dilum, and Anura P. Jayasumana. "Collaborative applications
over peer-to-peer systems–challenges and solutions." Peer-to-Peer Networking
and Applications 6.3 (2013): 257-276.
Barkai, David. Peer-to-Peer Computing: technologies for sharing and
collaborating on the net. Intel Press, 2001.
Dabek, Frank, et al. "Wide-area cooperative storage with CFS." ACM SIGOPS
Operating Systems Review. Vol. 35. No. 5. ACM, 2001.
Doval, Diego, and O. Donal. "Overlay networks: A scalable alternative for P2P."
IEEE Internet computing 4 (2003): 79-82.
Harte, Lawrence. Introduction to Data Multicasting, IP Multicast Streaming for
Audio and Video Media Distribution. Althos, 2008.
Rowstron, Antony, and Peter Druschel. "Pastry: Scalable, decentralized object
location, and routing for large-scale peer-to-peer systems." IFIP/ACM
International Conference on Distributed Systems Platforms and Open
Distributed Processing. Springer, Berlin, Heidelberg, 2001.
Schollmeier, Rüdiger. "A definition of peer-to-peer networking for the
classification of peer-to-peer architectures and applications." Proceedings First
International Conference on Peer-to-Peer Computing. IEEE, 2001.
Stoica, Ion, et al. "Chord: A scalable peer-to-peer lookup service for internet
applications." ACM SIGCOMM Computer Communication Review 31.4 (2001):
149-160.
Stoica, Ion, et al. "Internet indirection infrastructure." ACM SIGCOMM Computer
Communication Review. Vol. 32. No. 4. ACM, 2002.
Tarkoma, Sasu. Overlay Networks: Toward Information Networking. Auerbach
Publications, 2010.
Tanenbaum, Andrew S. "Network protocols." ACM Computing Surveys (CSUR)
13.4 (1981): 453-489.
Unidade III
Redes virtuais privadas
Uma rede virtual privada, do inglês virtual private network (VPN), estende uma
rede privada através de uma rede pública e permite que os usuários enviem e
recebam dados em redes compartilhadas ou públicas como se seus
dispositivos de computação estivessem diretamente conectados à rede
privada. Aplicações em execução em um dispositivo, por exemplo um
notebook, desktop, smartphone, através de uma VPN pode, portanto, se
beneficiar da funcionalidade, segurança e gerenciamento da rede privada. A
criptografia é uma parte comum, embora não inerente, de uma conexão VPN.
Uma VPN é criada estabelecendo uma conexão virtual ponto a ponto através
do uso de circuitos dedicados ou com protocolos de encapsulamento em redes
existentes. Uma VPN disponível na Internet pública pode fornecer alguns dos
benefícios de uma rede de longa distância (WAN). Da perspectiva do usuário,
os recursos disponíveis na rede privada podem ser acessados remotamente. A
tecnologia VPN foi desenvolvida para permitir que usuários remotos e filiais
acessem aplicações e recursos corporativos. Para garantir a segurança, a
conexão de rede privada é estabelecida usando um protocolo de
encapsulamento em camadas criptografado, e os usuários da VPN usam
métodos de autenticação, incluindo senhas ou certificados, para obter acesso à
VPN. A Figura 1 ilustra uma visão geral da conectividade de uma VPN.
Figura 10 - Visão geral da conectividade VPN
Em outras aplicações, usuários da Internet podem proteger suas conexões com
uma VPN, para contornar restrições geográficas e censura ou para se conectar
a servidores proxy visando proteger a sua identidade e localização,
permanecendo anônimo na Internet. No entanto, alguns sites bloqueiam o
acesso à tecnologia VPN conhecida para evitar a contenção de suas restrições
geográficas, e muitos provedores de VPN têm desenvolvido estratégias para
contornar esses obstáculos.
Muitas empresas têm escritórios e fábricas espalhados por muitas cidades, às
vezes por vários países. Antigamente, antes das redes públicas de dados, era
comum tais empresas arrendarem linhas dedicadas da companhia telefônica
entre alguns pares de locais ou entre todos eles. Algumas empresas ainda
fazem isso. Uma rede construída a partir de computadores de empresas e de
linhas telefônicas dedicadas é chamada rede privada. Um exemplo de rede
privada que conecta três locais é mostrado na Figura 2.
Figura 11 - Rede privada de linha dedicada
As redes privadas funcionam muito bem e são bastante seguras. Se as únicas
linhas disponíveis forem as linhas dedicadas, nenhum tráfego poderá vazar
para fora das instalações da empresa, e os intrusos terão de grampear
fisicamente as linhas para entrar, o que não é fácil. Quando surgiram as redes
públicas de dados e mais tarde a Internet, muitas empresas optaram por mover
seu tráfego de dados, e possivelmente o de voz, para a rede pública, mas sem
desistirem da segurança da rede privada.
Essa demanda logo levou à criação de VPNs, que são redes sobrepostas às
redes públicas, mas com a maioria das propriedades de redes privadas. Elas
são chamadas "virtuais" porque são meramente uma ilusão, da mesma forma
que os circuitos virtuais não são circuitos reais e que a memória virtual não é
memória real.
Embora as VPNs possam ser implementadas sobre redes ATM, ou frame relay,
uma abordagem cada vez mais popular é construir VPNs diretamente sobre a
Internet. Um projeto comum é equipar cada escritório com um firewall e criar
túneis pela Internet entre todos os pares de escritórios, como ilustra a Figura 3.
Se o IPsec for usado no tunneling, será possível agregar todo o tráfego entre
dois pares de escritórios quaisquer em uma única Security Association (SA)
autenticada e criptografada, fornecendo assim controle de integridade, sigilo e
até mesmo uma considerável imunidade à análise de tráfego.
Figura 12 - Rede privada virtual
Quando o sistema é criado, cada par de firewalls tem de negociar os
parâmetros de sua SA, incluindo os serviços, os modos, os algoritmos e as
chaves. Muitos firewalls têm recursos internos de VPN, embora alguns
roteadores comuns possam fazer isso muito bem. Porém, como os firewalls se
destinam principalmente a questões de segurança, é natural fazer os túneis
começarem e terminarem nos firewalls, proporcionando uma separação clara
entre a empresa e a Internet. Desse modo, firewalls, VPNs e IPsec com ESP
em modo de túnel formam uma combinação natural e amplamente usada na
prática. Depois que as SAs são estabelecidas, o tráfego pode começar a fluir.
Para um roteador na Internet, um pacote que viaja por um túnel VPN é apenas
um pacote comum. O único detalhe pouco usual sobre ele é a presença do
cabeçalho IPsec depois do cabeçalho IP, porém, como esses cabeçalhos
extras não têm nenhum efeito sobre o processo de encaminhamento, os
roteadores não se preocupam com esse cabeçalho extra.
Uma vantagem importante dessa forma de organizar uma VPN é sua completa
transparência para todo o software do usuário. Os firewalls configuram e
gerenciam as SAs. A única pessoa consciente dessa configuração é o
administrador de sistema, que tem de configurar e administrar os firewalls. Para
todas as outras pessoas, é como ter de novo uma rede privada de linha
dedicada.
Protocolos de encapsulamento VPN
O encapsulamento permite embrulhar um pacote de um tipo de protocolo
dentro do datagrama de um protocolo diferente. Por exemplo, a VPN usa PPTP
para encapsular pacotes IP em uma rede pública, como a Internet. É possível
configurar uma solução VPN baseada em protocolo de encapsulamento ponto
a ponto (PPTP), protocolo de encapsulamento de camada dois (L2TP) ou
protocolo de encapsulamento de soquete seguro (SSTP).
PPTP, L2TP e SSTP dependem muito dos recursos originalmente
especificados para o protocolo ponto a ponto (PPP). O PPP foi projetado para
enviar dados através de conexões dial-up ou ponto a ponto dedicadas. Para IP,
o PPP encapsula pacotes IP dentro de quadros PPP e depois transmite os
pacotes PPP encapsuladosatravés de um link ponto a ponto. O PPP foi
originalmente definido como o protocolo a ser usado entre um cliente dial-up e
um servidor de acesso à rede.
PPTP
O PPTP permite que o tráfego multiprotocolo seja criptografado e depois
encapsulado em um cabeçalho IP para ser enviado por uma rede IP ou uma
rede IP pública, como a Internet. O PPTP pode ser usado para acesso remoto
e conexões VPN site a site. Ao usar a Internet como rede pública para VPN, o
servidor PPTP é um servidor habilitado para VPN com uma interface na
Internet e uma segunda interface na intranet.
O PPTP encapsula quadros PPP em datagramas IP para transmissão pela
rede. O PPTP usa uma conexão TCP para gerenciamento de encapsulamento
e uma versão modificada do GRE (Generic Routing Encapsulation) para
encapsular quadros PPP para dados encapsulados. As cargas dos quadros
PPP encapsulados podem ser criptografadas, compactadas ou ambas. A
Figura 4 mostra a estrutura de um pacote PPTP contendo um datagrama IP.
Figura 13 - Estrutura de pacote PPTP contendo datagrama IP
O quadro PPP é criptografado com criptografia ponto a ponto da Microsoft
(MPPE) usando chaves de criptografia geradas no processo de autenticação
MS-CHAP v2 ou EAP-TLS. Os clientes de rede virtual privada devem usar o
protocolo de autenticação MS-CHAP v2 ou EAP-TLS para que as cargas dos
quadros PPP sejam criptografadas. O PPTP está aproveitando a criptografia
PPP subjacente e encapsulando um quadro PPP criptografado anteriormente.
L2TP
O L2TP permite que o tráfego multiprotocolo seja criptografado e depois
enviado por qualquer meio que suporte a entrega de datagramas ponto a
ponto, como IP ou modo de transferência assíncrona (ATM). L2TP é uma
combinação de PPTP e Layer 2 Forwarding (L2F), uma tecnologia
desenvolvida pela Cisco. L2TP representa os melhores recursos de PPTP e
L2F.
Ao contrário do PPTP, a implementação do L2TP da Microsoft não usa o MPPE
para criptografar datagramas do PPP. O L2TP depende da segurança do IPsec
no Modo de Transporte para serviços de criptografia. A combinação de L2TP e
IPsec é conhecida como L2TP/IPsec.
O L2TP e o IPsec devem ser suportados pelo cliente VPN e pelo servidor VPN.
O suporte ao cliente para L2TP passou a ser incorporado aos clientes de
acesso remoto a partir do Windows Vista e Windows XP, e o suporte ao
servidor VPN para L2TP foi integrado a partir dos membros da família Windows
Server 2008 e Windows Server 2003. O L2TP é instalado com o protocolo
TCP/IP.
O encapsulamento para pacotes L2TP/IPsec consiste em duas camadas. Na
primeira, encapsulamento L2TP, um quadro PPP, isto é, um datagrama IP, é
envolvido com um cabeçalho L2TP e um cabeçalho UDP. A Figura 5 mostra a
estrutura de um pacote L2TP contendo um datagrama IP.
Figura 14 - Estrutura de pacote L2TP contendo datagrama IP
Na segunda camada, encapsulamento IPsec, a mensagem L2TP resultante é
agrupada com um cabeçalho e trailer de IPsec Encapsulating Security Payload
(ESP), um trailer de autenticação IPsec que fornece integridade e autenticação
de mensagens e um cabeçalho IP final. No cabeçalho IP está o endereço IP de
origem e destino que corresponde ao cliente VPN e servidor VPN. A Figura 6
mostra o encapsulamento L2TP e IPsec para um datagrama PPP.
Figura 15 - Escapsulamento L2TP e IPsec para datagrama PPP
A mensagem L2TP é criptografada com o DES ou o DES triplo (3DES) usando
chaves de criptografia geradas no processo de negociação do Internet Key
Exchange (IKE).
SSTP
O protocolo SSTP (Secure Socket Tunneling Protocol) é um novo protocolo de
encapsulamento que usa o protocolo HTTPS na porta TCP 443 para passar o
tráfego por firewalls e proxies da Web que podem bloquear o tráfego PPTP e
L2TP/IPsec. O SSTP fornece um mecanismo para encapsular o tráfego PPP
pelo canal SSL do protocolo HTTPS. O uso do PPP permite o suporte a
métodos de autenticação fortes, como EAP-TLS. O SSL fornece segurança no
nível de transporte com negociação aprimorada de chaves, criptografia e
verificação de integridade.
Quando um cliente tenta estabelecer uma conexão VPN baseada em SSTP, o
SSTP primeiro estabelece uma camada HTTPS bidirecional com o servidor
SSTP. Sobre essa camada HTTPS, os pacotes de protocolo fluem como a
carga dos dados.
O SSTP encapsula quadros PPP em datagramas IP para transmissão pela
rede. O SSTP usa uma conexão TCP, pela porta 443, para gerenciamento de
túnel, bem como quadros de dados PPP. A mensagem SSTP é criptografada
com o canal SSL do protocolo HTTPS.
Escolhendo entre protocolos de encapsulamento
Ao escolher entre as soluções VPN de acesso remoto PPTP, L2TP/IPsec e
SSTP, é preciso considerar alguns fatores. O PPTP pode ser usado com uma
variedade de clientes da Microsoft. Ao contrário de L2TP/IPsec, o PPTP não
requer o uso de uma infraestrutura de chave pública (PKI).
Ao usar a criptografia, as conexões VPN baseadas em PPTP fornecem
confidencialidade dos dados, isto é, os pacotes capturados não podem ser
interpretados sem a chave de criptografia. As conexões VPN baseadas em
PPTP, no entanto, não fornecem integridade de dados, por exemplo, prova de
que os dados não foram modificados em trânsito, ou autenticação de origem de
dados, por exemplo, prova de que os dados foram enviados pelo usuário
autorizado.
A quantidade de opções de clientes da Microsoft em que o L2TP pode ser
usado é menor do que aqueles possíveis com o PPTP. O L2TP suporta
certificados de computador ou uma chave pré-compartilhada como método de
autenticação para IPsec.
A autenticação de certificado de computador, o método de autenticação
recomendado, exige que uma PKI emita esses certificados ao servidor VPN e a
todos os clientes VPN. Usando o IPsec, as conexões VPN L2TP/IPsec
fornecem confidencialidade, integridade e autenticação de dados.
Diferentemente do PPTP e SSTP, o L2TP/IPsec permite a autenticação da
máquina na camada IPsec e a autenticação no nível do usuário na camada
PPP.
O SSTP só pode ser usado com computadores clientes executando o Windows
em determinados Service Packs. Ao usar SSL, as conexões VPN SSTP
fornecem confidencialidade, integridade e autenticação de dados.
Todos os três tipos de túneis carregam quadros PPP em cima da pilha de
protocolos de rede. Portanto, os recursos comuns do PPP, como esquemas de
autenticação, negociação do Internet Protocol versão 4 (IPv4) e Internet
Protocol versão 6 (IPV6) e NAP (Network Access Protection), permanecem os
mesmos para os três tipos de túneis.
Firewalls
A capacidade de conectar qualquer computador, em qualquer lugar, a qualquer
outro computador, em qualquer lugar, é uma moeda de duas faces. É muito
cômodo para as pessoas navegarem pela Internet quando estão em casa. Para
os gerentes de segurança das empresas, trata-se de um grande problema.
Muitas empresas têm grandes quantidades de informações confidenciais on-
line, como segredos comerciais, planos de desenvolvimento de produtos,
estratégias de marketing, análises financeiras, etc. A revelação dessas
informações para um concorrente poderia ter terríveis consequências.
Além do perigo das informações virem a público, também há o perigo do
vazamento dessas informações dentro da empresa. Em particular, vírus, worms
e outras pestes digitais podem burlar a segurança, destruir dados valiosos e
consumir muito tempo dos administradores, que tentam eliminar a confusão
causada por eles. Com frequência, eles são trazidos por funcionários
descuidados.
Em consequência disso, são necessários mecanismos para manter os bits
inofensivos e descartar os maliciosos. Um dos métodos é usar o IPsec, que
protege os dados em trânsito entre sites seguros. No entanto, o IPsec não faz
nada para impedir as pestes digitais e os intrusos de invadirem a LAN da
empresa. Para alcançar esse objetivo, precisamos examinar os firewalls.
Um firewall é um sistemade segurança de rede que monitora e controla o
tráfego de entrada e saída da rede com base em regras de segurança
predeterminadas. Um firewall normalmente estabelece uma barreira entre uma
rede interna confiável e uma rede externa não confiável, como a Internet.
Os firewalls geralmente são categorizados como firewalls de rede ou firewalls
baseados em host. Os firewalls de rede filtram o tráfego entre duas ou mais
redes e são executados no hardware da rede. Os firewalls baseados em host
são executados em computadores host e controlam o tráfego de rede dentro e
fora dessas máquinas.
Os firewalls são apenas uma adaptação moderna de uma antiga forma de
segurança medieval, que é cavar um fosso profundo em torno do castelo. Esse
recurso forçava todos aqueles que quisessem entrar ou sair do castelo a
passar por uma única ponte levadiça, onde poderiam ser revistados por
guardas. Nas redes, é possível usar o mesmo artifício. Uma empresa pode ter
muitas LANs conectadas de forma arbitrária, mas todo o tráfego de saída ou de
entrada da empresa é feito através de uma ponte levadiça eletrônica, o firewall,
como mostra a Figura 7.
Figura 16 - Firewall que consiste em dois filtros de pacotes e um gateway de aplicação
O firewall, nessa configuração, tem dois componentes. Dois roteadores que
filtram pacotes e um gateway de aplicação. Também existem configurações
mais simples, mas a vantagem desse projeto é que cada pacote deve passar
por dois filtros e um gateway de aplicação para sair ou entrar na rede. Não
existem outras rotas.
Cada filtro de pacotes é um roteador padrão equipado com algumas funções
complementares, que permitem a inspeção de cada pacote de entrada ou de
saída. Os pacotes que atenderem a algum critério serão remetidos
normalmente, mas os que falharem no teste serão descartados. Na Figura 7,
provavelmente o filtro de pacotes da LAN interna verificará os pacotes enviados
e o da LAN externa conferirá os pacotes recebidos. Os pacotes que
atravessam o primeiro obstáculo vão para o gateway de aplicação, onde serão
submetidos a uma nova verificação. A colocação dos dois filtros de pacotes em
diferentes LANs destina-se a assegurar que nenhum pacote entre ou saia sem
passar pelo gateway de aplicação, pois não há outro caminho. Em geral, os
filtros de pacotes são baseados em tabelas configuradas pelo administrador do
sistema. Essas tabelas listam as origens e os destinos aceitáveis, as origens
ou destinos bloqueados e as regras padrão que orientam o que deve ser feito
com os pacotes recebidos de outras máquinas ou destinados a elas.
No caso comum de uma configuração TCP/IP, uma origem ou destino consiste
em uma porta e um endereço IP. As portas indicam qual é o serviço desejado.
Por exemplo, a porta 23 do TCP é para telnet, a porta 79 é para finger e a porta
119 é para notícias da usenet. Uma empresa poderia bloquear os pacotes
recebidos em relação a todos os endereços IP combinados com uma dessas
portas. Dessa forma, ninguém fora da empresa poderia estabelecer login via
telnet ou procurar alguém usando o daemon Finger. O bloqueio de pacotes de
saída é mais complicado porque, embora muitos sites adotem as convenções
padrão para numeração de portas, eles não são obrigados a fazê-lo. Além
disso, para alguns serviços importantes, como FTP, os números de portas são
atribuídos dinamicamente. Além disso, embora o bloqueio das conexões TCP
seja difícil, o bloqueio de pacotes UDP é ainda mais complicado, porque se
sabe muito pouco, a priori, sobre o que eles farão. Muitos filtros de pacotes
simplesmente não aceitam tráfego UDP.
A segunda metade do mecanismo de firewall é o gateway de aplicação. Em vez
de apenas examinar pacotes brutos, o gateway opera na camada de aplicação.
Por exemplo, um gateway de correio eletrônico pode ser configurado de forma
a examinar cada mensagem recebida ou enviada. O gateway toma a decisão
de transmitir ou descartar cada mensagem, com base nos campos de
cabeçalho, no tamanho da mensagem ou até mesmo em seu conteúdo, por
exemplo, em uma instalação militar, a presença de palavras como "nuclear" ou
"bomba" pode provocar algum tipo de ação especial.
As instalações têm liberdade para instalar um ou mais gateways de aplicação
destinados a aplicações específicas, mas não é incomum que organizações
suspeitas permitam a entrada e a saída de mensagens de correio eletrônico e
até usem a Web, mas proíbam tudo que seja muito arriscado. Combinada com
a criptografia e a filtragem de pacotes, essa estratégia oferece um nível de
segurança limitado ao custo de algumas inconveniências.
Ainda que o firewall esteja perfeitamente configurado, ainda existem vários
problemas de segurança. Por exemplo, se um firewall estiver configurado para
permitir apenas a entrada de pacotes de redes específicas, por exemplo, outras
fábricas da empresa, um intruso fora do firewall pode inserir falsos endereços
de origem para ultrapassar essa verificação. Se um usuário interno quiser
transportar documentos secretos para fora da empresa, ele poderá codificar ou
até mesmo fotografar os documentos e transportar as fotografias como
arquivos JPEG, que conseguirão passar por quaisquer filtros de palavras. Não
discutimos nem mesmo o fato de que 70% de todos os ataques vêm de dentro
do firewall, por exemplo, de funcionários insatisfeitos.
Além disso, há toda uma classe de diferentes ataques com que os firewalls não
podem lidar. A ideia básica por trás de um firewall é impedir a entrada de
intrusos e a saída de dados secretos. Infelizmente, existem pessoas que não
têm nada melhor para fazer do que tentar derrubar serviços ou sites. Para isso,
eles enviam ao destino pacotes legítimos em grande quantidade, até o site
entrar em colapso com a carga. Por exemplo, para incapacitar um site, um
intruso pode enviar um pacote SYN do TCP para estabelecer uma conexão.
Então, o site alocará um slot de tabela para a conexão e enviará um pacote
SYN + ACK em resposta. Se o intruso não responder, o slot de tabela ficará
retido por alguns segundos até o timeout. Se o intruso enviar milhares de
solicitações de conexão, todas os slots de tabela serão preenchidos e
nenhuma conexão legítima poderá passar. Os ataques em que o objetivo do
intruso é desativar o destino em vez de roubar dados são chamados ataques
de negação de serviço, em inglês Denial of Service (DoS). Em geral, os
pacotes solicitados têm endereços de origem falsos, para que o intruso não
possa ser rastreado com facilidade.
Uma variante ainda pior é aquela em que o intruso já entrou em centenas de
computadores em outros lugares do mundo, e depois comanda todos esses
computadores em um ataque ao mesmo alvo ao mesmo tempo. Essa
estratégia não apenas aumenta o poder de fogo do intruso, mas também reduz
a chance de detecção, pois os pacotes estão vindo de um grande número de
máquinas pertencentes a usuários insuspeitos. Um ataque desse tipo é
chamado DDoS, de Distributed Denial of Service, e é muito difícil proteger-se
contra ele. Ainda que a máquina atacada pode reconhecer rapidamente uma
solicitação falsa, processar e descartar a solicitação é um processo que leva
algum tempo e, se chegarem solicitações em número suficiente por segundo, a
CPU passará todo seu tempo lidando com elas.
Considerações finais
Uma VPN é, como o próprio nome diz, uma rede de comunicação privada,
sendo construída sobre uma rede de comunicações pública, está sendo mais
comumente a Internet. Em uma rede pública, o tráfego de dados é feito por
meio de protocolos padrões, que não são necessariamente seguros. Já ao
fazer uso de um VPN, estabelece-se uma conexão segura e criptografada, que
pode ser considerada como um túnel, entre o computador e o servidor operado
pelo serviço que provê a VPN.
As VPNs são costumeiramente usadas para conectar de forma segura filiais de
uma organização que estãogeograficamente distantes, criando uma rede
coesiva. Diversas organizações interligam suas bases operacionais por meio
do uso de VPN. Outro caso de uso comum nesse cenário é de empresas
terceirizadas que prestam algum tipo de suporte para essas organizações,
onde faz-se necessário a conexão por meio de VPN para “estar” na mesma
rede da organização em questão.
Usuários individuais também se beneficiam de VPNs para prover segurança
em conexões sem fio, para contornar restrições geográficas e de censura, ou
para se conectar a servidores proxy com a finalidade de proteger a suas
identidades e localizações. Um sistema de comunicação por VPN tem um custo
de implementação e manutenção insignificantes, se comparados aos antigos
sistemas de comunicação física, como por exemplo o frame relay, que tem um
custo altíssimo e segurança questionável. Por essa razão, muitos sistemas de
comunicação estão sendo substituídos por VPNs, que além do baixo custo,
oferecem alta confiabilidade, disponibilidade e integridades dos dados
trafegados.
VPNs seguras usam protocolos de criptografia por encapsulamento, que
proporcionam confidencialidade, integridade e autenticação, necessárias para
garantir a privacidade das comunicações requeridas. Quando uma rede quer
enviar dados para outra por meio da VPN, um protocolo, por exemplo o IPsec,
faz o encapsulamento do quadro normal com o cabeçalho IP da rede local e
adiciona o cabeçalho IP da Internet atribuída ao roteador, um cabeçalho de
autenticação e o cabeçalho ESP, que proporciona integridade, autenticidade e
criptografia para a área de dados do pacote. Entre os protocolos de
encapsulamento que são normalmente aplicados em VPNs podemos citar o
L2TP, SSTP, PPTP e IPsec, entre outras variações desses. Há vantagens e
desvantagens ao escolher cada um deles. Quando implementados de maneira
adequada, esses protocolos podem garantir comunicação segura por meio de
redes inseguras.
Em relação a firewalls, podemos resumir sua definição como sendo um
dispositivo de rede que tem por objetivo aplicar uma política de segurança a um
determinado ponto da rede. O termo, em inglês, faz alusão comparativa a
função que este desempenha para evitar o alastramento de acessos nocivos
dentro de uma rede de computadores a uma parede antichamas, que evita o
alastramento de incêndios pelos andares e salas de um edifício.
Os firewalls são normalmente associados a redes TCP/IP, podendo ser do tipo
filtro de pacotes, proxy de aplicações, etc. Esse dispositivo de segurança existe
na forma de software e hardware, sendo que a combinação de ambos é
nomeada tecnicamente de appliance. A complexidade de instalação depende
do tamanho da rede, da política de segurança, da quantidade de regras que
controlam o fluxo de entrada e saída de informações e do grau de segurança
desejado.
Os filtros de pacotes, primeira classificação de firewalls a surgir no fim da
década de 80, analisam individualmente os pacotes à medida que esses são
transmitidos, verificando apenas o cabeçalho das camadas de rede e de
transporte. As regras podem ser formadas indicando os endereços de rede, de
origem e/ou destino, e as portas TCP/IP envolvidas na conexão. A principal
desvantagem desse tipo de tecnologia para a segurança reside na falta de
controle de estado do pacote, o que permite que agentes maliciosos possam
produzir pacotes simulados, fora de contexto ou ainda para serem injetados em
uma sessão válida.
Atualmente os ataques passaram a se concentrar nas características e
vulnerabilidades específicas de cada aplicação. Disso surge a necessidade de
desenvolver um novo método que fosse capaz de analisar as particularidades
de cada protocolo e tomar decisões que pudessem evitar ataques maliciosos
contra uma rede. Nisso, entra o firewall de aplicação, mais comum nos dias
atuais, surgindo como uma evolução do filtro de pacotes, visando proporcionar
a segurança necessária para os padrões de usos modernos.
A capacidade de suprir a deficiência dos modelos tradicionais e mapear todas
as transações específicas que ocorrem na camada de aplicação Web
proprietária e, também, de ser um terminador do tráfego SSL, podendo avaliar
protocolos HTTPS, que originalmente passariam despercebidos ou não
analisados por firewalls tradicionais, são as vantagens dessa classificação de
firewall. Entretanto, por essas mesmas qualidades, esse tipo de firewall exige
um grande poder computacional, geralmente traduzido para um grande custo
de investimento. Além disso, ao interceptar aplicações Web e suas interações
com o cliente, pode acabar por provocar alguma incompatibilidade no padrão
de transações, exigindo um profundo trabalho de avaliação por parte dos
implementadores.
Referências
Boudriga, Noureddine. Security of mobile communications. Auerbach
Publications, 2009.
Crawford, Douglas (1 de setembro de 2019). «The Best VPN Services for
2019.». proprivacy.com
Lewis, Mark. Comparing, designing, and deploying VPNs. Adobe Press, 2006.
Mason, Andrew G., and Rick Foreword By-Stiffler. Cisco secure virtual private
networks. Cisco Press, 2001.
Oppliger, Rolf. "Internet security: firewalls and beyond." Communications of the
ACM 40.5 (1997): 92-102.
Tanenbaum, Andrew S. "Network protocols." ACM Computing Surveys (CSUR)
13.4 (1981): 453-489.
Yang, Yanyan, et al. "IPsec/VPN security policy correctness and assurance."
Journal of High Speed Networks 15.3 (2006): 275-289
Unidade IV
Introdução
Não é difícil projetar um sistema totalmente seguro em termos lógicos usando
VPNs e firewalls, muito embora na prática é grande a possibilidade de
vazamentos ocorrerem. Essa situação pode acontecer se algumas das
máquinas forem sem fios e usarem comunicação de rádio, que passa pelo
firewall em ambos os sentidos. O alcance das redes 802.11 frequentemente é
de algumas centenas de metros, assim, qualquer pessoa que queira espionar
uma empresa pode dirigir até o estacionamento dos funcionários pela manhã,
deixar um notebook capaz de reconhecer sinais 802.11 dentro do carro para
registrar tudo que ouvir e partir no final do dia. À tarde, o disco rígido estará
repleto de valiosas informações.
Grande parte do problema de segurança pode ter sua origem nos fabricantes
de estações base sem fios, conhecidos como pontos de acesso, que tentam
tornar seus produtos amigáveis para o usuário. Em geral, se o usuário retirar o
dispositivo da caixa e o conectar à tomada da rede elétrica, ele começará a
operar de imediato, quase sempre sem qualquer segurança, revelando
segredos para qualquer um que estiver dentro do alcance de rádio. Se ele for
conectado a uma rede Ethernet, todo tráfego dessa rede também aparecerá de
repente no estacionamento. Por essa razão, não é preciso dizer que a
segurança é ainda mais importante para sistemas sem fios que para sistemas
fisicamente conectados.
Segurança de redes 802.11
O padrão 802.11 prescreve um protocolo de segurança do nível de enlace de
dados, chamado WEP, do inglês Wired Equivalent Privacy, projetado para
tornar a segurança de uma LAN sem fio tão boa quanto a de uma LAN
fisicamente conectada. Tendo em vista que o padrão para LANs fisicamente
conectadas é nenhuma segurança, é fácil alcançar esse objetivo, e a WEP o
alcança, como veremos.
Quando a segurança do 802.11 é ativada, cada estação tem uma chave
secreta compartilhada com a estação base. A forma como as chaves são
distribuídas não é especificada pelo padrão. Elas poderiam ser pré-carregadas
pelo fabricante, trocadas com antecedência pela rede fisicamente conectada.
Finalmente, a estação base ou máquina do usuário poderia escolher uma
chave ao acaso e enviá-la à outra máquina pelo ar, codificada com a chave
pública da outra máquina. Uma vez estabelecidas, em geral as chaves
permanecem estáveis por meses ou anos. A criptografiada WEP utiliza uma
cifra de fluxo baseada no algoritmo RC4. O RC4 foi projetado por Ronald
Rivest e se manteve secreto até vazar e ser publicado na Internet em 1994. É
quase impossível manter os algoritmos secretos, mesmo quando o objetivo é
proteger a propriedade intelectual, em vez da segurança pela obscuridade, que
não era o objetivo no caso do RC4. Na WEP, o RC4 gera um fluxo de chaves
que sofre uma operação XOR com um texto simples para formar o texto
cifrado.
Cada carga útil de pacote é codificada com a utilização do método apresentado
na Figura 1. Primeiro, a carga útil é verificada usando-se o polinômio CRC-32,
e o total de verificação é anexado à carga útil para formar o texto simples que
será usado no algoritmo de criptografia. Em seguida, esse texto simples sofre
uma operação XOR com um bloco de fluxo de chaves de igual tamanho. O
resultado é o texto cifrado. O IV usado para iniciar o RC4 é enviado com o texto
cifrado. Quando o receptor obtém o pacote, ele extrai a carga útil criptografada,
gera o fluxo de chaves a partir da chave secreta compartilhada e o IV que
acabou de receber, e depois efetua uma operação XOR do fluxo de chaves
com a carga útil para recuperar o texto simples. Em seguida, ele pode conferir
o total de verificação para ver se o pacote foi adulterado.
Embora essa abordagem pareça boa à primeira vista, um método para rompê-
la já foi publicado. Em primeiro lugar, um número surpreendentemente grande
de instalações utiliza a mesma chave compartilhada para todos os usuários e,
nesse caso, cada usuário pode ler todo o tráfego dos outros usuários. Sem
dúvida, isso equivale à Ethernet, mas não é muito seguro.
Porém, mesmo que cada usuário tenha uma chave distinta, a WEP ainda pode
ser atacada. Como as chaves geralmente são estáveis por longos períodos, o
padrão WEP recomenda, mas não obriga, que o IV seja alterado em cada
pacote para evitar o ataque de reutilização de fluxo de chaves. Infelizmente,
muitos cartões 802.11 para notebooks redefinem o IV como 0 quando o cartão
é inserido no computador e incrementam o valor em uma unidade a cada
pacote enviado. Como as pessoas com frequência removem e reinserem esses
cartões, pacotes com baixos valores de IV são comuns. Se Z puder coletar
vários pacotes enviados pelo mesmo usuário com o mesmo valor de IV, que é
enviado em texto simples juntamente com cada pacote, ela poderá calcular o
XOR de dois valores de texto simples e provavelmente violar a cifra.
Figura 17 - Codificação de pacotes usando a WEP
No entanto, ainda que o cartão 802.11 escolha um IV ao acaso para cada
pacote, os IVs só têm 24 bits; portanto, depois que forem enviados 224
pacotes, eles terão de ser reutilizados. Pior ainda, com os IVs escolhidos ao
acaso, o número esperado de pacotes que têm de ser enviados antes de um
mesmo IV ser usado duas vezes é cerca de 5000. Desse modo, se escutar
durante alguns minutos, Z quase certamente conseguirá captar dois pacotes
com o mesmo IV e a mesma chave. Efetuando o XOR dos textos cifrados, ele
poderá obter o XOR dos textos simples. Essa sequência de bits pode ser
atacada de várias maneiras para recuperar os textos simples. Com um pouco
mais trabalho, o fluxo de chaves para esse IV também poderá ser obtido.
Assim, Z será capaz de continuar a trabalhar assim por algum tempo e de
compilar um dicionário de fluxos de chaves para diversos IVs. Depois que um
IV for rompido, todos os pacotes enviados com ele no futuro, mas também no
passado, poderão ser totalmente decodificados.
Além disso, como os IVs são usados ao acaso, depois que Z tiver determinado
um par (IV, fluxo de chaves) válido, ela poderá usar esse par para gerar todos
os pacotes que quiser e, desse modo, interferir ativamente com a
comunicação. Na teoria, um receptor poderia notar que grandes números de
pacotes surgiram de repente, todos com o mesmo IV, mas (i) a WEP permite
isso e (ii) ninguém se preocupa em verificar esse detalhe. Finalmente, o CRC
não compensa muito, pois é possível para Z alterar a carga útil e fazer a
mudança correspondente no CRC, sem sequer remover a codificação. Em
suma, romper a segurança do 802.11 é bastante simples, e ainda nem listamos
todos os ataques conhecidos.
No início dos anos 2000 foi publicado outro ataque devastador sobre a WEP.
Esse ataque encontrou deficiências criptográficas no próprio RC4. Os
pesquisadores descobriram que muitas chaves têm a propriedade de
possibilitarem a derivação de alguns bits da chave a partir do fluxo de chaves.
Se esse ataque for executado repetidamente, será possível derivar a chave
inteira com pouco esforço. Sendo um tanto inclinados aos aspectos teóricos, os
pesquisadores na realidade não tentaram invadir nenhuma LAN 802.11.
Quando um estudante do curso de verão e dois pesquisadores da AT&T Labs
tomaram conhecimento desse ataque, eles decidiram experimentá-lo na
prática. Em uma semana eles romperam sua primeira chave de 128 bits em
uma LAN 802.11 de produção, e a maior parte da semana foi dedicada à busca
do cartão 802.11 de preço mais baixo que puderam encontrar, obter permissão
para comprá-lo, e depois instalar e testar o cartão. A programação demorou
apenas duas horas.
Quando anunciaram seus resultados, a CNN divulgou uma reportagem
intitulada "Ataque com cartão comercial rompe criptografia sem fio", e alguns
gurus da indústria tentaram minimizar seus resultados dizendo que o que eles
tinham feito era trivial. Embora esse comentário seja tecnicamente verdadeiro,
permanece o fato de que os esforços combinados dessas duas equipes
demonstraram uma falha fatal na WEP e no 802.11.
Pouco tempo depois, o IEEE respondeu ao fato de a WEP ter sido
completamente violada emitindo uma breve declaração de seis, resumidos
abaixo:
1. Nós avisamos que a segurança da WEP não era melhor que a da
Ethernet;
2. Uma ameaça muito maior é esquecer de ativar a segurança;
3. Tente usar algum outro tipo de sistema de segurança, por exemplo, a
segurança da camada de transporte;
4. A próxima versão, 802.11i, terá melhores recursos de segurança;
5. No futuro, a certificação obrigará a utilização do 802.11i;
6. Tentaremos descobrir o que fazer até a chegada do 802.11i.
Os detalhes dessa história permitem enfatizar que não é fácil implementar
recursos de segurança, até mesmo para especialistas.
Segurança do WAP 2.0
O fórum WAP aprendeu a lição por utilizar uma pilha de protocolos não
padronizada no WAP 1.0. Grande parte do WAP 2.0 utiliza protocolos padrão
em todas as camadas. A segurança não é exceção. Tendo em vista que ele se
baseia no IP, o WAP admite o uso total do IPsec na camada de rede. Na
camada de transporte, as conexões TCP podem ser protegidas pelo TLS, um
padrão da IET. Em um nível ainda mais alto, ele utiliza a autenticação de
clientes HTTP, definida na RFC 2617. As bibliotecas de criptografia da camada
de aplicação proporcionam controle de integridade e não repúdio. De modo
geral, como o WAP 2.0 se baseia em padrões conhecidos, existe uma chance
de que seus serviços de segurança, em particular, privacidade, autenticação,
controle de integridade e não repúdio possam ser melhores que a segurança
do 802.11 e do Bluetooth.
Segurança do Bluetooth
O Bluetooth tem um alcance bem mais curto que o 802.11, e, portanto, não
pode ser atacado a partir do estacionamento, embora a segurança ainda seja
uma questão importante nesse caso. Por exemplo, imagine que o computador
de X esteja equipado com um teclado Bluetooth sem fio. Na ausência de
segurança, se Z estiver no escritório ao lado, ela poderá ler tudo X digitou,
inclusive toda sua correspondência enviada. Ela também poderá captar tudo
que o computador de X enviar à impressora Bluetooth mais próxima, por
exemplo, as mensagens de correio eletrônico recebidas e os relatórios
confidenciais. Felizmente, o Bluetooth tem um esquema de segurançaelaborado para tentar anular essas vulnerabilidades.
O Bluetooth tem três modos de segurança, variando desde nenhuma
segurança até total criptografia de dados e controle de integridade. Como
ocorre com o 802.11, se a segurança for desativada, o padrão, não haverá
nenhuma segurança. A maioria dos usuários mantém a segurança desativada
até ocorrer uma séria violação, depois eles a ativam. Isso equivale a comprar
um cadeado depois que a bicicleta foi roubada.
O Bluetooth fornece segurança em várias camadas. Na camada física, os
saltos de frequência oferecem um nível mínimo de segurança, mas, como
qualquer dispositivo Bluetooth que se desloca em uma piconet, uma rede ad
hoc, tem de ser informado da sequência de saltos de frequência, é óbvio que
essa frequência não é um segredo. A segurança real começa quando o
escravo recém-chegado solicita um canal ao mestre. Supõem-se que os dois
dispositivos compartilham uma chave secreta configurada com antecedência.
Em alguns casos, ambos são fisicamente conectados pelo fabricante, por
exemplo, um fone de ouvido e um telefone celular vendidos como uma
unidade. Em outros casos, um dispositivo, por exemplo, o fone de ouvido, tem
uma chave embutida no código e o usuário tem de digitar essa chave no outro
dispositivo, por exemplo, o telefone celular, como n número decimal. Essas
chaves compartilhadas são chamadas chaves de passagem.
Para estabelecer um canal, o escravo e o mestre verificam se a outra máquina
conhece a chave de passagem. Nesse caso, eles negociam para ver se esse
canal será criptografado, terá sua integridade controlada ou ambos. Em
seguida, eles selecionam uma chave de sessão aleatória de 128 bits, na qual
alguns bits podem ser públicos. A razão para permitir o enfraquecimento dessa
chave é obedecer a algumas restrições do governo de vários países, criadas
para impedir a exportação ou o uso de chaves mais longas do que o governo
pode violar.
A criptografia utiliza uma cifra de fluxo chamada E0, o controle de integridade
emprega o SAFER+. Ambos são cifras de blocos de chave simétrica
tradicional. O SAFER+ foi submetido aos rígidos testes de aprovação do AES,
mas foi eliminado na primeira rodada, porque era mais lento que os outros
candidatos. O Bluetooth ficou pronto antes de ser escolhida a cifra do AES,
caso contrário, é mais provável que ele tivesse usado o Rijndael. Infelizmente,
o próprio E0, como o RC4, pode ter deficiências fatais. Sua semelhança com a
cifra A5/1, cuja falha espetacular compromete todo o tráfego de telefones GSM,
causa preocupação. Às vezes, é espantoso perceber que, no eterno jogo de
gato e rato entre criptógrafos e criptoanalistas, os criptoanalistas
frequentemente sejam os vencedores.
Outra questão de segurança é que o Bluetooth efetua a autenticação apenas
de dispositivos, não de usuários, assim, o furto de um dispositivo Bluetooth
pode dar ao ladrão acesso às finanças e às outras contas do usuário. No
entanto, o Bluetooth também implementa segurança nas camadas superiores.
Portanto, até mesmo na eventualidade de uma violação da segurança no nível
de enlace, deve restar alguma segurança, especialmente para aplicações que
exigem a digitação de um código PIN em algum tipo de teclado para completar
a transação.
Protocolos de autenticação
A autenticação é a técnica através da qual um processo confirma que seu
parceiro na comunicação é quem deve ser e não um impostor. Confirmar a
identidade de um processo remoto, face à presença de um intruso ativo mal-
intencionado, é surpreendentemente difícil e exige protocolos complexos
baseados no uso da criptografia. Por outro lado, algumas pessoas confundem
autorização com autenticação. A autenticação lida com a questão de
determinar se você está ou não se comunicando com um processo específico.
A autorização se preocupa com o que esse processo tem permissão para
fazer. Por exemplo, um processo cliente entra em contato com um servidor de
arquivos e afirma: "Sou o processo do A e quero excluir o arquivo
receitadebolo.txt". Do ponto de vista do servidor de arquivos, as seguintes
perguntas devem ser respondidas: i. Esse processo é realmente de A
(autenticação)? ii. A tem permissão para excluir receitadebolo.txt (autorização)?
Somente depois que ambas as perguntas forem respondidas afirmativamente
sem qualquer ambiguidade, a ação solicitada poderá ser executada. Na
verdade, a primeira pergunta é a mais importante. Depois que o servidor de
arquivos sabe com quem está se comunicando, verificar a autorização é
simplesmente uma questão de pesquisar entradas de tabelas ou bancos de
dados locais. Por essa razão, iremos nos concentrar na questão da
autenticação.
O modelo genérico que todos os protocolos de autenticação utilizam é descrito
a seguir. X começa enviando uma mensagem para Y ou para um KDC, Key
Distribution Center, no qual confia e que sempre é honesto. Acontecem muitas
outras trocas de mensagens em diferentes sentidos. À medida que essas
mensagens são enviadas, uma intrusa mal-intencionada, Z, pode interceptar,
modificar ou reproduzir essas mensagens a fim de enganar X e Y, ou
simplesmente para atrapalhar.
Todavia, quando a execução do protocolo tiver sido concluída, X terá certeza
de que está se comunicando com Y e vice-versa. Além disso, na maioria dos
protocolos, os dois também terão estabelecido uma chave de sessão secreta
que deverá ser usada durante a conversação. Na prática, por motivos de
desempenho, todo o tráfego de dados é criptografado utilizando-se a
criptografia de chave simétrica, em geral, AES ou DES triplo, embora a
criptografia de chave pública seja extensamente usada nos próprios protocolos
de autenticação e para estabelecer a chave de sessão.
O objetivo de se utilizar uma nova chave de sessão escolhida aleatoriamente
para cada nova conexão é minimizar o volume de tráfego provocado pelo envio
das chaves secretas ou públicas dos usuários, reduzir o volume de texto
cifrado que um intruso pode obter e minimizar os danos causados, caso haja
uma pane em um processo e seu dump de memória caia em mãos erradas. É
muito provável que a única chave presente seja a chave de sessão. Todas as
chaves permanentes deverão ser cuidadosamente zeradas depois que a
sessão for estabelecida.
Autenticação baseada em uma chave secreta compartilhada
Para o protocolo de autenticação aqui discutido, vamos supor que X e Y já
compartilham uma chave secreta, Kab. Essa chave compartilhada pode ter sido
definida pelos dois em uma conversa telefônica ou pessoalmente, mas não na
rede, que apresenta problemas de segurança.
Esse protocolo se baseia em um princípio encontrado em muitos protocolos de
autenticação. Um dos lados envia um número aleatório ao outro, que em
seguida o transforma de algum modo especial e retorna o resultado. Tais
protocolos são chamados protocolos de desafio-resposta. Nesse e nos
próximos protocolos de autenticação, será usada a seguinte notação:
A e B são as identidades de X e Y;
Ri’s são desafios, sendo que o caractere subscrito identifica o
desafiante;
Ki são chaves, onde i indica o proprietário;
Ks é a chave da sessão.
A sequência de mensagens do primeiro protocolo de autenticação de chave
compartilhada é mostrada na Figura 2. Na mensagem 1, X envia sua
identidade A para Y, de uma forma que Y possa entender. Entretanto, Y não
tem como saber se essa mensagem veio de X ou de Z, portanto, ele escolhe
um desafio, um número aleatório muito extenso, Rb, e o envia de volta a "X"
como sua mensagem número 2 em texto simples. Os números aleatórios
usados apenas uma vez em protocolos de desafio-resposta como esse são
chamados nonces. Em seguida, X criptografa a mensagem com a chave que
compartilha com Y e envia o texto cifrado, Kab(Rb), de volta na mensagem 3.
Quando vê a mensagem, Y fica sabendo imediatamente que ela veio de X, pois
Z nãoconhece Kab e, portanto, não poderia tê-la gerado. Além disso, como o
número Rb foi escolhido aleatoriamente a partir de um espaço muito extenso,
por exemplo números aleatórios de 128 bits, é muito improvável que Z tenha
visto Rb e sua resposta em uma sessão anterior. É igualmente improvável que
ela conseguisse adivinhar a resposta correta a qualquer desafio.
Figura 18 - Autenticação bidirecional utilizando protocolo de desafio-resposta
A essa altura, Y tem certeza de que está se comunicando com X, mas X não
tem certeza de nada, pois sabe que Z pode ter interceptado a mensagem 1 e
enviado Rb como resposta. Para descobrir com quem está se comunicando, X
seleciona um número aleatório, Ra, e envia a Y como texto simples, na
mensagem 4. Quando Y responde com Kab(Ra), X fica sabendo que está se
comunicando com Y. Se eles quiserem estabelecer uma chave de sessão
agora, X poderá selecionar uma, Ks, e enviá-la a Y criptografada com Kab.
O protocolo da Figura 2 contém cinco mensagens. Veremos se é possível
eliminar algumas delas. Uma abordagem é ilustrada na Figura 3. Nessa figura,
X inicia o protocolo de desafio-resposta em vez de esperar que Y o faça. Da
mesma forma, enquanto está respondendo ao desafio de X, Y envia o dele. O
protocolo inteiro pode ser reduzido a três mensagens, em vez de cinco.
Figura 19 - Protocolo de autenticação bidirecional abreviado
Porém, devemos contemplar se esse novo protocolo representa um
aperfeiçoamento em relação ao original. Em um certo sentido, sim, pois agora
o protocolo está mais curto. Porém, agora ele também está errado. Sob
determinadas circunstâncias, Z é capaz de enganar esse protocolo utilizando o
método conhecido como ataque por reflexão. Especificamente, Z poderá
rompê-lo se for possível abrir várias sessões com Y ao mesmo tempo. Por
exemplo, essa situação seria verdadeira se Y fosse um banco e estivesse
preparado para aceitar muitas conexões simultâneas enviadas por caixas
eletrônicos ao mesmo tempo.
O ataque por reflexão de Z é mostrado na Figura 4. Ele começa com Z
afirmando ser X e enviando Rt. Y responde, como sempre, com seu próprio
desafio, Rb. Agora Z tem alguns problemas. Ela não conhece Kab(Rb).
Figura 20 - Ataque por reflexão
Ela pode abrir uma outra sessão com a mensagem 3, fornecendo o Rb extraído
da mensagem 2 como seu desafio. Y o criptografa e envia Kab(Rb) na
mensagem 4. As mensagens da segunda sessão estão sombreadas, a fim de
destacá-las. Agora, Z tem as informações que faltavam e, portanto, pode
concluir a primeira sessão e abandonar a segunda. Nesse momento, Y está
convencido de que Z é X e, quando ela pede o saldo da conta, ele o informa
sem maiores perguntas. Em seguida, quando Z pede que Y transfira todo o
dinheiro para uma conta secreta, ele não hesita em fazê-lo.
Projetar um protocolo de autenticação correto é mais difícil do que parece. Com
frequência, quatro regras podem ajudar nesse caso. São elas:
1. Fazer com que o transmissor prove quem é antes do receptor
responder. Nesse caso, Y revela informações valiosas antes de Z
fornecer alguma prova de quem é ela;
2. Fazer com que o transmissor e o receptor utilizem chaves específicas
para provarem quem são, mesmo que isso signifique ter duas chaves
compartilhadas, Kab e K'ab;
3. Fazer com que o transmissor e o receptor extraiam seus desafios de
conjuntos distintos. Por exemplo, o transmissor deve usar números
pares e o transmissor deve usar números ímpares;
4. Tornar o protocolo resistente a ataques que envolvam uma segunda
sessão paralela, no qual as informações obtidas em uma sessão sejam
usadas em uma sessão diferente.
Se até mesmo uma dessas regras for violada, isso significa que o protocolo
poderá ser violado com frequência. Nesse caso, todas as quatro regras foram
violadas, com consequências desastrosas.
Voltando a analisar a Figura 2, devemos questionar se é possível garantir que
esse protocolo não está sujeito a um ataque por reflexão. Essa é uma questão
bastante sutil, dependendo de alguns fatores. Z foi capaz de violar o protocolo
usando um ataque por reflexão, porque foi possível abrir uma segunda sessão
com Y e enganá-lo, respondendo a suas próprias perguntas. O que aconteceria
se X fosse um computador de uso geral que também aceitasse várias sessões,
em vez de ser uma pessoa diante de um computador. Vejamos o que Z pode
fazer nesse caso.
Para ver como funciona o ataque de Z, utilizaremos a Figura 5. X começa
anunciando sua identidade na mensagem 1. Z intercepta essa mensagem e
inicia sua própria sessão com a mensagem 2, afirmando ser Y. Novamente
sombreamos as mensagens da sessão 2. X responde à mensagem 2 com a
mensagem 3, dizendo: "Você afirma ser Y? Então, prove". Nesse momento Z
não tem saída, porque não pode provar ser Y.
Figura 21 - Ataque por reflexão no protocolo da Figura 2
Quais são as opções de Z? Ela volta para a primeira sessão, onde é sua vez
de enviar um desafio, e transmite a Ra que obteve na mensagem 3. X
responde na mensagem 5 e, desse modo, fornece a Z as informações de que
ela precisa para enviar a mensagem 6 na sessão 2. Nesse momento, Z está
confortável, porque conseguiu responder com sucesso ao desafio de X na
sessão 2. Agora ela pode cancelar a sessão 1, transmitir qualquer número
antigo para o restante da sessão 2, e terá uma sessão autenticada com X na
sessão 2.
Contudo, Z pretende causar ainda mais danos. Em vez de enviar qualquer
número antigo para concluir a sessão 2, ela espera até X enviar a mensagem
7, o desafio de X para a sessão 1. Aqui Z não sabe como responder, e,
portanto, utiliza outra vez o ataque por reflexão, devolvendo Ra 2 como a
mensagem 8. X codifica Ra 2 de maneira conveniente na mensagem 9. Agora,
Z volta para a sessão 1 e envia a X, na mensagem 10, o número que ela
deseja, cuidadosamente copiado do número que a própria X enviou na
mensagem 9. Nesse momento, Z tem duas sessões completamente
autenticadas com X.
Esse ataque tem um resultado um pouco diferente do ataque no protocolo de
três mensagens, ilustrado na Figura 4. Dessa vez, Z tem duas conexões
autenticadas com X. No exemplo anterior, ela tinha uma conexão autenticada
com Y. Mais uma vez, se aplicássemos todas as regras gerais de protocolos de
autenticação discutidas antes, esse ataque poderia ter sido interrompido. É
possível encontrar descrições detalhadas desses tipos de ataques e de como
frustrá-los em estudos acadêmicos, assim como outros que mostram como é
possível construir de forma sistemática protocolos que comprovadamente são
corretos. Porém, mesmo o mais simples desses protocolos é um tanto
complicado, portanto, mostraremos agora uma classe diferente de protocolos
que também funcionam.
O protocolo de autenticação é mostrado na Figura 6. X começa enviando a Y
um nonce Ra como mensagem 1. Y responde selecionando seu próprio nonce,
Rb, e devolvendo-o juntamente com um HMAC. Em criptografia, um HMAC, ou
código de autenticação de mensagem baseado em hash, é um tipo específico
de código de autenticação de mensagens que envolve uma função hash
criptográfica e uma chave criptográfica secreta. O HMAC é formado com o
objetivo de construir uma estrutura de dados que consiste no nonce de X, no
nonce de Y, em suas identidades e na chave secreta compartilhada, Kab.
Esses dados estruturados passam então por um hash no HMAC, por exemplo
usando SHA-1. Quando receber a mensagem 2, X terá Ra, que ela própria
escolheu, Rb, que chegará sob a forma de texto simples, as duas identidades e
a chave secreta Kab, conhecida desde o início, e depois ela mesma poderá
calcular o HMAC. Se este corresponder ao HMAC da mensagem, ela saberá
que está se comunicando com Y, porque Z não conhece Kab e, desse modo,
não terá como saber qual HMAC enviar. X responde a Y com um HMAC
contendo apenas os dois nonces.
Figura 22 - Autenticação usando HMACsNão é possível para Z subverter de algum modo esse protocolo, porque ela não
é capaz de forçar qualquer das partes a codificar ou fazer o hash de um valor
de sua escolha, como aconteceu na Figura 4. Ambos os HMACs incluem
valores escolhidos pela parte transmissora, algo que Z não pode controlar.
Utilizar HMACs não é o único meio de se empregar essa ideia. Um esquema
alternativo usado com frequência em vez de calcular o HMAC sobre uma série
de itens é codificar os itens sequencialmente usando o encadeamento de
blocos de cifras.
Autenticação com a criptografia de chave pública
Também é possível fazer uma autenticação mútua através do uso da
criptografia de chave pública. Para começar, X precisa da chave pública de Y.
Se existir uma PKI, Public Key Infrastructure, com o servidor de diretórios que
entrega certificados para chaves públicas, X poderá solicitar o certificado de Y,
como mostra a Figura 7 na mensagem 1. A resposta na mensagem 2 é um
certificado X.509 que contém a chave pública de Y. Quando X verifica que a
assinatura está correta, ela envia a Y uma mensagem contendo sua identidade
e um nonce.
Figura 23 - Autenticação mútua com a utilização de criptografia de chave pública
Quando recebe essa mensagem, Y não tem certeza se ela veio de X ou de Z,
mas continua e pede ao servidor de diretórios a chave pública de X, na
mensagem 4, e logo a recebe, na mensagem 5. Em seguida, ele envia a X uma
mensagem contendo o Ra de X, seu próprio nonce, Rb, e uma chave de
sessão sugerida, Ks, como a mensagem 6.
Quando recebe a mensagem 6, X a descriptografa usando sua própria chave
privada. Ao ver Ra na mensagem, X pode ficar tranquila. A mensagem deve ter
vindo de Y, pois Z não tem como determinar Ra. Além disso, a mensagem
deve ser nova, e não uma repetição, pois ela acabou de enviar Ra à Y. X
concorda com a sessão retornando a mensagem 7. Quando vê Rb
criptografada com a chave de sessão que acabou de gerar, Y fica sabendo que
X recebeu a mensagem 6 e confirmou Ra.
Não é possível para Z subverter esse protocolo. Ela pode falsificar a
mensagem 3 e enganar Y fazendo-o pensar que ela é X, mas X verá um Ra
que não enviou e não prosseguirá com a transmissão. Z não poderá forjar a
mensagem 7 de forma convincente, pois não conhece os valores de Rb e de
Kb e não pode determiná-los sem a chave privada de X.
Considerações finais
A segurança de rede envolve a autorização de acesso aos dados de uma rede,
os quais são controlados pelo administrador da rede. Para isso, é preciso que o
administrador proporcione políticas para prevenir e monitorar o acesso não
autorizado, uso incorreto, modificação ou negação da rede e dos seus recursos
associados. Um dos principais pontos da segurança de rede, e o primeiro
passo na escala de medidas que são utilizadas, é a autenticação do usuário.
Em redes sem fio, a segurança é um ponto fraco, visto que o sinal se propaga
pelo ar em todas as direções e pode ser captado a distâncias de centenas de
metros utilizando um dispositivo com antenas amplificadas. Isso torna as redes
sem fio bastante suscetíveis a interceptações.
O protocolo WEP visa fornecer o mesmo nível de privacidade de uma rede
cabeada a redes sem fio. É um protocolo de segurança baseado no método de
criptografia RC4, que usa criptografia de 64 bits ou 128 bits. Qualquer roteador
sem fio suporta a criptografia de 64 bits, mas nem todos suportam a de 128
bits. Além da criptografia, o WEP também utiliza um procedimento de
checagem de redundância cíclica no padrão CRC-32, utilizado para verificar a
integridade dos pacotes de dados. O WEP não protege a conexão por
completo, somente o pacote de dados. O protocolo não é totalmente seguro,
visto que já existem aplicações capazes de quebrar as chaves de criptografia,
desde que a rede seja monitorada por tempo suficiente.
O protocolo WPA foi elaborado para contornar os problemas de segurança do
WEP. O WPA possui um protocolo denominado Temporal Key Integrity
Protocol com um vetor de inicialização de 48 bits e uma melhor criptografia de
128 bits. Com o uso desse protocolo a chave é alterada em cada pacote e
sincronizada entre o cliente e o ponto de acesso, também faz uso de
autenticação do usuário por um servidor central. O WPA 2.0 apresenta uma
melhoria do protocolo original, ao utilizar o algoritmo de encriptação
denominado Advanced Encryption Standard (AES).
Em relação aos protocolos de autenticação, a criptografia de chave pública usa
pares de chaves, sendo uma chave pública, que pode ser amplamente
disseminada, e uma chave privada, que é conhecida apenas pelo proprietário.
Isso proporciona duas funções, a autenticação, onde a chave pública verifica
que um portador da chave privada emparelhada enviou a mensagem, e
encriptação, onde apenas o portador da chave privada emparelhada pode
decriptar a mensagem encriptada com a chave pública.
Para ser prática, a geração de uma chave pública e privada deve ser
computacionalmente econômica. A força de um sistema de criptografia de
chave pública depende do esforço computacional necessário para encontrar a
chave privada de sua chave pública emparelhada. Segurança efetivar requer
apenas manter a chave privada. A chave pública pode ser distribuída
abertamente sem comprometer a segurança.
No caso da chave secreta compartilhada, a criptografia é baseada em uma
mesma chave. Essa chave representa um segredo compartilhado entre duas
ou mais partes. Este requisito de que ambas as partes possuam acesso a
mesma chave secreta é uma das principais desvantagens desse tipo de
criptografia em comparação com a criptografia de chave pública.
Referências
Biryukov, Alex, Adi Shamir, and David Wagner. "Real Time Cryptanalysis of
A5/1 on a PC." International Workshop on Fast Software Encryption. Springer,
Berlin, Heidelberg, 2000.
Borisov, Nikita, Ian Goldberg, and David Wagner. "Intercepting mobile
communications: the insecurity of 802.11." Proceedings of the 7th annual
international conference on Mobile computing and networking. ACM, 2001.
Delfs, H., and H. Knebl. "Introduction to Cryptography Principles and
Applications (2007)."
Fluhrer, Scott, Itsik Mantin, and Adi Shamir. "Weaknesses in the key scheduling
algorithm of RC4." International Workshop on Selected Areas in Cryptography.
Springer, Berlin, Heidelberg, 2001.
Jakobsson, Markus, and Susanne Wetzel. "Security weaknesses in Bluetooth."
Cryptographers’ Track at the RSA Conference. Springer, Berlin, Heidelberg,
2001.
Ohrtman, Franklin D., Konrad Roeder, and Wi-Fi Handbook. "Building 802.11 b
Wireless Networks." New York (2003).
Stallings, William. Cryptography and network security: principles and practice.
Upper Saddle River: Pearson, 2017.
Stubblefield, Adam, John Ioannidis, and Aviel D. Rubin. "Using the Fluhrer,
Mantin, and Shamir Attack to Break WEP." NDSS. 2002.
Tanenbaum, Andrew S. "Network protocols." ACM Computing Surveys (CSUR)
13.4 (1981): 453-489.
Unidade V
Qualidade de Serviço
Qualidade de serviço (QoS) é a descrição ou medida do desempenho geral de
um serviço, como uma rede de telefonia ou computador, um serviço de
computação em nuvem, particularmente o desempenho observado pelos
usuários da rede. Para medir quantitativamente a qualidade do serviço, vários
aspectos relacionados ao serviço de rede são frequentemente considerados,
como perda de pacotes, taxa de bits, taxa de transferência, atraso de
transmissão, disponibilidade, jitter, etc. No campo das redes de computadores
e de outras redes de telecomunicações comutadas por pacotes, a qualidade do
serviço refere-se à priorização do tráfego e aos mecanismos de controle de
reserva de recursos, em vez da qualidade de serviço alcançada.
Qualidade de serviço é a capacidade de fornecer prioridade diferente para
diferentes aplicações, usuários ou fluxosde dados, ou para garantir um certo
nível de desempenho a um fluxo de dados. A qualidade do serviço é
particularmente importante para o transporte de tráfego com requisitos
especiais. Em particular, os desenvolvedores introduziram a tecnologia VoIP
para permitir que as redes de computadores se tornem tão úteis quanto as
redes telefônicas para conversas em áudio, além de oferecer suporte a novas
aplicações com requisitos de desempenho de rede ainda mais rigorosos. Com
o crescimento da multimídia em rede, frequentemente, medidas ad hoc
projetadas para reduzir o congestionamento e melhorar o desempenho das
redes, não são suficientes. Há necessidade de empreender tentativas sérias
para garantir a qualidade de serviço por meio do projeto de redes e protocolos.
Requisitos
Uma sequência de pacotes desde uma origem até um destino é chamada fluxo.
Em uma rede orientada a conexões, todos os pacotes que pertencem a um
fluxo seguem a mesma rota, em uma rede sem conexões, eles podem seguir
rotas diferentes. As necessidades de cada fluxo podem ser caracterizadas por
quatro parâmetros principais: confiabilidade, retardo, flutuação e largura de
banda. Juntos, esses parâmetros definem a QoS que o fluxo exige. Várias
aplicações comuns e a severidade de seus requisitos estão listadas na Figura
1.
Figura 24 - Rigidez dos requisitos de qualidade de serviço
As quatro primeiras aplicações têm requisitos estritos de confiabilidade.
Nenhum bit pode ser entregue de forma incorreta. Em geral, esse objetivo é
alcançado calculando-se o total de verificação de cada pacote e conferindo-se
o total de verificação no destino. Se um pacote for danificado em trânsito, ele
não será confirmado e será retransmitido mais tarde. Essa estratégia
proporciona alta confiabilidade. As quatro últimas aplicações, áudio/vídeo,
podem tolerar erros, e assim nenhum total de verificação é calculado ou
conferido.
As aplicações de transferência de arquivos, incluindo correio eletrônico e vídeo,
não são sensíveis ao retardo. Se todos os pacotes estiverem uniformemente
atrasados alguns segundos, não haverá nenhum dano. Aplicações interativas,
como navegação na Web e login remoto, são mais sensíveis ao retardo.
Aplicações de tempo real, como telefonia e videoconferência, têm requisitos
estritos de retardo. Se todas as palavras em uma ligação telefônica forem
retardas exatamente 2,000 segundos, os usuários irão considerar a conexão
inaceitável. Por outro lado, a reprodução de arquivos de áudio ou vídeo de um
servidor não exige baixo retardo.
As três primeiras aplicações não são sensíveis à chegada de pacotes com
intervalos de tempo irregulares entre eles. O login remoto é um pouco mais
sensível a essa variação, pois os caracteres aparecerão na tela em pequenas
rajadas se a conexão sofrer muita flutuação. O vídeo e, em especial, o áudio
são extremamente sensíveis à flutuação. Se um usuário estiver assistindo a um
vídeo transmitido pela rede e os quadros estiverem todos atrasados
exatamente 2,000 segundos, não haverá nenhum dano. Porém, se o tempo de
transmissão variar ao acaso entre 1 e 2 segundos, o resultado será terrível. No
caso do áudio, até mesmo uma flutuação de até alguns milissegundos será
bastante audível.
Por fim, as aplicações diferem em suas necessidades de largura de banda. O
correio eletrônico e o login remoto não necessitam de muita largura de banda,
mas todas as formas de vídeo exigem um grande volume desse recurso. As
redes ATM classificam os fluxos em quatro categorias principais com relação
às suas demandas de QoS: i) taxa de bit constante, por exemplo, telefonia; ii)
taxa de bits variável em tempo real, por exemplo, videoconferência
compactada; iii) taxa de bits variável não de tempo real, por exemplo, assistir a
um filme pela Internet; iv) taxa de bits disponível, por exemplo, transferência de
arquivos.
Essas categorias também são úteis para outros propósitos e outras redes. A
taxa de bits constante é uma tentativa de simular um fio oferecendo uma
largura de banda uniforme e um retardo uniforme. A taxa de bits variável ocorre
quando o vídeo é compactado, sendo alguns quadros mais compactados que
outros. Desse modo, a transmissão de um quadro com uma grande quantidade
de detalhes pode exigir o envio de muitos bits, enquanto a transmissão de uma
foto de uma parede branca pode se compactar extremamente bem. A taxa de
bits disponível se destina a aplicações como correio eletrônico, não sensíveis
ao retardo ou à flutuação.
Técnicas para buscar a qualidade de serviço
Tendo conhecimento sobre os requisitos de QoS, devemos nos preocupar em
como alcançá-los. Nenhuma técnica isolada proporciona QoS eficiente e
seguro de forma ótima. Em vez disso, foram desenvolvidas diversas técnicas, e
as soluções práticas muitas vezes combinam várias dessas técnicas. A seguir
examinaremos algumas técnicas que os projetistas de sistemas utilizam para
alcançar QoS.
Superdimensionamento
Uma solução prática é fornecer tanta capacidade de roteadores, tanto de
espaço de buffers e tanta largura de banda que os pacotes simplesmente são
transmitidos com enorme facilidade. O problema com essa solução é seu
custo. Com o passar do tempo e à medida que os projetistas adquirem uma
ideia melhor da quantidade suficiente de recursos, essa técnica pode até
mesmo se tornar prática. Até certo ponto, o sistema de telefonia é
superdimensionado. É raro levantarmos o fone do gancho e não conseguirmos
imediatamente um sinal de discagem. Nesse caso, há tanta capacidade
disponível que a demanda sempre pode ser atendida.
Armazenamento em buffers
Os fluxos podem ser armazenados em buffers no lado receptor, antes de
serem entregues. O armazenamento dos fluxos em buffers não afeta a
confiabilidade ou a largura de banda e aumenta o retardo, mas, por outro lado,
suaviza a flutuação. No caso de áudio e vídeo por demanda, a flutuação é o
principal problema e, portanto, essa técnica ajuda bastante.
Na Figura 2, observamos uma série de pacotes sendo entregue com uma
flutuação significativa. O pacote 1 é enviado pelo servidor no tempo t = 0
segundo e chega ao cliente no tempo t = 1 segundo. O pacote 2 sofre maior
retardo e demora 2 segundos para chegar. À medida que chegam, os pacotes
são armazenados em buffers na máquina cliente.
Figura 25 - Suavizando o fluxo de saída por meio do armazenamento de pacotes em buffers
Em t = 10 s, inicia-se a reprodução. Nesse momento, os pacotes de 1 até 6 são
armazenados no buffer, de forma que podem ser removidos do buffer em
intervalos uniformes para reprodução suave. Infelizmente, o pacote 8 se
atrasou tanto que não está disponível quando surge seu slot de reprodução, e
assim a reprodução tem de parar até ele chegar, o que cria um incômodo
intervalo na música ou no filme. Esse problema pode ser atenuado retardando-
se ainda mais o momento do início, apesar de isso também exigir um buffer
maior. Todos os sites comerciais que contêm fluxo de áudio ou vídeo utilizam
reprodutores que armazenam os itens em buffers por cerca de 10 segundos
antes de iniciarem a reprodução.
Moldagem de tráfego
No exemplo anterior, a origem transmite os pacotes com um espaçamento
uniforme entre eles, mas, em outros casos, é possível que eles sejam
transmitidos de modo irregular, o que pode causar congestionamentos na rede.
A saída não uniforme é comum se o servidor está manipulando muitos fluxos
ao mesmo tempo e ela também permite outras ações, como avanço e
retrocesso rápidos, autenticação de usuários e assim por diante. Além disso, a
abordagem que utilizamos aqui, de armazenamento em buffers, nem sempre é
possível, por exemplo, com videoconferência. Porém, se fosse possível fazer
algo para obrigar o servidor, e os hosts em geral, a transmitir a uma velocidade
uniforme, a qualidade de serviços melhoraria. Examinaremos agora umatécnica denominada moldagem de tráfego que suaviza o tráfego no lado
servidor, e não no lado cliente.
A moldagem de tráfego está relacionada à regulagem da taxa média, e do
volume, da transmissão de dados. Por outro lado, os protocolos de janela
deslizante limitam o volume de dados em trânsito de uma vez, e não a taxa em
que eles são enviados. Quando uma conexão é configurada, o usuário e a sub-
rede, isto é, o cliente e a provedora de comunicações, concordam com um
determinado padrão de tráfego, ou seja, uma forma, para esse circuito. Às
vezes, esse acordo é chamado acordo de nível de serviço. Desde que o cliente
cumpra sua parte no negócio e envie somente pacotes que estejam de acordo
com o contrato, a provedora de comunicações promete entregá-los
pontualmente. A moldagem de tráfego reduz o congestionamento e ajuda a
provedora a cumprir sua promessa. Esses acordos não são muito importantes
para transferências de arquivos, mas são de grande importância no caso da
transmissão de dados em tempo real, como conexões de áudio e vídeo, que
têm requisitos estritos de qualidade de serviço. Na verdade, com a moldagem
de tráfego, o cliente diz à provedora de comunicações "Meu padrão de
transmissão ficará assim. Você pode lidar com ele?" Se a provedora concordar,
a questão será como a provedora poderá saber se o cliente está cumprindo o
acordo e o que fazer em caso negativo. O monitoramento de um fluxo de
tráfego é chamado controle de tráfego. Concordar com um padrão de tráfego e
controlá-lo daí em diante é mais fácil com sub-redes de circuitos virtuais do que
com sub-redes de datagramas. Entretanto, mesmo com sub-redes de
datagramas, as mesmas ideias podem se aplicar a conexões da camada de
transporte.
O algoritmo de balde furado
Imagine um balde com um pequeno furo no fundo, como ilustra a Figura 3.
Independente da velocidade com que a água entra no balde, o fluxo de saída
ocorrerá em uma taxa constante, quando houver qualquer quantidade de água
no balde e zero quando o balde estiver vazio. Além disso, quando o balde
estiver cheio, a água que entrar escorrerá pelas bordas e se perderá, ou seja,
não aparecerá no fluxo de saída sob o furo.
Figura 26 - Balde furado com água
A mesma ideia pode ser aplicada a pacotes, como mostra a Figura 4.
Conceitualmente, cada host está conectado à rede por uma interface que
contém um balde furado, ou seja, uma fila interna finita. Se um pacote chegar à
fila quando ela estiver cheia, o pacote será descartado. Em outras palavras, se
um ou mais processos dentro do host tentar enviar um pacote quando o
número máximo já estiver enfileirado, o novo pacote será descartado sem
cerimônia. Essa disposição pode ser interna à interface de hardware ou
simulada pelo sistema operacional do host. Ela foi proposta em meados de
1986 e é chamada algoritmo de balde furado. Na verdade, trata-se
simplesmente de um sistema de enfileiramento de um único servidor com um
tempo de serviço constante.
Figura 27 - Balde furado com pacotes
O host pode inserir um pacote na rede a cada pulso de clock. Novamente, isso
pode ser forçado pela placa de interface ou pelo sistema operacional. Esse
mecanismo transforma um fluxo de pacotes irregular proveniente dos
processos do usuário no host em um fluxo de pacotes regular para a rede,
suavizando as rajadas e reduzindo bastante as possibilidades de
congestionamento.
Quando os pacotes têm todos o mesmo tamanho, por exemplo, células ATM,
esse algoritmo pode ser usado da maneira que descrevemos. Entretanto,
quando estão sendo utilizados pacotes de tamanho variável, a melhor opção é
permitir um número fixo de bytes por pulso, em vez de apenas um pacote.
Assim, se a regra for 1024 bytes por pulso, é possível admitir em um pulso um
único pacote de 1024 bytes, dois pacotes de 512 bytes, quatro pacotes de 256
bytes etc. Se a contagem de bytes residuais for muito baixa, o próximo pacote
deverá aguardar até o pulso seguinte.
É fácil implementar o algoritmo de balde furado original. O balde furado
consiste em uma fila finita. Ao chegar um pacote, se houver espaço na fila, ele
será incluído na fila, caso contrário, ele será descartado. A cada pulso do clock,
um pacote é transmitido, a menos que a fila esteja vazia. O balde furado de
contagem de bytes é implementado praticamente da mesma maneira. A cada
pulso, um contador é inicializado em n. Se o primeiro pacote da fila tiver menos
bytes que o valor atual do contador, ele será transmitido, e o contador será
decrementado por esse número de bytes. Também é possível enviar pacotes
adicionais, desde que o contador tenha um valor suficientemente alto. Quando
o contador fica abaixo do comprimento do próximo pacote na fila, a
transmissão é interrompida até o pulso seguinte, quando então a contagem de
bytes residuais é reinicializada e o fluxo pode continuar.
Como exemplo de um balde furado, imagine que um computador possa
produzir dados a 25 milhões de bytes/s (200 Mbps) e que a rede também
funcione nessa velocidade. Entretanto, os roteadores só podem lidar com essa
taxa de dados durante intervalos curtos, basicamente até seus buffers serem
preenchidos. No caso de intervalos longos, eles funcionam melhor a taxas que
não excedem 2 milhões de bytes/s. Agora, suponha que os dados venham em
rajadas de 1 milhão de bytes, e que ocorra uma rajada com a duração de 40ms
a cada segundo. Para reduzir a taxa média a 2 MB/s, poderíamos usar um
balde furado com = 2 MB/s e uma capacidade C igual a 1 MB. Isso significa
que rajadas de até 1 MB podem ser manipuladas sem perda de dados e que
tais rajadas se distribuem por 500ms, independente da velocidade com que
chegam.
Reserva de recursos
A capacidade de regular a forma do tráfego oferecido é um bom início para
garantir a qualidade de serviço. Porém, o uso efetivo dessa informação
significa implicitamente exigir que todos os pacotes de um fluxo sigam a
mesma rota. Dispersar os pacotes pelos roteadores ao acaso torna difícil
estabelecer qualquer garantia. Como consequência, algo semelhante a um
circuito virtual tem de ser configurado desde a origem até o destino, e todos os
pacotes que pertencem ao fluxo devem seguir essa rota.
Depois de termos uma rota específica para um fluxo, torna-se possível reservar
recursos ao longo dessa rota, a fim de garantir que a capacidade necessária
estará disponível. É possível reservar três diferentes tipos de recursos:
1. Largura de banda;
2. Espaço de buffer;
3. Ciclos da CPU.
O primeiro recurso, a largura de banda, é o mais óbvio. Se um fluxo exige 1
Mbps e a linha de partida tem uma capacidade de 2 Mbps, tentar orientar três
fluxos por essa linha é uma estratégia que não vai funcionar. Desse modo,
reservar largura de banda não significa sobrecarregar qualquer linha de saída.
Um segundo recurso frequentemente escasso é o espaço em buffers. Quando
um pacote chega, em geral ele é depositado na placa de interface de rede pelo
próprio hardware. Em seguida, o software do roteador tem de copiá-lo para um
buffer em RAM e enfileirar esse buffer para transmissão na linha de saída
escolhida. Se nenhum buffer estiver disponível, o pacote terá de ser
descartado, pois não há lugar para colocá-lo. Para se alcançar uma boa
qualidade de serviço, alguns buffers podem ser reservados para um fluxo
específico, de forma que o fluxo não tenha de competir pelos buffers com
outros fluxos. Sempre haverá um buffer disponível quando o fluxo precisar
dele, até algum número máximo.
Finalmente, os ciclos da CPU também constituem um recurso escasso. O
processamento de um pacote exige tempo da CPU do roteador, e assim o
roteador só pode processar um certo número de pacotes por segundo. É
necessário ter certeza de que a CPU não está sobrecarregada, a fim de
assegurar o processamento oportuno de cada pacote.
À primeira vista pode parecer que, sea demora é de, digamos, 1s para
processar um pacote, um roteador pode processar 1 milhão de pacotes por
segundo. Essa observação não é verdadeira, porque sempre haverá períodos
ociosos devido a flutuações estatísticas na carga. Se a CPU precisar de cada
ciclo para realizar seu trabalho, até mesmo a perda de alguns ciclos em
consequência de períodos ociosos ocasionais cria um acúmulo de serviço do
qual ela nunca conseguirá se livrar.
No entanto, até mesmo com uma carga ligeiramente abaixo da capacidade
teórica, as filas podem aumentar e os retardos podem ocorrer. Considere uma
situação na qual os pacotes chegam ao acaso, com uma taxa média de
chegadas igual a pacotes/s. O tempo de CPU exigido por cada um deles
também é aleatório, sendo a capacidade média de processamento igual a
pacotes/s. Sob a hipótese de que tanto a distribuição de chegadas quanto a
distribuição de serviços sejam distribuições de Poisson, podemos provar,
usando a teoria do enfileiramento, que o retardo médio T experimentado por
um pacote é:
onde ρ = λ/μ / é a utilização da CPU. O primeiro fator, 1/, é o valor que o tempo
de serviço teria na ausência de competição. O segundo fator é a redução da
velocidade devido à competição com outros fluxos. Por exemplo, se λ= 950.000
pacotes/s e μ= 1.000.000 pacotes/s, então ρ= 0,95, e o retardo médio
experimentado por cada pacote será igual a 20μs, em vez de 1μs. Esse tempo
leva em conta o tempo de enfileiramento e o tempo de serviço, como podemos
observar quando a carga é muito baixa (λ/μ≈0). Se houver, digamos, 30
roteadores ao longo da rota do fluxo, o retardo de enfileiramento responderá
sozinho pelo retardo de 600s.
Controle de admissão
Agora chegamos ao ponto em que o tráfego de entrada de algum fluxo é bem
modelado e pode potencialmente seguir uma única rota na qual a capacidade
pode ser reservada com antecedência nos roteadores ao longo do caminho.
Quando tal fluxo é oferecido a um roteador, ele tem de decidir, com base em
sua capacidade e na quantidade de compromissos que já assumiu para outros
fluxos, se deve admitir ou rejeitar o fluxo.
A decisão de aceitar ou rejeitar um fluxo não é uma simples questão de
comparar os recursos, como largura de banda, buffers, ciclos, etc, solicitados
pelo fluxo com a capacidade em excesso do roteador nessas três dimensões.
O problema é um pouco mais complicado. Para começar, embora algumas
aplicações possam conhecer seus requisitos de largura de banda, poucas
sabem algo sobre buffers ou ciclos da CPU, então, no mínimo, é necessário
encontrar uma forma diferente de descrever fluxos. Em seguida, algumas
aplicações são muito mais tolerantes à perda ocasional de um prazo final que
outras. Finalmente, algumas aplicações podem estar dispostas a pechinchar
sobre os parâmetros de fluxo, e outras não. Por exemplo, um visualizador de
filmes que normalmente funciona a 30 quadros/s pode estar disposto a reduzir
sua velocidade para 25 quadros/s, se não houver largura de banda suficiente
para admitir 30 quadros/s. De modo semelhante, o número de pixels por
quadro, a largura de banda de áudio e outras propriedades podem ser
ajustáveis.
Como muitas partes talvez estejam envolvidas na negociação de fluxo, o
transmissor, o receptor e todos os roteador es ao longo do caminho entre eles,
os fluxos devem ser descritos com precisão em termos de parâmetros
específicos que podem ser negociados. Um conjunto desses parâmetros é
chamado especificação de fluxo. Em geral, o transmissor, por exemplo, o
servidor de vídeo, produz uma especificação de fluxo propondo os parâmetros
que ele gostaria de usar. À medida que a especificação se propaga ao longo da
rota, cada roteador a examina e modifica os parâmetros conforme necessário.
As modificações só podem reduzir o fluxo, não aumentá-lo, por exemplo, uma
taxa de dados mais baixa, e não mais alta. Quando ela chega à outra
extremidade, os parâmetros podem ser estabelecidos.
Como exemplo do que pode haver em uma especificação de fluxo, considere o
exemplo da Figura 5, baseada nas RFCs 2210 e 2211. Ela tem cinco
parâmetros; o primeiro, a taxa de balde de símbolos, é o número de bytes por
segundo que são inseridos no balde. Essa é a taxa máxima sustentada em que
o transmissor pode transmitir, calculada com uma média sobre um longo
intervalo de tempo.
Figura 28 - Exemplo de especificação de fluxo
O segundo parâmetro é o tamanho do balde em bytes. Se, por exemplo, a taxa
de balde de símbolos é 1 Mbps e o tamanho de balde de símbolos é 500 KB, o
balde pode se encher continuamente durante 4 segundos antes de se encher
por completo, na ausência de quaisquer transmissões. Quaisquer símbolos
enviados depois disso são perdidos. O terceiro parâmetro, a taxa de dados de
pico, é a taxa máxima de transmissão tolerada, mesmo durante breves
intervalos de tempo. O transmissor nunca deve exceder essa taxa.
Os dois últimos parâmetros especificam os tamanhos mínimo e máximo do
pacote, incluindo os cabeçalhos da camada de transporte da camada de rede,
por exemplo, TCP e IP. O tamanho mínimo é importante, porque o
processamento de cada pacote demora algum tempo fixo, independente de
quanto ele seja curto. Um roteador pode estar preparado para manipular
10.000 pacotes/s de 1 KB cada, mas não estar preparado para tratar 100.000
pacotes/s de 50 bytes cada,1 embora isso represente uma taxa de dados mais
baixa. O tamanho máximo do pacote é importante, devido a limitações internas
da rede que não podem ser excedidas. Por exemplo, se parte do caminho
passar por uma rede Ethernet, o tamanho máximo do pacote será restrito a não
mais de 1500 bytes, não importando que tamanho o restante da rede possa
manipular.
Uma pergunta interessante é como um roteador transforma uma especificação
de fluxo em um conjunto de reservas de recursos específicos. Esse
mapeamento é específico da implementação e não é padronizado. Suponha
que um roteador possa processar 100.000 pacotes/s. Se for oferecido a ele um
fluxo de 1 MB/s com tamanhos mínimo e máximo de pacote iguais a 512 bytes,
o roteador poderá calcular que deve receber 2048 pacotes/s desse fluxo.
Nesse caso, ele tem de reservar 2% de sua CPU para o fluxo, de preferência
mais, a fim de evitar longos retardos de enfileiramento. Se a política de um
roteador for a de nunca alocar mais de 50% de sua CPU, o que implica um
fator de retardo igual a 2, e ela já estiver com 49% de sua capacidade
ocupados, esse fluxo terá de ser rejeitado. Cálculos semelhantes serão
necessários para os outros recursos.
Quanto mais restrita a especificação de fluxo, mais útil ela será para os
roteadores. Se uma especificação de fluxo declarar que precisa de uma taxa de
balde de símbolos igual a 5 MB/s, mas os pacotes puderem variar de 50 bytes
a 1500 bytes, então a taxa de pacotes irá variar de cerca de 3500 pacotes/s
para 105.000 pacotes/s. O roteador poderá entrar em pânico com esse último
número e rejeitar o fluxo, enquanto um tamanho mínimo de pacote igual a 1000
bytes poderia fazer o fluxo de 5 MB/s ter sido aceito.
Roteamento proporcional
A maioria de algoritmos de roteamento tenta encontrar o melhor caminho para
cada destino e enviar todo tráfego para esse destino pelo melhor caminho.
Uma abordagem diferente, que foi proposta para oferecer uma qualidade de
serviço mais alta, é dividir o tráfego correspondente a cada destino entre vários
caminhos. Tendo em vista que os roteadores em geral não têm uma visão
completa do tráfego de toda a rede, a única maneira viável de dividir o tráfego
por várias rotas é usar informações disponíveis no local. Um método simples é
dividir o tráfego igualmente ou torná-lo proporcional à capacidade dos enlaces
de saída. No entanto, também estão disponíveis algoritmos mais sofisticados.
Programação de pacotes
Se um roteador estiver tratando vários fluxos, haverá o perigo deum fluxo
receber muito mais do que permite sua capacidade e deixar todos os outros
fluxos à mingua. O processamento de pacotes na ordem de sua chegada
significa que um transmissor agressivo pode capturar a maior parte da
capacidade dos roteadores por onde passam seus pacotes, reduzindo a
qualidade de serviço para outros. Para contrariar tais tentativas, foram criados
vários algoritmos para programação de pacotes.
Um dos primeiros foi o algoritmo de enfileiramento justo. A essência do
algoritmo é que os roteadores têm filas separadas para cada linha de saída,
uma para cada fluxo. Quando uma linha fica ociosa, o roteador varre as filas
em rodízio, tomando o primeiro pacote da fila seguinte. Desse modo, com n
hosts competindo por uma dada linha de saída, cada host chega a enviar um
dentre cada n pacotes. A transmissão de mais pacotes não irá melhorar essa
fração.
Apesar de ser um bom início, o algoritmo tem um problema. Ele fornece mais
largura de banda para hosts que utilizam pacotes grandes do que para hosts
que utilizam pacotes pequenos. Pesquisadores sugeriram um aperfeiçoamento
no qual o rodízio é feito de forma a simular um rodízio byte a byte, em vez de
um rodízio pacote a pacote. Na verdade, ele percorre as filas repetidamente,
byte por byte, até encontrar o pulso em que cada pacote terminará. Em
seguida, os pacotes são classificados em ordem de término e enviados nessa
ordem. O algoritmo é ilustrado na Figura 6.
Figura 29 - Roteador com cinco pacotes enfileirados para a linha O
Na Figura 6, vemos pacotes de 2 a 6 bytes. No pulso do clock, virtual, 1, o
primeiro byte do pacote na linha A é enviado. Depois, é transmitido o primeiro
byte do pacote da linha B e assim por diante. O primeiro pacote a terminar é C,
depois de oito pulsos. A ordem classificada é mostrada na Figura 7. Na
ausência de novas chegadas, os pacotes serão enviados na ordem listada, de
C a A.
Figura 30 - Tempos de término dos cinco pacotes
Um problema com esse algoritmo é que ele dá a todos os hosts a mesma
prioridade. Em muitas situações, talvez seja interessante dar a servidores de
vídeo maior largura de banda que a servidores de arquivos comuns, de forma
que eles possam receber dois ou mais bytes por pulso.
Esse algoritmo modificado é chamado algoritmo de enfileiramento justo
ponderado e é amplamente utilizado. Às vezes, o peso é igual ao número de
fluxos que saem de uma máquina, portanto, cada processo recebe uma largura
de banda equivalente. Cada vez mais, o encaminhamento real de pacotes por
um roteador ou switch está sendo feito em hardware.
Considerações finais
O termo Qualidade de Serviço, no contexto de redes de computadores, refere-
se em geral a garantia de largura de banda ou, como em muitos casos, é
utilizada informalmente para referir a probabilidade de um pacote circular entre
dois pontos de rede. Requisitos básicos de QoS envolvem confiabilidade,
retardo, flutuação do tempo de transmissão e vazão. A princípio a Internet não
foi projetada para suportar QoS, logo, durante a transmissão de dados podem
ocorrer inúmeros problemas com os pacotes enquanto circulam pela rede.
Do ponto de vista do emissor ou do receptor esses problemas são: i) Pacotes
descartados, onde os rotadores podem recusar-se a entregar alguns pacotes
se estes chagarem quando os buffers estão cheios, sendo que não existe uma
forma de determinar as prioridades para o descarte. As aplicações que
enviaram os pacotes terão que retransmiti-los por não receber da aplicação em
contraparte a confirmação de recebimento do pacote. Isso resulta
frequentemente em intermitência na transmissão; ii) Atraso, onde pode
decorrer muito tempo até um pacote atingir o seu destino, já que este é
mantido em longas filas, ou segue um caminho alternativo para evitar
congestionamento da rede; iii) Entrega fora de ordem, onde os pacotes são
entregues em uma ordem diferente da que foi enviada, uma vez que podem
percorrer rotas diferentes, fazendo necessário o uso de protocolos especiais
para que a informação possa ser reconstruída na chegada; iv) Erros, onde os
pacotes são enviados para destinos errados ou mesmo são corrompidos em
trânsito, obrigando o receptor a detectar esses problemas e pedir a
retransmissão dos pacotes.
Para obter QoS existem em linhas gerais dois modelos. Um por meio da
disponibilidade de grandes quantidades de recursos, suficiente para atender
aos picos com uma margem de segurança, porém sendo muito dispendioso e
ineficaz. Outro por meio da obrigatoriedade de reserva de recursos, onde o
serviço somente é realizado caso seja sabido que será possível oferta-lo com
confiabilidade. Essas reservas também possuem um custo monetário
associado.
Porém, o mercado ainda não favorece os serviços QoS, visto que há poucos
incentivos, principalmente em termos econômicos, para a sua implementação.
Os acordos atuais entre os fornecedores de serviços de Internet são
complexos, e parece não existir iniciativa entre eles para suportar QoS entre
interligações de backbones, ou acordar que políticas devem ser suportadas
para potencializar o seu crescimento.
Referências
Bhatti, Saleem N., and Jon Crowcroft. "QoS-sensitive flows: Issues in IP packet
handling." IEEE Internet Computing 4.4 (2000): 48-57.
Demers, Alan, Srinivasan Keshav, and Scott Shenker. "Analysis and simulation
of a fair queueing algorithm." Internetworking: Research and experience 1.1
(1990): 3-26.
Elhanany, Itamar, Michael Kahane, and Dan Sadot. "Packet scheduling in next-
generation multiterabit networks." Computer 34.4 (2001): 104-106.
Nagle, John. "On packet switches with infinite storage." IEEE transactions on
communications 35.4 (1987): 435-438.
Nelakuditi, Srihari, et al. "Adaptive proportional routing: a localized QoS routing
approach." IEEE/ACM Transactions on networking 10.6 (2002): 790-804.
Tanenbaum, Andrew S. "Network protocols." ACM Computing Surveys (CSUR)
13.4 (1981): 453-489.
Turner, Jonathan. "New directions in communications(or which way to the
information age?)." IEEE communications Magazine 24.1